CircleCI実践入門を執筆しました

CircleCI実践入門を執筆しました

September 13, 2020
book, circleci

9月14日に技術評論社のWEB+DB PRESS Plusシリーズから『CircleCI実践入門──CI/CDがもたらす開発速度と品質の両立』が発売されます。

CircleCI実践入門

執筆終盤にコロナ禍の影響を多大に受け、ギリギリまで完成するかどうか瀬戸際の状況が続きましたが、なんとか無事に完成を迎え出版することができて、みなさまのお手元に届けられることができたことを本当に嬉しく思います。

なお、今回は3冊目にして初の共著、初のエディタ以外の本になりましたが、くくりで言えば、またもや開発環境ということで、どうやら僕は開発環境(そして最適化)が本当に好きなのだということを、今更ながらようやく自覚しました。

なぜ本書を執筆したのか #

本書を執筆することになったきっかけはWEB+DB PRESS Vol.107でCircleCI特集を寄稿したのがきっかけです。自身3度目の寄稿となりましたが、お陰様で読者から高評価を頂けたお陰で、今回も書籍化する機会をいただけることになりました。

雑誌の特集は僕と浦井(@uraway_)の2名で執筆したのですが、特集執筆後にCircleCI Japanの立ち上げがあり、縁あってCircleCIの中の人たちと知り合うこともできたので、書籍化するにあたりCircleCIのKimさん(@kimhirokuni)にも執筆に参加してもらいたいと声を掛け、快諾いただけたため3名で執筆することが決まりました。

これまで僕が執筆した書籍(EmacsとAtom)と違い、CircleCIは完全なOSSではないため詳しく調べても、外部からの調査にはどうしても限界が出てしまうのですが、中の人が執筆に参加してくれることになったお陰で、仕様調査に関しての不安が払拭され、自信を持って世に出すことができるようになりました。

CI/CDを当たり前の存在にしたい #

本書はタイトルにある通り、CI/CDサービスのひとつであるCircleCIの解説書です。

ただ、本書を執筆するにあたり最初に考えたのは、今回の書籍はCircleCIのユーザーだけに向けたものではなく、CI/CDをまだ導入していないすべての人をターゲットにしたいということでした。

なので、企画時のタイトル案と、ターゲット読者層は次のようになっていました。

  • タイトル案
    • CircleCIではじめるCI/CD入門 (仮)
  • ターゲット読者層
    • CI/CDについて学びたい人
    • DevOpsについて学びたい人
    • CI/CDはすでにやっているけどCircleCIは使っていない人

この内容からもわかるように、CI/CDの実行環境としてCircleCIを使うものの、

  • CI/CDとは何なのか?
  • CI/CDを導入すると、何ができるようになるのか?
  • どうすればCI/CD環境を構築できるのか?

ということを、世の中に広く伝えたいという思いでスタートした企画でした。

本書の執筆を開始した後、GitHub Actionsが登場し、CI/CDは執筆前よりも更に開発者にとって身近なものになったかと思いますが、それでも自分が知る限りでは、まだまだすべての開発者にとってCI/CDが当たり前のものになっているとは言えないようです。

そこで、この本が少しでも世間に注目され、CircleCIやGitHub Actionsなどサービスは問わず、CI/CDを必要としている一人でも多くの開発者にCI/CDを導入する切っ掛けを作ることこそ、本書の本当の価値だと思っています。

本書のみどころ #

本書の目次は次のようになっていて、総ページ数も416ページでとてもボリュームがあります。

CircleCIはCI/CDサービスですが、実際のプロダクトはさまざまな言語で開発されていて、CI/CDの基本だけでなく、より実践的な内容にするため第8章〜10章で各種言語やプラットフォーム別のCI/CD環境を構築する解説を行ったため、当初の想定よりもページ数が多くなりました。

ただ、その甲斐もあり幅広い分野がカバーされたため、CI/CDの解説書としては、これ一冊あればどんなプロジェクトでも対応可能な知識を得られる内容になりましたし、GitHub Actionsを使う人にとっても参考になるエッセンスが詰っているかと思います。

自分の執筆範囲の中からのオススメ #

僕が執筆したのは「第3章:環境構築」、「第5章:実践的な活用方法」、「第6章:テストの基本と最適化」になっています。この中からオススメを紹介したいと思います。

第3章「SSHによる失敗したテストのデバッグ」 #

ローカル環境ではうまくいくのにCI環境だとテストが通らない、そういったときのデバッグ方法を具体的なソースコードを交えてハンズオンで試せるように解説しています。

紹介事例はタイムゾーンにまつわるものになっていますが、こういった実行環境の違いによるテストエラーはCI/CDを導入することで初めて検知できるケースの代表格ですね。

第5章「SSHキーの活用」 #

CI/CD環境を整える上で、SSHキー(デプロイキー)の扱いは意外とはまることが多いように思います。CircleCIは公式ドキュメントが豊富なので、基本的にはドキュメント通りに設定すれば間違いないのですが、それでもSSHキーの取り扱いに関してはなかなか理解が難しいものがあり、僕も何度かはまったことがあります。

書籍では、実際に僕がはまって解決した内容を整理して原稿に落し込んでいるため、理解しやすい内容になっているかと思います。ですので、これを読めばSSHキーの扱いはだいぶすっきりするはずです。

第6章「キャッシュの活用」 #

6章はテスト実行の最適化に比重を置いていて、個人的にも全体的に自信作になっています。その中でも、高速化にとって非常に重要なファクターであるキャッシュに関しては、特に力を入れて解説しました。

これを読めば、これまでなんとなくコピペで設定していたキャッシュキー(テンプレート)も、自信と確証をもって設定できること間違いなしのはずです。また、キャッシュキーの設定ミスによって、CIがうまく動かないといったこともなくなるはずです。

まとめ #

気がつけば、最初の書籍であるEmacs実践入門を書きはじめたのは2011年から約10年ほど経ち、僕が書いたWEB+DB PRESS Plusシリーズもついに3冊目(改訂版を入れると4冊)になりました。自分でもよくやったなと思いますし、そろそろ固定ファンがついても良いのでは?とも思いはじめたのですがどうでしょうか?もしいたら(普通に嬉しいので)教えてください。

ちなみに、WEB+DB PRESS Plusシリーズで一番多く書籍を書くという、密かな個人目標があったのですが、こちらも達成できたようで、そういった意味でもCircleCI実践入門は思い入れが深い一冊になりました。

次があるかどうかはまだわかりませんが、これまで2012年、2016年、そして2020年と4年に1回新刊を出せているので、また2024年あたりに何か出すのかもしれません。なので、それまでにまた新しいネタを見つけたいと思います。

ちなみに、これは豆知識なのですが、僕の謝辞は最初に書いたEmacs実践入門からフォーマットをコピペし続けているのですが、登場人物が少しづつ変化していて、全部持っている人は僕の10年の歴史を垣間見ることができるようになっています。

最後になりますが、担当編集である技術評論社の池田さんには今回も大変お世話になりました。心より御礼申しあげます。

購入情報 #

あとこちらの書店では先行販売もされているみたいです。