AndroidのApp Inventorでアプリを作ってみた–コンポーネントの充実+自作可能化を待ちたいね

次の記事

爆発的に増えるGrouponとソックリさんたち–彼らの"やり方の違い"を勉強しよう

GoogleのApp Inventor for Androidについては、みなさんすでにご存じだろう。デベロッパでないふつうの人が、Androidアプリケーションを作れる、というWebベースの開発環境だ。これまでの1年、主に教育機関などでテストしていた製品で、学生たちが教室でAndroidに触れるわけだから、Androidというエコシステムの普及にも役立っただろう。The New York Timesの記事はプロジェクトリードでMITの教授Harold Abelsonの言葉を引用している: “世界一上出来のアプリケーションではないが、ふつうの人がほんの数分で作れるアプリケーションだ”。何百万人ものAndroidユーザが、突如、自分のデバイスの上でプログラミングを始めるということ? そうではないね。

今朝90分ほど、App Inventorのテストアプリケーションをいくつかいじってみたが、ぼく自身はすごくワクワクしているものの、”ふつうの人”にとって公園の散歩ほど簡単なわけではない。”Hello World”みたいな超簡単なアプリケーション*、ではないプログラムを作ろうとすると、必ずドキュメンテーションを読まなければならない。今提供されているチュートリアルでは、分からない部分もある。しかし、とは言うものの、この製品が実際にテストされた学校/大学の教室みたいな環境で使うには最高だ。学習曲線は決して平坦ではないが、しかしマスターするのに数年もかかる、というものでもない。〔*: Hello World, Hello Worldというメッセージを画面に表示するだけのプログラム。〕

これからぼくの経験を述べる前に、読者はぼくという人間のプログラミング歴(あるいはそれの不足)を知ってたほうがいいだろう。高校ではVisual Basicを1年やったが、App Inventorはいくつかの点でそのころを思い出させる。その後はC++のクラスを2つ取ったが、それは今回まったく無関係だ。Scratchは一度も使ったことがないが、App Inventorは多くの点でそれに似ている。ぼくのプログラミング経験は、プロのデベロッパほど豊富ではないが、平均的なAndroidユーザよりはプログラミングについて知っていると言えるだろう。

App Inventorを使い始めるのはEclipseとAndroid SDKをインストールすることに比べれば簡単だが、でも、やることがいくつかある。まず、PCの上で正しいバージョンのJavaが動くこと。次に、あなたのOS用のクライアントプログラムをインストールする。そして、Android携帯電話の設定をいくつか変える(アプリケーションのインストールをUnknown Sources可にし、Devモードをonにし、等々)。携帯電話をPCにつなぎ、App Inventorにログインし、Javaアプリケーションを動かし、これで準備完了。作業点数が多いようだが、でも、何をやってるか分かっている人なら10分もかからないだろう。

さて、いよいよ初めてみると、App Inventorには2つの部分があることに気づく。DesignerBlocks Editorだ。ドキュメンテーションはこの二つの違いを分かりやすく説明しているが、要するにボタンやテキストフィールド(テキスト入力欄)などのGUIの成分を加えてアプリケーションのレイアウトを決めるのがDesigner(それはWebページだ)、そして、ドラッグ&ドロップによる実際のコーディングをするのがBlocks Editorだ。さて、設定を変えたAndroidデバイスをコンピュータにUSBでつなぐ。その作業に要するのは1分弱だ。

ぼくの最初の構想は(ちょっと欲張りすぎたようだが)、ユーザがTechCrunchの記事のタイトル中にキーワードをチェックできるアプリケーションだ。たとえば、スタートアップxyz社がタイトル中にxyzのある記事が載ったとき通知がほしい、なんてとき便利だろう。レイアウトは、簡単だった。デザインキャンバス上にテキストボックスとラベルとボタンをドラッグして、幅とレイアウトを微調整し、外見をあんまり醜くないようにする。その次が難しい。ユーザがこれらのボタンを押したら、このアプリケーションは何をするのか、という部分。これがぼくの、Blocks Editor初体験である。

Blocks Editorは、アプリケーションのロジックをパズルのように指定していくという点でAppleのAutomatorに似ているが、ただし当然ながらあれよりずっと複雑だ。App Inventorにやりたいことをやらせるのは、そういうタスクのためのコンポーネント(component, 部品)がすでにある場合はとても簡単だ。テキストフィールドの内容を、ユーザがボタンを押したらデータベースに保存する? それは朝めし前だ。しかし現状では、コンポーネントがそれほど豊富に揃っていないから、すぐに不満にぶつかる。

跳ぶ前に正しいコンポーネントを探せ

最初ぼくは、RSSフィードを使ってTechCrunchの記事のタイトルをモニタする計画だった。RSSのコンポーネントぐらいあるだろ、と期待していた。ところが残念、まだRSSの機能を持つコンポーネントはない。でも、App Inventorにはすでに、TwitterのAPIを使うコンポーネントがいくつかあるようだ(検索など)。それなら、TechCrunchのTwitterのフィードから記事タイトルを拾って、それに対してユーザが入力したキーワード(検索クェリ, query, 質問)を検索したらどうだ?  そのためのコンポーネントをいくつかドラッグ&ドロップしたら(要した時間は約2分)、ぼくのアプリケーションはどんなキーワードを入力しても、Twitterの検索結果を吐き出すようになった。これはすごい! しかし、個別のTwitterアカウントをモニタするのはもっと難しい(ぼくのアプリケーションの最初のバージョンはTwitter全体を検索した)。ぼくはたちまち、このプロジェクトを完成させるためには自分がApp Inventorに対して経験不足すぎる、と悟った。そこで当面、プロジェクトを棚上げすることにした。アップデート: どうやら、joinブロックを使ってクェリと”from:techcrunch”を加え、それを検索に使えばよかったらしい。〔文字列”from:techcrunch”に検索キーワードをjoinする。〕

二つ目のアプリケーションは、Draw N’ Send(描いて送る)とでも名付けたいやつ。最初の失敗で懲りたから、今度のはApp InventorのチュートリアルにあるPaintPotとほとんど同じのだ。ユーザが空のキャンバスの上にいろんな色で絵を描くというもの(その絵をメールで送れるようにしたかった)。出だしは上々、手取り足取りのガイドがあるからね。色つきのボタンをいくつか置いて、ユーザが指で画面をドラッグしたら点や線を描けるようにするまでは、意外と簡単だった。これで絵を描けるようになったから、あとはメールだ。しかしここで、二つ目の障害にぶつかった。キャンバス上のコンテンツを画像ファイルとして保存するコンポーネントが、なぜかないのだ。だから、メールしたくてもするものがない。だからこのアプリ開発は、そこでおしまい。

今後の展望

以上の経験から、いろんなことが言える。まず、誰でもプログラムを作れる環境とは言いながら、そのためには勉強が必要だ。そして、そのためにはもっと豊富なチュートリアルがないとだめだ(USFのDave Wolber教授のAppinventor.orgも見てみよう。ここはGoogleとは無関係)。

もう一つの大きな減点は、提供されているコンポーネントがまだ少ないこと。必要なコンポーネントがなければ、運の尽きだ。Googleは新しいコンポーネントを作っていると言ってるし、それに今後出るらしいComponent Developer Kit(コンポーネント開発キット)は、App Inventorの機能を豊富にするための大きな飛躍になるだろう。でも今のところは、何かに挑戦する前に、今どんな機能が揃ってるのかよく調べたほうがいい。困ったもんだね。

[原文へ]
[米TechCrunch最新記事サムネイル集]

(翻訳:iwatani(a.k.a. hiwa))