はじめに (対象読者・この記事でわかること)
この記事は、Androidアプリ開発を始めたばかりの Java エンジニア、あるいは Android Studio でレイアウトXMLを書く際に「No resource identifier found for attribute 'latout_height'」というエラーに遭遇した方を対象としています。
読者は本記事を読むことで、次のことができるようになります。
- エラーメッセージが示す意味と原因を正確に把握できる。
- 属性名の綴りミスやリソース定義の抜けが原因であることを特定できる。
- 正しい属性 (
layout_height) への修正方法と、類似エラーの予防策を実践できる。
本記事は、実際にビルドエラーに直面した経験と、公式ドキュメント・コミュニティで確認された情報を元に執筆しました。エラー解消だけでなく、XML の書き方のベストプラクティスも合わせて学べます。
前提知識
この記事を読み進める上で、以下の知識があるとスムーズです。
- Java の基本的な文法と Android アプリの構成要素(Activity、XML レイアウト)の概要。
- Android Studio の基本的な操作、ビルドの流れ、および Logcat の見方。
背景とエラー概要
Android の UI は XML で定義し、android:layout_width や android:layout_height といった属性でサイズを指定します。ビルド時に Android のリソースコンパイラ(aapt2)が XML を解析し、属性名やリソース ID が正しく参照できるかチェックします。
今回遭遇したエラーメッセージは次の通りです。
error: No resource identifier found for attribute 'latout_height' in package 'android'
ここで注目すべきは latout_height という属性名です。android パッケージに latout_height という属性は存在せず、正しくは layout_height です。綴りミス(l と i が逆)により、コンパイラは該当属性を見つけられずエラーを投げます。
このエラーは以下のケースでよく発生します。
| 発生シーン | 主な原因 |
|---|---|
| 手入力で XML を作成したとき | タイプミス (latout_height) |
| コピー&ペーストで属性名が途中で切れた | 部分的に削除された文字列 |
| IDE の自動補完が効かない環境 | 手動で属性を書き込んだ結果 |
エラーメッセージは「属性が見つからない」ことだけを伝えるため、原因が属性名の誤りかリソース定義の欠如かを区別できません。したがって、まずは属性名を正しく書くことが最優先です。
具体的な手順と実装例
以下では、実際にエラーが出たサンプルコードと、修正手順を段階的に示します。コード例は Android Studio の標準プロジェクト構成(app/src/main/res/layout/activity_main.xml)を想定しています。
ステップ1:エラーが出ている XML を特定する
-
Android Studio の Gradle ビルド が失敗した際に表示される Build Output から、エラーメッセージが出ている XML ファイルと行番号を確認します。
例:res/layout/activity_main.xml:12: error: No resource identifier found for attribute 'latout_height' in package 'android' -
該当ファイルを開き、エラー行を探すと次のような記述が見つかります。
Xml<TextView android:id="@+id/sample_text" android:layout_width="wrap_content" android:latout_height="wrap_content" <!-- ← typo --> android:text="Hello World!" />
ステップ2:属性名を正しく修正する
android:latout_heightを正しいandroid:layout_heightに置き換えます。
Xml<TextView android:id="@+id/sample_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" />
- 保存して Build > Rebuild Project を実行し、エラーが解消されたか確認します。
ステップ3:類似エラーの予防策を設定する
| 予防策 | 内容 |
|---|---|
| IDE のコード補完を活用 | Android Studio の android: プレフィックス入力後に Ctrl+Space で属性一覧を表示し、正しい属性を選択する。 |
| XML Lint の活用 | File > Settings > Editor > Inspections > Android > XML を有効にし、属性名のスペルミスをリアルタイムで警告させる。 |
| CI/CD でのビルド検証 | GitHub Actions などでビルドを自動化し、プルリクエスト時に属性ミスが無いかチェックする。 |
ハマった点やエラー解決
ハマりポイント 1:属性名が画面に表示されるが、エディタ上で赤線が出ない
- Android Studio のデフォルト設定では、未知の属性は警告として表示されません。Settings → Editor → Inspections で Unknown attribute の検査をオンにすると、リアルタイムで赤波線が出て見逃しを防げます。
ハマりポイント 2:android: プレフィックスを忘れた
- layout_height だけを書いてもエラーは別の形で出る(cannot resolve attribute)。必ず android: 名前空間を付けることを徹底しましょう。
ハマりポイント 3:カスタム属性と勘違い
- プロジェクトで app: など独自の名前空間を使う場合、android: と混同しがちです。属性が標準かカスタムかを明確に区別し、declare-styleable に正しく登録しているか確認してください。
解決策まとめ
- 属性名のスペルチェック:
latout_height→layout_height。 - IDE の補完・Lint 機能を有効化し、リアルタイムでミスを検出。
- ビルドスクリプトや CI で継続的に検証し、リリース前にミスを捕捉。
以上を実施すれば、同様の「No resource identifier found」エラーはほぼ防げます。
まとめ
本記事では、Android XML で発生した No resource identifier found for attribute 'latout_height' エラーの原因と解決手順を詳しく解説しました。
- 原因は属性名の綴りミス(
latout_height→layout_height)で、Android のリソースコンパイラが属性を認識できなかったこと。 - 対策は属性名を正しく修正し、IDE の補完・Lint 機能や CI ビルドで事前検出を行うこと。
- ポイントは、エラーメッセージだけに頼らず、実際の XML 行を確認し、スペルや名前空間を疑う姿勢です。
この記事を通して、読者は XML 記述時の注意点を身につけ、ビルドエラーに時間を取られることなく開発を進められるようになります。次回は、カスタムビューの属性定義と リソースの名前空間管理 について掘り下げた記事を予定しています。
参考資料
- Android Developers – Layout XML の属性一覧
- Android Studio ユーザーガイド – コード補完と Lint の設定
- 書籍: Android アプリ開発実践ガイド(技術評論社, 2023)
