さて、更に進みましょう。ここまでは
Activityを継承したクラスの話でしたが、実を言えばAndroidのプログラムは、クラスだけで成り立っているわけではありません。ソースコード全体を眺めてみると、下のリストのような形になっているはずです。
クラスの前にいろいろと書いてありますね? これは、「
パッケージ」と「
インポート」というものなのです。これまた、Android開発には重要なものです。
まず、一番最初にある「
package 〜」という部分です。これは「
パッケージ」というものの指定です。パッケージというのは、平たくいえば、「クラスを、フォルダのようなもので整理する機能」です。例えば、
package jp.tuyano.myapp;
こんな具合に書いてあったとすると、それは「このクラスが、jpフォルダの中のtuyanoフォルダの中のmyappフォルダの中に用意される」ということを示しているのです。こんな具合に、
パッケージでは
ドットを使って階層を書いていきます。
Javaでは、標準でたくさんのクラスが付いてきます。もし、それが全部同じ場所にずらっとあったら、大変です。例えば、1つのフォルダの中に数千ものファイルが入っている状態を想像してください。大変でしょう? そもそも、何がどういう働きのためのものかすらわかりませんね。
そこで、クラスをフォルダ分けして整理するのに「
パッケージ」という考え方が導入されたのです。AndroidのAPIにあるたくさんのクラスもすべてその役割ごとにフォルダ分けして
パッケージにまとめられています。自分でプログラムを作るときも、やっぱり
パッケージを自分で指定して、そこに配置するのが基本です。
「面倒くさいから、
パッケージなんていいや」とは、いかないのです。Javaのクラスでは、一応
パッケージなしのプログラムも作れますが、Androidではダメです。
実は、Androidでは、アプリを
パッケージで識別しているのです。例えば、自分が
jp.tuyano.myappという
パッケージに「
MyApp」というアプリのクラスを作ったとしましょう(当然、
MyAppは
Activityを継承してあるとします)。アプリを起動すると、この
MyAppが実行されます。すると、なんとなく「自分は、
MyAppっていう名前のアプリを作ったんだ」と思ってしまいがちです。
が、Androidのシステムは、そうは考えてくれません。これは「
jp.tuyano.myapp」というプログラムだ、と認識するのです。もちろん、アプリ名で
jp.tuyano.myappなんて表示されてもなんだかわかりませんから、アプリの名前などは基本的に「
MyApp」となります。
が、例えばAndroidマーケットにアプリを登録するとき、「
MyApp」ではなく「
jp.tuyano.myapp」という
パッケージ名がプログラムのID代わりになります。
クラス名は、たまたま同じ名前のものがあったりすることも多々あります。ですから、クラス名でプログラムを識別するのは危険なのです。各プログラムは
パッケージで識別し、その中で必要に応じてこのクラスを呼び出す――というように考えられているのですね。