iPadでPythonプログラミングする方法を考える


前置き

Qiita初投稿です.「自分で見返すため」「同様の悩みを持つ人の役に立つため」に投稿できればと思っています.
不慣れで本投稿は文字ばかりです.
徐々に使い方に慣れていこうと思うのでよろしくお願いいたしますm(__)m

はじめに

業務ではMatlabを使ってDeep Leaning等やっているのですが、tensorflowの方が自由度も高いし最新のモデルも使える…ということでPython、もっというとtensorflowを手軽に勉強できる環境を構築しようと思い立ち、いろいろ調べてみました。
タイトル記載のわざわざiPadで…というのは家でゴロゴロしながら、あるいは出先でもどこでも自由にコーディング・実行できる環境を作れたらなというだけの理由です。

目指す環境

目指す環境はiPad Pro 11inch(2018)を使ってPython3系のコーディング、プログラム実行ができるようになることです.
また,Deep Learningをしたいので,特定のPythonライブラリ(※1)が使用できることも必要条件.

また,無料で出来る環境を目指します.少なくともサブスク系は避けたいので,各種クラウドサービス(AzureやAWSなど)は現状検討していません.

(※1) 最低限以下のPythonライブラリは使いたいです.
・numpy
・matplotlib
・tensorflow
・Pillow (Open CVも使いたいがPillowだけでも良いかも)

本投稿ではPython環境の候補の調査まで行います.

結論

次章でダラダラと書いているので,先に結論を述べます.
iPadを使って,Python(tensorflow)のコーディング,実行をしたい場合,以下の環境が良さそうだとわかりました.

  • "code-server" or "Eclipse Theia"
  • "Gitpod"
  • "Jupyter Lab"

ただし,Gitpod以外はiPad以外に別途PCを準備する必要があります.
調べてみた感じ,iPad単体でtensorflowのお勉強をする方法は見つからず,いずれの方法もLinux,あるいはWindowsのOS上でPythonを実行させることとなります.
iOS, iPadOS上でPython本体や各種ライブラリを実行させるのはなかなか難しいということでしょう.

私はPCもiPadも持っていますが,両マシンの起動が必要ですし制約としてはかなり大きいかもしれません.
調べてみると思ったより面倒だったという次第です.

とりあえず,iPad単体で完結させたい場合はGitpodが有力です.

候補となる環境

活用できそうなPython環境をざっくり調べてみました.
本章で各環境についてメモ感覚で記載していきますが,だらだらと書いていますので読み飛ばし推奨です.

Pythonista3を購入する

iPadのローカル環境上でPythonを実行できる,Pythonista31というiPadアプリがあります.
¥1,220のアプリで当初の「無料で…」という目標からいきなりブレますが,買い切りのアプリだし評価もかなり高いので悪くないのでは?と思った次第です.

しかし…

使えるライブラリに制約があるようで,tensorflowが使えないのでダメそうです.
そもそもiPadのローカル環境上でDeep Learningするのが現実的でないですよね.

とはいえ,先に述べたように評価の高いアプリで,手軽にGUIアプリを作ったりできるみたいで凄いアプリみたいです.
本投稿ではこれ以上扱いませんが,気になる方は是非調べてみてください.
Pythonista3
* 上記画像はPythonista3の公式サイト2の画像を引用.

ブラウザで動くIDEのサーバーをLinuxで立てる("code-server" or "Eclipse Theia")

こちらが本命の方法となりそうです.
Linux環境上でサーバーを立てて,リモートでブラウザからアクセスできるVS CodeライクなIDEがあるようです.
iPadのブラウザから使える,ローカル(iPad)のマシンパワーに依存しない,Linuxの環境上で自由度高く作業できそう,無料,VS Codeのように拡張機能が使える,などの理由から本命だと考えています.

code-server3Eclipse Theia4というよく似た2種類のIDEがあります.
よく似ているので「どう違うのか」「どちらが良いのか」は現時点ではわかっていません.(日本語の情報はあまり多くなかったためです).

