Android初心者の最初の2週間での感想

Androidの開発機を入手して2週間ほど経つのですが、その2週間の感想です
# 2週間といっても、他にいろいろとやってたのですが(個人の方で新サービス読んだ4!のテスト公開とか)
この手のことをするのは、2002-3年ぐらいにPocket PCの開発をやって以来なので、少しずれてるかもしれませんが。いろんな事が簡単にできるようになっているなあと、時代の違いを感じました。

開封から設定

設定にパソコンは不要

[開封]-[起動]-[タイムゾーンと日時の設定]-[WiFiの設定]-[Googleアカウントの設定]
で。Gmailが使えるようになり、GmailのコンタクトもAndroid上で閲覧できるようになりました。携帯電話として使うためのSIMは持ってないし、持っていたとしても使うとたいへんなパケット料金になるらしいので、無線LANだけで使ってます。
Gmailのコンタクトに電話番号の情報はほとんど入っていないので、実際に使ってる携帯電話を移行するなら既存のケータイのアドレス帳をGmailのコンタクトに移せないといけないのでは、と思いました。既にあるのかもしれませんが。
日本語IMEが入っていなかったので、simejiというアプリケーションをインストールしましたが、これがとてもよくできています。

開発環境

EclipseとEclipseのプラグインをダウンロードするだけで、手元のパソコンで開発できるようになりました。WindowsやLinuxでも開発できるのがiPhoneとの違いでしょうか。僕はMac持ってないのでこれは助かります。
開発環境の作り方は、いくつも解説サイトがあるのでそれを見ながらできました。たとえばAscii.jpのこの記事とか。SDKの最新が記事中の1.5_r2から1.5_r3に変っているのでそこは読み替えた方がいいでしょう。
(Windowsの場合)SDKが入った状態でAndroidをUSBケーブルで挿すと、ドライバの場所を聞かれるのでSDKの中を示します。
あとは、Eclipseプラグインが提供するAndroid Projectをnewから作成して、Javaのコードを書くだけです。Eclipse上でビルドすると、それをUSB経由でそのまま実機に送ってくれて、その場で動くのには感動しました。デプロイが非常に楽ですね。実機じゃなくて、PC上にエミュレーターを作ってそちらで試すこともできます。
USBケーブルの端子が、片方だけ斜めになっている見たことのないものでしたけど、普通のmini端子のケーブルでも刺さったので、会社では純正ケーブル、家ではそのへんに落ちていたケーブルを挿しています。

Android Scripting Environment(ASE)でスクリプト開発

Javaベースなので、そのままJavaで何か作ってみても良かったのですが、スクリプト言語でAndroidを動かすAndroid Scripting Environmentというアプリの存在を知ったので、まずそちらを試すことにしました。
Android Scripting
インストールはこちらに日本語の解説がありました。

Beanshell, Python, LuaでAndroidがコントロールできる

ASEでは、デフォルトでJavaベースのスクリプティング言語Beanshellが使えますが、スクリプト言語は追加でインストールすることもできます。今あるのはLuaとPythonで、さらにRubyとJavascriptも準備中ということです。
元々JavaプログラマなのでBeanshellでいいかと思いましたが、ウェブにあるサンプルの多くがPythonだったので、それを参考にPythonで簡単なアプリをいくつか書いてみました。Androidの機能にアクセスして、その結果を外部のWeb APIに投げるようなPythonコードです。
サンプルでついてくるPythonスクリプトの多くは、音声合成をするものですが、これを動かすにはText-to-speechライブラリをインストールしておく必要があります。
6行でバーコードリーダーを作る、という記事を、なぜかGoogleのSEO番長のマット・カッツさんが書いていて、実際あっさりと動きました。
僕はあまりやる気がしませんが、Androidの実機の上のエディタでスクリプトを書いて実行することも可能です。他のアプリを起動したり呼び出したり、電話を掛けたり、喋らせたりバーコードを読み取らせたり、というのが数行で出来るので、自分用にちょっとしたツールを書くにはこれで十分遊べるな、と思いました。
ただし、今のところ、スクリプトをAndroidアプリとして簡単に配布する手段がないので、アプリを配るようには向いてないと思います。開発者じゃない人に対してアプリを公開するには、少し敷居が高い方法かもしれません。
スクリプトでも多くのことができるため、スクリプトでプロトタイプを作った上で調整をして、固まったところでJavaアプリを書くという開発方法もあるかもと思いました。

