一番かんたんなJava入門

これからJavaを始めようという人の為の超入門サイトです。丁寧、簡単にこだわった解説なので初心者にぴったりです

【Hello world!の仕組み1】 マニフェストファイルについて

time 2014/10/24

activity1 さて、新規プロジェクトを作ってみようで、画面にHello world!という文字が表示されるアプリを作りました。簡単でしたね。

 今回は、このアプリを立ち上げると画面にHello world!と表示されるその仕組みを、簡単に解説したいと思います。難しいことは考えずにあくまで簡単に行きましょう。

sponsored link

マニフェストファイルとは?

 まず、初めに説明する必要があるのが、マニフェストファイルというxmlファイルの存在です。

 Androidアプリにはマニフェストファイルが必ず要ります。これがないとAndroidアプリだと認識されません。

 マニフェストファイルというのは何かと言うと、そのアプリの名前やアイコン、機能面についての様々な情報を書いておく為のファイルです。なんかいきなり難しいですよね。

 が、ご心配なく。マニフェストファイルはeclipseが勝手に作ってくれています。さっそく見てみましょう。

 eclipseのパッケージエクスプローラーの中にあなたが作ったFirstAppliというプロジェクトフォルダがあると思います。その中に、AndroidManifest.xmlというのがありますね?これがマニフェストファイルです。act2 これをダブルクリックすると中央の枠にAndroidManifest.xmlが開きます。その中央の枠の下の方に、Manifestアプリケーション許可計測AndroidManifest.xmlというタブが表示されていると思うので、その中からAndroidManifest.xmlをクリックして下さい。
 これがマニフェストファイルの中身です。

 ちなみに画面中央に並んでいるタブのうちAndroidManifest.xml以外のタブ(Manifest、アプリケーション、許可、計測)というのは、AndroidManifest.xmlを編集するためのタブです。xmlファイルを生で編集するのはちょっと難しいので、他のタブから必要な情報を入力すれば、勝手にAndroidManifest.xmlを書き換えてくれるようになっています。

 新規プロジェクトを作ってみようで、新規プロジェクトを作る際に、よく分からないまま何回か次へをクリックしましたよね。実は、あれはこのマニフェストファイルを作るための入力フォームみたいなものだったんです。

マニフェストファイルの中身

 では、このマニフェストファイルには何が書いてあるのか?さらっと説明します。

 以下が全文です。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.nobuo.create.firstappli"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="net.nobuo.create.firstappli.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

 なんかごちゃごちゃして分かりにくいので、ややこしい部分を省略してみると、こうなります。↓

<?xml version="1.0" encoding="utf-8"?>
<manifest >

    <uses-sdk />//①

    <application ></application>//②

</manifest>

 これなら読む気になりますよね?(笑)

 まず一番上にこのファイルはxmlファイルですよ。っていう宣言。
<?xml version=”1.0″ encoding=”utf-8″?>

 そして全部を囲うmanifestタグ。
<manifest > ~ </manifest>
 webページで言うhtmlタグみたいなもんですね。

 そのmanifestタグの中(下層)に、
<uses-sdk />と、
<application ></application>
が並んでいます。

 このuses-sdkapplicationというのは、このアプリについての説明です。どんな説明をしているのか?もう少し詳しく見ていきましょう。

uses-sdk

 の<uses-sdk />というのは、簡単に言うと、このアプリを使用できる本体のバージョンについての説明です。Androidは日々バージョンアップされているので、世の中にはいろんなバージョンのAndroid機が存在しますが、このアプリが使えるのは、このバージョンですよ。っていう説明です。

 その説明を<uses-sdk />タグの属性として書いてあります。

 <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

最低限バージョンナンバー8以降じゃないと動きませんよ。
バージョンナンバー19で使うことを前提に作ってますよ。
 という意味です。
※バージョンナンバーについて詳しく知りたい方は→【android】OSのバージョン(APIレベル)によって処理を変える方法

xmlの基本文法
要素(タグ)と、属性名=”属性値”の文法は、HTMLと基本的には同じです。

//html
<p class="text">テキスト</p>

ただし、xmlの場合、要素値がある場合と無い場合があって、それぞれ微妙に書き方が違います。

・要素値がある場合は開始タグと終了タグが必要

<要素名 属性名="属性値" >
    要素値
</要素名>

・要素値がない場合は、終了タグは不要 その代わり閉じる方のタグに「/」が必要

<要素名 属性名="属性値" />

application

 の<application>というのは、このアプリの内部構造についての説明です。

 <application > ~ </application>内だけを抜き出すと、こんな風になってます。

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="net.nobuo.create.firstappli.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

 applicationタグの開始タグ内に属性の形で、このアプリの基本情報が書いてます。

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

 長くなるので、ここではスルーします。

activity

 注目して欲しいのは、applicationタグの中にあるactivityタグです。

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="net.nobuo.create.firstappli.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

 applicationタグの中に、activityタグが1つだけ在るのが分かりますよね。パッと見、activityタグが2つありますが、これは開始タグと終了タグなのでactivityは一つだけです。

上述したように、xmlでは要素値が入る場合のみ終了タグが必要なのですが、このようにタグが入れ子構造になる場所もあります。その場合もちろん、下層のタグを挟む形で終了タグが必要です。
 この場合、下層にintent-filterタグが在る為、開始タグと終了タグでそれを挟む形になっています。

 Activityっていうのは、簡単に言うとズバリ、画面です。
