Obsidianによる小説の執筆運用を始めてすぐのことです。クライマックス部分を大幅に書き換えようと思い立ちました。主人公の心理描写をより深く掘り下げ、結末への伏線も変更する予定でした。しかし、いざキーボードに向かうと手が止まってしまいます。『もしこの変更が失敗だったら?』『元の文章の方が良かった場合、完全に戻せるだろうか?』そんな不安が頭をよぎったのです。
Scrivenerで書いていたときは、そういうときにはスナップショット機能を使っていました。Draftsで原稿を書いていたときは、別のクラウドサービスや別のDraftにコピーするというアクションを作成して、改変前に手動で実行していました(標準機能でスナップショットの機能もあるのですが、使いにくいのでアクションで対応していました)。
しかし、Obsidianにはそういった機能が無いのです。もちろん、わたしはObsidian Syncを使っていますので、自動的に変更履歴が取れています。しかし、この自動的、というのがどうも気分的に信じられないのです。大きな改変を試したいときに都度、意図的に、手動でスナップショットを取りたい、ということなのです。
できるだけ自動化して執筆に専念したいので、手動でコピペすることは避けたいです。手動コピペ以外の選択肢を探した結果、Obsidianがローカルのファイルシステムを活用した仕組であることに着目して行き着いたのがGitでした。
Gitは、ITの技術者には有名で、プログラムのソースコード履歴管理のツールです。基本的にコマンドラインによる操作になるので、一般の方には敷居が高いかもしれません。しかし、ソースコードのバージョン管理ができるように、原稿のバージョン管理ができるというのは、スナップショットを超えたメリットがあります。ここは、ITエンジニアの道具を借用させていただくことにしましょう。
今回は自分用のメモも兼ねて、導入方法をメモっておきます。以下、技術的な手順が続きますが、一度設定してしまえば日常的な操作は簡単です。
わたしはMacでHomebrewを使っているので、gitのインストールはこれを使います。
brew install git
初期設定
# ユーザー名とメールアドレスを設定
git config --global user.name "名前"
git config --global user.email "your-email@example.com"
GitHub.com でアカウントを作成します。Personal Access Tokenを作成します。TokenにはTokens (classic)とFine-grained personal access tokenの2種類がありますが、わたしの用途ではTokens (classic)で十分です。権限は「repo」を選びます。ここで得られたTokenはメモするのを忘れないようにしてください(後でログインの時に使います)。
Gitを初期化します。
# Obsidianボルトのディレクトリに移動
cd /path/to/your/obsidian-vault
# Gitリポジトリを初期化
git init
Obsidian特有のファイルを除外するため、.gitignore
ファイルを作成します。
# Obsidian設定ファイル(個人設定なので通常はバックアップ不要)
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/hotkeys.json
.obsidian/graph.json
# キャッシュファイル
.obsidian/plugins/*/data.json
.obsidian/workspace
# トラッシュ
.trash/
# システムファイル
.DS_Store
Thumbs.db
初回コミット(ローカルのObsidian保管庫のファイルを全てローカルのgitにバックアップ)します。
# 全ファイルをステージング
git add .
# 初回コミット
git commit -m "Initial vault backup"
リモートリポジトリへプッシュします(ローカルのバックアップをGitHubへアップロードします)。
# GitHub等にリモートリポジトリを作成後
git remote add origin https://github.com/username/obsidian-vault.git
# プッシュ
git push -u origin main
これでgitでスナップショットをとる準備は完了です。あとは、実際にスナップショットをとりたいときに、
# 大幅な改変前
git add .
git commit -m "Pre-Edit snapshot: $(date)"
を実行します。-m のあとのコメントは必須ではありません。何か後で分かるようにコメントを入れたければ入れれば良いです。-m以降を省略すると日時だけがコメントとして自動的に入ります。
編集、原稿改変後、
# 変更内容を確認
git diff
# 問題なければコミット
git add .
git commit -m "Post-Edit changes: 編集完了"
とします(コメントについては上記と同様)。もし、問題があれば直前のコミットに戻します。
# 直前のコミットに戻す
git reset --hard HEAD~1
# または特定のファイルのみ復元
git checkout HEAD~1 -- "problem-file.md"
最後にGitHubにプッシュ(アップロード)します。
git push -u origin main
うへぇ、面倒くさい、と思った方もいらっしゃると思います。そういう方はObsidianのGitプラグインを使ってください。このプラグインを使うと、CommitアイコンとPushアイコンをクリックするだけですみます。
尚、GitHubにログインするときに使うパスワードは、Webページのログインするものとは異なります。上記で作成したTokenを使う必要がありますのでご注意ください。また、GitHub上のレポジトリ(スナップショットの保管場所)の設定はPrivateにすることを忘れないようにしてください。Publicにすると原稿が外から丸見えになります。
ある意味気休めだけのために、ここまでやるのか、という話はあると思いますが、原稿のバックアップはいくつあっても困ることはありません。精神安定剤のつもりで、今後しばらく、Obsidian SyncとGitによる運用を続けていきたいと思います。
コメント