技術書典応援祭に関わられたすべてのみなさんお疲れ様でした。

オンライン開催にもかかわらず、お祭感があって執筆後も楽しめました。でもやっぱり、またいつか物理会場で「当日」を迎えたいなぁ。

つぎの出展に備えて振り返りたいと思います。

出展した本の内容についてはこちらにまとめています。

技術書典9で新刊『Google Cloud Platformで学ぶTerraform 〜基礎編〜』を含む5冊+αを出展します #技術書典

技術書典オンラインマーケットでも、BOOTHでも引き続き販売中です!

手にとってくださった方は、こちらのページで変更内容をお知らせしていくのでぜひ見てみてください。

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』の正誤表と増補改訂情報 #技術書典

『KnativeとIngress Gateway』

『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜』の正誤表と増補改訂情報 #技術書典

『Knativeソースコードリーディング入門』

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Knativeの歩き方』

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda』

『Goで学ぶAWS Lambda』の正誤表と増補改訂情報 #技術書典

振り返り

Good

テーマ設定

現在のプラットフォーム開発の仕事に直結し、確実に読者がいるテーマを設定できたと思います。

すべてはこのツイートから始まりました。

あったら欲しい、けどない。というわけで、ないものは書けばいいですね。

自分が欲しいし、あまり売れなくても社内には確実に読者になる人がたくさんいる。モチベーションが保てました。

執筆のモデル化

執筆のプロセスをだいぶ見直しました。

  • ざっと本と公式ドキュメントを読んで大まかな見取り図(荒い目次のようなもの)を作る
  • 項目ごとにGitHubでissueを作り、GitHubのprojectにする
  • 項目ごとに情報収集・検証する
  • ある程度集まったら目次を作る
  • 「こうすればTerraformを理解できる」を言語化する(今回の本でいう1章)
  • 頭に入っている内容と目次で、前書き(本を書く動機とできるようになってほしいこと)と各章400字くらいずつで全体をざっと書く
  • 1章ずつ書いていく
  • 推敲

本を通じて伝えたい内容(モデル)の仮説を立てて、いったんざっと全体を書いてしまうのを大事にしました。

そこから各章・各項目を検討しながら書き進め、モデルをアップデートしていきます。

全体を書き終えたら、章立て全体がモデルを読者に伝えるのに適切な構成になっているのかを見直します。章の順序を入れ替えたり、不要な情報をコラムとして切り出したりします。

今後も詳しくなりたい技術分野は出続けるでしょう。その過程で本も書くと思います。技術を身につけるための型を身につけ、改善していくのは不可欠です。

つぎの本に大きな影響を受けました。読み直すたびに理解したり実感したりするための経験値は増えているので、毎回違った見え方がします。

エンジニアの知的生産術 ―効率的に学び、整理し、アウトプットする

知的戦闘力を高める 独学の技法

イシューからはじめよ ― 知的生産の「シンプルな本質」

入門編と実践編

今回は「入門編」として出しました。次回の技術書典10で実践編を出します。

元々は1冊の本として出す予定でした。もうちょっと頑張ったら書き切れたかもしれません。しかし、技術書典開始ギリギリまで書いた結果初版のクオリティが低くなった前著の反省を踏まえ、立ち止まることにしました。

期限が決まっている中で、時間を闇雲に投下してなんとか間に合わせるやり方は極力避けたいです。質は下げたくありません。スコープを調整するというのを覚えました。

ゆとり

最終的には、今までで一番気持ちに余裕がありました。追い込みの3週間くらいは自粛したものの、それまではゼルダもしてました。

追い込みのタイミングで作りたいサービスができ、原稿の合間に開発もしました。

締め切りのあるものでも、OKRに詰め込み過ぎず、自分を許してこれくらいの気持ちの余裕は持ち続けたいです。

総じて新しくChallengeすることは増やさずに、Goodで触れたモデル化に継続して取り組もうと思います。

妻の本のレビュー

妻も前回の技術書典で書いた本の改訂版を出しました。

JavaScriptとSEO(PDF、ePubセット) #技術書典

前回の反省に「妻の作品のサポート」を挙げたので、今回はレビューする時間を設けました。

Challenge

時間配分

技術書典は7月にあるものとして4〜6月のOKRを組み立てていました。結果的に9月になったものの、7月にあったら新刊アウトでした。

4〜6月のOKRはこれ。

2020年1〜3月ふりかえり 〜HCLエンジニアとしても闘争〜

6月時点でGCPもTerraformもどっちつかずだったので、7月に技術書典がないのがわかったタイミングでGCPのキャッチアップに専念することにしました。GCPを学ばずして、GCPで学ぶTerraform本の見通しが全然立てられなかったためです。

8〜9月を余裕をもって過ごしたようで、実は仕掛りのOKRがスライドして達成できたことが減っただけという見方もできます。

ただ、わからないものはわかりません。自分をさらに律する施策を考えるのでなく、OKRは詰め込みすぎないように〜くらいにしておこうと思います。

紙本

今回も前回も紙本を準備していません。印刷費用がかからない分利益は増えるし、在庫を抱える心配もありません。

特に要望もないものの、次回はTerraform本の基礎編と実践編を合わせた紙本の印刷も検討しようと思います。

僕自身が基本的に紙本を買わないので、物理会場で開催されるまではあまり乗り気にならないかもしれません。

次回作について

技術書典10では、予告通り『Google Cloud Platformで学ぶTerraform』の実践編を書きます。

基礎編では個々のリソースの書き方やステート管理、モジュールの基礎について書きました。実践編では、複数のリソースからなる典型的なGCPのアーキテクチャやモジュールをいかにTerraform化するかについて書きます。

ロードバランサーとインスタンスグループ、GKE、プロジェクトのテンプレート、ログ管理などが題材です。ログ管理やその活用は、Professional Data Engineerの内容を理解した上で取り組むのがよいかなぁと思っています。

さらに、そうして出来上がったものをいかに継続的に変更していくかについても触れます。

CI/CD、リント、テスト、サービスアカウント管理などが題材です。

もし技術書典9でTerraform本を書き終えていたら、Cloud Runのユースケース集的な本を書こうと思っていました。これはサーバーレスなカンファレンスがあれば、そこにワークショップのプロポーザルを出したり、それが実現しなくてもZennでチュートリアルを出したりできないか検討してみます。技術書典11の時点では何に関心があるか読めません。

数字の整理

売上

技術書典オンラインマーケット

9/12〜9/30分

  • Google Cloud Platformで学ぶTerraform 〜基礎編〜: 70冊
  • JavaScriptとSEO: 16冊
  • KnativeとIngress Gateway 第2版: 4冊
  • Knativeソースコードリーディング入門: 2冊
  • Knativeの歩き方 第2版: 2冊
  • Goで学ぶAWS Lambda 第2版: 5冊

500円 × 16冊 + 1000円 × 83冊 = 91000円

BOOTH

9/5〜9/30分

  • Google Cloud Platformで学ぶTerraform 〜基礎編〜: 37冊
  • JavaScriptとSEO: 0冊
  • KnativeとIngress Gateway 第2版: 5冊
  • Knativeソースコードリーディング入門: 1冊
  • Knativeの歩き方 第2版: 2冊
  • Goで学ぶAWS Lambda 第2版: 4冊

1000円 × 49冊 = 49,000円

原価

  • 技術書典参加費: なし
  • BOOTH手数料: 3,734円
  • 受験したり、本買ったりした気がします

過去分

フライングしてこれを購入しました!ありがとうございます!!

あとは実践編で前提となるProfessional Data Engineerの受験費用と、『Official Google Cloud Certified Professional Data Engineer Study Guide』の購入費用に充てようと思います。

2020年9月12日(土)〜22日(火)に開催される技術書典9で5冊出展します!

カエルと空というサークルで、このページから出展しているのでぜひのぞいて行ってください!

カエルと空のサークルページ

出展する本を紹介します。

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』

