質問: AndroidアプリのUIをXMLで指定するときによく使う `@+id/` ですが、なんでこれだけ `+` が入っているのですか?なんとなくこう書くものだと思って使っていましたが、改めて考えてみるとなんでだろうと思いまして... `@id/` ではなぜいけなかったのでしょうか?
回答: 「`@+id/`とは何か?」について、完全に理解するには、前提として`ID Resource`という地味な存在について理解する必要があると考えます。 これは`res/values/`配下に、以下のように定義することができます。 ``` ``` 個人的に`@+id/hoge`という記法は上記の定義を自動的に行う、糖衣構文の一種だと考えています。 IDリソースの使い道 ========== `ID Resource`を用いることで`id`のみを定義することができます。 `@id`はほぼ`View`でしか使わず、しかし`View`の`id`は`@+id`で定義をした方がミスが減り品質が担保されるため、使い道はなさそうです。 しかし`ID Resource`はビルド時点で、名前ごとにユニークな値を持つことを保証してくれます。この性質は非常に便利なので頭の片隅に入れておくといつか役に立つかもしれません。 また、全ての`id`を事前にこの方法で定義すれば、参照だけでレイアウトを記述することも可能ですが、実際にやっているという話は聞いたことがないですし、血迷うなとしか言えません。