執筆原稿のバージョン管理とは何ですか(本を書く心がけ)
質問
先日、結城先生のTwitterを見ていたら、原稿のバージョン管理をしているというツイートがありました。
文章を書くことに興味はあるのですが「原稿をバージョン管理する」とはどういうことなのか、さっぱりわかりません。
どういうことなのか教えていただけませんか。
回答
ご質問ありがとうございます。
原稿のバージョン管理というのは、自分で長めの文章を書いたことがないと実感としてわかりにくいかもしれませんね。
執筆環境
結城は自分の原稿(たとえば『数学ガールの秘密ノート/ベクトルの真実』の原稿)を、LaTeXという組版システムで書いています。具体的には、たとえば第1章を書くときに 10vec.tex というテキストファイルを作り、そこにLaTeXのルールに合わせて文章を書いていくわけです。数式がたくさん出てくるので、数式を処理するのが得意なLaTeXを使っているのです。
テキストファイルはテキストエディタを使って編集します。結城はVimというテキストエディタを使っています。編集中の画面は、こんな感じですね。
◆原稿ファイルの例(スクリーンキャプチャ)
これをLaTeXのシステムに掛けてPDFを作ると、このようになります。
◆原稿ファイルから作ったPDF(スクリーンキャプチャ)
結城メルマガで、ときどきPDFファイルを配信しますが、数式を含むものについてはLaTeXで書いています。
修正を元に戻す
さて、ここまでは話の前提です。ここから本題。
短い原稿やメールならば、さっと書いて終わりになりますが、本のように長い原稿では何日も何ヶ月も修正を重ねて文章を作っていきます。第1章を執筆・推敲・校正しているあいだはずっと 10vec.tex というファイルとの格闘になります。つまり、そのあいだ、ファイルの内容は常に変化し続けています。
大きくばっさり削除したあとで、
「うーん、やっぱり、削除しない方がよかったなあ」
と思うこともあります。そんなときこそ、バージョン管理の出番です。
「削除の前のバージョンに戻したい」
と指定してコマンドを実行すれば、その時点にファイルをまるごと戻すことができるのです。その意味ではバージョン管理ソフトは、一種の「アンドゥ」の機能を持っているといえます。
違いを調べる
でも、バージョン管理ソフトができるのは、直前の修正を元に戻すだけではありません。過去のいろんなバージョンと現在のバージョンの「違いを調べる」こともできます。この機能があれば、
「さっき削除した部分には何が書いてあったっけ」
あるいは、
「一週間前から比べて、自分はどのファイルにどのような修正をしたっけ」
などということが簡単に調べられるのです。
* * *
結城は複数のレビューアさんに原稿を読んでもらっていますが、レビューアさんのレビューが進行しているあいだも、原稿ファイルはどんどん変化しています。
レビューアさんから、
「この箇所のこの数式はまちがっている」
という指摘があったとき、結城の手元にある最新版で調べてもだめですよね。レビューアさんは少し古い版の内容をもとにフィードバックを返してくれているからです。
ですから、結城は、レビューアさんに見せたバージョンを使って、フィードバックの内容を吟味することになります。
レビューアさんに送った時点の原稿を見ることができるというのですから、バージョン管理ソフトがあることで、いわばタイムマシンに乗って自分の原稿を眺めることができるのです。
* * *
原稿をいったん脱稿し、編集部に送った後も、編集作業は続きます。編集部から指摘があったときも、その指摘は現在の最新版ではどうなっているか、バージョン管理ソフトですぐに調べることができます。
◆原稿の差分を見ている様子(スクリーンショット)
バージョン管理ソフトgit
結城はgit(ギット)というバージョン管理ソフトを使っています。これはプログラマやWebデザイナなどが使っているものなので、あなたが使うのに最適かどうかはわかりませんけれど……
結城は主にコマンドラインで使っていますが、GUIアプリになっているSourceTreeというソフトを通してgitを使うこともできます。
◆SourceTreeを使っているところ(スクリーンショット)
以下に、オンラインで読めるgitの本をリンクしておきますね。
◆Pro Git
https://git-scm.com/book/ja/v2
また、Gitの概念をやさしく教えてくれる本としてこういうものもあります。
◆わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉 | 湊川 あい, DQNEO | 本 | Amazon
https://www.amazon.co.jp/dp/4863542178/?tag=hyuki-22
* * *
gitでバージョン管理するとき「リモートリポジトリ」を使うことができます。これは簡単にいえば、ネットのどこかに置かれた倉庫のようなものです。その倉庫に自分の原稿ファイルのいろんなバージョンを記録しておくと、必要に応じて好きなバージョンをまた手元に持ってくることができます。
大事なのは、万一自分の使っているメインのマシン(結城の場合にはMacBook)が急に壊れてしまったとしても、別のマシンからリモートリポジトリにアクセスすれば、何の問題もなく作業が継続できるということです。自分の原稿ファイルのすべてのバージョンはリモートリポジトリに保存されているからです。
GitHubやBitbucketは、そのようなリモートリポジトリを提供するサービスです。結城は両方利用しています(万一に備えて、さらに外部ディスクにバックアップは取ってますが)。
◆GitHub
https://github.com
◆Bitbucket
https://bitbucket.org
まとめ
以上、要点を簡単にまとめるなら、
・原稿はLaTeXのファイルとしてテキストエディタで作っている。
・gitのようなバージョン管理ソフトを使うと、好きなバージョンまで原稿を元に戻せるし、好きなバージョンとの違いを調べることができる。
・リモートリポジトリを使うと、メインのマシンが壊れても、原稿ファイルのすべてのバージョンが失われないので安心。
ということになります。
以上、何かの参考になれば幸いです。
※結城浩はメールマガジンを毎週発行しています。あなたも購読してみませんか。
※結城浩の「コミュニケーションの心がけ」2015年10月27日 Vol.187 より