.devcontainer

基本情報

項目 内容
モジュールパス .devcontainer
種別 設定モジュール(開発環境構成)
ファイル数 2
サブモジュール数 0

概要

VS Code Dev Containers および GitHub Codespaces で使用される LangChain プロジェクトの開発コンテナ環境を定義する設定モジュール。Docker Compose ベースでコンテナを構築し、Python 3.11 環境・uv パッケージマネージャー・VS Code 拡張機能・フォーマッタ設定を自動適用する。開発者はローカル環境を個別にセットアップすることなく、コンテナ作成後の uv sync 実行により即座にコーディングを開始できる。システム全体においては開発環境の標準化と再現性の確保を担い、オンボーディングコストの削減に寄与する。

設計パターン

パターン名 適用範囲 説明
宣言的設定 モジュール全体 devcontainer.json と docker-compose.yaml による宣言的なインフラ定義。手続き的なスクリプトではなく、望ましい状態を記述する方式
Composition devcontainer.json → docker-compose.yaml Dev Container 設定が Docker Compose 定義を参照し、複数の設定ファイルを組み合わせて環境を構成

アーキテクチャ

モジュール構成

.devcontainer/
├── devcontainer.json  - VS Code Dev Containers および GitHub Codespaces で使用される開発コンテナの構成定義ファイル。
└── docker-compose.yaml  - VS Code Dev Containers / GitHub Codespaces 向けの Docker Compose 設定ファイル。

コンポーネント関連図

Mermaid形式:

graph TD
    VSCode[VS Code / Codespaces] --> DC[devcontainer.json]
    DC -->|dockerComposeFile| Compose[docker-compose.yaml]
    Compose -->|build| Dockerfile[libs/langchain/dev.Dockerfile]
    DC -->|features| Features[Git, GitHub CLI]
    DC -->|postCreateCommand| UVSync[uv sync]
    DC -->|customizations| Extensions[VS Code 拡張・設定]
    Compose -->|networks| Network[langchain-network<br/>bridge]

機能一覧

機能名 説明 主要ファイル
コンテナビルド定義 Python 3.11 ベースの開発コンテナイメージのビルド構成を定義 docker-compose.yaml
開発環境自動セットアップ コンテナ作成後に uv sync で Python 依存関係を自動インストール devcontainer.json
VS Code 拡張自動適用 Python 開発に必要な拡張機能(デバッガー、型チェッカー、Jupyter 等)を自動インストール devcontainer.json
Python インタープリター設定 uv が作成する仮想環境のインタープリターパスを自動設定 devcontainer.json
フォーマット自動実行 Python ファイル保存時にフォーマットと import 整理を自動実行 devcontainer.json
ボリュームマウント named volume によるワークスペースマウントでファイルシステムパフォーマンスを向上 devcontainer.json
開発ツール追加 Dev Container Features による Git・GitHub CLI の追加インストール devcontainer.json
ネットワーク定義 サービス間通信用ブリッジネットワークの定義(将来の複数サービス拡張に対応) docker-compose.yaml

公開インターフェース

クラス / 関数

設定ファイルのみで構成されるモジュールのため、プログラム的なクラス・関数のインターフェースは提供しません。

設定インターフェース

名前 種別 用途
devcontainer.json Dev Container 設定 VS Code / Codespaces が自動読み込みし、開発コンテナ環境を構築
docker-compose.yaml Docker Compose 定義 devcontainer.json から参照され、コンテナのビルド・ネットワーク構成を提供

依存関係

外部依存(このモジュールが依存する外部パッケージ)

パッケージ 主要コンポーネント 用途
Docker / Docker Compose docker-compose CLI コンテナのビルド・起動・管理
Dev Container 仕様 devcontainer.json spec VS Code / Codespaces による開発コンテナ定義の標準仕様
ghcr.io/devcontainers/features/git:1 Git Feature コンテナへの Git インストール
ghcr.io/devcontainers/features/github-cli:1 GitHub CLI Feature コンテナへの GitHub CLI (gh) インストール
uv uv sync Python パッケージマネージャー(依存関係の同期)
VS Code 拡張: ms-python.python Python 言語サポート Python 開発の基本機能
VS Code 拡張: ms-python.debugpy Python デバッガー デバッグ実行
VS Code 拡張: ms-python.mypy-type-checker mypy 型チェッカー 型チェック
VS Code 拡張: ms-python.isort import ソート import 文の自動整理
VS Code 拡張: unifiedjs.vscode-mdx MDX サポート MDX ファイル編集
VS Code 拡張: davidanson.vscode-markdownlint Markdown lint Markdown の構文チェック
VS Code 拡張: ms-toolsai.jupyter Jupyter Notebook ノートブック実行・編集
VS Code 拡張: GitHub.copilot GitHub Copilot AI コード補完
VS Code 拡張: GitHub.copilot-chat GitHub Copilot Chat AI チャット

