1. よくあるPJドキュメント管理の手法とその問題
プロジェクトを進める上で、「議事録」や「相談内容」「決定事項」といった情報は、メンバー全員がいつでも確認できる場所にまとめるのが理想です。
しかし、その場所をどこにするかで、悩んだ経験はないでしょうか?
例えば、弊社では社内WikiとしてGrowiを採用しています。
しかし、複数人で同時に更新すると、後から保存した人の内容だけが残り、先の編集が消えてしまうことがあります。
いわゆる「後勝ち」問題ですね。
また、Microsoft loopのようなツールは、入力がスムーズにいかないなど、時折、複数人で触った際に挙動が不安定に感じることがあります。
Notionも非常に高機能ですが、無料プランだと利用できるブロック数に上限があるという制約があります。
さらに、どれに対しても共通ですが、「他の人が書いた内容を上書きしにくい……」 という心理的なハードルを感じることはないでしょうか。
その結果、遠慮して新しいファイルを作ってしまい、気づけば似たようなファイルが乱立し、どれが最新の情報かわからなくなる…なんてことも起こりがちです。
2. Git管理をしたい!
こうした課題を解決する一つの方法として、Git / GitHubによる管理 が考えられます。
Gitは主にプログラムのソースコードを管理するためのシステムですが、ドキュメント管理にも応用できます。
Gitを使うメリットは、まず 「コンフリクトの検知」 です。
growiのような後勝ち問題を防ぎ、誰かが同時に編集しても、その矛盾を教えてくれます。
また、基本的にテキストファイルで管理するので、Loopのような入力時の挙動に悩まされることもありません。
Notionのような利用制限もなく、無料で使うことができます。
そして、「他の人が書いた内容を上書きする」という心理的なハードルも、プルリクエストを使えば、変更内容をレビューしてから反映できるので、だいぶ軽減されます。
ただ、Gitにもデメリットはあります。
テストメンバーの方や営業の方などがプロジェクトのドキュメントを変更する場合、コマンド操作などが、開発者以外の方にとっては少しハードルが高いと感じられる点です。
また、GitHubなどのプラットフォームも、画像ファイルのような容量の大きなものを大量に保存するには注意が必要です。
3. Obsidian による解決
そこで、本日ご紹介したいのが「Obsidian」というツールです。
(既に他で聞いたことがある方もいらっしゃるかもしれません。)
Obsidianは、ローカル環境で動作する高機能なマークダウンエディタであり、個人の知識を効果的につなぎ、育てるためのツール、いわば「第二の脳」として今注目されています。
Obsidianは、このGitの「非開発者には使いづらい」というデメリットを、見事に解決してくれます。
Obsidianには 「Obsidian Git」 という拡張機能があり、これを使うと、難しいGitのコマンドを意識することなく、ボタン一つで変更内容を保存・共有できます。
↑実質的にこの2つのボタンしか押さなくていいです。(それぞれcommit&push / pull)
さらに、画像ファイルについても、Obsidianの拡張機能 「Paste image Png to Jpeg」 を使えば、貼り付けたPNG画像を自動でJPEGに変換してくれるなど、ファイルサイズを抑える工夫も可能です。
4. 追加のメリット
Obsidianの魅力は、Git連携だけではありません。
例えば、「Canvas」 という機能があります。
これは、ノートやアイデアを自由に配置し、線でつなげて視覚的に整理できるホワイトボードのような機能で、思考の整理や複雑な情報の関連付けに非常に役立ちます。
また、拡張機能**「Kanban」** を使えば、カンバンボードを作成してタスク管理に使ったりすることもできます。
そして、Obsidianで扱うのは基本的にただのローカルのMarkdownなので、GitHub CopilotやCursor、Claude Code、Codex CLIのようなAIコーディング支援ツールと組み合わせて、ドキュメント作成を効率化することも可能です。
また、置き場所がローカルなので、簡単にRAGを作成することもできます。
5. 実際にやってみた
運用面はプロジェクトごとに調整が必要ですが、例えば弊プロジェクトでは、次のような形で運用を開始しています。
まず、「個人が調査した内容」は個人フォルダに記載しています。
いわゆる雑書きを含みます。
先に述べた、人が書いたものを上書きするのに抵抗感をできるだけ払拭させるため、このような形にしています。
そして、リリースのバージョンの内容は「まとめ」に各個人から持ち寄ったファイルへのリンクを全部集めています。
メンバー間のやり取りは「Q&A」に記載しています。
〇〇についての打ち合わせメモとかもまとめにリンクを貼ります
議事録等、「他の人に目を通してほしいもの」はプルリクエストを出します。
6. 今後について
最後に今後についてです。
「ずっとObsidian × Gitで管理していたら、いつか情報が多すぎてパンクするのでは?」という疑問が湧くかもしれません。
その対策として、常に全ての情報をObsidianに置き続けるのではなく、プロジェクトの区切りが良いタイミング(リリース時点など)で、確定した情報をGrowiに場所に移動することを考えています。
(ここでGrowiを選定したのは、GrowiはZipで全ファイルを落とせるため、いつでもGrowi→Obsidianへの移行が可能であるためです。)
この点、loopやNotionのようなツールからマークダウン形式に情報を移すのは手間がかかることがありますが、
Obsidianは元々マークダウンのテキストファイルなので、他媒体へコピー&ペーストで簡単に情報を移行できるのも利点です。
7. 【実践編】ObsidianをGit連携する方法
というわけで、ここからは実際にObsidianをGit連携する方法についてお話します。
7-1. 前提
Github との認証は SSH で行います。
ドキュメントにしたがって準備し、以下の条件が整っていれば接続できます。
-
Gitが導入済みであること
-
Git管理下のObsidianがGithubレポジトリと同期できていること
-
ssh-agentを用いてGithubとのSSH接続ができていること(要するにPCがGitHubと通信できること)
Obsidian - Sharpen your thinking The free and flexible app for your private thoughts. obsidian.md
7-2. 導入方法
7-2-1. GitHubにリポジトリを作成
作成したら「Code」をクリックしてコピーボタンをクリック。
7-2-2. GitHubからリポジトリをローカルにclone
PowerShellを立ち上げて、以下を貼り付けてEnter。
git clone 先ほどコピーしたリンク
copy
7-2-3. Obsidianでローカルのディレクトリを開く
すでに保管庫を開いている場合は左下から開きましょう。
7-2-4. ObsidianにGItプラグインを導入
歯車マークをクリック
「コミュニティプラグイン」→「コミュニティプラグインを有効化」をクリック
「コミュニティプラグイン」→「閲覧」をクリック
「Git」と検索
一番インストール数の多い「Git」をダウンロード
「有効化」をクリック
7-2-5. 手動でCommit, Push, Pull
Ctrl+Pで、Obsidian上から色々なGitのコマンドを使えます。
「Open Git Source Control」から、VSCodeと同じ感覚で、GUIでGitの操作もできます。(主にこっちしか使わない)
7-2-6. 自動でCommit, Push, Pull
設定の「Git」から、各種設定できます。
定期的に自動でコミットするときには「Split timers for automatic commit and sync」をONにし、「Auto commit interval(minutes)」を任意の値にしましょう。
以下、Gitの設定項目(日本語訳)
Automatic(自動化設定)
-
Split automatic commit and push
- commit/pushを別々のタイマー設定で行うか。
-
Vault backup interval(minutes)
- バックアップ(commit/push)間隔(分)の設定。0(デフォルト)を指定すると無効。
-
Auto Backup after file change
- ファイル変更後にバックアップするか。オンにした場合、最後の変更後0分ごとに自動バックアップを行う。
-
Auto backup after lastest commit
- 最後のコミット後にバックアップするか。Auto Backup after file changeとどちらかが設定できる。
-
Auto pull interval(minutes)
- 自動的にpullをする間隔(分)。0(デフォルト)を指定すると無効。
-
Specify custom commit message on auto backup
- バックアップ時にコミットメッセージを入力するためのポップアップを表示するかどうか。
-
Commit message on auto buckup/commit
- 自動コミットメッセージの指定。{{date}}、{{hostname}}、{{numFiles}}は利用可能。デフォルトはvault backup: {{date}}。
Commit Message(コミットメッセージ設定)
-
Commit message on manual backup/commit
- 手動コミットメッセージの指定。{{date}}、{{hostname}}、{{numFiles}}は利用可能。デフォルトはvault backup: {{date}}。
-
{{date}} placeholder format
- 日付のフォーマット。デフォルトはYYYY-MM-DD HH
ss
- 日付のフォーマット。デフォルトはYYYY-MM-DD HH
-
{{hostname}} placeholder replacement
- ホスト名の置き換え。カスタムしたホスト名を指定できる。
-
preview commit message
- コミットメッセージのプレビュー。設定というより今の状態を確認できる。
-
List filenames affected by commit in the commit body
- コミット本体でcommitの影響を受けるファイル名を一覧表示する。※確認不十分。
Buckup(バックアップ設定)
-
Sync Method
-
リモートとの差分があった時の処理方法。以下が選択可能。デフォルトはMerge。
-
Merge
-
Rebase
-
Other sync service (Only updates the HEAD without touching the working directory)
-
-
-
Pull updates on startup
- Obsidian起動時に自動的にpullするか。
-
Push on backup
- バックアップ時にpushするか。commitだけしたい場合はオフにする。
-
Pull changes before push
- pushする前にpullするか。pushが有効な場合のみの設定。
Miscellaneous(その他の設定)
-
Automatically refresh Source Control View on file changes
- ファイル変更時にSource Control Viewを自動更新するかどうか。マシンスペックによってはラグる可能性があるので、その場合はオフ。
-
Source Control View refresh interval
- Source Control Viewの更新間隔(ミリ秒)。デフォルトは7000
-
Disable notifications
- git操作に関する通知を無効化。オンにしてもエラーに関するものは通知される。
-
Show status bar
- ステータスバーを表示するか。
-
Show branch status bar
- ステータスバーにブランチを表示するか。
-
Show changes files count in status bar
- ステータスバーに変更ファイル数を表示するか。
Commit Author(Author設定)
-
Author name for commit
- Authorの名前
-
Author email for commit
- Authorのメールアドレス
Advanced(高度な設定)
-
Update submodules
- サブモジュールの更新機能をオンにするか。
-
Custom git binary path
- gitの実行ファイルのパスを指定。
-
Additional PATH environment variable paths
- 環境変数PATHに設定を追加。
-
Reload with new PATH environment variable
- Additional PATH environment variable pathsで設定したものを反映させる。
-
Custom base path(Git repository path)
- gitを実行するためのvaultへの相対パスを設定。ディレクトリ構成を柔軟にしたいときに使う感じか?
-
Disable on this device
- プラグイン自体の無効化。
-
Donate
- 寄付。
7-3. Obsidianに貼り付けた画像をGitHubでも閲覧できるようにする
以下のように設定しましょう。
-
新規作成するリンクの形式:ファイルに対する相対パス
-
ウィキリンクを使用:オフ
-
新規添付ファイルの作成場所:以下で指定されたフォルダ
-
添付ファイルフォルダのパス:(任意のフォルダ)
この設定によって、GitHub上で画像をプレビューできるようになります。
7-4. GitHubの容量が気になるあなたへ
7-4-1. 「Paste image Png to Jpeg」
Paste image Png to Jpegプラグインをいれることで、スクリーンショットなどのpng画像を貼り付けるときに、圧縮されたjpeg画像に自動的に変換して貼り付けてくれます。
Auto RenameがOnになっている状態で、作業中にpullした場合、自分の開いているノートのタイトルに合わせてpullで入ってきた画像全てをリネームしてしまう現象が出ています。
Auto RenameがOffの方が良いかもしれません。
「Auto Move Image」がOnになっていないとJpegに変換されないのでOnにしておきましょう。
ただしOnにするとObsidianの「ファイルとリンク」設定で設定している添付ファイルフォルダのパスの更に下のimageの下に配置されるので注意してください。
7-4-2. 「Clear Unused Images」
Clear Unused Imagesプラグインを入れることで、どこからも参照されなくなった無駄な画像を削除してくれます。
削除対象は.trashに移動されます。
(設定で削除時の挙動を.trashに設定しておきましょう。)
7-5. 便利プラグイン「Copy Image」
「Copy Image」プラグインを入れることで、画像右クリックで画像をコピーできるようになります。
とても便利なので紹介しました。
8. 最後に
ここまでお付き合いいただきありがとうございました!
AI時代において、ドキュメントを素のMarkdownファイルで書くことの重要性が上がっている 気がしています。
Notionなど1つのツールへの依存度を上げるのではなく、ベースとしてローカルで持っておき、それをAIで操作をする、という方が依存が少なく柔軟性があると思います。
この記事がみなさんのドキュメント管理の一助となれば幸いです。
ありがとうございました!
次の記事では、この記事で述べた発展として、「ローカルでセキュアなMCP連携で実現する、原文エビデンス付きドキュメントQA」 の記事を公開する予定です。
お楽しみに!
(追記)↑の記事が出ました!ぜひ読んでみてください。
これからもQiitaで発信していくので、気になったらぜひいいね・フォローお願いします!