DSi持ってなくて涙目なのでiPhoneをポケコン化してみたよ

プチコンが話題沸騰してますね。

プチコン
http://smileboom.com/special/petitcom/index_a40.html

こんにちはマイコン」とベーマガをバイブルに育った当時の小学生の一人として、こういうお手軽プログラミング環境が出てきてくれるのはとっても嬉しいです。
少しでもプログラムをかじったことがある方なら同意してもらえると思いますが、日々のちょっとした課題(飲み屋で割り勘の計算が面倒になったとか)に直面したときに、パパっとコーディングできる環境がすぐ手元にあれば、とても便利ですよね。
(そういえば昔、ポケコンという素敵なマシンが私たちのこの夢を叶えてくれていました)

是非にでも手に入れねば!と思ったのですが、よく見たらダウンロード専用なんですね、このソフト…
私は残念ながらDS liteしか持ってないのです…無念。

DSiが無いならiPhoneで作ればいいじゃない

「まあ3DSも出たことだし、ここらで腹を括ってDSを新調しようかな〜」とも考えたのですが、ここで釣られるのも何だか負けたみたいで悔しい気分。
要はポケコンの代わりになるものが手に入ればとりあえず満足なんだし、普段持ち歩いているモノで何とか代用を…というわけでiPhoneに白羽の矢を立ててみました。


さて、ご存知のとおり、AppleiPhone上でインタプリタ的な動作をするアプリの配布を禁止しています。マトモにBASICアプリを作ってApp Storeに申請してもrejectされるのは目に見えています。
(そもそもObjective-Cなんてナウい言語書けるなら苦労しないよ!というのが元ベーマガ世代)

ただし一つだけ、iPhoneにはデフォルトで組み込まれているインタプリタ環境があります。そう、SafariJavaScriptエンジンです。今回は、コイツを使った簡易プログラミング環境を考えてみました。
名づけて「iぽけこん(iPocketCOM)」。

使い方

■iPocketCOM
http://dl.dropbox.com/u/460959/iPocketCom/index.html
上記ページにアクセスします。

編集画面


最初のページが編集画面になっています。テキストエリアの中に適当なJavaScriptを書いてみましょう。
下の「実行画面へ」ボタンを押すと、実行画面に移ります。

実行画面


「実行」ボタンを押すと、先ほど記述したJavaScriptが実行されます。一応、最低限のプログラミング環境らしき形にはなりましたね。

もうちょっとBASICらしく

これで最低限の目標はクリアしましたが、実行結果をダイアログにしか返せないのは不満が残ります。
実行画面のHTMLの内容を書き換えるようなコードを書けば永続的に結果を表示することはできますが、ちょっとBASICの気軽さとは程遠い感じになってしまいそうです。
そこで、往年のBASICのような対話型のインタフェース(コンソール画面)と、入出力用の関数を用意しました。ちなみにWebブラウザにはターミナルはありませんので、実行画面にテキストエリアを配置し、擬似的にターミナルっぽく使ってます。

icprint

BASICのPRINT文ライクにターミナルに文字を出力します。

icprint ("こんにちは!こんにちは!");

iccls

icprintで色々と書きこまれたターミナル画面をクリアします。プログラムの冒頭に書いておくといいかも。

iccls();

icinput

BASICのINPUT文ライクに文字を入力します。…というのがやりたかったのですが、面倒くさくなったので入力自体はpromptに投げてダイアログボックスを出すようにしてます。
一応、入力内容をターミナルにエコーするようにはしているので、表示結果だけはINPUT文ぽくなってます。

a = icinput("あなたのお名前は? ");
icprint(a + "さんですね!");

プログラムのセーブ・ロード

ありません。編集画面のコードをコピペして、適当にメモ帳にでも貼っておけば充分でしょう。
HTML5のlocal storageとかで実装できたら面白そうですねポワワ。

仕掛けとか制限事項とかぼやきとか

  • お察しのとおり、入力した内容をevalに放り投げてるだけです。
  • サーバサイドの技術は一切使っていません。ソースもHTML1枚のみですので、セキュリティとかの心配は大丈夫だと思います(拾い物のコードを実行したりしなければ)。
  • エラー時は、例外の内容をそのままダイアログボックスに表示します。行番号とか表示されないのでデバッグは困難を極めますが、そもそもそんな長いコードを動かすことは想定していないので勘弁してください(適当)。
  • 無駄にjQuery Mobileとか使ってみました。簡単に擬似ページ遷移っぽいものが作れて便利ですね。
  • オフラインキャッシュとか使えばiPod Touchでもお外でコーディングが楽しめそう。
  • 実際にテストしている最中に気づきましたが、iPhoneのソフトウェアキーは記号が超絶入力しにくいです。心が折れます。
  • iPadで使うと画面が大きくて多少幸せかも。

おわりに

かなり以前から、「ケータイとかスマートフォンとか、昔のポケコンより断然ハイスペックなのに、どうしてユーザーが手軽にプログラミングできる環境がないんだろう?」と疑問に感じていました。今回、ちょっとショボイですが自前のコードを動かせる環境を用意できて、ようやく自分の中で溜飲が下がる思いです。

日本はケータイ普及率・利用率が高い国なんですから、すべてのユーザーがほんのちょっとでもプログラミングの基礎を学ぶ機会、そして手軽に自分のケータイから使える環境があれば、ITに対してもっと理解が深まるんじゃないかなぁ…などと思うのでした。
今の小学生、中学生の中から、プログラミングの楽しさに目覚める子が一人でも多く現れるために、私たちベーマガ世代のおっさんに何ができるか、これからも考えていきたいです。