検索 K
2/8追記 : poetryで解決される依存関係のバージョンを固定するために、poetry.lockファイルもコミットする必要があるとコメントを頂いたため、当該ファイルについて追記しました。

今日は、多人数開発時に便利な「開発環境の構築」を共通化した試みについて紹介します。
経緯
弊社の開発アシスタントが、複数人数で1つのプロジェクトに関わることになりました。 言語はPythonを使うことが決まっていました。
しかし、今在籍している開発アシスタントには、以下の制約があります。
- ● 開発アシスタントは学生のアルバイトさんが多い⇒ ガッツリと時間をとって稼働できる人が少ない
- ● ホスト環境が割とバラついている(Win/Mac/Linux)
この制約の中で、 開発環境の構築にあまり時間を掛けず業務に入る 準備をする必要がありました。

そこで目をつけたのがVS Code Remote Containerです。
やったこと

VS Code Remote Containerの概要図( 出典元: https://code.visualstudio.com/ )
開発環境の構築 & 配布編
開発アシスタントのリーダーが、以下のように開発環境の構築を行いました。
VSCode Remote ContainerプラグインをVS Codeにインストールする
ワークスペースとなるディレクトリを作成する
- の中に以下を準備する
- Python + poetryをインストールするDockerfileを用意する
- .devcontainer/devcontainer.jsonを用意する
- をVS Codeで開くと、開発用コンテナーが立ち上がって、ターミナルなども開いた状態になる
VS Codeのターミナル上でpoetryのプロジェクトを作る
poetry init依存関係をインストールしていく
$ poetry add numpy $ poetry add opencv-python $ poetry add matplotlib ...依存関係のパッケージ名やバージョンがpyproject.tomlに書き込まれていく
開発環境の利用者がワークスペースを開いた時に、自動的にpoetry installが走るようにする
devcontainer.jsonに以下を書いておく
"postCreateCommand": "poetry install"
ここまでで作ったものをリポジトリにホストする
- Dockerfile
- .devcontainer/devcontainer.json
- pyproject.toml
- [2/8追記] poetryで解決する依存関係の バージョンを固定するためには、poetry.lock ファイルもコミット する必要があります。
環境の一斉構築編

各開発アシスタントは、以下のようにしてあっという間に開発環境を構築しました。
- (あらかじめDocker, VS Code, VS Code Remote Containerプラグインはインストールしておく)
- リポジトリから以下3つを落としてくる
- Dockerfile
- .devcontainer/devcontainer.json
- pyproject.toml
- [2/8追記] poetry.lockも落としてきます
- 2。を自分のワークスペースのディレクトリに置いて、そのディレクトリをVS Codeで開く
- VS Code Remote ContainerによりDockerfileのビルド、ターミナル立ち上げ、poetry installなどが実行される
- 開発環境のできあがり!!
これで、全員が統一された開発環境を使うことができます。 また、devcontainer.jsonには、VS Codeで利用させたいプラグインも指定できるため、linterなどの プラグインも統一したものを使うことができます 。
弊社では、開発を効率化する試みを積極的に行っています。 興味を持たれた方は、ぜひ採用ページをご覧ください。
