2010年11月23日

何から伝えればいいのか、Androidアプリ開発でひっかかるところ


前回のポスト「素人がAndroidアプリ作成に挑戦してみた−ブログ復活!」で書いた通りなのですが、興味本位でAndroidアプリの作成をしてみました。題材はTwitterクライアント。つぶやきを表示したり、つぶやきを投稿したり、基本的な機能を実装しました。Androidアプリの開発を勉強するのにはとてもいい題材だと思います。それなりに実用的なものに仕上げることもできるし、画面デザインなどはすでにあるTwitterクライアントにどうしても似てきてしまうので、逆に既存のTwitterアプリを参考にできます。私はAndroidのアプリで著名なTwitterクライアントであるtwiccaをさまざまな部分で参考にさせていただきました。

数か月の間、アプリ開発をしたことで、これは入門者がつまずくだろうなと思ったことを、覚えている範囲で書いていこうと思います。いくつもあるので、何回かに分けて紹介しようと思います。

今回は、Activityとmanifest.xmlについてです。いきなり細かい話になりますが、Androidアプリを開発したことがある人は、少し共感してもらえるかなと思います。とういうか、私は何度もこのトラップ(と自分ではそう感じている)にはまってしまったので。

さて、Activityとは何でしょうか。一言で説明すると、Android端末に表示される画面のことです。Javaのプログラム的に表現すると、画面に表示する機能などを持ったクラスということになるのでしょうか。あっ、このあたりは自信がないので、知ったかぶりで人に話さないことをお勧めします。恥をかいても私は責任を持ちません。

脱線する前に本題に戻ります。

Activity(画面)から別のActivity(画面)に切り替わることで画面遷移をします。入力画面があって検索ボタンを押したら該当するものが検索でヒットするような画面遷移を想定します。この場合だと、検索画面を表示するActivityと検索結果を表示するActivityを用意するわけです。ActivityからActivityに遷移するときに、インテント(intent)というAndroid特有の機能を使って、柔軟な画面遷移を実装できます。インテント(intent)については別途解説したいのですが、奥が深くて自分ではなかなか体系的な説明ができません。これは私のスキルが上がるまで待っていてください。うまく説明できるようにがんばります。

インテントについては横に置いて、Activityの注意点だけ説明します。実はActivityもかなり奥が深く、とても1回のブログでは説明できません。Activity間の値の受け渡しについては、いろんな工夫なども必要で簡単にはいきません。さらに、書物を読んでみると、Activityのライフサイクルについて本の最初の方で説明しているものが多いこともあり、「ライフサイクル?何それ?」と入門者には壁が立ちはだかります。

はい。ここまでいろいろキーワードをちりばめながら説明してきました。一番いいのは書籍を読みながら理解することです。今回の記事は、本を読み始める前になんとなく何に注目して本を読めばいいのかの指針になればいいかなと思っています。

さて、ブログの冒頭でmanifest.xmlというものが出てきました。このmanifest.xmlにはさまざまな情報が格納されています。Activityに関係する部分としては、すべてのActivityをmanifest.xmlに登録しておかないと実行時にエラーになることくらいです。実は、Activityをmanifest.xmlに登録するのをよく忘れるのです。

プログラムコードの入力ミスであれば、開発環境のeclipseが警告を出してくれます。でも、Activityのmanifest.xmlへの追加忘れはプログラムを実行するまで何も注意されないのです。普通の人であればデバッガを起動するなどして原因解明にあたるのですが、私のような素人はデバッガを見るよりもエラーが起きたであろう箇所を推定してデバッグする方法をとります。もちろん非効率なのですが、スキルがないので仕方がありません。

では、アプリを動かしたときにどのようなエラーになるかというと、画面遷移時にエラーが発生します。ですので、遷移先のActivityがおかしい時はmanifest.xmlにActivityを追加したかどうかを思い出してください。きっと一度は役に立つ情報になると思います。

私は画面遷移をするとエラーになるのがよく分かりませんでした。プログラムコードを穴があくほど見ても悪いところはなさそうだしなあと思っていて、結局manmifest.xmlを正しく作成していなかったことが分かったというのはよくあったことです。

manifest.xmにはActivityだけではなく、インターネット通信をするのか、アプリから電話をかけるのか、などさまざまなアクセス許可を管理する役目もあります。Activityを追加したものの、通信を許可するのを忘れていたということもあります。個人的にはeclipseがエラーを出してくるとうれしいなとは思いますけれど。

ということで、最初は個人的には何度もひっかかった部分を紹介してみました。慣れてくるとひっかからなくなるのですが、最初のうちは悩んでしまうポイントになります。

では、今回はこれぐらいで失礼します。

この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/170335653

この記事へのトラックバック



×

この広告は1年以上新しい記事の投稿がないブログに表示されております。