Claudianを解説する記事のサムネイル画像
← ブログ一覧
AI7分

Claudianとは?Claude CodeをObsidianに埋め込むプラグインをソースから検証した

  • #Claudian
  • #Obsidian
  • #Claude Code

Obsidianのノートを編集しながら、そのままClaude CodeやCodexにファイル操作やコマンド実行を任せられたら——という発想を形にしたのが、Obsidianプラグイン「Claudian」です。Vault(Obsidianのノート保管フォルダ)そのものをAIエージェントの作業ディレクトリとして扱い、サイドバー上でチャットしながらファイルの読み書きやbashコマンドの実行までできる、という位置づけのツールです。

この記事は公式リポジトリ(https://github.com/YishenTu/claudian )のREADMEと`manifest.json`を一次情報としつつ、実際にリポジトリをクローンし、依存関係のインストールからビルドまでをこの検証環境の中で試した記録です。GUIを持つObsidianプラグインのため画面操作そのものは検証していませんが、ソースコードを読んでビルド・型チェックを通し、README記載の仕様が実装と一致しているかを確認しました。

  • この記事でわかること:Claudianが何をするプラグインで、対応エージェントは何か。
  • 実際にビルドすると`node:sqlite`関連でNode.js 22では失敗し、Node.js 24以降が必要だったこと。
  • Claude連携は`@anthropic-ai/claude-agent-sdk`経由で、CLIを直接叩く自作ラッパーではないこと。
  • ビルド成果物`main.js`が約5.3MBあり、README記載の「5MB超はObsidian公式Syncの対象外」という注記と符合したこと。
  • Collabモード(実験的機能)がクラウドではなくmDNS(Bonjour)を使ったLAN内探索で動く仕組み。

Claudianとは

`manifest.json`の説明によれば、Claudianは「Claude Code、Codex、その他のコーディングエージェントをAIコラボレーターとしてVaultに埋め込む」プラグインです。対応エージェントはREADME上でClaude Code・Codex・Grok・OpenCode・Piの5つが挙げられており、いずれかのCLIまたはSDKがローカルにインストールされていることが前提になります。作者はYishenTu氏で、ライセンスはMIT、確認時点のバージョンは2.2.7でした。

主な機能として、テキスト選択からホットキーで直接編集できる「インラインエディット」(単語単位のdiffプレビュー付き)、`/`や`$`で呼び出すスラッシュコマンド・スキル、`@`でVault内ファイルを参照するメンション機能、各エージェントのネイティブCLI設定を経由したMCPサーバー連携がREADMEに記載されています。

インストールと前提条件

通常の導入はObsidianの「Settings → Community plugins → Browse」から「Claudian」を検索してインストールするだけです。前提条件としてObsidian v1.13.0以上、デスクトップ環境(macOS/Linux/Windows)が必須で、モバイル版Obsidianには対応していません。加えてClaude Code CLI・Codex CLI・Grok Build・OpenCode・Piのいずれか1つと、OpenRouterやKimi、GLM、DeepSeekなど対応APIプロバイダーとの契約が必要と明記されています。

README内の注意書きとして、ビルド後のプラグイン本体が「5MBを超える可能性がある」ためObsidian公式Syncの同期対象外になる点、複数デバイスで使う場合は各デバイスで個別にインストール・更新する必要がある点が挙げられていました。

実際にソースを取得してビルドしてみる

`package.json`の`engines`には`"node": ">=24 <25"`と明記されています。手元の検証環境の既定Node.js(v22.22.2)で`npm install && npm run build`を実行したところ、`npm install`自体は通りましたが、`npm run build`は次のエラーで失敗しました。

  • `✘ [ERROR] Could not resolve "node:sqlite"` (`src/providers/opencode/history/OpencodeSqliteReader.ts`内の`require('node:sqlite')`が原因)

`node:sqlite`はNode.js組み込みモジュールで、安定版として扱われるようになったのはNode.js 24系からです。`engines`の指定はこの制約を反映したものだと実際のビルド失敗から確認できました。そこで`nvm`でNode.js 24.21.0を導入し同じ手順を再実行したところ、`npm run build`・`npm run typecheck`ともにエラーなく完了し、`main.js`が生成されました。

生成された`main.js`のサイズは約5.28MB(5,283,559バイト)で、README記載の「5MBを超える可能性がある」という注記どおり、実際にその閾値を超えていることを確認できました。バンドルにはCodeMirror、`sql.js`、`ws`、`bonjour-service`など多数の依存が含まれており、単純なプラグインではなくエージェント実行環境そのものを同梱していることがサイズにも表れています。

Claude連携はCLIラッパーではなくSDK経由

`package.json`の依存関係を見ると、`@anthropic-ai/claude-agent-sdk`(検証時点で0.3.267)が入っており、`src/providers/claude/loadClaudeAgentSdk.ts`は同SDKの`query`関数を動的importで読み込む薄いラッパーになっていました。つまりClaude連携は独自にCLIの標準入出力を解釈する実装ではなく、公式のClaude Agent SDKに委ねる設計です(他のCodex・Grok・OpenCode・Pi連携は各CLIのプロセスを個別に起動する実装でした)。

ただしSDK任せで終わりではなく、`src/providers/claude/runtime/customSpawn.ts`では独自の`spawn`関数をSDKに渡しています。コード中のコメントによれば、ObsidianのElectronランタイムでは`AbortSignal`が別の実行レルムに属するため、Node標準の`instanceof EventTarget`判定がSDK内部で失敗する問題があり、それを避けるために`signal`をSDKへ直接渡さず自前でabort処理をハンドリングしている、とのことでした。Electron環境に組み込む際に踏む具体的な落とし穴が読み取れる箇所です。

Collabモードの仕組み

実験的機能として紹介されているCollabモードは、他のClaudian利用者とプロジェクトを共有する機能です。READMEには「Collabモードでのプロジェクトデータはローカルネットワーク上のデバイス間の直接通信のみ」「テレメトリーやバックグラウンド通信は実行しない」と書かれています。ソースを確認すると、`src/app/collab/discovery/CollabLanDiscoveryService.ts`で`bonjour-service`パッケージを使ったmDNSサービス探索を実装しており、クラウドの仲介サーバーを介さずLAN内の相手を見つける方式であることが裏付けられました。Collabモードの利用にはGitが必須ともREADMEに明記されています。

まとめ

READMEを読むだけでは分からない部分をソースとビルドから確認できたのが今回の収穫です。Claude連携が独自CLIラッパーではなく公式Claude Agent SDK経由である点、ビルドにNode.js 24以降が実際に必要である点、バンドルサイズがREADMEの注記どおり5MBを超える点は、いずれも手を動かして初めて裏が取れました。

Obsidianの中でノートを見ながらそのままエージェントにファイル操作を任せたい、複数のCLIエージェントを使い分けたいという場合に検討対象になるプラグインですが、デスクトップ専用でVaultへの操作権限をエージェントに渡す設計である以上、どのAPIプロバイダーにどんなデータが送られるかはREADMEの「プライバシー・データ利用」の項を確認してから導入するのが安全です。

参考リンク

まずは、やりたいことを聞かせてください

「何から手をつければいいか分からない」段階でも大丈夫です。 ご相談・お見積りは無料。碧南近郊なら直接伺います。