僕は、マイクロサービスを開発するためのプラットフォームを開発・運用するチームで2020年から働き始めました。それ以前の仕事は、バックエンドエンジニアとしてのマイクロサービス開発です。プラットフォームチームが開発したTerraformモジュールに設定を渡し、GCPやKubernetesのリソースを作成していました。

いざそのモジュールを作成したり、エラーのデバッグをする立場になってみると何もわかりません。つぎのような疑問がわきました。
・モジュールとは何か
・複数のリソースから構成されるアーキテクチャはどう組み立てるのか
・なぜ Terraform の状態と実際のクラウドリソースの状態はずれるのか

Terraformの概念や個々のリソースの使い方、GCPを利用したサンプルのモジュールはたくさんあります。Terraformに関する書籍もあります。
しかし、Terraformの具体的な説明に登場するクラウドは、ほとんどがAWSです。クラウドアーキテクチャの設計経験も多くはない僕にとって、AWSベースで説明された内容をGCPに置き換えながら学ぶのはとても大変でした。そこで、この本を書くことに決めました。

AWSからGCPへの翻訳をせず、クラウドの設計やTerraformをGCPを通じて学べる本。半年前の僕が欲しかった本です。この本を通じ、Terraform をより身近に感じる人が増えたら幸いです。

正誤表・増補改訂情報はこちらのページで公開しています。

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』の正誤表と増補改訂情報 #技術書典

すでにBOOTHで電子版をご購入いただける状態になっています。

https://toshi0607.booth.pm/items/2354817

登場するほとんどのサンプルコードも、GitHub上で公開しています。

toshi0607/Learning-Terraform-with-GCP

目次です。

第1章 はじめに

第2章 Terraform の概要
2.1 Terraformの意義
2.2 Terraformのアーキテクチャ
2.3 まとめ

第3章 環境構築
3.1 GCPアカウント
3.2 GCPプロジェクト
3.3 GoogleCloudSDK
3.4 tfenv
3.5 vscode-terraform
3.6 まとめ

第4章 リソースとterraformコマンド
4.1 リソース
4.2 terraformコマンド
 init
 plan
 apply
 destroy
4.3 ライフサイクル
 create_before_destroy
 prevent_destroy
 ignore_changes
4.4 まとめ

第5章 Configurationの書き方
5.1 関数
 join
 length
 contains
 values
 file
 その他の関数
5.2 変数
 variable
 output
 locals
 データソース
5.3 ループ
 count
 for_each
 for
 dynamic
5.4 条件式
5.5 バージョンの明示
5.6 モジュール
 子モジュールの定義
 ルートモジュールの定義
5.7 まとめ

第6章 ステート管理
6.1 ステートの構造
6.2 リモートバックエンド
6.3 管理単位
 ワークスペース
 バックエンド
6.4 参照
6.5 ズレと直し方
 定義あり、ステートあり、リソースあり
 定義あり、ステートあり、リソースなし
 定義あり、ステートなし、リソースあり
 定義あり、ステートなし、リソースなし
 定義なし、ステートあり、リソースあり
 定義なし、ステートあり、リソースなし
 定義なし、ステートなし、リソースあり
 定義なし、ステートなし、リソースなし
6.6 リファクタリング
6.7 まとめ

あとがき

『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜 第2版』

初版から大幅に加筆した第2版です!

2019年末同僚に「なぜIstio(VirtualService)を使わずにKnativeはトラフィックスプリッティングのような機能を実現できるのか」と質問されて答えられなかったのがきっかけで調べることにしました。

Knativeは当初Ingress GatewayにIstioを採用(依存)しましたが、後にGlooをはじめ様々なコンポーネントで代替可能になりました。代替できる事実は知りつつも、なぜ代替できるのか、代替できるとはどういうことなのかを調べることはありませんでした。

しかし、「プラットフォームを開発・運用する」ことへの関心が高まり、(何層もある)Knativeより下のレイヤーを学びたい気持ちが強くなりました。本書はその一環です。Knative = Kubernetes Networkingとも説明されるKnativeのIngress Gateway周りの調査はKubernetesが提供しているService、Ingressの特徴や課題、そもそもロードバランサーとは何かのか、サービスメッシュやEnvoyとはどういう関係があるのか、といったネットワーク関連の入門にもうってつけでした。

「KnativeはなぜIngress Gatewayを交換できるのか?」という問いに答えることは、Envoyの設定をどう表現し、どう配信するかというデザインパターンを見い出すことに繋がります。

90ページ弱の自由研究に付き合っていただけたら幸いです!

すでにBOOTHで電子版をご購入いただける状態になっています。

https://toshi0607.booth.pm/items/1882118

目次です。

第1章 Knative
1.1 概要
1.2 Serving
1.3 Eventing
1.4 まとめ

第2章 Gateway
2.1 ServiceとIngress
2.2 Gateway と Service Mesh
 [コラム]APIGatewayとサービスメッシュの違い
2.3 Envoy とコントロールプレーン
2.4 コントロールプレーンの実装例(Istio)
2.5 まとめ
 [コラム]IngressAPIの進化
 [コラム] L4 から L7 ロードバランサーへ

第3章 Istio
3.1 概要
3.2 KnativeのCRD
3.3 Knativeのコンポーネント
3.4 IstioのCRD
3.5 Istioのコンポーネント
3.6 localgateway
3.7 Gateway
3.8 まとめ

第4章 Ambassador
4.1 概要
4.2 Knativeのコンポーネント
4.3 Ambassadorのコンポーネント
4.4 AmbassadorとEnvoy
4.5 まとめ

第5章 Contour
5.1 概要
5.2 Knativeのコンポーネント
5.3 Contourのコンポーネント
5.4 まとめ

第6章 Kourier
6.1 概要
6.2 Knativeのコンポーネント
6.3 Kourierのコンポーネント
6.4 まとめ
 [コラム] Kourier の活用事例

第7章 Gloo
7.1 概要
7.2 Knativeのコンポーネント
7.3 Glooのコンポーネント
7.4 まとめ
 [コラム]Envoyとgo-control-planeの今後

第8章 まとめ
8.1 Gateway
8.2 Ambassador
8.3 Contour
8.4 Gloo
8.5 Kourier
8.6 Istio
8.7 最後に

Appendix

『Knativeの歩き方 KubernetesからServerlessを訪ねて 第2版』

こちらはKnativeのコンポーネントの説明やユースケースを中心に説明した本です。実際にKnativeが利用されたプロダクトの図解も掲載しています。

こちらもすでにBOOTHで電子版、紙本 + 電子版がBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1309468

正誤表や増補改訂情報ページはこちらです。

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

目次です。

第1章 Knativeの概要
1.1 Knativeの構成要素
1.2 Serving
1.3 Build
1.4 Eventing

第2章 Kubernetes環境の準備

第3章 KubernetesとKnativeの関係
3.1 Kubernetesの基本的思想
3.2 Kubernetesのオートスケール
3.3 Kubernetesの拡張機能

第4章 Knative Serving
4.1 Knativeのインストール
4.1.1 Istioの設定
4.1.2 Knativeの設定
4.2 Configuration
4.3 Revison
4.4 Routes
4.5 Service
4.6 オートスケールの仕組み

第5章 Knative Build
5.1 Build
5.2 BuildTemplate
5.3 Servingと組み合わせる

第6章 Knative Eventing
6.1 Sources
6.2 BrokerとTrigger
6.3 ChannelとSubscription

第7章 Knative のユースケース
7.1 FaaS プラットフォームの構築
7.1.1 イベントやリクエストを Function に渡すサーバー
7.1.2 サーバーとFunctionのパッケージング
7.1.3 CLI
7.2 イベント pull 型の FaaS 〜Knative Lambda Runtimes の利用例〜
7.2.1 AWS Lambda の Function(Go)
7.2.2 AWSLambdaとRuntimeInterface
7.2.3 knative-lambda-runtime
7.2.4 triggermesh/aws-custom-runtime
7.2.5 bootstrap
7.2.6 Tekton で生成するコンテナイメージ
7.3 イベント push 型の FaaS 〜OpenFaaS の Watchdog の利用例〜
7.3.1 WatchdogによるFunction制御
7.3.2 WatchdogとFunction同梱のDockerfile
KnativeのCLI

