Pythonista と Swipemint とで快適に Python スクリプトを iPhone 上で実行する

PythonistaiOS 上の Python スクリプト実行環境である。

このアプリの凄いところは、iOS アプリとは思えないほど細かいところに手が届くこと。クリップボードにアクセスするのはもちろん、PIL を内蔵しているので軽い画像編集もでき、GUI アプリを作ることもできる(デモとしてゲームや時計が入っている)。ドキュメント も充実しているし、Forum を見たところ近日中に NumPy や matplotlib を内蔵することも考えているようで、これが実現したらほぼ最強になるのではないかといまから楽しみである。

このアプリで唯一残念なのは、スクリプトの実行までにいくつかの手順が必要である点である。大した手間ではない(アプリを開いて、実行したいコードを選んで、実行ボタンを押す)のだが、サクッと実行できるわけではないので常用するにはストレスが溜まる。そこで、ランチャアプリを使って URL スキームから Pythonista を実行することを考える。

ランチャアプリとしては、シンプルでイケテルという理由から Swipemint を選択。もちろん URL スキームに対応しているならどんなランチャでも同じことができるはずである。

Pythonista の URL スキームの例は次のとおり。Directory 内の nameofcode.py に、オプション hoge と piyo とを渡して即時実行する設定である。

pythonista://Directory/nameofcode?action=run&args=hoge%20piyo
pythonista://Directory/nameofcode?action=run&argv=hoge&argv=piyo

上の2つは同じオプションが渡される。エスケープをしなくて済むので下のほうがちょっとかわいい。Python スクリプトからオプションを読む場合は、いつものように import sys; sys.argv[1] などをしてやればよい。もしくは argparse などのパーサが使える。パスワードをセキュアに扱いたいなら keychain モジュールが使える(使ったことないけど便利そう)。

これを使えば、たとえば「起きたらあるサイトにアクセスして『起床』ボタンを押し、Twitter に『いま起きた!』と投稿してから天気予報をコマンドラインに表示」みたいなのを1タップ+1スワイプでできるようになるわけ。speech モジュールで天気予報を話させることもできる。つよい。

自分でコーディングできないことが iOS 最大の欠点と言われることもあるが、Pythonista の登場によってそれは過去の話になったと私は思う。「こんなアプリが欲しいな」と思ったら、App Store に行くまえに、一度「Python で書けないかな」と考えてみるのも一興である。