Editorialからの乗り換え先を探した

omz:softwareさんの素晴らしいアプリたちを愛用してきたが、Pythonistaは1年前、Editorialは2年前を最後に更新が止まっている。

公式サイトのCommunity Forumでも諦めムードが漂い始めた中でiOS13が発表された。

http://omz-software.com

 

Community Forumに書き込まれた情報によるとiOS13でAppleはファイル関連のAPIを少々変更したそうで、Pythonistaでは不具合が報告されている。

作者さんがやる気を出して新APIに対応してくれないと問題解消は困難らしい。

 

で、おそらく同じ原因によると思うのだが、Editorialが頻繁に落ちるようになってしまった。

ファイル操作を含むWorkflowを走らせると落ちてしまう。この時場合によっては直前の編集が消えてしまう。

 

さすがにデータが消えるのは困るため、仕方なく重い腰を上げ、乗り換え先を探した。

結果、

Textastic (Alexander Blach)でmarkdownメモ書きを

Cloud Outliner Pro (Denys Yovenko)でtaskpaper的なリスト管理を

それぞれ分担して代替することにした。

従来だとテキストファイルがアプリごとに分散してしまうのが気持ち悪かったが、iOS13でファイル管理が強化され、どちらのアプリのファイルも一覧的に把握できるのは怪我の功名と言うか違うと言うか(^_^)

 

なおどちらも有名どころの素晴らしいソフトだが、Editorialでは自動化していた処理を手作業でやることになる。そこは諦めよう。

 

また、bookmarkletと組み合わせて、ネットからデータを読み込んで行なっていたPythonスクリプト処理についてはデータが消える不安はないので、当面Editorialを継続使用することにした。

 

いやーほんとにEditorialの素晴らしさを実感するわ。

PCで作成したデータファイルを、クラウドを使わずにPythonistaで読み込みたい

Dropbox必須だと思っていたら、使わずに出来た!

但しiOS11で追加されたファイルAppの機能を使ってるようなので、古いバージョンでは無理かも。今回テストした環境はiOS 12.3.1。

 

手順

1. Pythonistaを起動する

2. メニュー → EXTERNAL FILES → Open...

3. ブラウズの画面でファイルそのものではなくフォルダを選ぶ ← ここがポイント

 

手順3の詳細

3a. ブラウズ画面右上の「選択」ボタンを押す

3b. 対象のファイルが含まれたフォルダを選択する

3c. 画面右上の「開く」ボタンを押す

 

4. EXTERNAL FILESに当該フォルダが表示される

5. あとはPythonista内で自由にファイルの移動ができる

 

*****ここで非常に重要な注意*****

この手順でEXTERNAL FILESに出現するファイルは、言ってみれば「値渡し」ではなく「参照渡し」。

Pythonista内でファイルを移動すると、そもそもPythonistaの外部にあったオリジナルのファイルが移動され、消えてしまう。もちろんPythonista管理内に移動されただけなのだが、そのファイルを再度Pythonistaの外部に移動し戻す事は出来ないようだ。

事前にコピーを取っておこう。

*****ここまで*****

 

iPadではアプリが落ちてしまうような重い計算はPCで行い、データの整理やプロットなどは気軽にiPadで、と言う環境が、クラウドを使わずに構築できた。

iPad上で作ったファイルをWindows PCにコピーしたい

WWDC19でiPadUSBメモリ対応が発表された。このニュースを見て、以前あれこれ苦労したのを思い出した。なお以下の手段はかなり使用環境や好みに依存した話となる。

 

結論から遡って書いて行くと、Android端末にFTPサーバーアプリを導入することで解決した。私の場合はMedha Apps製「無線LANFTPサーバー Wi-Fi FTP Server」というアプリを使っている。

要するに私は普段Android端末とiOS端末の2台持ちなのだ。

iPadからAndroid上のFTPサーバーにファイルをアップロードできさえすれば、Android上からWindows PCにファイルをコピーする方法はいくらでもある。USBケーブルで繋いでもいいし、Android端末なら今すでにUSBメモリを使うこともできる。

なおiPadからAndroid端末にファイルをアップロードする際にはReaddle製の「Documents by Readdle」というアプリを使っている。

 

この手段にたどり着くまでの試行錯誤と感動体験の話

 

iPad Proの登場で、私の仕事は一部iPad上でできるようになった。MacBook Airにも大きな不満はなく、なで回したくなるほど可愛いマシンなのだが、やはりiPadだけ持ち歩けばいいとなると身軽さが違う。

