😺

DevContainer with DooDでClaude CodeとGemini CLIからAIコーディング

に公開

はじめに

Claude CodeやGeminiCLIといった、AIによるコーディング補助が進化する中、複数の開発言語・環境を効率よく管理する仕組みが求められています。本記事では、DooD(Docker-outside-of-Docker)構成を用い、メインのdevcontainerに配置されたClaude CodeやGemini CLIから他のDockerコンテナの管理とコンテナ内のプログラムを開発する方法を紹介します。

この構成では、メインのdevcontainerにGemini CLIClaude CodeなどのAIコーディングツールのみを配置することで、クリーンな環境を保ちつつ、新たにdevcontainer として配布可能な形でPythonやNode.jsなどのsubprojectを開発できることが特徴です。

なぜこの環境が良いのか

  • AIツールで複数環境を一元管理できる
    devcontainerでGeminiやClaudeなどのAIコーディングCLIを利用し、複数のDockerコンテナにまたがる開発が可能です。

  • 各環境の再配布・テストが容易になる
    各コンテナはdevcontainer構成を含むため、他環境への移植や個別テストも簡単です。

  • ファイルが確認しやすい
    Windowsファイルシステム上で全てのコードや設定ファイルを共通管理できる。

環境のイメージ図

githubリポジトリ

https://github.com/niseng-biz/CLI-DooD

リポジトリ構成

  • メインdevcontainer
    • Gemini CLIやClaude Codeを配置し、AIコーディングを主導します。
    • 他のDockerコンテナの管理・操作が可能です。
  • subproject
    • Python/Node.jsなど、個別の開発環境ごとにコンテナを用意します。
    • devcontainer構成ファイルを内包し、単体でも再配布・テスト可能としています。
  • ファイルシステム構成
    • 作成はWindows上のWSL環境を利用しています。(macOS/Linuxへの対応も試みましたが、うまく行ってなかったらごめんなさい。)
    • Windows のファイルシステム上、親devcontainer配下に他のコンテナ用ディレクトリを配置し、各コンテナをマウントしているため、mainで作成したコードを各コンテナにスムーズに渡して実行ができます。

機能の工夫

記憶機能
mainのdevcontainer を終了すると、AIエージェントがこれまでの作業を忘れてしまうこと、AIエージェントを切り替えて使うことを想定しているため、instruction.mdとmemory.mdというファイルを準備し、そこにこの環境の使い方、これまでの作業内容と、次回のアクションを記載するようにしています。AIエージェント起動時に読み込ませるようにしていますが、よく読み込みを忘れるため、instruction.md読んだ?と最初に聞いてあげてください。

まとめ

DooD構成を活用することで、AIを活用した効率的かつクリーンな開発環境が実現できます。devcontainerの利便性とAIコーディングツールの両立に興味がある方はぜひ活用してみてください。

バグや改善点などございましたらご指摘いただけますとありがたいです。

参考文献

dind(docker-in-docker)とdood(docker-outside-of-docker)でコンテナを料理する #Docker - Qiita

Discussion