『Knativeソースコードリーディング入門 Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー』

Knativeの仕組みをより深く追おうとするときに、Kubernetesのカスタムリソースやカスタムコントローラーの枠組みを知っておくと追いやすくなります。本書では、Knativeはもちろん、Kubernetes自体の様々なソースコードを追いながらそれを解説しています。

以前mercari.goで発表した内容をより詳細に紹介したものです。

目次です。

第1章 KnativeとKuberentesの関係
1.1 Kubernetesの概要
1.2 Kubernetesの拡張方法
1.3 Knative の概要

第2章 KubernetesのAPI
2.1 APIサーバーの責務
2.2 Kind
2.3 APIグループ
2.4 バージョン
2.5 リソースとサブリソース
2.6 APIリクエストの処理フロー

第3章 APIクライアント
3.1 client-go
3.2 Object
3.2.1 TypeMeta
3.2.2 ObjectMeta
3.2.3 Spec
3.2.4 Status
3.3 ClientSet
3.4 Informer
3.5 APIMachinery
3.5.1 Scheme
3.5.2 RESTMapper

第4章 カスタムリソース
4.1 CR
4.2 CRD
4.2.1 categories
4.2.2 shortNames
4.2.3 subresources
4.2.4 additionalPrinterColumns

引き続き電子版、紙本 + 電子版がBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1568456

正誤表や増補改訂情報ページはこちらです。

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda 第2版』

技術書典5で出展したAWS Lambdaのユースケースに関する本も引き続き。

AWS Lambda周辺のエコシステムはこの本の最終更新後に大きな変更がありました。Amazon RDS Proxy with AWS Lambda、AWS Lambda VPC接続の改善、Provisioned Concurrency for Lambda Functionsは本の中でも触れられている課題の決定的な解決策です。少し本の内容が古くなってしまったものの、AWS Lambda(とSAM)をGo言語で学ぶ入門の1つとしては依然として有効ではないかと思います。

お陰様で商業版を出版したり、こちらもすでに第2版がBOOTHで購入できる状態になっています。

https://booth.pm/ja/items/1034858

GoとSAMで学ぶAWS Lambda

目次です。

第1章 環境構築
1.1 anyenv
1.2 anyenvupdate
1.3 goenvとGo
1.4 pyenvとPython
1.5 aws-cli
1.6 aws-sam-cli
インストールトラブルシューティング
1.7 saw
1.8 direnv
1.9 dep
1.10 gig

第2章 S3 イベントの活用
2.1 概要
2.2 S3
2.3 シーケンス
2.4 フォルダ構成
2.5 ソースコード
2.6 テスト
2.7 デプロイ
2.8 削除

第3章 SNS と SQS によるファンアウト
3.1 概要
3.2 SQS
3.3 SNS
3.4 シーケンス
3.5 フォルダ構成
3.6 ソースコード
3.7 テスト
3.8 デプロイ
3.9 削除
CloudFormationトラブルシューティング

第4章 API Gateway と DynamoDB を使った URL 短縮サービス
4.1 概要
4.2 APIGateway
4.3 DynamoDB
4.4 シーケンス
4.5 フォルダ構成
4.6 ソースコード
4.7 テスト
4.8 デプロイ
4.9 削除
DynamoDBのテーブル定義変更
LambdaとAPIGatewayのローカル実行

このページでは『Google Cloud Platformで学ぶTerraform 〜基礎編〜』の正誤表と増補・改訂をお知らせします。

この本を手にとってくださった方がちょっとでも選んでよかったと思う本に育てていきたいので、章の追加なども楽しみにしていてください。

増補・改訂版は購入方法に応じて異なります。

  • ダウンロードカード: Googleドライブ。バージョン毎にフォルダが分かれています。
  • 技術書典のサイト: 技術書典サイトのマイページ。常に最新版をアップロードしています。
  • BOOTH: BOOTH購入ページの注文詳細画面。常に最新版をアップロードしています。

引き続きフィードバックお待ちしてます!@toshi0607

正誤表

PDFページ PDF反映 ePub版反映 MOBI版反映 修正日 version

増補・改訂

PDFページ 内容 PDF反映 ePub版反映 MOBI版反映 修正日 version

リソース

技術書典応援祭に関わられたすべてのみなさんお疲れ様でした。

特に運営のみなさん、想定外の事態にも関わらず常にベストを考え、最後までやり遂げていただき頭が上がりません。本当にお疲れ様でした。

つぎの出展に備えて振り返りたいと思います。

出展した本の内容についてはこちらにまとめています。

技術書典 応援祭で新刊『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜』を含む4冊を出展します #技術書典

『JavaScriptとSEO』はBoothでの販売を技術書典応援祭終了後に開始しました。

他はBoothでも引き続き販売しています!

手にとってくださった方はこちらのページで変更内容をお知らせしていくのでぜひ見てみてください。

『KnativeとIngress Gateway』

『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜』の正誤表と増補改訂情報 #技術書典

『Knativeソースコードリーディング入門』

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Knativeの歩き方』

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda』

『Goで学ぶAWS Lambda』の正誤表と増補改訂情報 #技術書典

振り返り

Good

テーマ設定

今回のテーマはKnativeにおいてIstioに代替可能なGatewayのコンポーネントを比較するというものでした。

このテーマの根本にあったのは、昨年同僚から受けた「KnativeはIstioのVirtualServiceを使わずにどうやってトラフィック制御するのか」という問いに答えることです。当時は答えられませんでした。

前回の技術書典の振り返りでもつぎのように書いていました。

そもそもIstio(をはじめゲートウェイコンポーネントとして依存するもの)やKubernetes自体の知見なしに存在するプラットフォームではないのでその観点から自分の知識・経験は強化して臨む必要もあります。

締切がある中、1回の執筆で調査、理解できることには限りがあります。しかし、そこで新たに生じた課題や疑問を放っておかずに継続して向き合い続けられたのはよかったなぁと感じました。

回を追うごとに想定読者が減っていっている(Knative概論 -超えられない壁-> Knativeソースコードリーディング -> KnativeのIngress Gateway)気がしますが、より夏休みの自由研究感が増していってて愛情は深まっています。

Istioのキャッチアップ

最近、マイクロサービスを開発・運用するチームからマイクロサービスのプラットフォームを開発・運用するチームに移り、2月頃からIstio周りの仕事をしていました。

今回のテーマはIstioに代替可能なコンポーネントの比較ですが、そもそもIstioを学んだことがありませんでした。さらに、3月にはマイクロサービス開発者向けにIstioのワークショップを実施する必要があったので、一定の水準で高速キャッチアップする必要がありました。

この本ではそもそもKnativeがどうIstioを利用するのか、なぜKubernetesのServiceやIngressではダメなのかから考える必要があったため、Istioのキャッチアップは必須でした。執筆過程で本業にダイレクトに関係ある部分に取り組めたのは精神衛生上もよかったです。

また、チームの20%ルールのテーマにこの本の執筆を掲げ、調査内容をチームのGitHub issueに英語でまとめることにも取り組みました。

世には出ないものの、途中経過をアウトプットしながら進められるのもまた精神衛生上良いです。

経験上アウトプットよりもインプットに数倍時間がかかります。いざ書き始める頃には調査した内容を忘れることも多々あったので、このやり方は進捗にとってもプラスでした。

いいまとまりで発信しつつ、最終的に体裁を整え本にするくらいが理想かなぁとは思っています。

キャッチアップには特につぎの本や講座が効果的でした。

Manning社のアーリーアクセスプログラムは、本の更新が通知されるので好きです。出版はこういう形式が理想だなぁと思っています。

本も好きなときに読めていいのですが、動画はプロダクト操作のデモががっつり見られて理解が定着しやすく感じます。特にIstioの場合はKialiなどの可視化ツールとセットで解説されるのでより効果的でした。

