ゆめみの執筆委員会(ゆめみ大技林製作委員会)は今年、技術書典16および17、技術書同人誌博覧会10(年明けの11でも頒布予定)、そしてコミケ104(年末の105でも頒布予定)で、ゆめみ大技林を頒布しました。
また、今年11月に開催された FlutterKaigi で配布したノベルティ技術書の製作も行いました。電子版は BOOTH にて無料配布しています。
執筆環境
Vivliostyle という CSS で組版できる OSS を利用しています。このライブラリは次の特徴を持っています。
- 記事はマークダウンで執筆する
- Web や CSS 知識を使って組版する
他にも組版ライブラリはありますが、業務でも使っている知識が使えるので、おすすめの組版システムです。この記事以外でも、執筆環境について書いています。それらもぜひ見てください。
ゆめみの執筆委員会では、社内の GitHub のリポジトリに、それを組み込んだ執筆用のテンプレートを作成して、執筆しています。今回は、そのテンプレートリポジトリの日々の改善を紹介します。
PRのレビューコストの削減
我々は商業誌ではなく同人活動の一貫でもあるので、個人の書き味を尊重しています。厳密な原稿チェックはしていませんが、次のような最低限のレビューを行っています。
- 誤字脱字
- 文章の意図や意味が伝わりづらいところはないか
- 電子版と紙版で情報落ちがないか
- 社外秘の情報が含まれていないか
そのような目的で、記事追加の PR が作られています。また、depandabot による依存ライブラリを更新するメンテナンス用の PR も作れています。
これまでは変更内容を確認して、手元でビルドして PDF を確認していました。しかし、執筆の佳境に入ると、同時期に多くの PR が作られ、レビューコストもあがります。また執筆期間でもなくても、メンテナンス目的の PR は日々作られます。通常業務の忙しさから放置することもありました。
通常の開発業務では PR が作れると CI が動き、テストやビルドの確認が自動で行なわれてるのが一般的です。執筆という特殊な対象だったので、CI はいる?と躊躇してましたが、やっぱり必要と判断して作成しました。
現在、PR を作成すると、GitHub Actions で PDF が生成され、それがコメントで添付されます。これまで、ローカルでビルドしていた作業は不要になりました。レビューは執筆内容の確認、PDF の組版に問題はないかの目視だけになり、作業量は下がりました。以前は執筆者に PDF の手動添付をお願いしてましたが、それは不要になりました。
メンテナンス PR は変更内容と PDF が生成できたかを確認してマージしています。厳密には、PDF 作成を構成するライブラリのアップデートなので、PDF のスナップショットテストを仕込みたいところですが、いまは対応していません。
フォントを共通化するテーマ
複数人で開発するので、それぞれの執筆環境は異なります。執筆プロジェクトでは、ローカルに Node.js を用意してビルドする方法、Docker イメージを使ってビルドする(Docker Desktop は不要で、Docker イメージを colima で実行する)方法を提供しています。
ここで問題になるのは(Vivliostyle で設定したテーマにもよりますが)、PDF のフォントはローカルにあるフォントが利用されます。執筆メンバーは macOS 上で書くことが多いので、大抵は macOS のシステムフォントが使われます。ただし、印刷所へ入稿する PDF は Vivliostyle の推奨でもある Docker イメージを利用します。入稿用のフォントはその Docker イメージが持つフォントになります。同じ内容の執筆プロジェクトでもビルド環境によってフォントが異なります。
最近までは、この問題は認識していましたが、影響は少ないだろうと思い、そのままにしていました。ただ、上記の GitHub Actions で PDF を生成したときに、Actions の実行環境に日本語フォントがなく、文字がいわゆる豆腐になってしまった。また、電子版と紙版でフォントの違いによる組版の違いに遭遇してしまったため、対応することにしました。
この解決として、フォントだけを設定するテーマを作成しました。当初はフォントデータの取り扱いにうまくいかずでしたが、Vivliostyle の開発者の方々に教えてもらいました。改めて、ありがとうございました。
このフォント設定のテーマは次のように設定します。どの環境でもフォントは Noto Sans に固定されます。
module.exports = {
theme: [
'@vivliostyle/theme-techbook',
'@mitsuharu/vivliostyle-theme-noto-sans-jp',
],
};
このフォントを設定するテーマは一般にも公開しています。同様にフォントの問題に悩まされている方は、ご利用ください。
自動化は他にも対応中
他にもリリース用のタグを打つと、電子版と印刷所入稿用の PDF を作成してリリースのアセットに添付するなど、便利な自動化を進めています。記事を書く、表紙画像を描く、以外は自動化できるようにテンプレートを改良しています。
まとめ
Qiita など、記事を書かれる方は多いと思いますが、それを本として出版したとなると限られてくると思います。同じ執筆でも、本製作は別の楽しさがあるので、興味ある方はぜひ挑戦してみてください。
ゆめみ大技林は、主にゆめみメンバーが書いていますが、執筆に興味ある社外の方も大歓迎です。本を作りたいけど、やり方がわからない方、書いてみませんか?
編集後記
この記事は勉強会参加のために乗車した新幹線の中で書いています。山陽新幹線はトンネルが多いので、ネットワーク不調で Qiita の記事保存が飛ばないか心配してます。