ところがiPadではUSBメモリが使えないのだ。もちろんLightning対応のUSBメモリなどは売られている。しかしそれらは専用のアプリを使って画像、音楽、PDFなど種類を限ってコピーできるようになっている。(実際一つ購入して試してみた。拡張子を偽装して画像ファイルのように見せるなどやってみたがやっぱりダメだった。)

 

なので、作成したデータを出先で共有するのは非常に面倒だった。データをクラウドに上げるわけにはいかないし、それこそMacBookでも一緒に持ち歩いてファイルを吸い出さないといけない。しかも、私が常用している上記「Documents by Readdle」で管理しているデータは、iTunes接続ではコピーできないのだ。元々WiFi経由でクラウドNASとやりとりするアプリなので。

 

むむ?じゃあNASにアップロードできればいいよね?……ひらめいた!ポケットWiFiでファイルサーバ機能付きのやつがきっとあるはず!

 

検索してみると実際3〜4製品ほどあった。しかしいずれも評価はイマイチ。その上2010〜15年頃の製品ばかりでその後継機が出ていない。(結局買わなかったので列挙は省略する。)

 

そこで一旦諦めたのだが、ふとした機会に上記Androidアプリを見て、「なーんだ!ポケットWiFi(=Android端末)はいつも持ち歩いてるじゃん!」とまさに目からウロコ、ちょっとした感動体験だったのを思い出したので書いてみた。おしまい

Pythonistaが遅いのはnumpyのバージョンが古いせい?

iOSアプリのPythonista。iPhoneiPadpythonの環境が使えるようになる。

http://omz-software.com/pythonista/

私も熱狂して、「これならノートPCの代わりにiPadだけ持ち歩けば済むのでは!?」とワクワクして弄っていた。

 

以下ディスるような内容になっているが、そんなことは些細な話でPythonistaは本当に素晴らしいアプリだよ念のため。

 

使ってみると日常の小物プログラム程度なら全くストレスはない。しかし機械学習くらいの反復処理を実行するとなるとPC上のpythonに比べて遅さが目立つ。

なおPythonistaでは、iOSの制約のため使用できるライブラリが限られる。このため両者とも機械学習ライブラリは使用せず、numpyのみで実装したスクリプトを使って比較している。

さらに言うと使用マシンの方もiPad Pro(2017)とMacBook Air(2018)で、ベンチマーク上両者はほぼ互角の性能だ。

 

スクリプトの挙動などから疑わしい検索ワードをいくつか試してみると、たとえば古いnumpyのroll関数は遅さで悪名高いなどの情報があった。

https://github.com/numpy/numpy/issues/10848

 

実際使用したPythonista(v.3.2)のnumpyのバージョンは1.8.0。PC上のpythonのnumpyのバージョンは1.16.2。これは配布されている最新版だ。

うーむ。やはりnumpyが古いせいなのかな?

 

じゃあPythonistaのnumpyをアップデートすればいいのか?

しかしざっとググった範囲では、StaShを使ったnumpyのアップデートは上手くいかない模様。実際私の環境でもnumpyを呼び出すとエラーが出るようになり、Pythonistaごと再インストールすることになってしまった。ちなみにPythonistaで最初から使えるnumpyはアプリに静的ライブラリとしてリンクされているものとのことだ。

https://forum.omz-software.com/topic/5243/pandas-needs-newer-numpy

 

これ以上は私の手には負えなさそうなのでトライは終了。

新規情報を待つことにするわ。

約束のネバーランド 9話 「ノーマンの壁登り」はやればできる?

ノーマンの「壁登り」

すでに各方面で突っ込まれている通り、壁を蹴って走っているので常識的には1歩目でいきなり壁から浮いてしまう。

なのでアニメの描写通りに壁を登るのは不可能だろう。

 

でも壁を蹴らずに、単に助走してロープにぶら下がるだけなら跳ね上がれるのでは?

 

ざっくり計算してみた。

壁の高さをh[m]とすると、

mgh = (mv^2)/2

より

v = √2gh = √2 x 9.8 x h = 4.4 x √h

の速度で走れればいいよね。

たとえばh = 4mなら、v = 8.8[m/s]、つまり100mを11.4秒で走れればOK。

 

ググってみると中学生男子の100m走の平均記録は16秒前後。

しかし中学生でも陸上の日本記録レベルになると10.56秒が出ている模様。

http://rikujyokyogi.co.jp/juniorhighschoolrecords

やってやれないことはなさそう。

ごっこでずっと走る練習してたしね。

ノーマンすごい!