はじめに
注意事項
このエントリは、タイトルで大袈裟な事言ってますが 「同人誌書くのになんとなくJenkins入れたらちょっとだけだけど楽になったかも!! ちょっとだけだけど!!」 というエントリなので、そんなにしっかりとしたもの組んでないですし、できる筈の事もしてなかったりするし、ベストプラクティスという訳でもありません。ですが、複数人での作業に不満を感じた時の参考に、少しでもなれば幸いです。
まえがき
どうも、T-Diceのにぎやかし担当、姫こと実解析です。いや、今回は割とそっちの立場の記事なので。えぇ。
みなさん長い人生の中で、一回ぐらい本を書く機会があると思います。恐らくほとんどの人はTeXを使ってるかもしれないですが、もしかするとSphinxとかでさっくり書いてる人もいるかもしれません。まさかMSWordで書いてる人なんていませんね? diffもmargeもできないワープロソフトなんて今すぐアインストールしなさい。 と、いいますか、もし少しでも他人とデータを共有する気があるなら有料ソフトなんぞ使うべきではありません。InDesignだって例外じゃありません。
で、一人で書いてる分にはいいんですが、これが多人数で書くとなるとちょっと難しくなると思います。恐らく一番最初に障壁となるのはファイルの共有方法、恐らくその次は同時編集の必要性についての問題…とりあえずウチのサークルで私が感じた事を列挙しますと
- ファイルの共有はDropBox、なぜならコンソールを叩ける人間が少ないから、SVNやGITなんて使ってられない
- 履歴なんて残らない (直近数回ぐらいは残るみたいですが。)
- だれがいつファイルを触ったのかがわからない
- 過去版なんて出てこない
- 「原稿_yymmdd.tex」が大量発生
- 同じファイルを同時に編集なんてできない
- ちゃんとファイル分割しましょうねという話もあるがそれでも限界はある
- 履歴なんて残らない (直近数回ぐらいは残るみたいですが。)
- TeXをコンパイルできる人間がいない。そもそもコンソールを叩ける人間が(略
- そもそも、論文ならともかく読み物にする為のTeXは結構リッチな環境にしなきゃいけないので 結局コンパイルができるのは最初に環境を作った一人 という状況になったりする。
- と、いうか普通の人はTeXなんて書けない。読まない。あたりまえだ。
- とりあえずプレーンテキストで投げられて、適当に
\{section}
と\{subsection}
を入れて、校正チェック用のPDFを出すところから始まる - 目の前にソースがあるのに、「校正_yymmdd.txt」が大量発生し、それをTeX書ける人間がセコセコ反映する作業が始まる
- とりあえずプレーンテキストで投げられて、適当に
- よしんば誰かがソースを修正しても、コンパイルができる人の手が空くまでPDFにならない。つまり校正が進まない
なぜ、なぜこんなに作業フローが重いのか。なぜこんなに見苦しいファイルが大量に発生するのか。
改善をするのは、自分だ。
とはいえ、人にTeX覚えろとかgitぐらい使えるようになれとか言うのは簡単ですが フツーの人間にそんな事要求するのが無茶な話 ってやつで、それでも自分の作業は減らしたいじゃないですか。
っていうか校正する側も、日本語の文章のとこだけチョコっと直してすぐPDF見たいじゃないですか。
バックアップは取っておかなきゃいけないけど、別に必要になった時に出せればいいじゃないですか。
リッチなシステムなんていらないけど……
少しだけ、少しだけ便利だったらそれでいい。リッチなシステムは作るのも大変だけど、使うのも大変である。それでも、それでもやらねばいけない事はいくつかある。
もとい、『非情報系にも扱わせる事ができる同人活動の為のエコシステム』
前提
- 文章そのものはTeXで書いてる
- 最終的な成果物はPDF
- 何人か執筆者がいるがそのほとんどはパソコンに疎い
実現したい事
前書きでな事言いながら、ぶっちゃけ上に挙げた事のほとんどは解消できていませんがとりあえず以下の事だけでも。
- 複数人でのファイル共有
- ソース及び成果物のバージョン管理
- 必要な時に過去版のソースが見れるようにしたい。
- TeXの自動コンパイル
- ソース直したら自動でPDFが生成されるようにしたい
環境
- ファイル共有
- DropBox
- バージョン管理
- SVN (「SVNサーバ」ではない)(Gitでもいい)
- ソースのビルド
- Jenkins
アウトライン
これは最小構成の図なんですが、図にするとタイトルに反してショボいですね。私がやってたのはTeXファイル監視して即座にコンパイルさせるようにしてたんですが、適当にデイリーで回すのでも十分でしょう。
他にもやった方がいいこと
- この環境を外部サーバにたてる
- Jenkinsを他のパソコンから見えるようにしてエラーの内容ぐらい見れる方がいい
- エラー内容をtxtで吐かせてもいいかもしれない
- SVN触れる人が複数いる場合はSVNはやっぱりサーバがいい。
ほかにも改善点あればご指摘ください。これほんと適当にやったやつなんで。