サイテック株式会社 > 【連載】Android検証 - 第4回 [Android 検証] ソースの基本的な構成を理解する

エンジニア募集中!

サイテック株式会社で、根っからの技術者である社長や、大手IT企業から転職してきた仲間たちと議論しながら、社会をもっと豊かに、幸せにするアプリケーションを作ってみませんか?

  • Webアプリケーションエンジニア
  • エンジニア実習生

詳細はこちら

2009年03月08日 22:39

Android検証
第4回 [Android 検証] ソースの基本的な構成を理解する * * * *

by たむかい

Tags: Android Java マルチデバイス 

さて、前回の「Android開発環境を構築」から1ヶ月近くが経ってしまいました。

忙しいと、どうしても、業務優先になってしまい、
このような研究開発的なタスクは後回しになってしまいます。
IT業界の永遠の課題ですね。


前回は、とりあえず、Android開発環境を構築して、
Hello Worldを出したところまででした。
Eclipse上でHello World用のプロジェクトを作成し、
エミュレータで起動したところ、勝手に、「Hello World, HelloWorld」と表示され、
それが何なのかわからない状態で終わっていました。


今回は、Eclipseでプロジェクトを生成した際に作成されたファイルを追いかけて行きたいと思います。

■ソースの構成
Eclipseプロジェクトを生成すると、以下のようなフォルダ・ソースが生成されます。



Androidプロジェクトのソース


・src/xxxxx/HelloWorld.java
Activityクラスを継承したクラスで、名前から、メインのプログラムっぽい感じがします。
Activityについては、後で詳しく書こうと思いますが、Androidアプリの画面を指すもののようです。
たぶん、コントローラ的な役割です。


・src/xxxxx/R.java
何者なのか、名前からは全く想像がつきません。。。

「res」ディレクトリ内のリソースへアクセスするためのIDが定義されています。
基本的には自動生成で、かつ、変更禁止のようです。

中身を見ると、staticなクラスと変数が生成されています。
プログラムから「res」フォルダ内のリソースにアクセスする際は、
「R.layout.main」のように、このファイル内の変数にアクセスするようです。



・res/drawable/icon.png
アプリケーションのアイコンです。
配布する際は、これを差し替えると、独自のアイコンになります。


・res/layout/main.xml
画面の構成を定義したXMLファイルです。
中身を見ると、「TextView」というタグがあり、これが、Hello Worldアプリに勝手に表示されていた文字列のようです。

位置づけとしては、MVCのビューにあたるところでしょうか。


・res/values/strings.xml
画面に表示する文字列の定義です。
おそらく、main.xmlに直接記述しても良いとは思うのですが、
グローバルにアプリケーションを配布する前提で、他言語対応しやすいよう
はじめからメッセージファイルが準備されているようです。

こういう仕組みがはじめから用意されていること自体、
従来の開発にはなかったですね。


・AndroidManifest.xml
マニフェスト?
選挙にでも出るんでしょうか・・・。

中身を見ると、アプリケーション名やバージョンなどが記述されているので
アプリケーション自体の設定ファイルという位置づけのようです。



■マニフェストを見てみる
マニフェストという名の通り、このファイルが全ての起点です。

<アイコンを表示する>
Androidにインストールされているプログラムの一覧を表示する際にアイコンが表示されます。
その定義が、↓

<application android:icon="@drawable/icon" android:label="@string/app_name">

書き方が独特ですが、おそらく
「@drawable/icon」という記述は、R.javaで定義したものを指しているようです。


<アクティビティを指定する>
<activity android:name=".HelloWorld" ・・・>
という記述があります。
これは、Activity(=画面)としてHelloWorldクラスを使用することを定義しているようです。
アプリケーション起動時に、このactivityタグで定義されたクラスが実行されます。


■画面の呼び出し
画面レイアウトの定義は、main.xmlで定義されています。
アプリケーションを起動すると、AndroidManifest.xmlの定義に従い、
アクティビティとして指定されているHelloWorldクラスが呼び出されます。

HelloWorldクラスにはonCreateメソッドがあります。
名前から推測するに、activityが最初に作成されたタイミングで実行されるメソッドです。
その中に、
setContentView(R.layout.main);
という記述があります。

R.layout.main

R.javaで定義したIDを使用して、main.xmlを呼び出しています。

これによって、main.xmlで定義されたレイアウト通り、
画面に描写されることになります。



これで、何となく、全体の構成はわかってきました。

次回は、Activityについて書いてみたいと思います。

この記事の執筆者

プロジェクトマネージャー たむかい 31歳 入社3年目

はじめまして。サイテックのたむかいです。世の中では、ITの仕事は新3Kなんて言われることがあるそうです。きつい・帰...

この人の会社をみる この人関連のイベントをさがす この人と一緒にはたらく

コメント

(メールアドレスは公開されません。メールで返答が欲しい場合などに入力してください)

このエントリへのトラックバックURL

トラックバック

トラックバックはありません

メンバー紹介

たむかい

たむかい

はじめまして。サイテックのたむかいです。世の中では、ITの仕事は新3Kなんて言われることがあるそうです。きつい・帰...

谷田部 輝真

谷田部 輝真

初めまして。サイテックの代表をやっております谷田部と申します。 「ITを利用し、より豊かな、より幸せな世の中になっ...

291

291

皆さん、はじめまして。 突然ですが下記リンクのGoogleストリートビューで周辺を見回してみてください。 goog...