Docker/Kubernetes 実践コンテナ開発入門 執筆手記

Docker/Kubernetes 実践コンテナ開発入門」の発売からもうすぐ2週間となる。

Amazonでカテゴリのベストセラーになったり、書泉ブックタワーコンピュータ書ベストで1位になったり、著者としてはこんなに反響あると思ってもいなかったので驚きの日々を過ごしているところ。

おかげさまで発売一週間で増刷が決定ということで、この場を借りて御礼申し上げたい次第であります。

さて、見どころについては前回のエントリで紹介しているので、今回は出版に至った経緯や、どのようにして作られたかを手記というか、チラシの裏として書いておきます。

執筆のイベントの発生

2017年6月末に弊社で開催されていたCA.ktにおいて技術評論社の編集者の方が来られていて、もし執筆の意欲があるならいつでも連絡くださいみたいな感じで名刺交換させて頂いた。それから一週間後くらいに、1回くらいならやってみてもいいかーという軽いノリでこちらから連絡したところから始まる。

出版社側からエンジニアに対してこれこれこういうテーマで執筆をしませんか?的なきっかけはよく聞くのだが、自分の場合はこのパターンではない。テーマありきで始まったのではなく、「@stormcat24さんが書いて売れそうなテーマを考えましょう」というところから始まった。

テーマ出し

2017年7月、テーマ出しを行う。自分が出したテーマは「Dockerを使った実践的なアプリケーション構築パターン」、「gRPC関連アレコレ」、「Service MeshとMicroservices Architecture」みたいなみたいなやつを出した。

方向性の決定・目次作成

企画原案が決まったので、打ち合わせである程度の方向性やニーズの見極め等を行った。Dockerを実際の現場で使えるようにする力を身につけられるようにするという、本書の基本的な指針はここで定まっている。

方向性が決まったので、次は目次を書く。そもそもこの企画が通らないと何も始まらない。出版社としても当然商業的に期待が持てるものでなくてはならないはずなので、その判断材料の一つが目次であると認識している。

フィードバックを受けて、何個か修正をして正式に企画通過となった。これが2017年の8月末頃。

テスト原稿執筆

執筆作業は、GitHubのプライベートリポジトリ上で行う。著者はマークダウンでゴリゴリ書いていく。

とはいえ、執筆はそもそも初めてなので勝手がわからない(ブログとは違うからねぇ)。まずは手慣らしに1章を書き始めた。これは会社の業務ではなく、完全に業務時間外で行うソロ活動なので、帰宅後にコツコツ書き始めていった(まあキツいバイトですね)。この頃から業務時間外の個人的リソースは執筆に向けていったので、このブログの更新は当然滞った(ネタが切れて書いてなかったわけではないということです)。

1章は2017年9月下旬に書き終えた。どの技術書にも言えることだと思うが、1章はその技術の歴史や導入といったところから始まるので、ひたすら純粋に文章を書いてる感が強いのでむしろ難しい。

執筆の本格化

1章でなんとなく執筆のペースがわかってきたので、ざっくりとしたスケジュールが引かれる。スケジュールといっても、この本は単著であるし、昼間は通常の業務を行っている状況なので、絶対的なデッドラインは無い。執筆の進捗とともに、スケジュールも柔軟に調整していった。

10月はあんまり進捗が出なかったが、11月に2章が上がる。なお、この頃から圧倒的に集中できる環境を求めて、五反田に自習室を借りた(2018年3月いっぱいまで使用)。基本的に会社終業後は自習室に直行し、深夜2時くらいに自宅に帰るみたいなのが常態化する(1月くらいは帰り寒かったねぇ)。

12月中旬からはちょっと長めの有休をもらって、年末年始休暇と合わせて19連休にした。

この期間は🐴の時間以外はほぼ缶詰で作業を進めた。ちなみにシャバに出たのはキタサンブラックの引退式で京都に行ったくらいである。おかげでかなり進捗してきて本の全容がなんとなく見えてきた。

「4章 Swarmによる 実践的なアプリケーション構築」あたりは構成にかなり苦心。コンテナの作り込みをどこまで突っ込むかとか、サンプルアプリケーションの作りとか、そもそもアプリケーションの実装をどのように紹介するかとかで相当発狂していた。

実は企画目次上で5章はWebアプリケーションとは違うユースケースのもの(バッチ、ワーカー型アプリケーション)を予定していたが、4章の延長戦でしかならないと思ったので、これを捨てて5章からKubernetesに一気にシフトした。

サクッと終わった章もある。「9章 より軽量なDockerイメージを作る」は特に得意としている分野であり、論理展開含めて事前に完璧にイメージできてたので1日で終わってる。

編集確認・校正

一通り書き終わった(書きなぐったとも言える)のが2018年の2月。3月からは編集確認が本格的にスタートした。

各章は全てPRで置いてあるので、GitHubのレビュー機能を使って、編集の方がひたすらコメントを入れていく。誤字とか言い回し、内容の矛盾はもちろんのこと、読者が求めている知識の補完等、様々な指摘を頂いた。 「おお、これがプロの編集者の仕事か(゚A゚;)ゴクリ」と感嘆したのは言うまでもない。大体、1章あたり50コメントくらいもらっていたと思う。このあたりで、効果的なコラムの書き方や脚注の使い方がわかってきて、以後活きてくる。

