[Android] .gitignore の整備
Android Studio でプロジェクトを新規作成した際に生成される.gitignore は、 下記の設定が不足しているように思えます。
- IDE(Android Studio)
- 作業で利用するマシンOS
チーム開発する際、Pull Request の変更点に不要ファイルが入っていると、 なぜこの変更が必要なのかを都度考えることになり、ちりつもで全体進行が遅れていきます。
それを防ぐためにプロジェクトの初期段階で.gitignore を整備し、 Pull Request などのレビューで確認する内容を減らしてから、 チーム開発を始めるようにしています。
.gitignore の記述は、github/gitignore の中から下記をを流用することが多いです。
- Android
- 各OS
以降の文書で、解説していきます。
目次
- 問題の整理
- .gitignore の調整
- 考慮点
- 結論
- 参考文献
問題の整理
例えばmacOS にインストールしたAndroid Studio Giraffe でプロジェクト新規作成すると、 下記の.gitignore が生成されます。
.gitignore
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
この状態では、下記の設定が不足しているように思えます。
- IDE(Android Studio)
- ".idea" 配下のファイルが変更された際に、採用すべきか迷う
- JDK 関連の設定は、Gradle セットアップした際に自動生成されるので、多重管理になる
- ".idea" 配下のファイルが変更された際に、採用すべきか迷う
- 作業で利用するマシンOS
- Windows の設定が無い
- 特に画像を扱った際に生成される"Thumbs.db" の指定が欲しい
- Windows の設定が無い
チームの方針にもよりますが、これらはGit 管理から除外することもできます。 個人的には省けるものは省きたいので、生成された.gitignore をどう調整すべきか、が今回の問いとなります。
.gitignore の調整
.gitignore のノウハウは、github/gitignore にまとまっています。 まずは"Android" の内容を採用し、その後にチームのマシン状況を考慮して各OS の設定を追記することが多いです。
- Android
- 各OS
コピペは大変なので、下記のVSCode 拡張機能を使って作業すると、とても便利です。
https://marketplace.visualstudio.com/items?itemName=codezombiech.gitignore
考慮点
コーディングスタイル
https://www.jetbrains.com/help/idea/configuring-code-style.html
上記にあるようにIDE の設定でプロジェクトのコーディングスタイルを設定することも可能です。 その場合.idea 配下にファイルが作られるので、.gitignore の例外ルールの調整が必要になります。
……ただ昨今はCI / CD の文脈でktlint などのツールを採用するケースが多いかと思われます。
IDE or 外部ツールベースにするかをまずは決めたほうが良いと思うので、 チーム方針を確認すると良いかもしれません。
独自のプロジェクトアイコンを適用したい
IDE でプロジェクト一覧を見た際に、アイコンが表示されていると思います。 これは下記の手順で変更することが出来ます。
https://www.jetbrains.com/help/idea/open-close-and-move-projects.html#change-project-icon
変更を加えると、.idea/ 配下にファイルが作られるので、.gitignore の例外ルールの調整が必要になります。
……もしJetBrains Toolbox App を使っている場合、デフォルトではアイコン領域にIDE アイコンが表示されます。 複数のAndroid Studio をインストールしている際、そこで見分けがついて便利なのですが、独自のプロジェクトアイコンがある場合はそちらが優先されるので、ぱっと見でどのIDE が起動するかが分からなくなります。
なので、まずはチーム方針を確認すると良いかもしれません。
結論
- github/gitignore からAndroid + 各OS の内容を採用すると、不要なファイル変更を抑制できる
- IDE 機能を活かす場合、.gitignore の例外ルールの調整が必要になるので、まずはチーム方針を確認すると良い