前回の「Android開発初心者がよくやる失敗」【コーディング編】(1)に引き続き、今回も開発初心者がよくやる失敗について解説していきます。
「Android開発初心者がよくやる失敗」【コーディング編】(1)では、次の2点について解説しました。
- R.javaが消えた
- ActivityをManifestに登録していなくてアプリがクラッシュする
今回は、次の4点について説明します。
- ファイル名に全角文字が含まれていてエラーになる
- ファイル名に「-(ハイフン)」や「.(ドット)」等、記号が含まれていてエラーになる
- サイトからコードをコピーしたら全角スペースが入っていてエラーになる
- 「.(ドット)」と「,(カンマ)」、「:(コロン)」と「;(セミコロン)」をミスタイプしている
リソースに全角文字が含まれていてエラーになる
Eclipseでは、画像ファイル等のようなファイルを、resフォルダに保存して利用することができます。
例えば、画像ファイルであればdrawable-hdpi、drawable-ldpi、drawable-mdpiに保存します。
画像ファイルは、drawable-hdpi、drawable-ldpi、drawable-mdpiのいずれか1つに保存しておけば、呼び出しの際に自動でリサイズされます。
drawable-hdpi、drawable-ldpi、drawable-mdpi全てに画像ファイルを保存する必要はありませんので、非常に便利ですね。
ですが、ファイル保存の際に、落とし穴があります。
ファイル名が半角小文字(例:android.png)の場合は、何ら問題はありません。
ですが、ファイル名が全角文字(例:あんどろいど.png)や半角大文字(例:ANDROID.png)になっている場合は、呼び出すことができません。
ファイル名の制約に引っかかってしまい、エラーが取れずにただ時間だけが過ぎていく人が少なくないかと思います。
ファイル名は半角文字で作成するよう心がけましょう。
エラー例として、以下のような条件でプロジェクトをクリーンしてみました。
- drawable-hdpiに、半角小文字のファイル名、全角文字のファイル名のファイル
- drawable-ldpiに、記号「-(ハイフン)」を含んだファイル名のファイル
- drawable-mdpiに、半角大文字のファイル名のファイル
上記の条件下でプロジェクトをクリーンした場合、コンソールにエラーが表示されます。
エラー1行目で、drawable-hdpiに保存されている全角文字のファイルに関するエラー報告が出ています。
/TechBooster/res/drawable-hdpi/てっくぶーすたー.gif: error: Invalid filename. Unable to add.
2行目から12行目で、drawable-ldpiに保存されているファイルTECHBOOSTER2.gifに使用できない文字が含まれているとエラー報告が出ています。
res/drawable-mdpi/TECHBOOSTER2.gif: Invalid file name: must contain only [a-z0-9_.]
最後の行、13行目で、drawable-mdpiに保存されているファイルtechbooster-pic.gifに使用できない文字が含まれているとエラー報告が出ています。
res/drawable-ldpi/techbooster-pic.gif: Invalid file name: must contain only [a-z0-9_.]
ファイル名に使用できない文字が含まれている場合エラーが報告されますので注意して見るようにしましょう。
ファイル名のエラーを避けるためにも、普段からファイル名を半角文字で保存することを習慣にすることをお勧めします。
ファイル名に「-(ハイフン)」や「.(ドット)」等、記号が含まれていてエラーになる
上記「リソースに全角文字が含まれていてエラーになる」でも、ファイル名にも触れましたが、ファイル名を決める際にもうひとつ気をつけなければならない事があります。
それは、ファイル名に「-(ハイフン)」や「.(ドット)」等、記号が含まれていてはならないということです。
「-(ハイフン)」や「.(ドット)」等の記号は、Javaにおいて意味の持った記号であり、これらをファイル名に使用することはできません。
ただひとつ、記号の「_(アンダーバー)」のみ使用することができます。
どうしても記号を使用したい際は、「_(アンダーバー)」を利用するのがいいでしょう。
サイトからコードをコピーしたら全角スペースが入っていてエラーになる
開発初心者に限らず、アプリ開発者は、開発ノウハウをネット上で調べる人は多いかと思います。
そして、ネット上に掲載されているサンプルコードをコピーアンドペーストして動かしてみた経験がある方も多いことでしょう。
ネット上からのコピーアンドペーストにも、落とし穴が生息しています。
サイトからコードをコピーしてきた場合、どこかに全角のスペースが潜んでいることがよくあります。
プログラム自体には問題が見当たらないのに、その全角スペースが見つけられず、数時間が削られてしまう、ということが起こってしまいます。
全角スペースを探すには、検索したらとても容易です。
全角スペースを検索するには、メニューバー「編集」→「検索/置換」から検索/置換画面を表示し、検索する文字列を入力する欄に全角スペースを入力しましょう。
プログラム全体を目で確認する必要はないので、非常に楽ですね!
プログラムには問題がないのに、なぜかエラーになる!という方は、まずどこかに全角スペースが潜んでいないかを確認してみるのが良いでしょう。
「.(ドット)」と「,(カンマ)」、「:(コロン)」と「;(セミコロン)」をタイプミスしている
Android開発のみに限らず、プログラムを書く上で稀にやってしまうのが「.(ドット)」と「,(カンマ)」、「:(コロン)」と「;(セミコロン)」のタイプミスです。
「.(ドット)」と「,(カンマ)」、「:(コロン)」と「;(セミコロン)」は、共にキーボードで隣同士に配置されているので、タイプミスが多く起こります。
「この行ちゃんと書いたし!間違ってないし!なんでエラーでるんだ!」
こんな悲鳴が聞こえてきます。
「.(ドット)」と「,(カンマ)」、「:(コロン)」と「;(セミコロン)」のタイプミスを確認してみましょう。
また、上記「サイトからコードをコピーしたら全角スペースが入っていてエラーになる」で述べたように、全角スペースが入っていないかも同時に確認してみましょう。
今回はAndroid開発者のみに限らず、プログラムを書く上でよくやる失敗にも少し触れまてみました。
以上、「Android開発初心者がよくやる失敗」【コーディング編】 (2)でした。