外部依存(このモジュールが依存する内部モジュール)

依存先モジュール 主要ファイル 用途
libs/langchain dev.Dockerfile Python 3.11 ベースの開発用コンテナイメージ定義(uv、build-essential、git、vim 等のインストール)
libs/langchain_v1 pyproject.toml 等 postCreateCommand での uv sync 対象ディレクトリ(Python 依存関係の同期先)

内部依存(このモジュールに依存するもの)

依存元 主要ファイル 用途
.devcontainer README.md Dev Container の使用方法ドキュメント(Codespaces / VS Code での起動手順を案内)

設定ファイルモジュールのため、プロジェクト内の他のソースコードから直接参照されることはありません。VS Code / GitHub Codespaces のランタイムが devcontainer.json を自動的に検出・読み込みします。

データフロー

Mermaid形式:

flowchart TD
    Start[VS Code / Codespaces 起動] --> ReadConfig[devcontainer.json 読み込み]
    ReadConfig --> Compose[docker-compose.yaml 参照]
    Compose --> Build[dev.Dockerfile ビルド]
    Build --> Image[コンテナイメージ作成]
    ReadConfig --> Features[Features インストール<br/>Git, GitHub CLI]
    ReadConfig --> Volume[named volume マウント]
    Image --> Run[コンテナ起動・接続]
    Features --> Run
    Volume --> Run
    Run --> PostCreate[postCreateCommand<br/>uv sync 実行]
    PostCreate --> Extensions[VS Code 拡張・設定の適用]
    Extensions --> Ready[開発環境 Ready]

セキュリティ考慮

観点 対策状況 詳細
入力検証 該当なし 設定ファイルのため外部入力を受け付けない
認証/認可 該当なし アクセス制御の実装なし
機密データ なし 秘密情報は含まれない。環境変数 UV_LINK_MODE のみ設定
コンテナセキュリティ あり Dockerfile 側で非 root ユーザー(vscode, UID 1000)を作成・使用。remoteUser: "root" はコメントアウトされており root 接続は無効
ビルドコンテキスト 注意 build.context..(リポジトリルート)のため、.dockerignore がない場合にリポジトリ全体がビルドコンテキストとして送信される

技術的負債・既知の問題

種別 内容 影響範囲 優先度
非推奨 docker-compose.yaml で version: '3' を使用しているが、Docker Compose V2 では非推奨(無視される) docker-compose.yaml
設計 postCreateCommandlibs/langchain_v1 を対象に uv sync を実行するが、Dockerfile 内でも同ディレクトリで uv sync を実行しており処理が重複する可能性がある(ボリュームマウントにより意図的と推測されるが、コメントなし) devcontainer.json
設計 ネットワーク langchain-network を定義しているが、サービスが 1 つのみのため現時点では実用的な意味がない docker-compose.yaml
パス不整合 Dockerfile のパスは libs/langchain/dev.Dockerfile だが、Dockerfile 内の WORKDIR は libs/langchain_v1 を参照しており、ディレクトリ名 langchainlangchain_v1 に不一致の可能性がある docker-compose.yaml, devcontainer.json

拡張ポイント

変更内容 修正対象ファイル 手順・注意点
新サービスの追加(DB、Redis 等) docker-compose.yaml 1. services に新サービス定義を追加 2. langchain-network に接続 3. 必要に応じて devcontainer.json の forwardPorts を有効化
VS Code 拡張の追加 devcontainer.json customizations.vscode.extensions 配列に拡張機能 ID を追記
Dev Container Feature の追加 devcontainer.json features オブジェクトに新エントリを追加(例: Node.js、Docker-in-Docker 等)
ポートフォワーディングの有効化 devcontainer.json コメントアウトされている forwardPorts を有効化し、ポート番号を指定
環境変数の追加 devcontainer.json containerEnv オブジェクトに新しいキーバリューを追加

注意点・特記事項

  • 設計上の制約: Docker Compose ベースの構成のため、devcontainer.json の imagebuild プロパティとの併用は不可。service プロパティで指定するサービス名は docker-compose.yaml 内のサービス定義と一致させる必要がある
  • パフォーマンス: named volume を使用しているため、ホストファイルシステムとの直接同期は行われない。コンテナ外でのファイル変更はコンテナ内に反映されない点に注意。ビルドコンテキストがリポジトリルート全体のため、リポジトリサイズが大きい場合はビルド時間に影響する
  • 互換性: docker-compose.yamlversion: '3' は Docker Compose V2 では非推奨だが動作に影響なし。将来的に削除推奨

配下ドキュメント

サブモジュール

サブモジュールは存在しない。

ファイル

  • devcontainer.json.md - VS Code Dev Containers および GitHub Codespaces で使用される開発コンテナの構成定義ファイル。
  • docker-compose.yaml.md - VS Code Dev Containers / GitHub Codespaces 向けの Docker Compose 設定ファイル。