iPadでJavaScriptを書いてすぐ実行するやつ作った
iPadでプログラムが書きたい。
ってことで、iPad上でJavaScriptを書いてすぐ実行するやつを作った。といってもAppStoreで配信するアプリではなく、htmlとcssとJavaScriptで書いた単純なWebページなので、SafariでURLを開くだけでいい。
JavaScripadって安易な名前だからすでに誰か使ってるかと思ったけど、まだ無さそうだった。
2010-7-19 追記
tabインデントに関する機能を追加した。
- 改行で自動インデント
- tabボタンの右フリックでtab文字を入力
- 範囲選択してtabボタンを左右にフリックすると、複数行まとめてtabインデントの移動
追記ここまで。
2010-6-11 追記
カーソル移動や記号の入力につかうボタンを、フリックで入力するようにした。これによってボタンが大きく押しやすくなったのと、連打して文字選択モードになってしまう問題が回避できた。
あと、詳しい説明を余白(キーボードが出るはずの場所)に書いた。
以下の説明やスクリーンショットは古いバージョンのものなので、最新の説明は実際の画面を見て欲しい。
追記ここまで。
使い方
- iPadのSafariで http://nacookan.com/2010/js.html にアクセス。
- iPadを縦に持っている場合は上、横に持っている場合は左の入力欄にjsでコードを書く。
- 文字列を出力したい場合は、print(string) 関数があるので、それを使う。
- jQueryもロードしているので、使っていいよ。
- コードを入力すると、反対側の欄に実行結果が出力される。
- カーソルキーとよく使う記号は、ボタンを並べておいたのでそれを使うとちょっと便利かも。≪は行頭。←はひとつ左。→はひとつ右。≫は行末。あとは記号。
仕組み
keyupイベントをつかまえて、evalしてるだけ。htmlファイル内にすべてのコードが書いてあって、サーバーサイドでは何もやっていないので、詳しくはソースコードを見て欲しい。
カーソルキーと記号
iPadのキーボードは意外と打ちやすいんだけど、文章を書くのは良くてもプログラムを書くのにはちょっと厳しい。カーソルキーは無いし、記号は入力しづらいから。
そこで画面に専用のボタンを置いた。最初はclickイベントをハンドルして処理を書いていたけど、これだと一瞬iPadのキーボードが消えてまた出てくるという挙動になってしまい、実用上問題はないけど気になる感じだった。
それでいろんなイベントを試したところ、iPadのSafariでは "touchstart" というイベントが発生することがわかり、これをハンドルしてもキーボードが消えないこともわかったので、解決した。
ちなみにjQueryでclickみたいにメソッド化されてないイベントのハンドルにはbindメソッドを使う。
カーソルキーに関しては、ホントは上下移動も作りたかったけど、いろいろ難しくてやってない。誰か助けて。
あと、このボタンを連打すると、ダブルタップとして認識されてしまい、文字選択モードになってしまう問題があって悩んでる。とりあえず、あんまり速く連打しないで欲しい。でもカーソルキーとか++とか、ついつい連打しちゃうんだけどね。。。
Sendai.jsで使った
6月8日はSendai.jsの4回目だった。普通はノートPCを持っていってFirebugとかでコードを打って結果を見たりするんだけど、自分は全部このJavaScripadだけでやってみた。その結果、とりあえず大丈夫だった。念のためMacBookも持っていったけど使わなかった。
まだ記法をみんなで確認してる段階ってだけで、何かを作ったりしたわけじゃないからっていうことだと思うけど。
ただ、6月8日時点ではまだカーソルキーの機能が無くて、そこだけ苦労した。さっき作ったので今後は大丈夫。
オフライン動作
iPadはWi-Fiモデルの人もいるからオフラインで動作させたいんだけど、どうやればいいんだろう。画面さえ読み込めれば、その後は通信不要なのでいけるはず。
ただ、たとえばhtmlをメールに添付して送ったり、GoodReaderで開いたりしてみたら、画面をタップするとツールバーとかが画面に重なってしまって使い物にならない。困った。あとjQueryもGoogleからロードしてるのでオフラインだとたぶんダメ。ああなんかいいアイディアないかな。
今後やりたいこと
- 書いたコードを保存できるようにするとか(しかもパーマリンク付けて公開?)
- id:dankogaiのllevalを使うなどして他の言語も実行できるようにするとか
- もうちょっと画面の見やすさ、入力のしやすさを追究するとか