「iPhoneでPythonが出来たら…!」という願望を叶えてくれる、そんなアプリが「Puthonista3」。
本記事では、Pythonista3で出来ることと、その使い方について紹介します。
Contents
Pythonista3とは?
Pythonista3とは、App Storeで入手出来るアプリです。iPhoneやiPadでPythonを実行することができます。
iPhoneでプログラミング出来るアプリというのは数多く存在しますが、実用的な開発まで出来ないのが普通です。
しかしこの驚異的なアプリ「Pythonista3 」は「ちょっとプログラミングをしてみよう」の域を遥かに超えた、プロも使える優れもの。
有名なデベロッパーのジョン・グルーバーさんは次のように言っています。
“Pythonista is a really cool app, but how did it make it into the App Store?”
ジョン・グルーバー
パイソニスタはめっちゃクールなアプリだけど、どうやったらApp Storeに出すことができるんだ?
つまり、Appleの規約に触れてしまうほど万能なアプリだということです。
Pythonista3の特徴
特徴1:洗練されたコードエディタ
シンタックスハイライト機能を兼ね備えたプロ仕様のコードエディタが第一の特徴です。また、自動補完機能や拡張されたキーボードは開発効率を一段と引き上げます。
特徴2:iOSアプリも作れる
Pythonista3には、GUIを作り込む機能も充実しています。GUI(グラフィカルユーザーインターフェース)とは、コードと結びついたボタンやアイコンなどのことです。
例えば、SNSアプリのLINEを使うとき、メッセージを送信するときや友達を検索するときなど、コードを実行しているわけではありません。GUIを通してコードを実行しているわけです。
下の画像は、そのGUIで作られた電卓アプリです。
また、pythonista3用に作られた便利なライブラリを使えば、次のようなことができます。
- クリップボードにアクセス(コピーとかペースト機能が使える)
- 写真フォルダにアクセス
- 位置情報取得
- 連絡先にアクセス
- リマインダーにアクセス
つまり、iPhoneやiPadで、自分専用のアプリ開発ができるというわけです。
特徴3:豊富なテーマ
カラーテーマを変更して、自分好みの開発環境にすることができます。その数何と15テーマ!
Pythonista3でコードを書いてみる
それでは実際にPythonista3でPythonのスクリプトを書いてみます。
スクリプトの作り方
スクリプトは5つのステップで作れます。
- メニューアイコンをタップ
- フォルダを選択
- 「+」アイコンをタップ
- 「Empty Script」をタップ
- ファイル名を入力して「Create」をタップ
Pythonコードを入力
それでは、試しにNumpyとMatplotlibを使って、グラフを出力するコードを書いてみます。
import numpy as np #Numpyのインポート
import matplotlib.pyplot as plt #matplotlibのインポート
x = np.arange(100) #x軸用に1~100までのアレイを作成
y = x**2 #y軸用にx軸の2乗のアレイを作成
Figure,ax = plt.subplots() #グラフを定義
ax.plot(x, y) #グラフにプロット
plt.show() #グラフを表示
すると、次のようなグラフが出力されます。
Pythonista3でできること、出来ないこと
Pythonでできることは、大体Pythonista3でもできます。ただし、一部できないこともあるので注意が必要です。
Pythonista3でできること
「Pythonista3でできること」を言い換えると、「どんなライブラリが使えるか」となります。ライブラリとは、先ほど紹介した「Numpy」や「Matplotlib」などのように、便利な機能をたくさん持っている、コードの集まりのことです。
通常プログラミングでは、多くのライブラリを使って自分の作りたいものを作ります。そこで、ここからは、どんなライブラリが使えて、それで何ができるのかを紹介します。
まず、Pythonista3専用に開発されたライブラリを紹介します。
- Canvas・・・シンプルなグラフィックス描画
- clipboard・・・クリップボード操作ができる(コピー、ペーストなど)
- contact・・・「連絡先」にアクセスし操作
- editor・・・最近編集したテキストを取得
- linguistictagger・・・言語分析ができる(文章を単語に分割して、品詞を調べるなど)
- location・・・位置情報の取得ができる
- notification・・・通知センターにアクセス(ある場所に着いたらこんなメッセージを表示する、など)
- photos・・・写真フォルダにアクセス
- reminder・・・リマインダーにアクセス
- scene・・・ゲームなどのインタラクティブな2Dグラフィックス描画
- sound・・・サウンドエフェクト、ミュージック、ボイスメモなどにアクセス
- ui・・・GUIを操作
上記のライブラリは全てではありませんが、主要なPythonista3専用ライブラリです。ざっとみて、いろんなことが自動化できそうだな、と夢が膨らみます。
次に、一般的に使われるライブラリを少しだけ紹介します。
- Matplotlib・・・グラフ描画
- Numpy・・・アレイ(行列)操作
- Webbrowser・・・ブラウザ自動制御(検索や検索結果取得など)
- request・・・ネット上の通信制御
- Beautifulsoup・・・スクレイピング(ウェブ上から自動で情報を取得)
- OpenPyXl・・・Excelを自動化
- Django・・・大規模開発用ウェブフレームワーク
- Flask・・・中規模ウェブフレームワーク
- Bottle・・・シンプルなウェブフレームワーク
などなど、まだまだたくさんあります。やはり、詳細はこちらのページから確認してみてください!
Pythonista3で出来ないこと
残念ながら、まだ出来ないことがあります。本記事では2点紹介します。
- Pandas・・・表計算ライブラリ
- scikit-learn・・・機械学習ライブラリ
この2点が手痛いところでしょう。
Pandasは膨大なデータを扱うのに非常に長けており、データサイエンティストやグラフ職人たちに重宝されているライブラリです。
現時点では代替方法もないとのことですので、今後のアップデートに期待です。
scikit-learnは、機械学習で有名なライブラリです。非常に簡単に機械学習できるので、「Python×機械学習」を語る上で避けられないライブラリです。
こちらも有名なライブラリですので、今後のアップデートで対応してくれることを祈るばかりです。
Pythonista3でpipコマンドを使う
先ほど、色々なライブラリを紹介しました。デフォルトで使えるものと、ネット経由でインストールしなければならないものもあります。
Pythonのライブラリ管理ツールはpipと呼ばれ、あらゆるライブラリをインストールすることができます。例えば、ウェブスクレイピング用のライブラリBeautifulsoupは、次のようにターミナルで入力してインストールします。
$ pip install beautifulsoup4
これを実現するにはターミナルが必要です。そこで、Pythonista3にターミナルを導入する方法を紹介します。
1. コンソールでコマンドを入力
まず、コンソールに移動します。コンソールに移動する手順は次の通りです。
- 空のスクリプトを作る
- 左にスワイプする
*空のスクリプト作成は記事の上の方で紹介しています。
コンソールに移動したら、次のような画面になっていることを確認してください。
次に、コマンド入力欄に、次のコマンドを入力して「return」を押してください。
import requests as r; exec(r.get('http://bit.ly/get-stash').text)
すると、次のようなメッセージが下の方に表示されます。
Please restart Pythonista and run launch_stash.py under the home directory to start StaSh
つまり、Pythonista3を再起動し、ホームディレクトリ(私の場合は「This iPhone」ディレクトリ)にlaunch_stash.pyというPythonファイルがあるので、それを実行すれば良いわけです。
StaShとは、「Pythonista + Shell」を掛け合わせて作った、Pythonista用のターミナルです。
2. pipコマンドでライブラリのインストール
試しにBeautifulSoup4をインストールしてみましょう。
pip install beautifulsoup4
と入力して実行してみてください。ウェブスクレイピング用のライブラリBeautifulSoupがインストールされれば成功です。
Appendix
参考サイト:公式サイト(英語)
参考サイト:Pythonista3で使えるライブラリ(英語)
参考図書:PythonではじめるiOSプログラミング 〜iOS+Pythonで数値処理からGUI、ゲーム、iOS機能拡張まで〜