執筆仲間

今回とうとう妻が『JavaScriptとSEO』で執筆デビューしました!

これまで、僕の書く本の原稿以外すべて(表紙絵、サークルカット、校閲、入稿、ダウンロードカードなど)を支えてもらっていたのですが、共に〆切に追われる仲間になりました。

締切直前はやや怖かったですが、とにかく嬉しいです!!

Challenge

時間

もし開催スタートが元のままであれば間に合っていませんでした。毎度精神が厳しいです。

何にチャレンジすれば緩和されるのかはよくわからないので、感想として書き残しておくことにします。

フォーマット

毎回TechBoosterさんのReVIEW-Templateを使わせていただいていて助かっています。

けど今度はカウプランさんのRe:VIEW Starterを試そうと思っています。

ReVIEW-Templateに不満があったわけではなく、妻が試していていい感じの見栄えになっていたためです。

コードをいい感じに折り返してくれてる雰囲気なのもポイントです。

妻の作品のサポート

今回はしっかりレビューする時間をとれませんでした。

妻はフロントエンドエンジニアということで、テーマもフロントエンド関連です。僕は普段馴染みがありません。かといってフロントエンドも実装していた時期もあるので何もわからないこともありません。

それゆえに、この部分をもっと説明してほしいだったり、何回か執筆しているだけに構成で気になる部分だったり、一緒に良くしていける部分が少なからずあります。

改訂版の印刷や、次回の新作でサポートできたらなぁと思います。

継続的改善

本を印刷するのが技術書典9が初ということで、『KnativeとIngress Gateway』はがっつり改定予定です。普段Knativeを運用している方にもインスピレーションの湧くコメントをすでにたくさんいただいています。

この辺りが増補改定される予定です。お楽しみに!

すでに電子版でご購入いただいている方はもちろん読んでいただけるようになります。

次回作について

技術書典9ではGCPでTerraformに入門するか実践するかの本を書きたいと思っています。

理由はこんな感じです。

  • 今業務ドメイン的にどちらも時間を投資して学ぶ価値がある
  • 社内にGCPもTerraformも強い人がたくさんいる(のでレビューされたい)
  • Lambda本以来のポップでキャッチーなテーマ(議論の余地あり)にしたい

今回もとりあえずGCPもTerraformも何もわからん状態なので、Professional Cloud Architectをとるところから始めます。

数字の整理

## 売上

サイト

3/7〜4/5分

  • JavaScriptとSEO: 41冊
  • KnativeとIngress Gateway: 22冊
  • Knativeソースコードリーディング入門: 7冊
  • Knativeの歩き方 第2版: 5冊
  • Goで学ぶAWS Lambda 第2版: 9冊

500円 × 41冊 + 1000円 × 43冊 = 63500円

Booth

3/1〜4/5分

  • JavaScriptとSEO: 期間中は販売していませんでした
  • KnativeとIngress Gateway: 19冊
  • Knativeソースコードリーディング入門: 2冊
  • Knativeの歩き方 第2版: 5冊
  • Goで学ぶAWS Lambda 第2版: 11冊

1000円 × 37冊 = 37,000円

原価

  • 参加費: 7480円

過去分

妻はすでに売上金であつ森を購入しています。

そして家の装備をパワーアップしました!家庭内燻製を実現し、低温調理をパワーアップさせます。

2020年3月7日(土)から開催される技術書典 応援祭で4冊出展します!

『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜』

今回の新刊はKnativeのIngress Gatewayについてです。3回連続でKnative関連のお話になりました。

昨年末同僚に「なぜIstio(VirtualService)を使わずにKnativeはトラフィックスプリッティングのような機能を実現できるのか」と質問されて答えられなかったのがきっかけで調べることにしました。

Knativeは当初Ingress GatewayにIstioを採用(依存)しましたが、後にGlooをはじめ様々なコンポーネントで代替可能になりました。代替できる事実は知りつつも、なぜ代替できるのか、代替できるとはどういうことなのかを調べることはありませんでした。

しかし、「プラットフォームを開発・運用する」ことへの関心が高まり、(何層もある)Knativeより下のレイヤーを学びたい気持ちが強くなりました。本書はその一環です。Knative = Kubernetes Networkingとも説明されるKnativeのIngress Gateway周りの調査はKubernetesが提供しているService、Ingressの特徴や課題、そもそもロードバランサーとは何かのか、サービスメッシュやEnvoyとはどういう関係があるのか、といったネットワーク関連の入門にもうってつけでした。

「KnativeはなぜIngress Gatewayを交換できるのか?」という問いに答えることは、Envoyの設定をどう表現し、どう配信するかというデザインパターンを見い出すことに繋がります。

80ページ弱の自由研究に付き合っていただけたら幸いです!

すでにBOOTHで電子版をご購入いただける状態になっています。

https://toshi0607.booth.pm/items/1882118

7月の技術書典9で紙本を印刷するのを目指し、フィードバックを受けてブラッシュアップしていく所存です。

目次です。

第1章 Knative
1.1 概要
1.2 Serving
1.3 Eventing
1.4 まとめ

第2章 Gateway
2.1 ServiceとIngress
2.2 Gateway と Service Mesh
2.3 Envoy とコントロールプレーン
2.4 コントロールプレーンの実装例(Istio)
2.5 まとめ

第3章 Istio
3.1 概要
3.2 KnativeのCRD
3.3 Knativeのコンポーネント
3.4 IstioのCRD
3.5 Istioのコンポーネント
3.6 localgateway
3.7 Gateway
3.8 まとめ

第4章 Ambassador
4.1 概要
4.2 Knativeのコンポーネント
4.3 Ambassadorのコンポーネント
4.4 AmbassadorとEnvoy
4.5 まとめ

第5章 Contour
5.1 概要
5.2 Knativeのコンポーネント
5.3 Contourのコンポーネント
5.4 まとめ

第6章 Kourier
6.1 概要
6.2 Knativeのコンポーネント
6.3 Kourierのコンポーネント
6.4 まとめ

第7章 Gloo
7.1 概要
7.2 Knativeのコンポーネント
7.3 Glooのコンポーネント
7.4 まとめ

第8章 まとめ
8.1 Gateway
8.2 Ambassador
8.3 Contour
8.4 Gloo
8.5 Kourier
8.6 Istio
8.7 最後に

『Knativeの歩き方 KubernetesからServerlessを訪ねて』

こちらはKnativeのコンポーネントの説明やユースケースを中心に説明した本です。実際にKnativeが利用されたプロダクトの図解も掲載しています。

こちらもすでにBOOTHで電子版、紙本 + 電子版がBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1309468

正誤表や増補改訂情報ページはこちらです。

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

目次です。

第1章 Knativeの概要
1.1 Knativeの構成要素
1.2 Serving
1.3 Build
1.4 Eventing

第2章 Kubernetes環境の準備

第3章 KubernetesとKnativeの関係
3.1 Kubernetesの基本的思想
3.2 Kubernetesのオートスケール
3.3 Kubernetesの拡張機能

第4章 Knative Serving
4.1 Knativeのインストール
4.1.1 Istioの設定
4.1.2 Knativeの設定
4.2 Configuration
4.3 Revison
4.4 Routes
4.5 Service
4.6 オートスケールの仕組み

第5章 Knative Build
5.1 Build
5.2 BuildTemplate
5.3 Servingと組み合わせる

第6章 Knative Eventing
6.1 Sources
6.2 BrokerとTrigger
6.3 ChannelとSubscription

第7章 Knative のユースケース
7.1 FaaS プラットフォームの構築
7.1.1 イベントやリクエストを Function に渡すサーバー
7.1.2 サーバーとFunctionのパッケージング
7.1.3 CLI
7.2 イベント pull 型の FaaS 〜Knative Lambda Runtimes の利用例〜
7.2.1 AWS Lambda の Function(Go)
7.2.2 AWSLambdaとRuntimeInterface
7.2.3 knative-lambda-runtime
7.2.4 triggermesh/aws-custom-runtime
7.2.5 bootstrap
7.2.6 Tekton で生成するコンテナイメージ
7.3 イベント push 型の FaaS 〜OpenFaaS の Watchdog の利用例〜
7.3.1 WatchdogによるFunction制御
7.3.2 WatchdogとFunction同梱のDockerfile
KnativeのCLI

