まだ色のないあじさい。
『ギークに銃はいらない』が発売されました。はい~拍手~
みんな買ったかな? うん、買ったよね!でももう一冊あってもいいんじゃないカナ!?!?(よくないだろYoutubeでスペシャルコンテンツを配信しましたが、こっちではドキュメント管理の話を書こうかなと思います。近いうちにSpaceかなにかをやるかもしれない(まだわからない
なぜ「ギークに銃はいらない」はGithubで管理する必要があったか?
そもそもGithubってなによ!?って方もままおられるかと思いますが、簡単に言えばクラウドを使ってドキュメント(特にソースコードとか)を便利に保管するツールだよ!ってことを覚えておいてもらえればよいかと思います。厳密にいえばクラウドストレージとバージョン管理システムとそれのホスティングサービスはすべて違うもので、Githubに静的ファイルのストレージ機能(ようするにクラウドストレージだ)つけてくれたら最強になるんじゃ?と思ってるんですけど
閑話休題。
一人で小説書いてる分にはDropboxとかGoogle driveみたいなクラウドストレージで十分なんですよ。おれは基本的に原稿をテキストで書く(構成を変えるときはワードを使う)んだけど、
- PCで書いて.txtファイルに出力→Google driveのファイルを更新する
- 出先でGoogle driveからファイルをスマホに落として、縦書きビューワ的なアプリで確認する
みたいな運用で長くやってました。
こういう運用で長くやれたのは、
- 複数のPCで作業はするが、編集するのは俺だけ
- スマホで確認するのに便利
- 変更箇所を見る必要がない。履歴管理も不要
- 個人で気が済むまで書くだけなので、あんまり暫定版みたいなのを出す必要がなかった
ただ、編集さんからコメント入ったり、赤入れとかするようになるとちょっとGoogle driveじゃ運用が難しいな…ってなりはじめた。要は一人で完結しなくなったので、クラウドストレージの機能では不足するようになったのだ。
で、『ギークに銃はいらない』である。
ふつうの出版社とやり取りするよりももっと細かなやりとりが求められるわけである。
これは完全移行せなあかん。
運用
いちおう原稿揃える時点から仮導入はしていたのだが、四本揃えて修正作業に入った途端、本格運用という感じになったので、良かったところか反省点はいろいろある。
まずレポジトリの構成だが、
backfire ├ReadMe.md : 俺が作ったわけではないのだが、ISBNとか広告・宣伝に必要な文言とかがまとまっている ├assets/ :画像データ。その名の通り画像データ。イラストレータのデータ ├template/ : Indesignファイル。レイアウトなどをいじって最終的な見た目を調整する └text/ : テキスト原稿
割とシンプルな構成ですね。Githubで差分が見れるのはReadMe.mdとtext下だけですが…
基本Githubって動的なファイル(変更が行われる可能性があるもの)をいれるものなので、制作作業で変更のありうるファイルが入っています。
が、templateとtextで内容が同じものが入っているのは気になる…これは理由があって、なんと破滅派ではテキストファイルからスクリプト一発でIndesignにデータを流し込めるようにしているのです。ただこれにはちょっと反省があるので後述します。
ちなみにIndesignファイルもイラストレータファイルもサイズがでかいので、git lfsを入れています。
git としても大きくて差分が取れないファイルはリポジトリに入れてくれるな(でも管理したいよね~)ってことみたいで、でかいファイルを適切にモニャモニャしてくれる魔法のあれです。
git-lfs.github.com
で、Indesignファイルから起こしたゲラなんですが、これはReleaseページに入れることにしました。
- PRのタイミングとかを綿密に管理していないと最新版でないバージョンが校正などに出ていってしまう
- 変更できないファイルをリポジトリに入れとくのが気持ち悪い
- ファイルサイズでけぇ
あたりが理由です。こういうのまじ大事。まあこれが良かったかどうかは微妙だし改善の余地はあるのだが。
その他Issueの管理とかPRとかは普通にGithubの機能を利用しました。原稿揃えるまで一人でやってたのでブランチも切らずにmainにいきなりpushしたりしてたのだが、二人以上になるとやはりコンフリクトが起こってしまって面倒なので、せめてテキストだけでもコンフリクトしないようにブランチ切ってPR作ってマージするという作業は必須だった。
あと、
- Issue→PRにする
- 改稿作業中はPRで作業する(いわゆるTODOリスト的な使い方)
のも地味に良かったかもしれない。PR閉じるまで作業終わってないことがわかるからね
あーすればよかった、こーするにはどうするの
Github Actions使うべき
Github Actions使うべきだった
マジでこれ。
さっき上の方でIndesignテンプレートにテキストを自動で流し込むスクリプトがあるって書いたんだけど、マージしたタイミングでGithub Actionsからスクリプト叩くようにしておけば、
- リポジトリで管理するInDesignファイルのデザインの部分だけ
- テキストがtemplateとtext下両方にある気持ち悪い状態をなくせた
- Github Actionsから常にちゃんとしたInDesignファイルが取り出せる→そのまま自動でゲラをReleaseにpushすることもできたんじゃないか?
まじでやるべきだった。
あとテキストをマージしたら、Google driveに自動でアップロードするようにすべきだったな(外でスマホで確認する作業はそれはそれで必要なので)
Github の差分ツールと小説は相性悪い
Githubのdiffって当たり前なんだけど行単位なんですよ。でも小説だと改行するまでがプログラムに比べると長い。エディタでは右端で折り返し溶かしてるんであまり気にならないんですけど、実際には300字くらい一行で書いてることがある。ありますよね?俺はちょうあります。
そういう状態だと、diffがほぼ緑なの。
githubが草原になっちゃうの。
コーディングルールが定める一行の文字数って知ってます?
20字とか50字。
10倍も違うと差分が意味をなさない。
これはやっぱり良くないな―って思いましたね。まあだからといってこれといった代替があるわけじゃないんだが(ワードの履歴管理はもうちょっと変更箇所がわかりやすくなってるけど)
注:変更した単語は太文字になるので全く意味がないわけじゃないんだが、単語検索で見ていったほうが早い。あとそもそもdiff自体がそんなに重要度高くない
Githubへの完全移行は無理
txtファイルをパースして縦書きを表示するってことはできます。俺も一時期作ってたし、横書きで書いて、縦書きで確認するってのが一番スマートなのはわかってる。
でもね。
やっぱそうじゃないのよ。
せめて電子書籍みたいな読書体験をしたいわけよ。客観的な視点がほしいわけ。
というわけでおれはスマホの縦書きビューワを使用し続けます。そのためにはGoogle driveが必要だ。Githubは認証が面倒だし、単体のファイルをダウンロードするのは向いてない。Github上で縦書き閲覧できないしな。
えんぴつの入ったゲラをどうすべきなのか?
これは永遠の課題だと思うわ。やっぱりまだまだGithubを使える編集さんや校正さんは少ないので、ゲラのやりとりはよくてスキャンデータ、場合によっては紙なんだよね。これをどうやって電子とマッピングするか。
できるだけ手間を掛けずにやりたいが、手作業でエンピツのチェック項目を列挙していっても数が数なんで割と無理ゲー。
かといってレビューコメントでつけるか?というと…上で書いた通り行単位のdiffになっているので、一個のレビューコメントに複数の指摘がはいることは容易に想像できるし、変更したらOutbandつって見えなくなっちゃうのもなれてない人にはわけわかんないだろうし。コメントはいっているところが明確なのでしれっと直さないという選択をしにくい。著作物は著者の持ち物なのに、直さない理由もいちいち書いて承認貰わないといかんのです?それは違うよね。やっぱ小説はコードじゃないんだよ。
どうすりゃいいんでしょうね?
で、結局文芸領域はバージョン管理システムの認識を獲得しうるのか?
個人的にはまだしばらく難しそう。
- 静的/動的ファイルの混在した環境
- diff差分をとっても現状ではあまり意味をなさない
- デジタル環境になれてない人にcloneとかpullとかpushとか教えるの大変だし、pullできないとか無理やりpushして上書きしちゃったとかいう事故めちゃくちゃ起きそう
- そもそもの問題として共同作業する部分がめちゃくちゃ少ない。著作権の問題があるので勝手に変えられるのはNG(テキスト・装丁諸々。パーミッションを細やかに設定すれば回避できるけどまあ面倒だよね)
うーん…やっぱ小説には微妙かな。ただまあ中間成果物をフィックスするとかを自動化する観点ではとても便利なので、かなり緩めの運用であれば使えないことはないかもしれんすね。分業体制のできているデジタルコンテンツの制作とかあればわりと使える環境になってきたとかもしれないけど。もしよかったら参考にして、ついでに『ギークに銃はいらない』買ってください。
発売記念のスペシャルコンテンツ(トウキョウ下町SF作家の会)も配信中です。
www.youtube.com