ブログを書く為にPydroid3をインストールした
AndroidスマホにPythonの総合開発環境アプリ Pydroid3 をインストールしました。
Pydroid3のリンクを貼っておきます。
https://play.google.com/store/apps/details?id=ru.iiec.pydroid3
今回は、OpenPyXLの続きを書くのに飽きてきたので話し逸らしの投稿。
このブログを始めて3ヶ月ほど経ちます。
最初の頃は、はてなブログの編集画面にはてな記法
で直接文章を書き、コードはコピペしてから引用符を付けて整形したりしていましたが、どうにも面倒臭い。
保存とプレビューがオンラインでしか出来ないなどの不都合もある。
ということで、次第にPCではJupyterNotebook、スマホではQpythonのQPyNotebookで書くようになりました。
これだとオフラインで書けるし、PythonコードとMarkdown記法の文章をセル単位で分けながらも一つのファイルの中に混在でき、更にコードをその場で実行して確かめられるので、非常に便利です。
そうして書いて出来るipynbファイルを一旦Markdownファイルに変換後、はてなブログの編集画面にコピペすれば手間がいくらか省けるようになりました。
しかしこれの問題は、PCのJupyterNotebookはDownload as
のボタンから一発でMarkdownファイルに変換できるのですが、QPyNotebookはそれが出来ない。
仕方がないので、ターミナルアプリのtermuxから
$ jupyter nbconvert 何々.ipynb --to markdown
とコマンドを打って変換していますが、これも面倒。
シェルスクリプトを書いて自動化するなどの手もあるとは思いますが、そのスキルがない。ヤル気がないのかw
また、QPyNotebookは編集中にカーソルが正しく動かないとかスペースが上手く入力できないなどの不具合がたまに起きることがあり、どうも使いにくい。
そんなこんなでPydroid3をインストールした次第です。
参考にしたのはこちら
利点としては
- Pydroid3のインストール方法はGoogleプレイストアからダウンロードするだけで簡単。
- 無料で利用できる。
- モジュールのインストールがボタン一つで可能。
- numpyやpandas、scikit-learnなど人気モジュールをインストールするだけで即座にサクサク動かせる。
- ターミナルがついている。
- PCと同じJupyterNotebookが動く。
などなど。
ちょっと使ってみましたが、JupyterNotebookが動くのが素晴らしい。scikit-learnが難なく動いて素晴らしい。
QpythonはQpythonでAndroidアプリを簡単に作成できるような利点がありますけど、pydroid3はそれよりは若干プログラミングに慣れた人向けかな。
アプリ自体がカッチリまとまったプロジェクトとして作られてあるように感じます。
そしてもう一つの問題、オフラインでのプレビュー。
今まで別のMarkdownプレビューアプリを使って見ていたのですが、次の物を新たにインストールしました。
https://play.google.com/store/apps/details?id=com.ekartoyev.enotes
もののついでに、Pydroid3のNotebookでscikit-learnが動くかテストします。
コードを実行後、markdownファイルに変換してEpsilonNotesでプレビューした画面を貼る。
Pydroid3のJupyterNotebook画面
以下、コード
Pydroid3のJupyterNotebookでscikit-learnの実行をテスト。
import pandas as pd from sklearn import svm,metrics
# XOR 演算結果 xor_input = [ [0,0,0], [0,1,1], [1,0,1], [1,1,0] ]
xor_df = pd.DataFrame(xor_input) xor_data = xor_df.iloc[:,0:2] # data xor_label = xor_df.iloc[:,2:] #label print(xor_df) print("=======") print(xor_data) print("=======") print(xor_label) # 学習と予測
0 1 2 0 0 0 0 1 0 1 1 2 1 0 1 3 1 1 0 ======= 0 1 0 0 0 1 0 1 2 1 0 3 1 1 ======= 2 0 0 1 1 2 1 3 0
clf = svm.SVC()
clf.fit(xor_data,xor_label)
pre = clf.predict(xor_data)
print(pre)
[0 1 1 0]
/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.7/site-packages/sklearn/utils/validation.py:761: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). y = column_or_1d(y, warn=True) /data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning. "avoid this warning.", FutureWarning)
ipynbをmarkdown変換後、EpsilonNotesでのプレビュー画像。
いま作業しながら気づいたが、pydroid3のJupyterNotebookでDownload as markdown
をすると、セルとしてキレイにmarkdownに変換されていない所があるな…
ゆくゆくは、記事をはてなブログへ自動でアップロードできるようにしたい。
はてなのAPI仕様がTwitter APIなどと比べて複雑で、未だ調べている段階。
はてなブログの下書き保存が画像にも対応し、プレビュー出来てオフライン編集も可能という、Googleドライブ風になれば一番楽なんですけどw
以上、pydroid3の個人的インストール記録まで。
追記
スマホでのJupyterNotebookですが外付けのキーボードがないと文字が入力できない場合がある(画面がソフトウェアキーボードに隠れて見えないなど)。
QPyNotebookはそこは回避した設計になっててスマホ単体だけで入力可能。
追記2
Pydroid3を起動すると出るエディタは日本語が入力できない!
キーボードを変更しても出来ません。対応していないんだとか。
コピペすれば実行できるのでインタープリタは問題ない。
JupyterNotebookは日本語入力できる。