『Knativeソースコードリーディング入門 Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー』

Knativeの仕組みをより深く追おうとするときに、Kubernetesのカスタムリソースやカスタムコントローラーの枠組みを知っておくと追いやすくなります。本書では、Knativeはもちろん、Kubernetes自体の様々なソースコードを追いながらそれを解説しています。

以前mercari.goで発表した内容をより詳細に紹介したものです。

目次です。

第1章 KnativeとKuberentesの関係
1.1 Kubernetesの概要
1.2 Kubernetesの拡張方法
1.3 Knative の概要

第2章 KubernetesのAPI
2.1 APIサーバーの責務
2.2 Kind
2.3 APIグループ
2.4 バージョン
2.5 リソースとサブリソース
2.6 APIリクエストの処理フロー

第3章 APIクライアント
3.1 client-go
3.2 Object
3.2.1 TypeMeta
3.2.2 ObjectMeta
3.2.3 Spec
3.2.4 Status
3.3 ClientSet
3.4 Informer
3.5 APIMachinery
3.5.1 Scheme
3.5.2 RESTMapper

第4章 カスタムリソース
4.1 CR
4.2 CRD
4.2.1 categories
4.2.2 shortNames
4.2.3 subresources
4.2.4 additionalPrinterColumns

引き続き電子版、紙本 + 電子版がBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1568456

正誤表や増補改訂情報ページはこちらです。

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda 第2版』

技術書典5で出展したAWS Lambdaのユースケースに関する本も引き続き。

AWS Lambda周辺のエコシステムはこの本の最終更新後に大きな変更がありました。Amazon RDS Proxy with AWS Lambda、AWS Lambda VPC接続の改善、Provisioned Concurrency for Lambda Functionsは本の中でも触れられている課題の決定的な解決策です。少し本の内容が古くなってしまったものの、AWS Lambda(とSAM)をGo言語で学ぶ入門の1つとしては依然として有効ではないかと思います。

お陰様で商業版を出版したり、こちらもすでに第2版がBOOTHで購入できる状態になっています。

https://booth.pm/ja/items/1034858

GoとSAMで学ぶAWS Lambda

目次です。

第1章 環境構築
1.1 anyenv
1.2 anyenvupdate
1.3 goenvとGo
1.4 pyenvとPython
1.5 aws-cli
1.6 aws-sam-cli
インストールトラブルシューティング
1.7 saw
1.8 direnv
1.9 dep
1.10 gig

第2章 S3 イベントの活用
2.1 概要
2.2 S3
2.3 シーケンス
2.4 フォルダ構成
2.5 ソースコード
2.6 テスト
2.7 デプロイ
2.8 削除

第3章 SNS と SQS によるファンアウト
3.1 概要
3.2 SQS
3.3 SNS
3.4 シーケンス
3.5 フォルダ構成
3.6 ソースコード
3.7 テスト
3.8 デプロイ
3.9 削除
CloudFormationトラブルシューティング

第4章 API Gateway と DynamoDB を使った URL 短縮サービス
4.1 概要
4.2 APIGateway
4.3 DynamoDB
4.4 シーケンス
4.5 フォルダ構成
4.6 ソースコード
4.7 テスト
4.8 デプロイ
4.9 削除
DynamoDBのテーブル定義変更
LambdaとAPIGatewayのローカル実行

今後

回を追うごとにニッチな感じになってきた気がします。自分の興味のある分野の自由研究としてとても面白くはあるものの、技術書典9はポップでキャッチーなやつ書こうかなと思っています。

このページでは『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜』の正誤表と増補・改訂をお知らせします。

この本を手にとってくださった方がちょっとでも選んでよかったと思う本に育てていきたいので、章の追加なども楽しみにしていてください。

増補・改訂版は購入方法に応じて異なります。

  • ダウンロードカード: Googleドライブ。バージョン毎にフォルダが分かれています。
  • 技術書典のサイト: 技術書典サイトのマイページ。常に最新版をアップロードしています。
  • Booth: Booth購入ページの注文詳細画面。常に最新版をアップロードしています。

引き続きフィードバックお待ちしてます!@toshi0607

正誤表

PDFページ PDF反映 ePub版反映 MOBI版反映 修正日 version

増補・改訂

PDFページ 内容 PDF反映 ePub版反映 MOBI版反映 修正日 version
全般 Knative v0.14へのバージョンアップ done done done 2020/5/12 v2.0.0
全般 プロダクトのバージョン明記 done done done 2020/5/12 v2.0.0
全般 インストールされるコンポーネントの一覧追加 done done done 2020/5/12 v2.0.0
全般 CNCFlandscape上の位置付け追記 done done done 2020/5/12 v2.0.0
全般 カウプランさんのRe:VIEW Starterへの移行 done done done 2020/5/12 v2.0.0
8 API Gatewayとサービスメッシュコラム追加 done done done 2020/5/12 v2.0.0
21 Ingress APIの機能拡張コラム追加 done done done 2020/5/12 v2.0.0
21 L4からL7 LB移行のコラム追加 done done done 2020/5/12 v2.0.0
35 Ambassadorの提供機能一覧追加 done done done 2020/5/12 v2.0.0
39 AmbassadorのIR関連記述の詳細化 done done done 2020/5/12 v2.0.0
55 KourierのKnativeリポジトリでのリリース追記 done done done 2020/5/12 v2.0.0
60 Kourierの活用事例コラム追加 done done done 2020/5/12 v2.0.0
80 Envoyとgo-control-planeの未来コラム追加 done done done 2020/5/12 v2.0.0
89 所属の変更 done done done 2020/5/12 v2.0.0

リソース

技術書典7、無事終了しましたね!関わられたすべてのみなさんお疲れ様でした。

つぎの出展に備えて振り返りたいと思います。

本の内容についてはこちらにまとめています。

技術書典7で『Knativeソースコードリーディング』『Knativeの歩き方 第2版』『Goで学ぶAWS Lambda』を出展します #技術書典

Boothでも販売しています!

手にとってくださった方はこちらのページで変更内容をお知らせしていくのでぜひ見てみてください。

『Knativeソースコードリーディング入門』

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Knativeの歩き方』

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda』

『Goで学ぶAWS Lambda』の正誤表と増補改訂情報 #技術書典

謝辞

今回も妻に編集、表紙、デザイン、サークルカット作成、入稿(本とダウンロードカード)をお願いしました。毎回パワーアップしていてすごい。圧倒的感謝です。

今回はPOPも専用のを作ってもらいました!

執筆環境として、TechBoosterさんのTechBooster/ReVIEW-Template@atsushienoさんのatsushieno/vscode-language-reviewを今回も活用させていただきました。ありがとうございます!!

振り返り

Good

継続

Knativeの歩き方やAWS Lambdaから継続して足を運んでくださる方がいらっしゃって嬉しいと共にホッとしました。

Knative本の続きを読んでみようと思ってくださる方や、カエルと空の本を今回も読んでやろうと思ってくださる方がいらっしゃるのはとても励みになります。

Boothの購入履歴を見ていてもその継続性はたどれたりします。

一方で、過去作読んだがやめとこうと思った方もいらっしゃるはずです。技術力や表現力を磨きながら、手に取ってくださった方によかったなぁ、またつぎも読みたいなぁと思っていただけるようなアウトプットを出せるよう修行していくしかないです。

個人OKR上の成果

今回の原稿の個人OKR上の位置付けは

Objective 1「DIY FaaSのためのKnativeのユースケース、動作の仕組みを理解する」のKey Result 2「Knativeを使ったプロダクトでどう利用されているか説明できる」技術書典7執筆 既刊Knative本アップデートとKey Result 3「Knativeの主要機能の実装方法を説明できる」技術書典7執筆 新刊KubernetesのコントローラーをKnativeで理解するに紐づけていました。

