技術

新規プロジェクトの共通設定ファイル群

新規プロジェクトを設定するときに必要なファイル群をまとめてみました。

新規リポジトリを作成したときや、特定のディレクトリ配下で新規プロジェクトをセットアップするときにやっている作業をまとめたものになります。

プロジェクトの設定ファイル群

新規プロジェクトをセットアップするときは、そのプロジェクトで使う言語やフレームワークの設定ファイルがありますが、それとは別にどのプロジェクトでも共通して使うような設定ファイルがあります。

具体的には以下の様なものになります。

項目 必須度
.gitignore ほぼ必須
.gitattributes ほぼいらない
.yamllint.yml なくても良い
.makdownlint.yaml あったほうが良い
.shellcheckrc なくても良い
.protolint.yaml なくても良い
.editorconfig ほぼ必須

この他にも、pyproject.tomlやtsconfig.jsonといった各言語のほぼ必須ファイルがありますが、どのプロジェクトでも共通していれるものではないので、除外しています。

こういった設定ファイル系は移り変わりが激しいです。あくまで2022年現在のものになります。

.gitignore (ほぼ必須)

基本中の基本ですね。ほぼ必須のファイルです。

新規リポジトリの場合はルートに置くのはもちろん、フォルダを追加してそこに新規プロジェクトを追加するときは、ルートに.gitignoreがあっても、念のためそのフォルダに.gitignoreファイルを追加して設定していっています。

各エディタのプラグインなどで自動生成もできますが、私は空ファイルを作成して自分で記述していくことが多いです。といっても、他のプロジェクトにある自動生成された.gitignoreから必要な部分をコピペしていく感じですが。

だいたいこんな感じの設定を入れています。

# editor
.vscode/*
.idea/*

# build
node_modules/

# os
.DS_Store
Thumbs.db

あまりゴチャゴチャ書きたくないので、必要最低限のこれをベースに、各言語のキャッシュファイルなどは必要になり次第足していっています。

vscodeやJetbrainsは*で全部いれてしまっています。settingやtaskなど共有が必要になったらそのタイミングで除外設定をいれます。

.gitattributes (ほぼいらない)

ファイルの拡張子ごとにGitの挙動を設定できるようにするファイルです。フレームワークによっては自動生成されます。

Gitの改行コードの制御などできるようですが、私は使ったことないのでよくわかりません。

自動生成されない限り、わざわざ設定する必要はないと思いますが、設定してあったプロジェクトを見たことがあったので、一応候補にいれておきました。

.yamllint.yml (なくても良い)

yamlファイルはどのプロジェクトでも出てきますが、個人的にはなくても良いかと思います。

yamlの書き方はほぼ決まっていて、そんな複雑な書き方はないので、lint書けなくても問題ない場合がほとんどです。

私は一応入れています。

.makdownlint.yaml (あった方が良い)

マークダウンファイルが存在しないプロジェクトなんてないので、個人的には入れた方が良いと思います。

マークダウンファイルはどんどん増え続けていきますし、ずっと更新し続けるファイルとかも出てきますので、最初にlintを導入して書き方を統一したほうが良いです。

ただあまり厳しく制限をかけたら、作成したり更新する意欲がなくなってしますので、制限は運用しながらどんどん緩くしていっていいかと思います。

.shellcheckrc (なくても良い)

shファイルはたまに入り込んできます。

そのときはshellcheckを使うことがありますが、.shellchekcrcで設定することはほとんどないので、なくても良いかと思います。

私も最初はこのファイルは作らないことがほとんどです。shが出てきたときに導入するかどうか考えるレベルです。

.protolint.yaml (なくても良い)

プロトコルバッファはいつ使うことになるかわからないので、導入しておいてもいいかと思います。

が、やはり使うようになってからの導入でいいかと思います。私は最初から導入していることはありません。

.editorconfig (ほぼ必須)

入れておくに超したことはないかと思います。

私は一人プロジェクトでも、違う環境で開くことがあるので、導入しています。

まとめ

以上、プロジェクト導入時の設定ファイル関連についてまとめてみました。

プロジェクトをはじめるとき、毎回他のプロジェクトをあさりながら、このファイル入れるとか入れないとか考えたりするの無駄だと思っていたので、いつかまとめたいと思っていました。

しばらくして設定ファイル入れるの忘れていたとかもありますが、これでそういったことがなくなればよいかと思います。

今回、走り書きに近い感じなので、このページは随時ブラッシュアップしていければと思っています。