技術書典でサークルとして本を頒布するまでに必要な技術
この記事について
技術書典16が始まりました!!!
今回サークルとして初めて参加してみたのですが、技術書典で本を頒布するまでって結構大変でした。
特に活版印刷関連の技術はLaTeXを学生時代に触った程度で、全くの初心者でした……。
そこで、この記事では今回技術書を頒布するまでに活用した技術についてまとめてみました。
次回参加する方の参考になれば幸いですし、それ以外の方にも技術書典で本を頒布するまでの苦労を知ってもらえればと思います。
↓作成した本
技術書典で本を頒布するまでに必要な技術
技術書典で本を頒布するには、当然本を書かなければいけません。が、本の書き方なんて普通に生活していたら知ることは無い気がします。自分も今回サークル参加するまでは全く知識がありませんでした。
本を書くにはレイアウトを整えたり、段落で字下げをしたり、見出しに番号を振ったり、それらをPDFとしてまとめたり……といった細かい様々な要素が必要です。
それらを実現するツールは組版ソフトやDTPなどと呼ばれ、論文などではLaTeXが、他にも有料であればAdobeのInDesignなどの選択肢があります。エンジニアとしてはコードで管理できるLaTeXの方がまだ使いやすいと思います。
しかし、とはいえLaTeXはかなり複雑で、記法を覚えることもかなり辛いのに加え、一から整ったレイアウトを構成するのは大変です。
論文であれば学会側からテンプレートが提供されていることが多いですが、技術書典に代表される同人イベントの場合はLaTeXのテンプレートなどはありません。
そんなLaTeXに変換できるフォーマットとして、最近の技術同人ではRe:VIEWというものが使われることも多いようです。Markdownに似た風味の構文で、LaTeXよりは簡単に書けます。
そして、そんなRe:VIEWには有名なテンプレートがあり、それを使うことで一から作るよりは圧倒的に簡単に綺麗な技術書を作ることができます。
TechBooster製のテンプレート
TechBoosterという企業が「技術書をかこう! ~はじめてのRe:VIEW~」という技術書を出していて、その中でRe:VIEWを使った技術書の書き方が解説されています。
書籍内で使われているテンプレートもGithub上で公開されており、テンプレートを使うことでRe:VIEWで技術書を書くことができます。
このテンプレートは控えめに言って神で、組版の知識が無い自分でも綺麗な技術書を作ることができました。
一方で、このテンプレートはそのままでは私には少し敷居が高かったです。
- Rubyでビルドされるため、Rubyの知識が必要
- Node.jsの知識も多少必要
- 使い慣れたMarkdownと違い、より複雑であるRe:VIEWの知識が新たに必要
- Github ActionsによるCI/CDに対応していないので、Github以外のSaaSを使う必要がある (CircleCI)
- ディレクトリに多くのファイルがあり、どこに何を書けば良いかわからない
- MarkdownファイルとRe:VIEWファイルを併用するとテンプレのままだと動かない
- 校正ツールのRedPenがよくわからない (textlintを使いたい)
Markdown、textlint、Github Actionsなどの現在メジャーどころの技術を使った環境を整えないと、かなり執筆に時間がかかってしまうと感じました。
最終的な要素技術
そこでTechBoosterのテンプレートをベースに、以下のような使い慣れた技術を使うように変更したテンプレートを作成しました。
- 基本的に全てMarkdownで書く
- textlintによる校正
- Github ActionsによるCI/CD
- Dockerによるローカルビルド
最終的には以下の流れを踏めば基本的にMarkdownだけで技術書を執筆することができるようになりました。
自分の執筆時間の7割程度はこのテンプレートを作るのに費やしましたが、ほぼ技術記事を書くのと同じノリで技術書を書くことができるようになったので、かなり効率は良かったです。
まとめ
技術書典で本を頒布するまでに必要な技術についてまとめました。
他にもデザインの要素や、表紙の作成、校正、SNSでの宣伝、販売など、技術書典で本を頒布するまでには様々な技術が必要です。
エンジニアなら必ずなんらかの技術書を読んだことはあるでしょう。
今回は所詮同人誌とはいえ、技術書を作り、販売する側の一通りの流れを体験できたのは非常に貴重な経験でした。
この記事が出ている時点ではまだオンラインが始まったばかりなはずなので、対面販売についてはこれから頑張ります。
当日は(く02)で頒布していますので、よかったらお立ち寄りください!
Discussion