GitHubを利用して、小説のバージョン管理や複数端末からの編集を可能にした話
■はじめに
小説のバージョン管理がしたい! 書いたシーンを気負わずに消したいし、消したものを元に戻したりしたい! できればPCとiPadの両方からファイルを編集したい! という欲求が高まったので、タイトルの通りにやってやりました。
■どうやって実現したの?
GitHub上に小説(テキストファイル)を配置しただけです。GitHub上のリモートリポジトリをPCやiPadにクローンして、それぞれに編集→コミット→プッシュする感じです(以下では、リポジトリやコミットといった単語が分からない人にも分かるように書きます)。
■それって何が嬉しいの?
冒頭に述べた通り、小説(テキストファイル)をバージョン管理できるのが最大の利点です。たとえば、直近一週間に書いたものが気に入らなくても、過去バージョンまで遡ることが可能です。
複数端末での操作も便利です。インターネットに接続さえできれば、家ではPCから、出先ではiPadから編集することが可能です。いちいち端末間でファイル転送をする必要がないわけです。
また、コミット時のメッセージに「YYYY年MM月DD日_hh時間mm分作業_XX文字執筆」といったプチ作業ログも残せます。毎日作業ログを残している私のような人間にとっては、地味に嬉しい点です。
■GoogleDriveとかOneDriveで良くない?
そう思った貴方は鋭い。じっさい、私も昨日まではGoogleDriveを利用していました。ですが、稀にPCでの編集内容がDrive上のファイルに反映されないことがあり、出先でiPadから編集しようとしたら数日前の状態のファイルを参照して……、といった肝の冷える事態に遭遇しました(PC側でファイルを再度開いて保存し直したら解消したけど)。
複数端末間でのファイル共有という点ではこういったクラウドストレージサービスを活用するほうが手軽です。無料ですし、小説はしょせんテキストファイルですから、容量のために課金する必要もありません。
ですが、先の肝の冷える事態に遭遇したことと、Gitによるバージョン管理機能を利用して少しでもモダンかつスマートに執筆したいという欲求があったので、GitHubを採用して今回の環境構築を実施しました。
■それで、具体的には何をしたの?
以下は同様の環境を構築したい人に向けた内容です。
用意するもの
GitHubのアカウント(無料)
PC
Git(無料)
VSCode(無料)
iPad
LiquidLogic(1,000円/年)
・手順1
GitHubのアカウントを作成して、リモートリポジトリを作成します。このとき、「プライベート」に設定するのを忘れないように。
作成したリモートリポジトリにバージョン管理したい小説のテキストファイルをアップロードしましょう。
説明が遅れましたが、「リポジトリ」とは「ファイル」+「ファイルの変更履歴」がまとまって置いてある"場所"だと思ってください。リモートリモートリポジトリとは「リモート」、つまり「オンライン」上のリポジトリのことですね。
・手順2
PCにインストールしたGitを利用して、手順1で作成したリモートリポジトリをPC上にクローンしましょう。
クローンを作成したいディレクトリ上で「git clone https://github.com/hogehoge/fugafuga」を実行すると、クローンされます。こうしてクローンされたPC上のリポジトリを「ローカルリポジトリ」と呼びます。
・手順3
作成したローカルリポジトリをVSCodeのワークスペースに追加しましょう。
VSCodeのメイン画面 > ソース管理 > リポジトリの初期化 を選択し、「ワークスペースに追加」を選択します。これでオーケィ。
・手順4
iPadにインストールしたLiquid Logicを利用して、手順1で作成したリモートリポジトリをiPad上にクローンしましょう。
※公式の手順書(https://www.megasoft.co.jp/support/liquidlogic/manual/git1.php)
Liquid Logicのファイラから「アカウントを追加」を選択、次に「Git」を選択してGitアカウントを作成しましょう。
作成したGitアカウントにリポジトリをクローンしましょう。今回はGitHubを利用しているので、「GitHubでサインイン」するのを忘れずに。URLは「https://github.com/hogehoge/fugafuga」でオーケィです。
■どうやって活用すればいいの?
・まずは手元で作業して、作業内容をGitHubに反映させよう
PC(VSCode)で作業する場合
VSCode上に展開しているワークスペースで小説を書きましょう。そして書いたら保存しましょう。ですが、この時点ではiPadから変更内容を確認することができません。複数端末で確認できるようにするためには、変更内容をリモートリポジトリに反映させる必要があります。
そこで実施する必要があるのが、ステージング→コミット→プッシュの操作です。分からない単語がワっと出てきましたが、大したことはありません。
①:「ステージング」は変更内容をローカルリポジトリに反映させる一歩手前まで持っていくこと。
②:「コミット(commit)」はステージングした変更内容をローカルリポジトリに反映させること。
③:「プッシュ(push)」はコミットした変更内容をリモートリポジトリに反映させること。
実際の画面は以下のような感じです。
iPad(Liquid Logic)で作業する場合
iPad上にクローンしたローカルリポジトリの中のファイルを編集して保存しましょう。Liquid Logicには「ステージング」の概念がなく(※要確認)、変更をコミットするだけでローカルリポジトリを書き換えることができます。
コミット後はプッシュしたいリポジトリを長タップして、「⇑プッシュ」を選択しましょう。これで先のPC上の作業と同様に、リモートリポジトリの内容が書き換わります。
・次はリモートの内容をローカルに反映させよう
PCで編集してその内容をコミットしてプッシュした、としましょう。続きをiPadから作業するためには、iPadのローカルリポジトリに最新のリモートリポジトリの内容を「プル(pull)」する必要があります(iPad→PCの順番でも然り)。
「プル(pull)」とはリモートリポジトリの内容をローカルリポジトリに反映させることです。よくわからない人は、ローカルリポジトリの内容を最新化する操作だと思っておいてください。(※厳密に言うと「プル(pull)」 =「フェッチ(fetch)」+「マージ(merge)」です。詳しく知りたい方は調べてみて)
VSCodeであれば、ソース管理 > 「…」マーク > プル を選択すればプルできます。
Liquid Logicであれば、ファイラから最新化したいリポジトリを長タップして「⇓フェッチ/プル」を選択 > OK をタップすればプルできます。
・これで複数端末からの編集が可能に
これでステージング、コミット、プッシュ、プルができるようになったので、複数端末間での作業が可能になります。やったね!
例えばこんな感じ。家で作業したら出かける前にプッシュする。外で喫茶店に入ったらプルして作業してプッシュする。帰宅したらプルして作業してプッシュして……、といった風です。
・実はバージョン管理はもう出来ている
ここまでやってきた中で「コミット」という操作がありました。これがGitの肝でして、コミットのログ(履歴)を辿ることが可能です。
例えば、一日の作業をまとめてコミットするとします。毎日作業すれば、一日あたり1コミットずつ積み重なっていきます。そして一ヶ月後、以前作業した際に削除した内容を復活させたいと思ったとします。このとき、役立つのがコミットログです。VSCodeでは以下のような画面。
変更箇所を参照して現在の原稿に追記するもよし、コミットをリセットしてリポジトリごと巻き戻すのもよし。一日の作業内容を見返してフンフンと頷くのもよし。コミットログはめちゃめちゃに便利なので、お好きなように活用してください。
・ブランチを活用すればもっと便利に
Gitの機能はまだまだあって、その最たるものが「ブランチ」です。今までの説明ですと、コミットを繰り返してリポジトリが更新されていく様子は、まるで一本の線を引くようなイメージでした。この線を分岐させる(ブランチを切る)ことが、Gitでは可能です。
小説では以下のような活用方法が考えられます。例えば、Aという登場人物が生きているルートと、Aが死んだルートを思い付いたとします。「この人物、生かすか殺すか悩むなぁ」というときは、surviveブランチとdeathブランチを作成して、両方を編集していけばよいのです。1ファイルに両方のルートを執筆するよりは、2つのブランチを切って納得の行く出来になったブランチを採用する方が、遥かに楽だし健全です。
■おわりに
とまあ、こんな感じでGitHubを活用した小説執筆環境を整備するのに一日を費やしてしまいました。noteは一記事を一日で書き上げるルールを自分に課しているので、粗い部分・雑な部分が多々あると思いますが、どうかご容赦ください。
以下に私が環境を整備する際、および本稿を執筆する際に参考にしたサイト様をリンクしておきます。適宜ご参照の上、良き執筆ライフをお送りください。
以上
* * *
4/28の作業ログ
作業時間:50分
作業内容:コードネーム[SQ]1,400文字執筆