Javaでのアプリ開発

幸いJavaは書けるので、新たに覚えるのはAndroidアプリの画面やUI部品がどのようなクラスで提供され、それをどう組み合わせるかという所です。Swingとかとは当然違うのですけど、Google Codeやその他のところに、オープンソース版のAndroidアプリが多数公開されているので、そこから他のアプリケーションのソースを持ってきて読んでいると、Androidでのアプリ開発のお作法が多少見えてきました。

GUIの作成

アプリの画面は、DroidDrawというツールで作りました。ブラウザ上でも動いてますが、スタンドアロン版をダウンロードして動かした方がサクサク動きます。
ボタンやViewをペタペタと配置して保存すると、そのxmlがそのままEclpiseで開発中のアプリに反映されます。最初、つい部品のサイズや位置を細かく指定してしまいましたが、そういう絶対値指定の作り方をすると、Androidを横に倒したときの横長画面で表示が崩れて使い物にならなくなったりするので、全部レイアウトとおまかせ可変に戻したら、いい感じになりました。(縦画面と横画面のUIを別途きっちり定義して切り替えれば、絶対値指定できれいなGUIもできそうです)

Intentによる連携

Android Phoneでやりたいことがあったので、最初フル機能のアプリを書こうといろいろやっていたのですが、その時にIntentによるアプリ連携という概念に気づきました。これは、他のAndroidアプリが、外部から呼び出せるIntentという口を提供していて、自分のアプリからそれを呼び出すだけで、外部アプリの機能を使って作業をさせたり、結果を取得できるというものです。
世の中に、どんな機能を提供しているAndroidアプリが存在するか、というのは、OpenIntentsというディレクトリサイトにまとまっていました。ここで検索すると、自分が書こうとしていた機能の中には、既に他のアプリのIntentとして提供されているものがあることがわかりました。
そのIntentがAndroidに最初から内蔵されているIntentではない場合は、自分のアプリを使ってもらうときに、「このアプリケーションもインストールしてください」と案内する必要はあるのですが、それでも、既に動いていて実績のある他のアプリに、2,3行書くだけで仕事を丸投げできるのは非常に楽です。結局、僕の場合には、二つの外部アプリケーションを呼び出して組みあわせるだけでほとんどの要件が済んでしまいました。
ただ、エミュレーター上だけではAndroid Marketのアプリをインストールできない(実機でダウンロードしたものをエミュレータに移すことはできるそうです)ので、他アプリを呼ぶようなアプリの動作確認時には、実機側で行なう必要がありました。
この後は、この作成したアプリを野良apkとして配るとか、Android Marketに登録するとかになるのだと思います。

参考資料

この二週間、Android関連で検索をしたときによく見つかり、役に立ったサイトです。
Android Developers | Google グループ
FrontPage – 日本Androidの会(日本アンドロイドの会)
Android 開発情報 – タオソフトウェア株式会社
それと、Software Design 2009年3月号の第二特集「Androidアプリ開発『匠』への道」も。
僕自身、5年前のケータイをまだ使ってるぐらいで、ガジェット系は興味薄かったのですが、手に入れてしまうとやはり遊びたくなるものですね。Androidも最初のSDKが出てから1年以上経って、その間にいろんな技術者の方々が試行錯誤され、多数の情報が上記サイト等に集まっていたので、それらを読むことで短期間でそれなりのツールを作ることができました。たいへんありがたいと思っています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です