はじめてのAndroidアプリ開発入門
第10回 XMLってなんだろう?(後編)

僕の属性は「引きこもりエンジニア」!

みなさん、こんにちは!

もしも年齢とともに髪の毛が正比例で減少していったとして、 かかりつけの美容師さんに「ひょっとして僕、もう髪の毛を切る必要ないっすかね・・・?」 と言い出すタイミングってどうやって判断すればいいのかなー、とか仕事の合間に考えているあらたまです!

さて今日は「はじめてのAndroidアプリ開発入門」の第10回目です!

おさらい

前回では XMLはタグを使って、データを階層的に記述する方法のこと。

<タグ名></タグ名>

さらにタグの中に別のタグを持つこともできること、をお話ししましたね。


    <好きな作品>
        <映画>
            <作品>ヒーロー 靴をなくした天使</作品>
            <作品>トゥルーマンショー</作品>
        </映画>
        <アニメ>
            <作品>ばらかもん</作品>
            <作品>氷菓</作品>
            <作品>やはり俺の青春ラブコメはまちがっている</作品>
        </アニメ>
    </好きな作品>

今回はタグが持つことができる「属性」というものについてお話をしたいと思います!

属性

属性は単語の意味としては「ある物にそなわっている性質や特徴のこと」です。

例えば「氷属性魔法」だったら、氷の性質を持った魔法ですね。 英語では属性のことを「attribute(アトリビュート)」と言います。

タグの属性

XMLのタグも属性を持つ(記述する)ことができます。属性の書き方は

<タグ名 属性名="属性値"></タグ名>

です。

例えば、上で例として挙げたXMLに作品ジャンルを属性として追加してみましょう。


    <好きな作品>
        <映画>
            <作品 ジャンル="ヒューマンドラマ">ヒーロー 靴をなくした天使</作品>
            <作品 ジャンル="ヒューマンドラマ">トゥルーマンショー</作品>
        </映画>
        <アニメ>
            <作品 ジャンル="ヒューマンドラマ">ばらかもん</作品>
            <作品 ジャンル="サスペンス">氷菓</作品>
            <作品 ジャンル="コメディ">やはり俺の青春ラブコメはまちがっている</作品>
        </アニメ>
    </好きな作品>

作品の「性質や特徴 = 属性」として、ジャンルが記述されましたね。

さらに他の属性を追加してみましょう。


    <好きな作品>
        <映画>
            <作品 ジャンル="ヒューマンドラマ" 言語="英語">ヒーロー 靴をなくした天使</作品>
            <作品 ジャンル="ヒューマンドラマ" 言語="英語">トゥルーマンショー</作品>
        </映画>
        <アニメ>
            <作品 ジャンル="ヒューマンドラマ" 言語="日本語">ばらかもん</作品>
            <作品 ジャンル="サスペンス" 言語="日本語">氷菓</作品>
            <作品 ジャンル="コメディ" 言語="日本語">やはり俺の青春ラブコメはまちがっている</作品>
        </アニメ>
    </好きな作品>

作品の「言語」が属性として記述されましたね。

映画の2作品はハリウッド映画なので「英語」、 アニメの3作品は日本アニメのため「日本語」です。

属性と子要素の違い

作品タグにジャンルと言語の属性を記述することができました。
ではもしも次のように記述したとしたら、これは間違いなのでしょうか?


    <好きな作品>
        <映画>
            <作品>
                <作品名>ヒーロー 靴をなくした天使<作品名>
                <ジャンル>ヒューマンドラマ</ジャンル>
                <言語>英語</言語>
            </作品>
            <作品>
                <作品名>トゥルーマンショー<作品名>
                <ジャンル>ヒューマンドラマ</ジャンル>
                <言語>英語</言語>
            </作品>
        </映画>
        <アニメ>
            <作品>
                <作品名>ばらかもん<作品名>
                <ジャンル>ヒューマンドラマ</ジャンル>
                <言語>日本語</言語>
            </作品>
            <作品>
                <作品名>氷菓<作品名>
                <ジャンル>サスペンス</ジャンル>
                <言語>日本語</言語>
            </作品>
            <作品>
                <作品名>やはり俺の青春ラブコメはまちがっている<作品名>
                <ジャンル>コメディ</ジャンル>
                <言語>日本語</言語>
            </作品>
        </アニメ>
    </好きな作品>

属性としていた「ジャンル」と「言語」を子要素として記述してみました。 また、それらに合わせる形で作品の名前も「作品名」タグとしてみました。

結論から言うと、この書き方も何も間違いではありません。どっちの形もおっけー。

そうなると属性とするか、子要素とするか?
自分で書き方のルールを決めるときは悩みどころですが、 どちらのほうが分かりやすいか、見やすいか、で大丈夫です。

Androidアプリの開発などは属性と子要素どちらで書くか ルールがすでに決まっていることが多いですので、そのときはそれに従って書けばおっけーですよっ

レイアウトファイルの属性

ここで、レイアウトファイルに戻ってみましょう

前々回に書き換えた13行目の文字列。
これは10行目から始まる「TextView」タグの属性であることがわかりますね。

「TextView」タグは画面に文字列を表示させる画面部品です。

そしてその部品の「android:text」属性はTextViewの表示させる文字列を指定する属性なのです。

このレイアウトファイルの中には他にもたくさんの属性が書かれていますね。

一度にすべてをおぼえるのは大変なので今回はあえて割愛したいと思います。
他の属性はこれから段階を追いながら少しずつご説明していくので、安心してくださいね。

今回はここまでです!

次回からはもうひとつの画面部品「アクティビティ」についてお話をしていきたいと思います。

次回へ続く。

>> 続きの記事
【はじめてのAndroidアプリ開発入門】第11回 アクティビティを見てみよう