ネット検索をしてたらこのような面白い記事を見つけた。
なかなか面白い実験だ。
何度か書いてるが、AppleのiPhoneもGoogeのAndroidも基本的には両者共UNIX系OSだ。iPhoneのiOSは大きく言うとFreeBSD系、AndroidはLinuxと言う違いはあるが、実はこの2つ共古ではメインフレームで動いてたOSの子孫(厳密に言うとLinuxの方はクローン)だ。
しかしながら、iPhoneは故スティーヴ・ジョブスの趣味によりガッチガチにユーザーに対するプロテクションを掛けまくってて、自由度が低いOSになってるのに対し、この記事によると、さすがGoogle、いい意味で緩いよな、と(笑)。ある程度までデスクトップのLinuxと同じ事が出来るようになってるらしい。
やっぱ面白いね、Android。
さて、その記事、こんな事が書かれている。
でもoutput.pyに変更してPythonプログラムを書き込ませてPydroidで実行させるのは可能みたいだ。ただし、インデントは反映されず、"は勝手に削除されてしまうので、インデントと"がいらない以下のような簡単なものしか実行できなかった。
この後の記事で自己解決している模様だが、それはさておいて、この人はまだ、一般的なプログラミングに於ける文字列の性質が分かってないように思う。
具体的には、文字列に於けるエスケープシーケンスが何だかまだ良く分かってない。
例えばHello, World!と表示するPythonコードは
print("Hello, World!")
だが、echoで「これ全部を文字列として表示したい」場合、このようにして書けばダメなんだ。
echo "print("Hello, World!")"
これだと"print("が文字列、Hello, World!が何だか良くわからない命令あるいはechoのコマンドラインオプション、")"がまた別の文字列だと解釈される。
ポイントは、bashでの文字列は$'〜'とした方が利便性が良く、$'〜'の中でダブルクオーテーション記号を使う場合、エスケープシーケンスで記述せねばならない、と言う原則だ。
echo $'print(\"Hello, World!\")'
\"ってのが文字列内で"を表示するエスケープシーケンスだ。
実際次のようにして試してみよう。
echo $'print(\"Hello, World!\")' > test.py
そうすると、次のように記述されたtest.pyと言うテキストファイルが生成されてる筈だ。
エスケープシーケンスの\(バックスラッシュ)が消えて、フツーのPythonコードになってるだろう。
同様に、タブなんかは\t、改行は\nで記述する。
echo $'def hello(s):\n\treturn f\"Hello, {s}!\"\nprint(hello(\"world\"))\n' > test.py
なお、Pydroidが端末上から実行可能なのかどうか知らないが、もし端末上で走るなら、リダイレクト(>)でなく、いつぞや見た通り、パイプ(|)を使ってechoで得た出力を直接Pythonの標準入力へと流し込む事が可能だ。
echo $'def fizz_buzz(n):\n\treturn [\"FizzBuzz\" if i % 15 == 0 else \"Fizz\" if i % 3 == 0 else \"Buzz\" if i % 5 == 0 else i for i in range(1, 1 + n)]\nprint(fizz_buzz(100))\n' | python3
ぶっちゃけ、プログラミングをはじめた段階だと、改行(\n)は使ってもその他のエスケープシーケンスの応用に付いては「何が何故にそうなってんの?」とピンと来ない事が多い。
あの龍虎氏でさえ、プログラミングを始めた頃はエスケープシーケンスの意味が分かってなかったんだ。僕もそうだ。言い換えると皆通る道なんだ。
とは言っても、実際問題、echoで組み立てた文字列(プログラム)をPythonに送る、ってのは大変だ。
そこで、Androidであるかどうかは知らんが、Linuxで定番の、端末で使えるテキストエディタを2つ紹介しておこう。Androidでbashが扱えるなら、ひょっとしたらこれらテキストエディタも提供されてるかもしんない。
1. vim
UNIX生まれの(Windowsユーザーの感覚から言うと)ヘンテコなテキストエディタ(※1)。しかし世界でもユーザー数は結構多く、特に現在のMacユーザーでの愛用者が多い模様。
このエディタの特徴はモードが2つあり、「入力モード」と「操作モード」の2つを頻繁に切り替えながら使う辺りだ。
なお、vimtutorと言うコマンドで使い方を練習する事が出来る。
また、日本版Windowsでは香り屋のヴァージョンが有名。
2. nano
「UNIXのデフォルトテキストエディタはviなんだからユーザーはviを習熟すべき!」と言いたがる人が多いが、最近のLinuxディストロではそうでもない。
じゃあ、何らかのシステムが壊れたような時、なんで修繕するのか?と訊かれれば、現行のLinuxで殆どデファクトスタンダードなテキストエディタになってて、「これを使え」とプライマリチョイスになってるのがGNU nanoだ。
nanoはviに比べると「極めてフツーのテキストエディタ」で、viみたいにイカれたトコがない。下部には基本メニューが表示されているし(^は「Ctrlキーを押しながら」の意)、MIT発祥のスクリーンエディタの伝統に則りながら、なおかつGNU Emacs系のおかしなトコもなく極めて軽い。世界的には結構人気がある端末用テキストエディタだ。
こんなトコかな。
※1: これも厳密にはUNIX生まれではなく、UNIX生まれのテキストエディタ、viのクローンだ。生まれ自体はCommodore Amigaと言うマシンだ。