ひばりログ

Apple関連やプログラミングなど趣味を書き綴る。

iPadでPythonが書けるPythonista3はいいぞ

Pythonistaとは

iOSの有料アプリでiPhoneでもiPadでも使えるユニバーサルアプリ。

なんとiOS単体でPythonを書いて実行できるというIDE

しかも、標準ライブラリに加えて、

  • Numpy
  • Matplotlib
  • Beautiful Soup 4
  • Bottle
  • Sqlite3

などのライブラリも豊富なので、色々作れてしまいます。

(jinja2も入ってるし、たぶんBottle使って、そこそこのWebアプリが簡単に作れる?)

このアプリの3つのメリットと2つのデメリットをお伝えしていきます。

メリット1

iPad単体でPythonが書ける

まさにこれに尽きます!

MacBookを持ち歩かなくても、iPadMini単体で!

Pythonが!

書けます!

しかも通信量も食わずに!!

これは大きなメリットだと思います。

(他にもPythonIDEアプリはあるみたいですが)

メリット2

Bluetoothキーボードが無くてもかなり書きやすい

画面がこんな感じです。 f:id:hibari2978:20190702113858j:plain

記号が上の方にずらり!

インデントやUndo、ペーストなどの機能から、よく使う記号が勢ぞろいなので、

このキーボードアプリだけで書きやすいです。

またスニペット機能もあり、こんな感じで登録したスニペットf:id:hibari2978:20190702114101j:plain

こんな感じで呼び出せます! f:id:hibari2978:20190702114142g:plain

上にある通りスニペット機能や、ライブラリの関数など補完機能もあり かなり使えますよ!

実行画面はこんな感じです。 f:id:hibari2978:20190702114419j:plain

メリット3

iOSの機能にアクセスできる

Pythonista3は独自ライブラリも多く、iOSの機能にアクセスできます。

最初から入っているサンプルコードも多く、

  • Widgetに作ったものを表示させ、実行できる(サンプル:電卓、クリップボード、アプリランチャーなど)
  • GUIアプリが作れる(サンプル:電卓、カラーミキサー、お絵かきアプリ)
  • ゲームが作れる(サンプル:ブロック崩し)
  • Audio再生、MIDI再生
  • アプリ連携
  • モーションセンサー

などなど、非常に多くの機能があります。

まだまだ使いこなせていませんが、iPadiPhoneをカスタマイズするのに役立ちそうです。

デメリット1

pandasなどのライブラリがない

データ分析などしたいであれば、やはりpandasが欲しいところではありますが、

現時点ではデフォルトで入っていないようです。

またpipコマンドなどで、ライブラリを追加する機能もデフォルトでは無く、

(Appleの規則上しょうがない……?)

追加もできません。

一応、

qiita.com

このようにPythonista用のShellを入れることで、ターミナル的にpipなど使えるようですが、

少し怖いので試してはいません。

機械学習などのライブラリもないので、

使いたいならGoogle Colabなどを利用した方が良いかもしれません。

(「ゼロから作るDeep Learning」ならNumpyだけを使うので、できるかも……)

デメリット2

価格

1200円と有料アプリの中でも割と高い方だと思います。

私としてはこれだけのものが、この価格ならコスパは良いと感じますが、 やはり絶対的な価格としては少しお高め。

そこに躊躇する方はコンビニなどのitunesカード10%還元を狙いましょう!

少しお得に買えます!

終わりに

これさえあれば、いつでもどこでもPythonが書ける動かせる!

Pythonの特徴と非常にあっていると感じます。

また、現時点でも便利なPythonistaはiPadOSで更に便利になると考えています。

iPadOSが非常に楽しみでもあります。

(もしかしたら、Pythonista4が出ちゃうかもしれないけど)

Macで右クリックやTouchBarからPythonを実行させる

Automator

この記事ではAutomatorを使って、クイックアクションでPythonファイルを実行できるようにします。 なので、右クリックだけではなく、TouchBarなどでも使えます。

方法

まずはAutomatorを起動してください。 新規書類を選択すると、以下のような画面が開くため、クイックアクションを選択してください。 f:id:hibari2978:20190702105109p:plain

選択したら、まずはワークフローが受け取る項目を"ファイルまたはフォルダ"に選択してください。

イメージやカラーはお好みで変更してください。

次に左のライブラリから"AppleScriptを実行"を選択し、右側へ追加してください。 そして中身に、

on run {input, parameters}
    set fname to POSIX path of input as text
    if fname contains ".py" then
        tell application "Terminal"
            do script "python " & "'" & fname & "'"
            activate
        end tell
    end if
end run

と入力し、ハンマーマークを押します。 完成図が以下のようになります。 f:id:hibari2978:20190702110036p:plain

保存する前に、"指定されたFinder項目を取得"を"AppleScriptを実行"の前に配置し、.pyファイルを入れてテストしてみた方が良いかと思われます。 また、.pyファイル以外のファイルも指定して、テストしてみてください。

どちらもOKであれば、"指定されたFinder項目を取得"を削除し、保存します。 名前は好きなものを入れてください。

実行

実際にFinderで.pyファイルを選択し、右クリックメニューからクイックアクションを選択し、 保存した名前をクリックすればターミナルが開きpythonが実行されます。 f:id:hibari2978:20190702110434p:plain

do script "python " & "'" & fname & "'"

を変えれば、様々なコマンドを右クリックやTouchBarから実行できるので、 ぜひ色々試してみてください。

pandasを使ったmatplotlibでの棒グラフの作り方

データ作成

とりあえず、こんなデータを用意します。

data = pd.Series([0.1, 0.4, 0.5, 0.1, 0.3, 0.2, 0.9, 0.3, 0.1])
index data
0 0.1
1 0.4
2 0.5
3 0.1
4 0.3
5 0.2
6 0.8
7 0.3
8 0.1

必要なライブラリのインポート

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

データの集計

各データの個数を集計します。

data_count = data.value_counts()
index data
0.1 3
0.2 1
0.3 2
0.4 1
0.5 1
0.9 1

棒グラフの範囲となるxとyを定めます

x = np.arange(0.0, 1.0, 0.1)
y = pd.Series(index=x, data=data_count)

棒グラフを表示します

plt.bar(x, y, width=0.05)
plt.xticks(x)           
plt.show()

put.bar()で棒グラフを定義します。 widthは棒の太さを指定します。

xticksはx軸のラベルを指定します。

f:id:hibari2978:20190630123334p:plain
棒グラフ

うまく作れない場合

np.arange()で誤差が生じて、yのSeriesが全てNaNになってしまうことがあります。 そのときは

  1. xを丸める
x = np.arange(0.0, 1.0, 0.1)
x = x.round(2)
  1. linspaceを使う
x = np.linspace(0.0, 0.9, 10)

などの対策を取ることでうまく行く場合があります。