次に話題になるプログラミング言語は TouchDevelop……かもしれない

Windows Phone 7.5 では、Microsoft Research が公開している TouchDevelop というアプリで、「スマフォでお手軽プログラミング」ができる。Windows Phone の次期バージョンである Windows Phone 8 は、デスクトップ OS の Windows 8 と共通のカーネルを使うとされており、Windows 8 で採用される Metro UI は、Windows 7.5 ですでに導入されているものだ。
とすると、TouchDevelop の Windows 8 対応がいつ来てもおかしくない。

何が得意な言語/アプリか

TouchDevelop はプログラム開発環境のアプリであると同時に、このアプリで使えるプログラミング言語の名前でもある。
お手軽さや基本的なスタイルからいえば、昔懐かしい BASIC 言語 (N88-BASIC とか) に似ている。最初は真っ黒の画面に文字を出力するところからスタートして、グラフィックを表示したり音を鳴らしたりすることができる。頑張れば、ちょっと凝ったゲームを作ることもできる。
一方で、スマートフォン上で使うことを前提に設計されていることも TouchDevelop の特徴的な点だ。端末内の音楽や画像を操作したり、位置情報を取得したり、Web や地図を検索したりといったことが簡単にできるように作られている。
少し前にはてブで、「特定のキーワードで Web 上の画像を検索して、すべてローカルに保存する」というのを色んなプログラミング言語で書くというのが注目を集めていたが、これを TouchDevelop でやる場合、次のような非常に短いスクリプトで書けてしまう (ただし、TouchDevelop 組み込みの検索機能では、検索結果が一度に 10 件までしか取得できない。もっとたくさん取得したいのであれば、自分で Web ベースの検索 API を探す必要があるが、その場合でもせいぜい十数行増える程度だろう)。

いまどきの言語らしく JSONXML も扱える。以前 AR (拡張現実) が話題になっていたが、TouchDevelop ではスプライト (画像や文字) に、画面上での位置だけでなく実世界での位置情報、つまり緯度と経度を指定することができる。すると、以降は端末内のセンサーと勝手に連携して、自動で表示を行ってくれる。画面の背景にカメラからの映像を設定するということもできるので、組み合わせれば実写と画像や文字を簡単に重ね合わせることができる。
他にも、音声合成や加速度計へのアクセス、メッセージの送信、LAN 内のメディアサーバやプリンタとの連携など、様々な機能が簡単に使えるようになっている。
アプリとしてもよくできていて、プログラムを編集するにあたっては、画面下半分のパレットからオブジェクトやそのメンバを選択していくだけで、サクサク記述していくことができる。下記のリンク先に、公式の紹介動画がある。イケメンがなんか英語で説明してくれているのだが、画面の操作に注目してほしい。

TouchDevelop - Getting Started
http://channel9.msdn.com/Blogs/Peli/TouchDevelop-Getting-Started

この動画では、スクリプトを新規作成した後、不要な行を削除してから、プログラムを 2 行書いている。短い動画なので、音声合成をやるために文字列を入力しているところ (ここはさすがに 1 文字ずつ入力している) が目立ってしまっているが、その他は画面上でスースーポンポンと選択していくだけなのがおわかり頂けると思う。
EclipseVisual Studio 等の統合開発環境で開発経験のある人なら、オートコンプリート (IntelliSense) の便利さはよくおわかりだと思うが、最初から最後までそれで全部書いていくような感じ、というのが TouchDevelop 流だ。キーボードのないスマートフォンでは、非常に合理的な入力方法と言える。
僕が「TouchDevelop の Windows 8 版が出るのでは」と考えているのもそこが理由で、TouchDevelop の使い勝手とお手軽さは、Windows 8 のデスクトップ版 Metro UI でも便利に使えそうなのだ。

何が苦手な言語/アプリか

多くのプログラミング言語では基本的なデータを扱うための命令だけが用意されていて、複雑な処理はカスタムのライブラリで実現する形式を採っている。TouchDevelop では逆に、高機能なライブラリが最初から用意されている反面、基本的なデータの操作には重点が置かれていない。
例えば、画像をソーシャルネットワークで知人と共有する、といったことは数行で書けるが、独自形式の画像を読み込みたいのでバイナリデータの操作を……と思っても、そもそもバイナリデータが扱えない。画像は最初から画像として取得し、画像として使うことしかできないのだ。
また、最近のバージョンで独自のライブラリが定義できるようになったとはいえ、やはり大規模な開発には向かなさそうだ。画面下半分のパレットから変数を選ぶ際、その変数が 100 も 200 もあったら、ページをめくるだけで疲れてしまう。
人によっては、作ったプログラムが TouchDevelop というアプリから「外に出られない」ことも気になるかもしれない。公式サイトにアップロードして他の人と共有することはできるものの、実行できるのはあくまで TouchDevelop のアプリ上でのみに限られる。外部にエクスポートして独自のアプリとしてコンパイルし、Marketplace で売り出す……なんてことはできない。

[2012-04-10 追記] 公式サイトを見ていたら、TouchDevelop で作ったプログラムを単体の Windows Phone アプリに変換できるということが書いてあった。もちろん Marketplace にも出せる。ただし、作ったプログラムをいったん公開し (TouchDevelop ではアプリ内から公開を行うことができ、公開したプログラムは誰でもダウンロードして利用できる)、他の利用者から好評価を 3 回以上受ける必要がある。

結論

TouchDevelop は、Windows Phone 上で使うことを前提に設計された、非常に使いやすい言語/アプリだと感じている。スマートフォンの機能を活用し、小規模なプログラムを作って楽しむには非常に適しているもの。
一方で、職業プログラマーが使うような他の言語の代替にはならない、と考えてよさそうだ。
今後本当にデスクトップ用の Windows 8 対応版 TouchDevelop が登場するとしたら、すでに開発経験のある人よりもむしろ、これまでプログラミング言語に触れたことのない人がホビープログラミングや日常の作業の手助けにするといったかたちで親しまれていくことになるだろう。