🌟

開発環境でobsidianを活かしたい

に公開

はじめに

以前、Docker内にClaudeCodeを隔離した開発環境を整えたことを記事にしました。
あれから少しずつ環境を変えてきたので、再度自分への備忘録兼AIとの関わり方メモとして記事に残します。

前回からの変更点

  • 複数エージェントの導入
  • Markdownファイルをプロジェクト単位のナレッジベースとして設置、ソースコードと完全に分離。かつvaultは出来るだけ1つにまとめる。
  • スマホからプロジェクトのナレッジへアクセス可能に

MarkdownをAIへの指示やスレッドの内容記録、作業内容の出力、スマホで書いた思いつきの単純な殴り書きメモ、日誌等色々な事に使うようになりディレクトリがごちゃごちゃしてきたので、しっかりと整理してより積極的にAI活用のシステムに取り込みたいと思ったことがきっかけ。


構成

ナレッジにはicloud上に置いたobsidianのVaultを使用。プロジェクトごとにサブディレクトリを用意し、対応するプロジェクトのコンテナに/knowledgeとしてマウント

ディレクトリ構成

コードとナレッジは完全に分離して管理。

開発ディレクトリ

~/dev
├─ project-a
├─ project-b
└─ project-c

各プロジェクトは独立したGitリポジトリ。

ソースコード、テスト、Docker設定など、開発に必要なものを管理。

ナレッジ

Obsidian Vault
└─ Projects
   ├─ project-a
   │  ├─ README.md
   │  ├─ requirements.md
   │  ├─ worklog.md
   │  └─ ...

   ├─ project-b
   └─ project-c

プロジェクト固有のナレッジをまとめて管理。

Projects以外にもディレクトリを置いているが、コンテナ内のエージェントが読み書き出来るのはマウントしてある対応プロジェクトディレクトリのみ。

README.mdには各ドキュメントの役割や編集ルール、プロジェクト固有のルールを記載。
各エージェントのグローバルドキュメントに作業開始時に/knowledgeのREADME.mdを読むように記載。

コンテナ内部

例としてproject-aの場合、コンテナ内では以下のようにマウント。

/
├─ workspace
└─ knowledge
~/dev/project-a

/workspace
Obsidian Vault/Projects/project-a

/knowledge

Dockerに隔離したAIエージェントはソースコードとナレッジの両方を参照出来る。

"mounts": [
  "source=${localWorkspaceFolder},target=/workspace,type=bind",
  "source=<Obsidian Project Path>,target=/knowledge,type=bind"
]

devcontainer.jsonで/knowledgeとしてマウント


まとめ

ソースコードとナレッジを完全に分離して、ナレッジはスマホからも気軽にアクセス出来るようにしました。
タイトルは開発環境とつけていますが、ただの日誌や趣味の記録など適当に蓄積しておいてサマリーを作らせたり色々と遊んでいます。
プロジェクト毎にvaultを分けるのも良いのですが、obsidianの魅力はドキュメントを横断し有機的な繋がりを作ることだと思うので出来るだけ1つのvaultで管理しつつ、分離が必要な時はコンテナを使いしっかりと隔離したかったのでこのような構成にしました。
AI関連は移り変わりが激しいので、ナレッジを丁寧に管理して各モデルやプラットフォームの違いを吸収していくのが今のところ良いんじゃないのかと思っています。

Discussion