(2017.12.28 タイトルを少々改編、追記部分の作成)
きっかけ
-
- せっかくの年末年始、なにか勉強したい
-
- 機械学習や深層学習を学びたいからPythonやりたい
-
- でも年末年始は妻の実家で泊まるゆえ、Wi-Fiの環境は実家にあるけどPCを持っていって堂々と広げて勉強する時間とスペースが無いと思われる
-
- 就寝前に寝室でスマホを使って何かできれば少しは学習になるかな?
-
- だったらスマホでコーディングできるCodeanywhereの環境を整えてみようかな
-
- グラフを表示するところまでやるとなったらJupyter Notebookかな
- リモートでやるの少し怖いけど簡単な勉強用途なら、まあ大丈夫だろうから、Codeanywhereで実行中のJupyter Notebookにスマホでアクセスできないかな
以上が動機。
Codeanywhere (Free) に登録
難しいことはほぼ無いから大丈夫だと思うが、心配であれば解説記事はネット上にたくさんあるので参照してほしい。
コンテナを作る
File -> New Connection -> Container から Blank (ubuntu) を選択。
Minicondaのインストール
こちらのページから Linux 64-bit (bash installer) のリンクを取得し、wgetでダウンロード、実行。
$ sudo wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ sudo apt-get install bzip2
$ bash ./Miniconda3-latest-Linux-x86_64.sh
$ rm ./Miniconda3-latest-Linux-x86_64.sh
※Blankだとbunzip2が無いという理由でインストール失敗になるのでbzip2をapt-getで入れる。
※CodeanywhereのFreeプランはHDD容量が2GBと大変少ないので、不要になったインストーラは削除しておく。
※Minicondaの場所をbashrcのPATHに追加するか聞かれたら yes と答える。その後、ターミナルからsource ~/.bashrcを実行する。
インストールしたものを最新版にアップデートする
$ conda update conda
$ conda update --all
$ conda clean --all
※CodeanywhereのFreeプランはHDD容量が2GBと大変少ないので、都度 conda clean –all を実行して不要なファイルの削除を行う。
※Pythonのプログラミングをするだけなら、ここまででも充分、WebのIDE画面や、スマホ・タブレット(Codeanywhere専用アプリ使用)で行える。
Python3.4 の環境を作る
記事執筆時点でのMiniconda最新版がインストールするPython3.6では一部のパッケージが大容量すぎて、CodeanywhereのFreeのHDDおよびメモリ容量の制限にひっかかりやすくなる。そのため、バージョンを3.4まで下げた環境を作成する。
$ conda create --name (好きな名前) python=3.4
$ conda clean --all
$ source activate (先ほどつけた名前)
Jupyter Notebookのインストール
$ conda install jupyter notebook
$ conda clean --all
Jupyter Notebookを利用する
Jypyter Notebookの起動
$ jupyter notebook --ip=0.0.0.0
起動に成功すれば http://0.0.0.0:8888/?token=abcdefg のようなURLでアクセスできますよ的な表示が出るが、当然だが、Codeanywhere上で起動しているJupyter NotebookにアクセスできるURLではない。
Codeanywhere上で動作するJupyter Notebookにアクセスする
infoページ(画面左側のコンテナ名を右クリック -> info)に表示されているURLのうち、
http://port-XX.(コンテナ名やユーザ名などの文字列).codeanyapp.com
このURLを利用する。 port-XX の部分の XX を 8888 に変え、URLの後ろに /?token=abcdefg(abcdefgは仮。画面に表示されているトークン文字列)をつける。
http://port-8888.(コンテナ名やユーザ名などの文字列).codeanyapp.com/?token=abcdefg
このようなURLを普段使いのブラウザのURL欄に指定してアクセスすれば、Jupyter Notebookが表示される。まあ、HTTPなので簡単な学習用途での利用に留めた方が良いとは思うし、不要なときは終了しておくべきだろう。
HTTPSで利用したい場合、アプリケーションが3000番ポートを利用するようにしないとらしいので、工夫が要るのだと思うが、まだJupyter Notebookに対して勉強不足なので、対策がわかり次第、追記する。
※Jupyter Notebookの終了はターミナルで Ctrl + C 。
ここから先…
勉強したいパッケージを conda install で導入したい…が…、繰り返しになるが、CodeanywhereのFreeプランはHDD容量が2GB、メモリ容量も256MBとと大変少ないので、あれこれインストールしたくても限度があるので注意。一度に conda install せず、順番やインストールするバージョンを考慮した方が良い場合も多々ある。(自分が今回やったときは、Jupyter Notebookを入れたら、せいぜいNumPyくらいしか追加できなかった…グラフが使えない…)
なお、容量の限度を超えると「Disc quota exceeded」と出て、インストール処理が強制的に終了される。その場合は conda clean –all で取り敢えず復旧できるので、環境を再構築する必要は無い。
結論
割と苦労したゆえ、これだったら $7 払ってFreelancerプランにすべきなんだろうなあ、と。苦笑
とりあえず、この年末年始はNumPyが勉強できれば良いかなってことで。(年末年始に自分がどれだけ使うかを様子見で、とりあえず。)
追記
PaizaCloud を試してみた。Jupyter Notebookで勉強したいだけなら、PaizaCloudでJupyter Notebook環境を作る方が楽だったし、グラフ(matplotlib)も使えた…。