プログラマでありたい

おっさんになっても、プログラマでありつづけたい

サーバーレスで技術書の執筆環境を構築できる時代になっていた

 ブログでレポートするのを忘れていましたが、2月に開催されたJAWS Days 2019で"AWS本 我々はこうして「AWS本」を書いた! 〜十人十色〜"というセッションに登壇していました。商業誌・同人誌のAWS本の作者たちが集まって、執筆について語るという内容でした。

同人誌の執筆環境


 登壇者の皆さんの話は、執筆方法・テーマの考え方・同人誌(技術書典)を取り巻く環境・お金にまつわる話と、どれも非常に興味深かったです。その中で、個人的に衝撃を受けたのが同人誌の執筆環境です。本を書く工程として、企画に始まり執筆⇒校正⇒組版⇒製版といった工程があります。執筆から製版までのプロセスを支援するツールとしてRe:Viewという書籍執筆支援システムがあります。原稿書くだけであればMarkDown形式というのが多いのですが、スタイルの指定など表現力に難があります。そういった部分までサポートするRe:VIEWがあるのは知っておりました。

 もともとRe:Viewについてはある程度知見がありました。5年前に原稿を書き出した時に、どのフォーマットで書くか試行錯誤してた時期がありました。結局、商業誌の場合は組版・製版は出版社がやってくれることもあり、手軽なMarkDownに落ち着いていました。
blog.takuros.net

 当時、gitにプッシュしたらビルドする仕組みも用意してたのですが、下記の2つの点で使わなくなりました。
・ローカルビルドは、複数の環境で執筆してたので、全てに用意するのが面倒くさかった
・サーバビルドは、コストの面で断念。EC2上で構築してたものの、たまにしか使わないビルドに毎月数千円を払うのは割に合わない

 そういった執筆から製版までの工程ですが、何と今はRe:Viewビルド用のコンテナがdocker hubで公開されているため、それを利用する人が多いようです。しかもローカルで利用するだけでなく、CircleCI等に組み込んで執筆環境のCI/CDが実現できるようにしているとのことです。なにそれ、並のシステム会社より進んでる!!と思いました。

hub.docker.com

AWSでサーバレスで執筆環境を作った


 なかなか衝撃的だったので、自分でもやってみないとと思い環境を作りました。CircleCIも良いけどCodeBuildやCodePipelineをちゃんと使いたかったので、そちらの方で環境を作りました。こんな構成になります。

f:id:dkfj:20190405075031p:plain

 CodeCommitにマスターにマージされると、CodePipelineが検知してCodeBuildを呼び出します。CodeBuildでは、Re:Viewのコンテナを利用してPDFをビルドします。生成物であるPDFは、S3に保存されます。このPDFをCodeDeployを使って任意の場所に配布するという流れです。CodeDeploy部分は現在一人で執筆しているので作っていませんが、SlackやDropBoxのAPIと連携して共同作業者に配布・通知するというのが良いでしょう。AWSの費用は、CodeBuildの無料枠が月あたり100分と大きいので、ほぼ無料枠でいけるのではという感触です。ビルドしたら、こんな感じでPDFがつくれます。

f:id:dkfj:20190405103607p:plain

感想


 最初は試行錯誤しましたが、一度作ってしまえばサーバレスでマネージメント不要の環境ができます。せっかく環境が整ったので、Kindleのダイレクト出版をやってみようと思います。1ヶ月くらいで書きたいですね。あと最近盛り上がっている、技術書典。4月開催に行ってみて雰囲気を掴んで、10月に挑戦してみたいです。AWSの環境の作り方とRe:VIEWの使い方は、手順紹介の記事を別途それぞれ書きます。