

中嶋悟
名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝
devcontainerとdocker-composeの違いを理解するための基礎
開発現場では、devcontainerとdocker-composeはよく同じ文脈で語られますが、実際には別の役割を持っています。まず、devcontainerは「開発環境を統一するための設定と仕組み」です。具体的には、プロジェクトごとに必要なツールやライブラリ、エディタの拡張を、コンテナの内部に閉じ込めて再現性の高い環境を作ることを目的としています。あなたの手元のPCのOSが何であっても、同じ形の開発環境を誰が作業しても同じ動作で動くようにするのがポイントです。
一方、docker-composeは「複数のコンテナを同時に動かすための設定をまとめるツール」です。例えば、ウェブサーバー、データベース、キャッシュなど、連携する複数のサービスを一つの設定ファイルで起動・連携させることができます。
このように、devcontainerは開発環境そのものの再現性を高め、docker-composeはアプリケーションを構成する複数のサービスを動かすことを簡単にします。
devcontainerとは何か
devcontainerは、主にVSCodeのRemote - Containers機能を前提に動く開発環境の"設計図"です。devcontainer.jsonという設定ファイルをプロジェクトの中の .devcontainer フォルダに置くと、どのベースイメージを使うか、どんなツールを自動でインストールするか、どのエディタ設定を適用するか、を定義できます。これにより、あなたが自分のPCで作業しているときと、同僚が別のPCで作業しているときの差を最小化できます。実際の動作としては、VSCodeから「このプロジェクトをこのコンテナで開く」という指示を出すと、Dockerが新しいコンテナを作成・起動し、コードはそのコンテナの内部で動作します。ホスト側のファイルシステムとコンテナの間にはボリュームの同期が使われ、変更は即座に反映され、拡張機能のインストールも自動で行われます。
この仕組みを使うと、新しくプロジェクトに参加した人でも、数分で同じ開発環境を再現でき、個々のデバイスに依存したトラブルを減らせます。環境の再現性だけでなく、特定のプロジェクト用ツールのバージョンを固定することで、将来の動作不安を抑えることも重要です。
docker-composeとは何か
docker-composeは、複数のDockerコンテナを協調して動かすための「設定ファイル集約ツール」です。主に docker-compose.yml ファイルに、サービス名、使用するイメージ、環境変数、ボリューム、ネットワーク設定、起動順序などを記述します。実行時には、同じディレクトリにあるファイルを元に、`docker-compose up` の一つのコマンドで複数のコンテナを立ち上げ、互いに通信できる状態を作ります。
一つのアプリケーションが複数の微小サービスからなる場合、開発段階でも本番と近い構成を模倣できます。開発チームでは、DBやキャッシュ、APIサーバーなど、役割ごとにコンテナを分離して管理します。ボリュームの永続化やネットワークの分離、環境変数の切り替えなど、現場で頻繁に使う機能がまとまっている点が強みです。
違いと使い分けのポイントまとめ
この二つは補完的に使うこともありますが、前提が違います。devcontainerは“開発環境の再現性”を最優先に設計された仕組みで、個人の環境やチーム全体の開発体験を均一にします。対してdocker-composeは“アプリケーションを構成する複数のサービス”を協調させるための道具で、実運用のような連携性を再現します。現場での使い分けの目安としては、もしあなたが新しいプロジェクトを始めるときに、手元のマシンでコードを走らせる環境をすばやく再現したいならdevcontainerを使います。一方で、複数のサービスを同時に動かしてテストしたい場面や、本番に近い構成をローカルで再現したい場合はdocker-composeを使うのが適しています。もちろん、両者を組み合わせることで、開発用のコンテナを定義し、その中で複数サービスを回す、という高度なワークフローも実現可能です。実務では、.devcontainer の設定と docker-compose.yml を併用して、開発と統合テストの橋渡しを行うケースが多く見られます。ここで重要なのは、ツールの特性を理解し、目的に合わせて選択・組み合わせることです。
友だちとパソコンの話をしているときの雑談風に深掘りしました。devcontainerを使えば、同じツールや設定が全員のマシンに自動で揃う。つまり“環境の差”という壁を低くしてくれる。私たちは、どのPCでも同じコマンドで動くことを夢見るが、現実にはOSの違いや依存関係の違いが邪魔をします。devcontainerはこの問題を解決する一つの手段で、設定ファイル .devcontainer/devcontainer.json を通じてベースイメージ、拡張機能、デフォルトのエディタ設定などを定義します。そこで大事なのは、初期の小さな設定を積み重ね、徐々に自分たちの開発ワークフローを最適化していくことです。