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だけでも良いかも)

<font color="Red">本投稿ではPython環境の候補の調査まで行います．</font>


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

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

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

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

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


# 候補となる環境
活用できそうなPython環境をざっくり調べてみました．
本章で各環境についてメモ感覚で記載していきますが，<font color="Red">だらだらと書いていますので読み飛ばし推奨です．</font>



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

<font color="Red">**しかし…**</font>

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

とはいえ，先に述べたように評価の高いアプリで，手軽にGUIアプリを作ったりできるみたいで凄いアプリみたいです．
本投稿ではこれ以上扱いませんが，気になる方は是非調べてみてください．
<img width="400" alt="Pythonista3" src="http://omz-software.com/pythonista/images/DeviceScreenshots.png">
* 上記画像はPythonista3の公式サイト[^4]の画像を引用．

[^1]: Pythonista3のApp StoreのURL：https://apps.apple.com/jp/app/pythonista-3/id1085978097
[^4]: Pythonista3の公式サイト：http://omz-software.com/pythonista/




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

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

![code-server](https://github.com/cdr/code-server/blob/master/doc/assets/screenshot.png?raw=true "code-serverのGithubレポジトリより引用")
* 上記画像はcode-serverのGithubレポジトリ[^2]より引用．  
  VS codeによく似た画面がブラウザ上で扱えます．

[^2]: code-serverのGithubレポジトリ：https://github.com/cdr/code-server
[^3]: Eclipse TheiaのGithubレポジトリ：https://github.com/eclipse-theia/theia




## 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](https://www.gitpod.io/static/screenshot-9d621869f94a7f552d315908aecdf1dc.png "Gitpod公式サイトより引用")
* 上記画像はGitpod公式サイト[^5]より引用

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



## 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](https://jupyterlab.readthedocs.io/en/stable/_images/jupyterlab.png)
* 上記画像はJupyter Lab公式サイト[^7]より引用

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

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



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

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

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