2/8追記: poetryで解決される依存関係のバージョンを固定するために、poetry.lockファイルもコミットする必要があるとコメントを頂いたため、当該ファイルについて追記しました。
今日は、多人数開発時に便利な「開発環境の構築」を共通化した試みについて紹介します。
経緯
弊社の開発アシスタントが、複数人数で1つのプロジェクトに関わることになりました。
言語はPythonを使うことが決まっていました。
しかし、今在籍している開発アシスタントには、以下の制約があります。
- ● 開発アシスタントは学生のアルバイトさんが多い⇒ガッツリと時間をとって稼働できる人が少ない
- ● ホスト環境が割とバラついている(Win/Mac/Linux)
この制約の中で、開発環境の構築にあまり時間を掛けず業務に入る準備をする必要がありました。
そこで目をつけたのが VSCode Remote Container です。
やったこと

VSCode Remote Containerの概要図( 出典元: https://code.visualstudio.com/ )
開発環境の構築 & 配布編
開発アシスタントのリーダーが、以下のように開発環境の構築を行いました。
- VSCode Remote ContainerプラグインをVSCodeにインストールする
- ワークスペースとなるディレクトリを作成する
- 2. の中に以下を準備する
- Python + poetry をインストールするDockerfileを用意する
- .devcontainer/devcontainer.json を用意する
- 2. をVSCodeで開くと、開発用コンテナが立ち上がって、ターミナルなども開いた状態になる
- VSCodeのターミナル上で poetryのプロジェクトを作る
$ poetry init
- 依存関係をインストールしていく
$ poetry add numpy $ poetry add opencv-python $ poetry add matplotlib ...
- 依存関係のパッケージ名やバージョンが pyproject.toml に書き込まれていく
- 開発環境の利用者が ワークスペースを開いた時に、自動的にpoetry install が走るようにする
- devcontainer.json に以下を書いておく
"postCreateCommand": "poetry install"
- devcontainer.json に以下を書いておく
- ここまでで作ったものを リポジトリにホストする
- Dockerfile
- .devcontainer/devcontainer.json
- pyproject.toml
- [2/8追記] poetryで解決する依存関係のバージョンを固定するためには、poetry.lock ファイルもコミットする必要があります。
環境の一斉構築編
各開発アシスタントは、以下のようにしてあっという間に開発環境を構築しました。
- (予め Docker, VSCode, VSCode Remote Containerプラグインはインストールしておく)
- リポジトリから以下3つを落としてくる
- Dockerfile
- .devcontainer/devcontainer.json
- pyproject.toml
- [2/8追記] poetry.lock も落としてきます
- 2.を自分のワークスペースのディレクトリに置いて、そのディレクトリをVSCodeで開く
- VSCode Remote ContainerによりDockerfileのビルド、ターミナル立ち上げ、poetry installなどが実行される
- 開発環境のできあがり!!
これで、全員が統一された開発環境を使うことが出来ます。
また、devcontainer.json には、VSCodeで利用させたいプラグインも指定できるため、linterなどのプラグインも統一したものを使うことができます。
弊社では、開発を効率化する試みを積極的に行っています。
興味を持たれた方は、ぜひ採用ページをご覧ください。