読者です 読者をやめる 読者になる 読者になる

そのねこがうたうとき

物語偏愛者の詭弁と戯言

Java初心者が簡単なAndroidアプリを10日ほどで作ってみた

REGZA Phone持ってるし、Javaも一応書けるならAndroidアプリを作るしかないじゃないか!……と思い立ってやってみました。

かかった時間は10日ちょっと。僕はそんなにバリバリJavaが書けるというわけではなく、Javaオブジェクト指向について説いた本を一冊読み下したとか、そんな程度のJava初心者です。もっと腕のある方なら、週末2日間だけでも簡単なアプリは作れるかもしれません。

なぜ辞書アプリを作ったのか

Androidアプリはまだ品揃えに不十分な点も多いですが、そのなかでも僕が気になっていたのが辞書アプリの少なさ。別にiPhone大辞林のようなローカルにデータがある大それたものは求めていません。単純に、さくっとオンライン検索してくれるアプリはないものだろうかと思っていたのですが、案外いいのがない。ならば作ってしまえ、と腰を上げました。

調べてみたところ、デ辞蔵が辞書APIを公開していたので、これを活用することに決定。テキストボックスに単語入力→APIを叩いて意味を取得→表示という簡単なメカニズムで出来そうだったので、意気揚々と製作を開始しました。……その後、XMLもHTTPもJavaで扱った経験がないことに気付き、非常に苦労するハメにはなりましたがw

開発環境構築

EclipseAndroid SDKを落とせば終わりです。あ、Windowの場合はJavaも必要ですね。構築のハウツーについてはエントリーもかなり落ちているので、迷うことなくできるかと。

とりあえず作ってみる

なにか簡単なサンプルアプリから始めればいいものを、いきなり入門記事を読みながら作り始めてしまいました。

Androidアプリ開発で肝となるのは、「アクティビティ」と「インテント」の理解です。Androidアプリ独特である、この二者が理解できれば開発もスムーズにいくのではないでしょうか。と言いつつ、僕は今回インテントを用いていないので、今後また機会があれば用いてみる予定です。

この手の入門記事は確かにわかりやすいのですが、ネックとしてはその記事で作っているアプリしか作れるようにならないということ。僕が作りたいアプリで必要な事柄が書いてないんだけどー!ということで、併せて見てたのがこちらのサイト。

ちょっと解説が淡白なところもありますが、Androidアプリ開発で必要な基礎は網羅しているように思います。Android APIの公式リファレンスが残念ながら英語版しかないこともあり、こちらのサイトには大変お世話になりました。

困ったときに見ていたのはこっち。解説記事が豊富で、かゆいところに手が届く感じです。

難しかった点

GUIの実装がめんどい

AndroidのUIはxmlで書くのが一般的ですが、一応Eclipseを使えばグラフィカルにUIを構築することができます。しかし、これがちょっとクセがあって使いにくいようで、DroidDrawというウェブサービスを使ったUI設計が人気のようです。とはいえこちらのサービスも使いやすいとは言い難く、UI構築はちょいと面倒な作業ではありました。

ListViewの挙動が複雑

Androidを使っている方なら、こういう画面を一度は目にしたことがあると思います。このような縦に項目が並んだレイアウトはListViewと呼ばれていますが、この実装がなかなか複雑で手こずりました。クリックイベントを設定してもクリックできない! クリックできるようになっても文字しかクリックできず、横幅いっぱいがクリック領域にならない!……などなど。結局はググってなんとか解決できました。一番外側のLinerLayoutと、中に実装するTextViewの幅は「fill_parent」にしなきゃいけないんですねー。あとで別エントリーにでもまとめときます。

JavaでのXMLの扱いを知らない

これはAndroidっていうか僕の知識がなかっただけの話ですが。こちらを参考にしてなんとかかんとか書き上げました。スマホアプリでxmlを扱う機会は少なくないと思うので、覚えておいて損はないんではないでしょうか。ただ、Android2.2以上ならXPathを使ってxmlを読み込めるようで、そちらの方が簡単だという話も。

出来上がり

コーディングしてエラーが出てググって原因探っての繰り返しの末、つい先ほど出来上がりました。フォームに単語入力→和英・英和や前方・後方・完全一致を選択→候補語一覧を表示→単語をタップするとダイアログで意味を表示、という流れになっています。本来ならページを切り替えて意味を表示しようかとも思っていたのですが、デ辞蔵が吐く文章がさほど長くなかったので、ダイアログで済ませてしまいました。

冒頭でも書いたとおり、僕は大した腕のプログラマーではありませんが、やはり何か創り上げたときの達成感というのは素晴らしいものがありますね。Androidアプリの開発は本当に手軽です。開発環境はJava開発で有名なEclipseがあればおk。実機へのインストールも、USBでつないでapkファイルを転送してあげて、Android側で開けば完了。僕はUSBでつなぐのすら面倒(w)だったので、Dropboxを介して転送してましたが。

今回作ったのは本当にただ「動いた」ってだけのアプリなので、メモリ管理どころか画面遷移すら実装していないお粗末なものです。今後、さらに複雑なアプリも作れたらなーと思ってます。