既刊ではKnatieの各コンポーネントに何を足せばDIY FaaSになるのかを章を増やして説明することにしました。これは10月、12月のServelessDaysに向けてストレートにやるべきことだったので、7月のCloud Native Days Tokyo登壇向けて行った調査を踏まえてよい時間を過ごせました。

実装を追った新刊については、Knativeの利用法を追うだけでなく、動作の根本原理を理解したいという思いで書きました。

時間

当初Cloud Native Days Tokyoが終わる7月末〜9/15までで書く予定でした。しかし、8月末に海外登壇に挑戦することになったのと、予想外に準備に時間がかかり9月の2週間で準備 + 執筆することになりました。
それでも

  • 9月の夜の予定をServerless Meetup以外すべてブロックする
  • スマホゲームをクロノ・トリガー以外すべて削除する

などしながら新刊60ページ、既刊アップデートと10数ページ追加を終えたのは確保できた時間でできる精一杯だったかなと思います。

想定時間通りに使えたらよりよい検証、執筆ができたかはわからないです。

Challenge

時間

できる限りのことはしたものの、やっぱりしんどかったのは事実です。内容が自分の好きなことであったとしても余裕がない状態でぶつかり切ると内容に関係なく嫌いになるリスクや燃え尽きるリスクがあります。

今度出展するときはまずOKRに位置付けられる前提で、2ヶ月調査・執筆に割けないなら見送りも検討するとよさそうです。いや、書きたい。

部数

まだ家に送った分が到着してないので正確な数はわからないですが、320部刷って200部くらい残りました。年末にかけてのイベントがあるので多く刷ろうとしていたものの、印刷発注日時点で前回より被チェック数が伸びてない状況で刷りすぎ感がありました。

実際に刷ったのは

  • Knativeソースコードリーディング入門 200部
  • Knativeの歩き方 80部
  • Lambda本 40部

でしたが、Knativeソースコードリーディング入門は100部でよかったです。前回歩き方を手に取ってくださった方の人数に鑑みさすがに200はない…!他の本はほんの少し少なめでもよかったかもくらいでした。

発注時点で平和な気持ちでいられるくらいの気持ちの余裕が必要です。

数字は記事下の方にまとめます。

ServerlessDays Tokyo/Fukuokaでも頒布します!!!

頒布情報

書ける部分も書くの遅かったかもと思っています。頒布情報に限らず、サークルの数も増える中でいかに自分の出展情報にたどり着いていただくかは悩みどころですね。

ただ、Knativeを知りたい気持ちがある方がたどり着くのに十分な情報はTwitterで発信してると思い込んでいます。力を入れるにしても、普段からKnative自体を知る人が増え、面白いので一緒に勉強してみたいと思う人を増やして盛り上げてく方がいいのかなと思います。

「OAuth」「DNS」「AWS」「Kubernetes」「Knative」みたいな並べ方をしたときにKnativeでうおーってなる人の数は他よりずっとずっとずっと少ないですよね。その分Knativeの人として認知されやすいかもしれませんが、それでも母数が厳しいです。

今後

直近は『実践Knative』という本があったときに入ってそうな内容は見ていきたいなぁと思っています。個人のOKR上では年内にDIY FaaSを(Knativeで)作るということになっています。

そのプラットフォームがある前提で

  • 独自に構築したプラットフォームのユースケース(Knative単体ではなくて、そのプラットフォームでどんなアーキテクチャが実現できてどんな課題を解決できるのか)
  • 運用・監視
  • 開発フロ
  • プラットフォームのデバッグ
  • 権限管理

などの全体的な見通しを示せないと、仕事で使うなり、現実世界の問題を解決するプロジェクト・プロダクトであるということを示したりできないと思っています。

また、そもそもIstio(をはじめゲートウェイコンポーネントとして依存するもの)やKubernetes自体の知見なしに存在するプラットフォームではないのでその観点から自分の知識・経験は強化して臨む必要もあります。

KnativeのServingはRC2ということでGAも遠くはない状況なので、つぎの技術書典の頃にはきっとGAし、Knativeベースのプロダクトの数も今よりきっと増え、プロダクション利用も増えてるかもしれませんね。

本のテーマはOKRや自身が詳しくなっていきたい分野にすると決めているので、年明けくらいにまたその直近の3ヶ月、その後の技術書典が含まれるであろう3ヶ月のテーマと決めようと思います。

あと、今回のようなOSSを触るときに、リリースノートに載る程度主要な機能を追加できるようになりたいと強く思います。

数字の整理

売上

現金

内訳は後日!
現金: 47000円

後払い

  • Knativeの歩き方 第2版: 21冊
  • Goで学ぶAWS Lambda 第2版: 7冊
  • Knativeソースコードリーディング入門: 42冊

1000円 × 70部 = 70,000円

Booth

9/17〜9/23分

  • Knativeの歩き方 第2版: 12冊
  • Goで学ぶAWS Lambda 第2版: 3冊
  • Knativeソースコードリーディング入門: 13冊

1000円 × 28部 + 優しさ1500円 = 29,500円

原価

  • 本印刷: 79240円
  • 参加費(パトロン): 20000円
  • ダウンロードカード印刷: 940円

被チェック数

  • 8/26 6
  • 8/27 9:00 14
  • 8/28 23:00 21
  • 8/31 23:00 23
  • 9/3 0:20 26
  • 9/5 29
  • 9/6 11:00 29
  • 9/7 12:00 30
  • 9/9 19:00 34
  • 9/10 23:00 38
  • 9/13 23:00 41
  • 9/14 23:00 44
  • 9/16 23:00 46 印刷発注日
  • 9/17 23:00 53
  • 9/18 23:00 58
  • 9/20 23:00 64
  • 9/21 23:00 74
  • 9/22 7:50 79
  • 9/22 11:00 87
  • 9/22 11:50 90
  • 9/23 18:30 99

技術書典6の数字はこちら

技術書典5の数字はこちら

2019年9月22日(日)開催の技術書典7で3冊出展します!

カエルと空というサークル名で場所は「お12C」です。ぜひ遊びに来てください!

興味を持っていただけた方はサークルのチェックリストに登録しておいていただけると助かります。今後の印刷数の参考にします。

『Knativeソースコードリーディング入門 Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー』

今回の新刊はKnativeの実装についてです。Knativeの仕組みをより深く追おうとすると必ずKubernetesのカスタムリソースやカスタムコントローラーの話が出てきます。

以前mercari.goで発表した内容をより詳細にコード参照しながら解説します!

目次です。

第1章 KnativeとKuberentesの関係
1.1 Kubernetesの概要
1.2 Kubernetesの拡張方法
1.3 Knative の概要

第2章 KubernetesのAPI
2.1 APIサーバーの責務
2.2 Kind
2.3 APIグループ
2.4 バージョン
2.5 リソースとサブリソース
2.6 APIリクエストの処理フロー

第3章 APIクライアント
3.1 client-go
3.2 Object
3.2.1 TypeMeta
3.2.2 ObjectMeta
3.2.3 Spec
3.2.4 Status
3.3 ClientSet
3.4 Informer
3.5 APIMachinery
3.5.1 Scheme
3.5.2 RESTMapper

第4章 カスタムリソース
4.1 CR
4.2 CRD
4.2.1 categories
4.2.2 shortNames
4.2.3 subresources
4.2.4 additionalPrinterColumns

お値段は前回に引き続きこんな感じです。

  • 最初の200冊は紙本 + ダウンロードカード: 1000円
  • あとはダウンロードカード: 1000円

実はすでにBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1568456

当日会場に来れない方や今すぐに読みたい方、お待ちしてます!

正誤表や増補改訂情報ページはこちらです。

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Knativeの歩き方 KubernetesからServerlessを訪ねて』

既刊をパワーアップしてお届けします!