3月から5月はPRに残された大量の指摘の対応に終始した。難儀したのは、やはり一番苦戦して書いた4章。当時はアプリケーションの実装もワンステップずつ構築していくというスタイルで書いていたが、結果としてプログラミングの説明が長くなってしまいコンテナ本として本末転倒な感じになってしまっていた。そこで、既に出来上がったもので、コンテナを構成する上で重要なポイントを抑えて解説していくという内容にガッツリ書き換えた。

基本的に著者がやるべきことは内容の充実であって、ですます調はどうするかとか細かいことは気にしないで書き、編集校正によって調整される。

デザインワーク

5月頃にカバーイラストの原案がいくつか上がってきた。候補の中からしっくりしたものを選び、気になる箇所にオーダーを出していく(ちなみにカバー絵の彼、原案ではスーツを着ていた)。

あとはカバーデザインもいくつか候補が上がってきて、これもしっくりくるやつを選ぶ。

最近はなんかクールなカバーの技術書が多いけど、お高く止まってる感も否めない。対して本書はポップな感じにDockerとKubernetesを表現する仕上がりになっている。実際に書店に置かれている様子を見たときに、思想がイラストでうまく表現されてると改めて感じたので、あーこれは正解だったなぁと思った。

外部レビュアー

この人をレビュアーにというのは頭にあったので早い段階で確保した。また、Twitter上で公募して2名(物理面識は無い)にご協力頂けることになった。多種多様なバックグラウンドを持っている方々であり、多角的な視点でレビュー頂いた。細かいtypoの指摘から先進的な提案まで、この本のクオリティアップに大きく貢献して頂いたので感謝しかない🙏

7/17に外部レビュアーによるレビュー期間を終えた。

追い込み・発売

絶えず新しくなっていくDocker/Kubernetes界隈にも苦心したところ。当初はローカル環境での操作をMinikube前提で書いていたが、Docker for Win/Mac Edge版でのKubernetesも安定してきたこともあり、7月頭にMinikubeを捨てる。

7月後半に入り、Amazonに商品情報が出る。このタイミングでTwitterで情報公開し、いよいよ追い込みへ。

着々と作業は進み、7/26に2校のPDFが上がってきた。が、その日にDocker for Win/MacのStableでKubernetesが組み込まれてしまう。これをEdge前提で出版してしまうと面倒なことになるので、2校校正期間でStable前提に書き換えている。

8/2、念校が上がってきたタイミングで、今度は「Google Cloud Next ‘18」でKnativeやGKE On-Prem等が発表されてしまう。ただ、印刷所入稿から最終版までの空白の時間を使い、空きスペースにこれらのコラムをいい感じに挿入。8月発売で8月のネタを入れたので、最後の最後まで攻めることになった。

完全に結果論だが、8月発売になったことでStableも入れ込めた。流れの速い領域において技術書の陳腐化は宿命だが、このタイミングでこの内容を出せたのは今のコンテナ界隈の流れを見ても幸運だった。

ギリギリまで攻めた結果でもあるが、少々誤植が出てしまったので既に購入頂いた方には申し訳ない。現在確認されているものに関しては、正誤表を既に出しているので参照して頂けると助かります。

単著であること

そこそこのボリュームの本を書くので、当然共著という選択肢もあった。企画の段階で、誰か誘おうかなと一瞬よぎったが、自分としては初学者がDockerを学ぶ上では本のストーリー性が絶対重要になるという思いがあったので、腹くくって単著にこだわった。

クラスメソッドの大瀧さんの書評で評価頂いたように、単著ならではのストーリー性やギャップの無さというのは達成できたと思っている。

この手のアラカルト的な書籍にありがちな”何人かの共著で、章によってレベル感や文章力のギャップが辛かったりしない?“といった心配は無用です。それどころか、書き味がエンジニア然とした、とても論理的に積み上げられたストーリーになっていて、一歩ずつ理解しながら読み進めていく感覚が得られるのは最近のIT技術書では珍しいと思います。

業務外

この本は業務時間外で書かれた。執筆に関しては出版社から会社にたいして依頼があるケースも多いが、今回は個人で受けて個人で完結している。特に会社に許可とかも取っていない(そんな事で文句を言う会社でもないので)。なので会社による大々的な宣伝も無し(こちらからお願いするつもりもない)。

他の技術書を読まないようにした

執筆中はなるべく他の技術書を読まないようにした。執筆期間中も入門Kubernetesを始め、様々なコンテナ関連本が出版されたが意図的に避けていた。他の本に無いようなことを入れよう!みたいな、変に影響を受けることを避けたかった狙いがある。あとはなるべく自分の言葉を重視しようという意識が強かった。

参考文献(巻末に記載してあります)については公式ドキュメントや海外のブログや発表資料が中心で、Solomon Hykesの一挙手一投足もTwitterで追いかけていた(途中でDocker社を辞めるというイベントも起きた)。

おかげで積読が溜まってしまっているので絶賛消化中・・・

約1年の執筆活動を終えて

技術書の単著というのはとてつもなくキツいということを身を持って感じた1年であった。ちなみに校了から先週始めくらいまで、マークダウンを書こうとするだけで手が震えるというある種の後遺症を味わったし(今は回復している)、読ませる文章を書くために脳に汗をかき続けた日々だった。

さすがにしばらくはやりたくはないが、反響の多さを見るとやってよかったし、ものすごい資産になったことは間違いない。このエントリを読んでいる方で、単著で執筆の機会が到来した場合、色々な覚悟が必要になると思うが、なかなか無いチャンスなので是非挑戦してみてほしい。