VS Codeでのチーム開発(Laravel)について調べた
はじめに
チーム開発でLaravelをつかったWebApplicationを作ることになりました。
エディターについては VS Code を使うことになったので、
効率の良い開発環境を提供できるように調べてみました。
チームについて
PCについては、 Windows と Mac の2種類を開発者が選択して利用している状況です。
プロダクトのバージョン管理は Github で行っています。
他のプロダクトについてもVS Codeで開発する可能性があります。
※ 開発言語はPHP,Laravelに限らない
やる/やらない整理
漠然としたやりたいことリストを作成し、
ネット検索して実現可能/不可能に仕分けしました。
そこからやる/やらないを検討しました。
やりたいことリスト
- GithubからCloneしたら少ない手順でローカルで起動できる
- Windows / Mac OSに捉われずどちらでも動作する
- プロダクト毎にExtension使用状況をカスタマイズできると良い
- チーム内で同じルールのもとFormatterが適用できる
やるリスト
-
./.vscode/settings.jsonを作成しGit管理する- GithubからCloneしたら各人が設定せずともすぐ利用できる
- Windows / Mac どちらでも動作する
-
settings.jsonに色々用意する- チーム内で同じルールのもとFormatterが適用できる
やらないリスト
- プロダクト毎にExtension使用状況をカスタマイズできると良い
- 実現方法がわかりませんでした。
- ->
./.vscode/extensions.jsonで実現できそう(2022.10.05 add)
- ->
- 実現方法がわかりませんでした。
settings.jsonの作成
VS Codeの各種設定は settings.json に保存されています。
settings.json については、 ユーザ設定 と ワークスペース設定 の2種類があります。
ワークスペース設定 が存在する場合、 ユーザ設定 よりも優先されるようです。
ワークスペースとは
(VS Codeにおいて)フォルダとその配下をとりまとめる概念です。
Githubからクローンしてきたリポジトリを1ワークスペースとして保存するようにします。
①作成
Githubで管理しているリポジトリに
./.vscode/settings.json
をCommitします。
※ .vscode なので注意
最小限必要そうな設定を settings.json に書き込み、Commit&Pushしておきます。
今回だと、
- PHPのフォーマッタのルール設定
- HTML,JSのフォーマッタルールの設定
などが挙がります。
.gitignore に settings.json を追加します。
※ 各人が追加書き込みしても、Gitの管理対象とならないようにしておきます
②周知
VS Codeの設定は ./vscode/settings.json で制御している旨をチームに案内します。
案内方法はリポジトリ直下の readme.md や環境構築資料にあると良いと思います。
環境毎に設定が異なる場合などは、手動で変更する必要がある旨も記載しておきます。
例えば、WindowsとMacだとディレクトリ構造が変わったりするなどなど。
解決策を探している課題
- Extensionを各々がイントールしなければならない
- 必要最低限を環境構築資料に記載し、手動でインストールしてもらっている
- コード管理し、1回のコマンドで必要なものをインストールできるようにしたい
- Extension利用状況をワークスペース毎に制御したい
- 開発言語毎にVS Codeの設定を切り替えたい。
『JavaのプロダクトにPHPのプラグインなんて必要ない。』- ->
./.vscode/extensions.jsonで実現できそう(2022.10.05 add)
- ->
- 開発言語毎にVS Codeの設定を切り替えたい。
おまけ
チーム開発(Laravel)用のExtension
2021年時点で、作業が捗りそうなプラグインを厳選しました。
| ExtensionName |
|---|
| Laravel Artisan |
| Laravel Snippets |
| Laravel Blade Snippets |
| Laravel goto Controller |
| Laravel goto View |
| PHP Intelliphense |
| PHP DocBlocker |
| PHP Namespace Resolver |
| php cs fixer |
Discussion