Androidアプリを開発する上で、どうしても避けては通れないコーディングの一つに、Viewの操作があります。毎回findViewByIdメソッドを使って、キャストして、長いコードを書いて、ようやくTextViewなどを操作する準備が整うわけです。こんなに面倒で、Eclipseもろくに自動生成してくれないコードを記述するのは嫌になりませんか。筆者は、嫌です。

 例えば、テキストビューを使用するためには、

TextView textView = (TextView)
findViewById(R.id.text);

というコードを記述しなければなりません。なぜ、

TextView textView =
  findViewById(R.id.text);

のように「(TextView)」を省いたシンプルな記法を許さなかったのか理解に苦しみます。

 今回紹介する「Android Query」は、このような悩みを解決してくれるライブラリです。Android Queryは、JavaScriptのライブラリである「jQuery」を元に考案されたライブラリで、View周りのコードを記述する際には、リスト1のように記述できます。Android Queryを使うと、すっきりとした記述に直すことができます。

リスト1●Android QueryによってViewの定義を書き直したプログラム
リスト1●Android QueryによってViewの定義を書き直したプログラム
[画像のクリックで拡大表示]

jQueryのように書ける

 Android Queryを使うと、今まで冗長だった処理を簡潔に記述できるようになります。先ほど紹介したViewの操作のサポートもその一つです。jQueryのようにメソッドチェーンで、処理を次々に記述していけることもうれしいところです。

リスト2●冗長だった処理を簡潔に記述でき、数珠つなぎで記述も可能
リスト2●冗長だった処理を簡潔に記述でき、数珠つなぎで記述も可能
[画像のクリックで拡大表示]

 例えば、リスト2の上のコードを下のコードのように、数珠つなぎで書くことができます。ちなみに、

AQuery aq = new AQuery(this);
aq.id(R.id.text);
aq.text(R.string.hello);
aq.background(R.color.bg);

のように書くことも可能です。

 また、Web APIを利用する際の補助としても使えます。Android Queryには、Web APIをたたくための便利なメソッドが提供されています。サンプルとして、リスト3のように認証なしで利用できるTwitterのpublic timeline(すべての公開ユーザーのつぶやきが見られる)を取得するAPIをたたいてみましょう。

リスト3●Twitterのつぶやきを取得するプログラム
リスト3●Twitterのつぶやきを取得するプログラム
[画像のクリックで拡大表示]

 これだけで、TwitterのAPIからのデータの取得を非同期で開始→ProgressDialogを表示→取得が完了したら処理→ProgressDialogを消す、という一連の処理を実装できます。レスポンスは、JSONArrayのほかにもJSONObjectやString、File、InputStreamなど、様々な形式で受け取ることが可能です。

 リスト3では、クライアント側から何もファイルのアップロードやパラメータの受け渡しなどを行なっていませんが、これらのパラメータやファイルも簡単に送信したり、アップロードしたりできます。