Android端末のタイマー機能を使ったアプリケーションを作成してみましょう。このアプリケーションは、2ケタの自然数の足し算を5回行い、計算にかかった合計時間を表示します。10分程度で作成できる簡単なものです。ぜひ、パズルを組み立てる感覚でトライしてみてください。

タイマーを使って計算時間を測定する

図13●計算時間を測定するアプリのUI画面
図13●計算時間を測定するアプリのUI画面
[画像のクリックで拡大表示]

 まずは、App Inventorを起動してプロジェクトを作成します。ここでは、Testという名前にしました。次にApp Inventor Designerを使って、図13のUIをデザインします。先ほどのアプリケーションと同じくButtonやTextBoxなどを張り付けていきますが、ここでは、新たな部品を二つ利用します。

 一つはタイマー機能を実装する部品です。「Basic」→「Clock」を選択してドラッグ&ドロップでViewerに張り付けます。すると、Viewerの下部に(1)のような「Clock1」という時計のマークが表示されます。これで後ほどBlocks Editorでタイマーの設定が可能になります。また一つの部品の中に複数の部品を配置するために、「Screen Arrangement」→「HorizontalArrangement」を選択し、その中にLavelやTextBoxなどを配置していきます(2)。図13では、それぞれのPropertiesを見やすいように適宜設定していますので、自身の好みに合わせて設定して配置してください。UI部品も自分のわかりやすい名前に変更してしまって構いません。

図14●Blocks Editorで実装した処理
図14●Blocks Editorで実装した処理
[画像のクリックで拡大表示]

 UIが完成したら、先ほどと同様にBlocks Editorで処理を実装していきます。全体像は図14に示します。ポイントは新たに定義した変数である(1)と、関数の(3)です。

 基本的にBlocks Editorの起動直後は、App Inventor Designerで生成したUI部品に関するブロックしか選択できません。UIのボタンを押すと勝手に計算時間を計測してくれるようなブロックはデフォルトで用意されていないので、開始時間と終了時間をそれぞれの変数に保存しておき、「終了時間-開始時間」を測定して、計算に要した時間を取得しています。

 新たに変数を宣言するには、「Built-In」タブから「Definition」を選択して、「variable」と書かれたブロックをデザイナにドラッグ&ドロップします。そして「variable」にマウスカーソルを持っていき、クリックして適当な名前に変更しましょう。Definitionのメニューから変数や関数を宣言すると、My Blocksタブの「My Definitions」から変数に値を代入したり、定義した関数の処理を実装したりするブロックが現れます。

 図14の(1)では、このDefinitionから残りの問題数、タイマーの開始時間を格納する変数、タイマーの終了時間を格納する変数、実際に測定した時間を格納する変数、の四つの変数を定義しました。それぞれの初期値は0にしています。初期値は、「Built-In」タブの「Math」にある「number」と書かれたブロックを接続することで代入できます。

図15●5問正解に要した時間を表示したエミュレータの画面
図15●5問正解に要した時間を表示したエミュレータの画面
[画像のクリックで拡大表示]

 (2)では、先ほどのアプリケーションでも作成したスタートボタンが押されたときの処理になります。計算する二ケタの自然数を二つ用意して、Clock1.SystemTimeメソッドを呼び出すことで開始時間を取得し、定義した変数に代入しています。数値は、Mathにあるrandom integerというブロックを利用して10~99までの自然数をランダムに選択します。変数に初期値を代入した操作と同じように、Mathからnumberブロックを二つ選択して、ランダムに発生させる自然数の範囲を指定しています。

 (3)は数値を表示する関数です。関数は変数と同じく、「Built-In」タブから「Definition」から定義します。ほぼ(2)と同じなので難しいことはないでしょう。

 最後の(4)が「回答」ボタンを押したときの処理です。ここでは、5問正解するまで(3)の関数で計算問題を作成し、5問正解したら終了時間を取得して要した時間を計算します(図15)。

☆     ☆     ☆

 いかがだったでしょうか。App Inventorを使えば一切コードを記述せずにアプリケーションが作成できましたね。作成したAndroidアプリは、音を出したり画像イメージを追加したりして簡単に拡張できます。

 また、ここで紹介したブロックだけではなく、App Inventorには、加速度センサーやGPSと連携できるブロックも存在します。Androidアプリを作ってみたいけど、Javaが理解できない、開発ツールの使い方がわからない、といった人には特にお勧めです。

 ぜひ、App Inventorをインストールして、手軽にAndroidアプリ開発を楽しんでください!

App Inventorでできないこと

 パズルを組み合わせるようにAndroidアプリを作成できるApp Inventorですが、2011年4月下旬の執筆時点では、実装できる機能に限りがあります。その代表例がIntentでしょう。画面をつなぐIntentが実装できないため、マルチスクリーンのアプリケーションは原則、作成できません。Android端末にインストールされている他のアプリケーションとの連携も不可能です。

 また、App Inventorは、クラスファイルを含んだパッケージを出力しますが、Javaのソースコードを直接出力するわけではないので、どのようなコードによってアプリケーションが実装されているかを確認できません。さらに現段階では、App Inventorから直接Android Marketへ作成したアプリケーションをアップロードする機能もありません。

 不足している機能は、今後のバージョンアップにより実装されたり強化されたりするかもしれませんが、App Inventorを使って本格的にアプリケーションを作り込んでAndroid Marketに公開してみたいと考えている人は注意してください。