チーム開発で使用するIDEをIntelliJ IDEAに統一している場合、
IntelliJ IDEA用の設定ファイルをGitで共有しておくと都合の良いことが多いです。
しかし、設定ファイルにはユーザ固有の情報も含まれているので、
内容を理解して共有しなければ、混乱してしまうリスクがあります。

このエントリでは、
gradleを利用したJavaプロジェクトを例に、
以下の流れで、どのように設定ファイルをGitで共有すれば良いかの手順を示します。

  • gradleプロジェクトをIDEAで開けるようにする
  • 設定画面と設定ファイルの関係を理解する
  • 利用するIDEAのプラグインを統一する

# チーム開発で無くても、
# ここで示すファイルをGit管理しておくと、開発環境の復元が便利になります。

gradleプロジェクトをIDEAで開けるようにする

gradleを利用したプロジェクトをIDEAで開こうとすると、
「Import Project from Gradle」というウィザードが開始します。

まずはこのウィザードに遷移せず、すぐにプロジェクトがロードされるように、
必要最低限の設定ファイルを追加します。
結論から言うと、以下の3ファイルがあれば大丈夫です。

  • build.gradle
  • .idea/gradle.xml
  • .idea/misc.xml

それぞれ以下の情報が入っています。
「.idea/gradle.xml」にはウィザードで指定したオプションの情報。
「.idea/misc.xml」にはこのプロジェクトで使用するJavaSDKのバージョンの情報。

「.idea」配下には上記以外のディレクトリ・ファイルが出来ますが、
これらはプロジェクトを開いた時に自動的に生成されるので、
この段階ではGit管理に含める必要はありません。

この段階での「.gitignore」ファイルのイメージは、以下のようになります。

.gitignore .idea/* !.idea/gradle.xml !.idea/misc.xml

設定画面と設定ファイルの関係を理解する

「.idea」配下には前項で示したファイル以外にも、
設定内容や利用しているプラグインに応じて、様々な設定ファイルが作成されます。

ここではIDEAの設定画面と、どのように対応づくかを見ていきます。

例えば、Preferences → Editor → CodeStyleを例に示します。

Schemeを「Stored in Project」か「Stored in IDE」のものに切り替えると、
ヘッダ部分に「For current project」の表示有無が切り替わります。

intellijideagit-01

intellijideagit-02

ヘッダ部分に「For current project」の表示が付いている設定は、
「.idea」配下に設定ファイルが保存されることになります。

CodeStyleの場合は「.idea/codeStyles/」配下に設定が保存されます。

「.idea/codeStyles/」以下をGitの管理下に入れると。
チームでCodeSytleの設定を共有できます。

このように、
「For current project」となっている設定画面で設定を行い、
生成された「.idea」配下のxmlファイルをGit管理に入れることで各種設定を共有できます。

ただし、設定内容によっては、
設定ファイル内にユーザ固有のファイルパスの情報が含まれてしまうものもあるので、
xmlファイルの中身を確認して、
パスが「$PROJECT_DIR$」のように
プロジェクトルートからの相対パスになっていることを確認してから共有します。
# CodeStyleの場合はユーザ固有のパスは含まれないです。

基本的に、この流れで各種設定ファイルを共有できますが、
他のエントリで、ケース別の設定手順は書いていこうと考えています。

参考記事

本エントリの記載にあたり、以下の記事を参考にさせていただきました。

How to manage projects under Version Control Systems
https://intellij-support.jetbrains.com/hc/en-us/articles/206544839-How-to-manage-projects-under-Version-Control-Systems

バージョン管理 ─プロジェクト管理ファイルについて | Android Studio最速入門
http://gihyo.jp/dev/serial/01/android_studio/0035