一番大きな更新ポイント(章追加)は「Knative Lambda RuntimesとOpenFaaSのWatchdogから学ぶ、KnativeとFaaSプラットフォームの間を埋めるもの」です!

Knativeの概要記事は多いものの、それを実際どう活用してプラットフォームを構築するのかという話はそれほど出てないのではないかと思います。

本書ではその辺を見つつ解説します。

初版時点ではv0.5だったKnativeも今やv0.8、v0.9やGAも間近なのでアップデートもしました。

Buildが廃止されTektonに引き継がれた点も触れています。

こちらもすでにBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1309468

すでにBoothやダウンロードカードセットで初版をご購入いただいている方も購入ページやダウンロードURLからダウンロードできるできるようになっています。

ボリュームも増えているので、ぜひお読みになってください。

  • 最初の70冊は紙本 + ダウンロードカード: 1000円
  • あとはダウンロードカード: 1000円

正誤表や増補改訂情報ページはこちらです。

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda 第2版』

技術書典5で出展した既刊の第2版も50部持っていきます。

  • 最初の30冊は紙本 + ダウンロードカード: 1000円
  • あとは紙本: 1000円

お陰様で商業版を出版したり、こちらもすでに第2版がBOOTHで購入できる状態になっています。

https://booth.pm/ja/items/1034858

GoとSAMで学ぶAWS Lambda

ServerlessDays Tokyo 2019

ServerlessDays Tokyo 2019では僕が講師を務めるKnativeハンズオンを実施予定です。

そちらも奮ってご参加ください!

このページでは『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補・改訂をお知らせします。

この本を手にとってくださった方がちょっとでも選んでよかったと思う本に育てていきたいので、章の追加なども楽しみにしていてください。

引き続きフィードバックお待ちしてます!@toshi0607

更新情報や新刊情報もこのアカウントでつぶやきます。

正誤表

ダウンロードカード経由の方は

PDFページ PDF反映 ePub版反映 MOBI版反映 修正日 version
44 カスタムコントーラー カスタムコントローラー

増補・改訂

PDFページ 内容 PDF反映 ePub版反映 MOBI版反映 修正日

リソース

技術書典6、無事終了しましたね!関わられたすべてのみなさんお疲れ様でした。

つぎの出展に備えて振り返りたいと思います。

本の内容についてはこちらにまとめています。

技術書典6で『Knativeの歩き方 KubernetesからServerlessを訪ねて』と既刊第2版を出展します #技術書典

手にとってくださった方はこちらのページで変更内容をお知らせしていくのでぜひ見てみてください。

早速修正がありますすいません…

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

謝辞

今回も単著と言いつつも妻に編集や表紙デザイン、サークルカット作成、入稿(本とダウンロードカード)をお願いしました。

初めてだらけの前回と比べると多少平和だった感はあるものの、4/8入稿に対して4/7の夜まで粘ってしまったので丁重に労わせていただく所存です。

執筆環境として、TechBoosterさんのTechBooster/ReVIEW-Template@atsushienoさんのatsushieno/vscode-language-reviewを今回も活用させていただきました。ありがとうございます!!

振り返り

Good

テーマ

こちらでも書きましたが、Kubernetesをある程度理解しないと先に進めないKnativeをテーマにしたことは仕事にも大いに役立ちました。

Serverless Meetup Tokyo #11 で「入門 Knative 〜KubernetesとServerlessとの出会い〜」を話してきました #serverlesstokyo

さらに、サーバーレスと謳っているとはいえ最初は愛しのLambdaには程遠く感じたKnativeも、愛しのLambdaに感じる愛しさの根源を見つめ直し、それをKubenretesの利用者に届けたい気持ちを感じとれたことは今後の検証の方向付けになりました。

CloudNative Days Tokyoでも「Knativeで実現するKubernetes上のサーバーレスアーキテクチャ」というタイトルで発表させていただけることになったので進めていきます。

その検証の課程で『Knativeの歩き方 KubernetesからServerlessを訪ねて』をよりよくしていきます。

具体的にはつぎのような内容の章を追加します。

  • Knativeのコンポーネントを組み合わせたユースケース
  • Knativeを使ったプロダクトを利用することで「開発者にとってより機能・サービスのユーザーに対する価値向上」に集中できるか
  • Knativeで作る俺たちのLambda

そして何より、普段の仕事で感じるような感じないような課題と自分の趣味の交点がこのあたりな気がするので楽しい!!楽しいよ!!!

わくわくする技術との出会いが何よりも大きな価値です。

って書いたら振り返りもう満足した。

BOOTH事前販売

技術書典5では本番後に販売を開始しましたが、今回は入稿日に販売を開始しました。

Knativeの歩き方 KubernetesからServerlessを訪ねて(PDF、ePubセット版) #技術書典

前回そうしなかったのは「本来紙本を買ってくれるはずの人が紙本でなくBOOTHに流れ、紙本が売れ残るのがこわかったから」です。

BOOTHで事前に買ってくださる方は当日参加できない事情がある(別の用事がある、興味があるが会場が遠い)方のような気がしたのと、紙本売れ残るリスクそんなに感じなくなりました。

ABテストできるわけではないので何とも言えないですが、収益が目的ではないので告知タイミングで欲しいと思ってくださった方が当日を待たずその場で手に取れる方が幸せだと思うので今後もそうします。

うれしい感想

いただいた感想が嬉し過ぎて本当に書いてよかったなぁと思いました。

前書きに始まるKnativeを僕が書く必然性(僕が書くのにふさわしいとかそういう意味ではない)や、それぞれのコンポーネントのサンプルの登場させ方、順番、組み合わせ方。

中身としてはREADMEを超えるものにはなりませんでしたが、話の流れとして自然になるようにする部分にはこだわりました。

そういう部分や愛情が伝わったのは嬉しいです。

そしてKnativeを一緒にわいわいやる仲間が増えていくのは財産です。

本のタイトル

お気に入りです。

Serverless meetupを諦めなかったこと

去年のServerless ConfはLTやってみたい!と思っていたものの、技術書典5の準備と重なったり、それを発表できる形に整理する方法も思いつかずただただ指をくわえて見ていました。

今回は3月頭という技術書典1ヶ月前のタイミングでのServerless Meetup登壇を1つのマイルストーンとし、自分の認識もブラッシュアップしながら進めることができました。

Serverless Meetup Tokyo #11 で「入門 Knative 〜KubernetesとServerlessとの出会い〜」を話してきました #serverlesstokyo

継続して取り組みたい大きなテーマがあるときはアウトプットの場が分断されずいい感じに繋がるので継続したいです。

最新バージョンへの追従を諦めなかったこと

入稿数日前に0.4系から0.5系へのアップデートがリリースされ、1つのコンポーネントのアーキテクチャが大きく変更されました。

進捗も逼迫していたので迷ったのですが、開発に勢いがありどうせすぐ情報が古くなるなら可能な限り新しいものを届けたいと思い追従することにしました。

もし古いままだと、本を読みきったと思ってもまた別途新バージョンをキャッチアップする必要が生じやや二度手間感が生じます。

それよりは早くユースケースに進んでわいわいして欲しい。結果期限ギリギリになり妻には迷惑をかけてしまったので丁重にry

CloudNativeコミュニティの方々との交流

事前にテーマの近い人が知れる(そういう風に配置していただける)ことで事前にTwitterでいろんな方と交流できたのもよかったです。当日を迎えるのが楽しみになる要素の1つでした。

CloudNativeコミュニティやその勉強会、Meetupでもぼっちにならない…!ありがとう!!!

謎の試み

何に1000円を支払っていただくのか

前回比ページ数が減った上で同じ値段なの気が引けると思っていたこともあったのですが、そう考えるのはやめました。

検証された最新技術が本当に必要最低限の分だけまとまっていて、安心して気軽に入門できるのも1つの価値です。

当日実際手にとってみて、「この分量で1,000円かよ」って思われるなら別にそれでいいなぁと。

ソフトウェアをコードの行数で値付けする・しないと似たような話かもしれません。

