Android Studio最速入門~効率的にコーディングするための使い方

第35回 バージョン管理 ─プロジェクト管理ファイルについて[後編]

この記事を読むのに必要な時間:およそ 9.5 分

ファイルエンコードの設定(File Encodings)

.idea/encodings.xml

「Preferences / File Encodings」の設定が記録されています。設定画面を見ればイメージが沸くと思いますが,プロジェクトで使用するエンコードや,プロジェクト管理下のファイルのエンコードを指定します。

図5 ⁠Preferences / File Encodings」設定画面

図5 「Preferences / File Encodings」設定画面

ビルドシステムを自前で持っているIntelliJの場合は,この画面の「IDE Encoding」がコンパイラに渡すファイルエンコードになるのですが,Android Studioの場合,Gradleでビルドするためこの設定はあまり意味を持ちません。Gradleへのエンコード指定は第6回で紹介したようにbuild.gradleに指定します。

「Project Encoding」はAndroid Studioからファイルを作成したときの,初期状態のエンコードになります。

結論

コンパイラに対しての影響力はありませんが,新規作成するファイルの初期エンコードに影響があるので,異なるプラットフォームが混在している環境で開発する場合は,このファイルは共有しておいたほうが無難です。

使用するバージョン管理システムによっては意味がない事もあるし,同じプラットフォームしかない/ひとりでしか開発してない,などの場合は共有するまでもないですが,設定ファイルもひとつだけなのでケチらず共有しておきましょう。

Gantの設定(Gant)

.idea/gant_config.xml

「Preferences / Gant」の設定内容を記録します。ちなみにGantとはGroovy製のビルドツールのひとつです。

結論

IntelliJの名残で設定項目が残っているだけで,Android Studioでは全く意味を成しません。当然,バージョン管理対象外です。これも設定しないかぎり設定ファイルは生成されないので,無視しておきましょう。

Gradleの設定(Gradle)

.idea/gradle.xml

「Preferences / Gradle」の設定と「Preferences / Compiler / Gradle」の設定が記録されます。

前回も説明しましたが,⁠Preferences / Gradle」「Linked Gradle projects」部分がAndroid Studioのバージョンによっては絶対パスで保存される場合があります。

図6 ⁠Preferences / Gradle」設定画面

図6 「Preferences / Gradle」設定画面

IntelliJ IDEAで同ファイルを確認すると,絶対パスではなく $PROJECT_DIR$ という変数が設定されているので,単なるバグだと思います。実際,この箇所を $PROJECT_DIR$ に書き直しても問題なく動きます(Android Studio v0.3.6, v0.3.7,v0.4.0のWindows版で確認⁠⁠。いずれ解消すると思いますが,一応気にするようにしてください。

結論

.idea/gradle.xmlがAndroid Studioに対して「このディレクトリがAndroid Studioのプロジェクトである」ことをたらしめているので,必ず共有しましょう。

インスペクションのプロファイル設定(Inspections)

.idea/inspectionProfiles/<プロファイル名>.xml

<AS_CONFIG>/inspection/<プロファイル名>.xml

第14回で紹介したコード検査機能の設定が保存されます「Preferences / Inspections」で作成したプロファイルのうち「Share profile」がONになったものだけが,.idea/inspectionProfilesディレクトリに<プロファイル名>.xmlとして保存されます。

図7 ⁠Preferences / Inspections」設定画面

図7 「Preferences / Inspections」設定画面

「Share profile」がONになっているプロファイルがひとつも無いと,この設定ディレクトリそのものが消えて無くなります。ちなみに「Share profile」がOFFの場合,設定情報は <AS_CONFIG>/inspection/ ディレクトリに保存されます(ファイル名は <プロファイル名>.xmlです⁠⁠。

結論

プロジェクトでインスペクションの設定を共有するのであれば,ここはバージョン管理対象にするべきです。当然ながら共有するプロファイル名,それをメンテナンスするルールなどを定めておいた方がよいでしょう。無難な設定は「Project Default」プロファイルを共有(Share profileをON)することだと思います。

なお.idea/inspectionProfiles/profile_settings.xmlには「現在使っているプロファイル」が保存されます。プロファイルは共有するが,カレントの設定は個人の裁量に任せるのであれば,このファイルは共有しないほうがよいでしょう。

ランゲージインジェクションの設定(Language Injections)

<AS_CONFIG>/options/IntelliLang.xml

第13回でちらっと紹介した「Language Injection」に関する設定です。⁠Preferences / Language Injections」で設定します。

図8 ⁠Preferences / Language Injections」設定画面

図8 「Preferences / Language Injections」設定画面

結論

この設定は「Project Settings」にあるにもかかわらず,<AS_CONFIG>/options/IntelliLang.xmlに保存されます。そのため共有するとかしないとか,そもそも関係ありません。

ちょっとズルい気もしますが,他にもそんな設定項目があります。

Mavenの設定(Maven)

.idea/workspace.xml

「Preferences / Maven」の設定です。ちなみにMavenとはJava製のビルドツールのひとつです。

「Gant同様,IntelliJの名残で設定項目が残っているだけで全く意味を成さないのでは?」と思っていたのですが,Android StudioでGoogle App Engineのバックエンドサービスを作成するとMavenプロジェクトとして作られます(メニューバーの「Tools → Google Cloud Tools → Generate App Engine Backend⁠⁠。このあたりを見ると,たまたま残しているのではなく意図的に残しているのかも知れませんね。

結論

Android StudioにMavenサポートが必要かどうかは別として,そもそも専用の設定ファイルはできず,すべて .idea/workspace.xml に保存されます。仮にMavenを使ったモジュールがあったとしても,Mavenの設定を共用する方法はありません。

pom.xmlさえあれば十分という発想なのでしょうか,Gradleの設定ファイルとはずいぶん扱いが異なります。

スキーマやDTDの設定(Schemas and DTDs)

.idea/misc.xml, <AS_CONFIG>/options/other.xml

XML文書で用いるXMLスキーマやDTDに対してURIと実体を関連付けします。企業内などのローカルネットワーク内やオンライン状態などインターネットに接続できない環境で利用する場合に便利です。ただし,そんなに一生懸命設定する項目でもありません。

図9 ⁠Preferences / Schemas and DTDs」設定画面

図9 「Preferences / Schemas and DTDs」設定画面

ひどいことに専用の設定ファイルを持ちません。⁠External Schemas and DTDs」「Default HTML language level」.idea/misc.xml に保存されますが,それ以外はすべて <AS_CONFIG>/options/other.xmlに保存されます。

結論

「Ignored Schemas and DTDs」「XML Catalog」「IDE Settings」に属する設定項目なので対象外です。それ以外の項目ですが,前回保留にしていた.idea/misc.xmlに保存されます。この設定ファイル,なんだかよく分類できていない情報が保存されている事がわかったので,もう共有対象から除外してしまいましょう。

著者プロフィール

今井勝信(いまいまさのぶ)

システムエンジニア。日本ユニシス株式会社所属。仙台在住。

Android開発はまったくやったことがないけれどIntelliJ IDEAが大好き。

Twitter: @masanobuimai