code-server
* 上記画像はcode-serverのGithubレポジトリ3より引用.

VS codeによく似た画面がブラウザ上で扱えます.

GitPodを利用する

上述のEclipse Theiaを利用したクラウドのIDEサービスのようです.
クラウドのサブスク系は避けると言っていたのに,またもや目標からブレます.
言い訳すると,制限付きですが無料で利用でき,使い勝手もなかなか良さそうなので候補とした次第です.

こちらはGithubアカウントがあれば利用でき,Github上のコードを変更,デバッグしてコミットすることができるようです.

【使い方】
GithubのレポジトリのURLは以下のようになっていると思います.

https://github.com/[アカウント名]/[レポジトリ名]

↑これを↓以下のように,"gitpod.io/"とつけるだけでgitpodのIDE画面に遷移します.(初回はGitpod利用のためのアカウント紐付けが必要)

https://gitpod.io/github.com/[アカウント名]/[レポジトリ名]

アクセスが簡単なので有力な候補です.
ただし長時間利用には課金が必要.軽く試すのには一番良さそうですが自由にがっつりやるとなると課金必須ですので注意してください.
Githubのソースコードを少し修正してデバッグ→コミットみたいな時にベストな気がします.
以下画像のように,こちらもブラウザで使えるVS codeのようなイメージです.

Gitpod
* 上記画像はGitpod公式サイト5より引用

WindowsでJupyterサーバーを作成する(Linuxでも可能)

WindowsまたはLinuxサーバーでJupyterサーバーをたてて,iPadのブラウザからアクセスするという方法です.
こちらは,Gitpodやcode-server, Eclipse Theiaのような強力なIDEという訳ではないのですが,Notebook形式(.ipynb)で実行できれば良いという方にはおすすめの方法となりそうです.
実際,Deep LearningするならNotebook形式のほうがデータを見やすいと思うので一番有力かもしれません.

どうやら最近ではJupyter NotebookではなくJupyter Labが積極的に開発されている6そうなので,Jupyter Labが良さげですね.
以下画像のように(これもVS Codeに若干似ていますが)ブラウザからアクセスしてPythonのコーディング,実行ができます.ただし,一般的な.pyファイルではなく.ipynbファイルのNotebook形式を扱うことになる点に注意.(.pyファイルも実行できますが,ちょっと使いにくいと思います)


* 上記画像はJupyter Lab公式サイト7より引用

最後に

長々と書きましたが,iPadでtensorflowのお勉強というのは割と敷居が高いように感じました.
素直にPCで(あるいはそこそこスペックのノートPCで)やったほうが楽そうです.

ただ,なんとか環境構築できればゴロゴロしながらiPadで機械学習のお勉強もできそうだとわかりました.

補足

一番有力候補の"Google Colab"について書くのを失念しておりました!!!
(制限付きで)無料のクラウドサービスですので,おそらく環境構築も不要で最も有力な候補なのですが,しっかり調査できておりません.
従いまして,本投稿内では扱わないこととします.申し訳無いですがご容赦ください.(余裕があれば調査 & 追記いたします.)


  1. Pythonista3のApp StoreのURL:https://apps.apple.com/jp/app/pythonista-3/id1085978097 

  2. Pythonista3の公式サイト:http://omz-software.com/pythonista/ 

  3. code-serverのGithubレポジトリ:https://github.com/cdr/code-server 

  4. Eclipse TheiaのGithubレポジトリ:https://github.com/eclipse-theia/theia 

  5. Gitpodの公式サイトURL:https://www.gitpod.io/ 

  6. Jupyter Labについてよく説明してくださっている方がいます.タメになりましたので是非見てください.
    https://qiita.com/kirikei/items/a1639954ce5ccaf7ac3c 

  7. Jupyter Lab公式サイトURL:https://jupyterlab.readthedocs.io/en/stable/index.html