あと僕は一度買ってくださった方には増補改訂版(電子)を無料で配布しています。

目の前にある紙に1,000円払ってくれと言ってるわけでもありません。

「紙を渡して1,000円を受け取る」しか見ないのは悲しいし、本質から遠いです。

Challenge

うやむやにしていること

期限あるものに間にあわせるにあたり妥協している部分があります。

たとえば、詳細は割愛する形でリンクだけのっけているようなものを全部完全理解しているわけではないし、公式のREADMEに書いてる仕様の実装全部追ってるわけでもありません。

今後ユースケース中心に見ていくにあたり、それが楽しくて疎かになりそうだが理解する時間を確保すべきだなぁと思う部分は個別に整理するなり、Knative本に唐突にコラムとして追加するなりしたいです。

  • Istio、Envoy、サービスメッシュ
  • IstioとKnative Serving(、Eventing)の関係
  • 実装としてのKnative
  • Kubernetesで特に弱いService周りの仕様、基礎事項
    • DNS、kube-dns
    • L4/L7
    • iptables
    • Ingress
    • kube-proxy
    • パブリッククラウドのLB
  • イベントドリブン、リアクティブなアーキテクチャ概論
  • 分散システムのアーキテクチャ

無限に学ぶことがあって楽しいですね。

実装面は5月の後半に少しGoにフォーカスした内容で30分くらいお話しすることが決まりつつあるのでいい流れです。

OGP画像

圧倒的失敗。せっかく作った本を視覚的に伝えるチャンスなのにもったいない。

OGP画像に最適なサイズと、これらを使えばキャッシュクリアできる知見を得たのでよかったです。

過去に投稿した分も更新されます。再投稿してもいいし、再投稿しなくてもいい。

https://cards-dev.twitter.com/validator
https://developers.facebook.com/tools/debug/og/object/

こういう感じに整理するのすごく見やすくていいなぁと思いました。何を頒布しているかわかりやすい。

コミュニケーションパス

何かあったら@toshi0607まで!みたいなのわざわざメンションしてコミュニケーションすることもないのかな。結構頻繁に「Knative」でTwitter検索してるのでだいたい拾えている気もする。

と考えていたところこんなツイートが!

ハッシュタグでゆるくつぶやいていただけたら拾いますくらいの方が楽に感じたり、何か言葉を投げかけてくれる人がいるかもって思いました。

ハッシュタグ作りやすいタイトルだと便利、しかしハッシュタグに最適化したタイトルつける必要もないみたいな姿勢でいけたらと思います。

みんなその辺どうしてるんやろうと思ってBOOTHのぞいたら完璧な方がいらっしゃって感動しました。

りあクト! TypeScriptで始めるつらくないReact開発 第2版

ハッシュタグ検索結果のURL貼っておくの正しいっぽいし、それに限らず親切な作りになっていて勉強になります。

会いに行けるアイドルならぬ、タイムライン上にいる著者をたくさん生み出した技術書典。

気軽に絡んで技術もふもふわいわい盛り上がりたいものです。

新刊の部数

数字の整理は後からしますが、Knative本の方は100部刷って完売が14時過ぎでした。

一方Lambda本は既刊の第2版で50部刷ったものの完売が終了直前。

Lambda本はちょうどいい具合だったと思うのですが、Knative本は150部刷ったらその分頒布できたのかわからないし、毎回テーマも異なるのでなんとも言えないですね。

ただ言えるのは、紙本が当日残ってもそれを必要としてくれる人に届ける手段はいろいろあるので、ちょっと余るだろうなぁくらい刷ってみるのも試してみようと思います。

金銭面では紙よりも電子で買っていただける方がよいかもしれませんが、自分は技術書はほぼ紙でしか読まないし、読もうと思ってくださった人が読みやすい形で手にしていただけるのが一番です。

査読

事前に募集したものの、その時メンションしてくださった方にすぐ返せず、いざというタイミングで探したらメンションはなくなっていました。

興味持ってくださる方は大切にしつつ、ゆるぼで集めるのは厳しく感じます。

紙本になる前に読んで欲しいケースもなったあとに本でほしいケースもどちらもあるので、目的を明確にしてお願いする形にすることにしました。

Knativeの動向

Cloud NextでCloud Run(Knativeを利用したプロダクト)が出たのは追い風になったと思うのですが、その追い風や発表直前のアップデートは頑張れば読めたかもしれなです。

発表前にBOOTHで販売を開始していたのはすごくよかったと思います。一方でこの点考慮できていれば紙本もうちょっと刷ろうと思っていた可能性が高いです。

今後

このとおりです。振り返りの「テーマ」と「うやむやにしていること」あたりをいい感じにやっていきたいと思っています。

  • Knativeのコンポーネントを組み合わせたユースケース
  • Knativeを使ったプロダクトを利用することで「開発者にとってより機能・サービスのユーザーに対する価値向上」に集中できるか
  • Knativeで作る俺たちのLambda
  • Knativeの実装
  • IstioとKnative Serving(、Eventing)の関係
  • 分散システムのアーキテクチャとKnative

めっちゃ楽しそう。楽しそう…!!!

数字の整理

売上

  • 本 + ダウンロードカード(PDF、ePub、MOBI): 1000円 × 100部(Knative) + 1000円 * 50部 = 150,000円
  • ダウンロードカード: 1000円 × 16枚 = 16,000円
  • BOOTH販売(PDF、ePub。MOBIは希望者に送付、Knative本を公開した4/8〜この記事を書いている4/20まで): 1000円 × 40部(Knative) + 1000円 × 11部(Lambda本) = 51,000円

-> 217,000円

きっとBOOTHはまだまだ伸びる…!BOOTHでのそう販売数は累計113部(Knative: 40部、Lambda: 73部)です。

かんたん後払いは 81/166(100 + 50 + 16)でした。半分くらい!

41/124で3割くらいだったので普及が進んでますね。あれだけ混んでても2、3件ちょっとアプリUI更新遅れたくらいで不自由をほぼ感じず、管理する側も便利でした!

原価

紙本印刷費(日光企画さん): 23,600円(Knative) + 21,890円(Lambda) = 45,490円
ダウンロードカード印刷費(プリスタさん): 1,700円(Knative)
技術書典参加費: 7,000円

-> 54,190円

Lambda分は前回とQRコード変えてないので残り分をそのまま利用、小物も追加なしです。

執筆関連の人の稼働という観点では、技術書典なくても検証するしまとめもするので皆無です。

表紙やダウンロードカード、サークルカットのデザインは妻がやってくれましたが、仕事として他の方に依頼するとけっこうかかる気がします。

大丈夫そう!

被チェック数

雑に貼ります。前回は最高127だったので前回よりは手にとっていただけそうな雰囲気はあるものの、当日ブースまでたどり着いて見つけていただくまでには混み具合なども影響すると思います。

あと複数頒布するとどちらにどの程度興味をもっていただけてそうなのかがわかりません。

来場者数も増えて母数増えたのかなとも思ったのですが、入場者数自体は前回と大差なさそうでした。

前回参加者10340人、今回10260人、運営や出展者込み。

  • 20190319 2227 16
  • 20190320 2353 18
  • 20190322 1530 24
  • 20190323 1850 25
  • 20190324 1925 26
  • 20190325 1904 29
  • 20190326 2227 31
  • 20190327 2121 34
  • 20190328 1819 34
  • 20190329 1100 35
  • 20190330 0931 36
  • 20190331 1038 38
  • 20190401 1224 39
  • 20190402 2245 42
  • 20190403 0853 42
  • 20190404 1022 47
  • 20190405 2054 48
  • 20190406 2139 50
  • 20190407 2211 56
  • 20190408 1842 57
  • 20190409 0826 66
  • 20190410 2128 82
  • 20190411 2358 96
  • 20190412 1357 104
  • 20190413 1931 138
  • 20190414 0836 185
  • 20190414 1400 207

技術書典5の数字はこちら

まとめ

技術書典好き!!!