※ActivityはAndroidアプリを語る上で最も重要で最も基本的なポイントなので、また次回に詳しくやります。

 ここではapplicationタグの中に、activityタグが1つだけあるということに注目して下さい。このアプリはたった1つの画面しかないので、activityタグは一つしかないんです。

 もし複数の画面を持つアプリの場合、例えば、アプリ内に何らかの設定画面を表示したいような場合、applicationタグ内に、設定画面を指し示すactivityタグをもう一つ追加する必要があります。その辺の詳しい事はまたおいおい。

 このたった一つのActivity(画面)について、もう少し詳しく見てみましょう。

<activity
    android:name="net.nobuo.create.firstappli.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />//①

        <category android:name="android.intent.category.LAUNCHER" />//②
    </intent-filter>
</activity>

 まず見てもらいたいのは、activityタグの下層にあるintent-filterです。ちなみにintentというのは画面の遷移、起動に関するこれまた超重要な機能です。このintent-filterによって、このActivity(画面)を以下のように定義しています。actionタグとcategoryタグに注目しましょう。

<action android:name=”android.intent.action.MAIN” />は、
このActivity(画面)はこのアプリのトップ画面ですという意味です。このトップ画面の指定は必須です。もちろん設定できるのは1つActivityに対してのみです。

<category android:name=”android.intent.category.LAUNCHER” />は、
このActivity(画面)を立ち上げる為のアイコンをアプリ一覧の中に表示しますという意味です。

 普通はアプリのトップ画面であるActivityのintent-filterにをセットで設定します。すると”アイコンをタップして立ち上げたらそのアプリのトップ画面が表示される”という当たり前の状態になります。

Javaファイルを指定

 続いて、activityタグ内の属性に注目しましょう。

<activity
    android:name="net.nobuo.create.firstappli.MainActivity"//①
    android:label="@string/app_name" >

※「net.nobuo.create.firstappli」の部分はアプリを作る際にあなたが入力したパッケージ名になっているはずですが、ここでは「net.nobuo.create.firstappli」として話を進めます。

 出ました。超重要ポイントです。

android:name=”net.nobuo.create.firstappli.MainActivity”
 これは、このActivityを定義するクラスを指定しています。

 つまり、net.nobuo.create.firstappli.MainActivityというクラスにて、このActivityを定義していますという意味です。

 ではそのnet.nobuo.create.firstappli.MainActivityというクラスはどこにあるかと言うと・・

manifest5 パッケージエクスプローラーの中にFirstAppliというプロジェクトフォルダ、その中にsrcというソースフォルダ、さらにその中にnet.nobuo.create.firstappliというフォルダがあります。これはいわゆるパッケージ(Javaで普通に出てくるやつ)です。その中に、MainActivity.javaがありますね。

 MainActivity.javaに書かれてあるのが、このアプリのトップ画面を定義するMainActivityというクラスです。もちろんこれも勝手にeclipseが作ってくれたものです。

 パッケージ名が
net.nobuo.create.firstappliなので、このクラスのフルネームは
net.nobuo.create.firstappli.MainActivity
です。

MainActivityに関して

 かなり端折ってるつもりなんですが、長いなコレ。なかなかHello world!に辿りつかない・・。

 とりあえず何が言いたかったかと言うと、マニフェストファイルに「このアプリのトップ画面についてはnet.nobuo.create.firstappli.MainActivityクラスで定義しています」と書いてあるってことです。一言で終わっちゃったよ・・

 無駄に冗長でしたが理解できましたでしょうか?

 で、MainActivityクラスで何をやってるかってのはまた次回にしましょう。

登録無料、質問し放題↓

sponsored link

Androidアプリを作ろう

down

コメントする



一番かんたんなJava入門

Androidアプリの作り方

忘備録

私の作ったAndroidアプリ

おすすめ入門書

おすすめプログラミングスクール

無料で試せる今がチャンス!

管理人

Nobuo_CREATE

Nobuo_CREATE

WordPressテーマPrinciple、マテリアルを作ったり、Androidアプリを作ったり、Java入門サイトを作ったり、本を書いたりしています。どうぞよろしく。 [詳細]



sponsored link

オススメ書籍

[オススメpoint]

 この本は全く何も分からない初心者の方にお勧めです。プログラミングをするには覚えなければならない事が無茶苦茶いっぱいありますが、この本は教えてくれる順番、その構成が素晴らしいです。RPGのゲームを作るというストーリーにのっとってちょっとずつ難しいことを教えてもらえます。
 無機質で膨大なデータが載っているような本は読む気にならないという方は、こういうストーリー仕立ての本でチャレンジしてみてはいかがでしょうか?(注:RPGを作る為の本ではありません。)

[オススメpoint]

 ある程度、Javaを読み書きできるようになったら、オブジェクト指向について学ぶべきです。本書は、抽象的で分かったような分からんようなオブジェクト指向について、非常に分かりやすい例を出して説明してくれています。オブジェクト指向とは何なのか?という本質を掴むのにこれほど適した本はないと思います。オブジェクト志向の理念を理解できれば、より効率のいいコードをより楽に書けるようになるはずです。Java上級者を目指すなら必読の一冊!

只今、急拡大中

JavaからのRuby on Rails入門

JavaからのRuby on Rails入門

COBOLからのJAVA習得

子供向けプログラミング教室

かいりつキッズプログラミング教室