技術書典13に『Google Cloud Platformで学ぶTerraform』の基礎編と実践編の第2版をもって出展します!

  • オフライン開催
    • 会期:2022/09/11 (日)
    • 会場:池袋サンシャインシティ 展示ホールD(文化会館ビル2F)
  • オンライン開催
    • 会期:2022/09/10 (土) 〜 2022/09/25(日)
    • 会場:技術書典オンラインマーケット

最後にオフライン会場で出展したのは、2019年の技術書典7。2年ぶりのオフライン会場めちゃくちゃ楽しみにです!

「か10」にいます。

販売チャネルとラインナップ

今回第2版を出す2冊は印刷します!初紙本化!技術書典8以降も継続的に出展し、新刊をお届けしてきました。しかし、オンラインマーケットのみ参加ということで、紙本印刷はすべて見送ってきました。

技術書典13ではつぎのラインナップ、部数、価格を予定しています。電子版は継続販売しますが、紙本は期間中のみなのでご注意ください。価格設定も異なります。

技術書典オフライン開催

池袋サンシャインシティで2022/09/11 (日)に開催されるオフラインイベントでは、3種類の本がご購入いただきます。オンラインの価格据え置き+αで、紙本もついてくるというお得な感じになっています。

  • 『Google Cloud Platformで学ぶTerraform 〜基礎編〜 第2版』
    • 紙本 + 電子版(PDF、EPUB)のQRコードカード: 1000円 (先着100名)
    • 電子版(PDF、EPUB)のQRコードカード: 1000円 (先着100名)
  • 『Google Cloud Platformで学ぶTerraform 〜実践編〜 第2版』
    • 紙本 + 電子版(PDF、EPUB)のQRコードカード: 1000円 (先着80名)
    • 電子版(PDF、EPUB)のQRコードカード: 1000円 (先着20名)
  • 『Knativeソースコードリーディング入門』
    • 紙本 + 電子版(PDF、EPUB)のQRコードカード: 500円 (先着xx名)
    • 電子版(PDF、EPUB)のQRコードカード: 500円 (先着xx名)

上記すべて売り切れた場合でも、オンラインで出品している商品の現金購入、かんたん後払いを受け付けます。

技術書典オンライン開催

技術書典オンラインマーケット自体は常設です。そのため、2022/08/29時点で、電子版はすべてご購入いただけます。

2022/09/10 (土) 〜 2022/09/25(日)期間中は、紙本もご注文いただけるようになる予定です。技術書典の「あとから印刷」を利用するため、紙本がお手元に届くのは期間後です。

BOOTH

2022/08/29時点で、電子版はすべてご購入いただけます。

GCPで学ぶTerraformの基礎編・実践編については、オフラインイベントで在庫が発生した場合のみ紙本も販売します。

GCPで学ぶTerraform 基礎編・実践編 第2版紹介

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

(以前書いた紹介文より)

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

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

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

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

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

https://toshi0607.com/event/learning-terraform-with-gcp-basic-edition-update/

登場するほとんどのサンプルコードも、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 リファクタリング
 moved
terraform state mv
6.7 まとめ
[コラム]リソースの種類の変更

あとがき

『Google Cloud Platformで学ぶTerraform 〜実践編〜 第2版』

基礎編の続きです。基礎編の内容理解を前提とし、モジュールの設計、リント、バリデーション、テスト、CI/CDなどのより実践的な内容をお届けします。

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

https://toshi0607.com/event/learning-terraform-with-gcp-practical-edition-update/

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

toshi0607/Learning-Terraform-with-GCP
toshi0607/GKE-Microservices-Terraform-project-template
目次です。

第1章 はじめに

第2章 環境構築
2.1 GCPアカウント
2.2 GCPプロジェクト
2.3 Google Cloud SDK
2.4 tfenv
2.5 Hashi CorpTerraform
2.6 まとめ

第3章 2層アーキテクチャ
3.1 アーキテクチャの概要
3.2 アーキテクチャの詳細
3.3 Terraform化
3.4 安全な変更
3.5 まとめ

第4章 アーキテクチャの全体像
4.1 アーキテクチャの概要
4.2 Terraformモジュール
4.3 まとめ

第5章 Projectモジュール
5.1 モジュールの機能
5.2 組織の作成
5.3 モジュールの開発
5.4 まとめ
[コラム]GCPプロジェクトのクオータ緩和申請

第6章 Clusterモジュール
6.1 モジュールの機能
6.2 モジュールの開発
6.3 まとめ
[コラム]モジュールのパス
[コラム]モジュールの埋め込みとコンポジション

第7章 Microservicesモジュール
7.1 モジュールの機能
7.2 モジュールの開発
7.3 まとめ

第8章 リントとバリデーション
8.1 terraform fmt
8.2 terraform validate
8.3 TFLint
8.4 Conftest
8.5 まとめ

第9章 テスト
9.1 Terratest
9.2 Projectモジュール
9.3 Microservicesモジュール
9.4 まとめ
[コラム]テストの磨き込み

第10章
10.1 Cloud Build
10.2 事前準備
権限付与
Step実行用のコンテナイメージ
CloudBuildとGitHubの連携
10.3 ソースコードと変更差分の取得
10.4 Terraformの検証‧実行
10.5 モジュールのテスト
10.6 まとめ
あとがき

2020年12月26日(土)〜2021年1月6日(水)に開催される技術書典10で6冊出展します!

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

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

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

『Google Cloud Platformで学ぶTerraform 〜実践編〜』

前回出した基礎編の続きです。基礎編の内容理解を前提とし、モジュールの設計、リント、バリデーション、テスト、CI/CDなどのより実践的な内容をお届けします。

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

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

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

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

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

目次です。

第1章 はじめに

第2章 環境構築
2.1 GCPアカウント
2.2 GCPプロジェクト
2.3 Google Cloud SDK
2.4 tfenv
2.5 Hashi CorpTerraform
2.6 まとめ

第3章 2層アーキテクチャ
3.1 アーキテクチャの概要
3.2 アーキテクチャの詳細
3.3 Terraform化
3.4 安全な変更
3.5 まとめ

第4章 アーキテクチャの全体像
4.1 アーキテクチャの概要
4.2 Terraformモジュール
4.3 まとめ

第5章 Projectモジュール
5.1 モジュールの機能
5.2 組織の作成
5.3 モジュールの開発
5.4 まとめ
[コラム]GCPプロジェクトのクオータ緩和申請

第6章 Clusterモジュール
6.1 モジュールの機能
6.2 モジュールの開発
6.3 まとめ
[コラム]モジュールのパス
[コラム]モジュールの埋め込みとコンポジション

第7章 Microservicesモジュール
7.1 モジュールの機能
7.2 モジュールの開発
7.3 まとめ

第8章 リントとバリデーション
8.1 terraform fmt
8.2 terraform validate
8.3 TFLint
8.4 Conftest
8.5 まとめ

第9章 テスト
9.1 Terratest
9.2 Projectモジュール
9.3 Microservicesモジュール
9.4 まとめ
[コラム]テストの磨き込み

第10章
10.1 Cloud Build
10.2 事前準備
権限付与
Step実行用のコンテナイメージ
CloudBuildとGitHubの連携
10.3 ソースコードと変更差分の取得
10.4 Terraformの検証‧実行
10.5 モジュールのテスト
10.6 まとめ
あとがき

『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 〜実践編〜 第2版』の正誤表と増補・改訂をお知らせします。

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

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

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

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

正誤表

PDFページ PDF反映 ePub版反映 修正日 version
6 switch use done done 2021/1/10 v1.0.1
41 Secert Secret done done 2021/1/10 v1.0.1
77 gsutil mb -l ASIA-NORTHEAST1
-p 【YOUR PROJECT】 【YOUR PROJECT】
gsutil mb -l ASIA-NORTHEAST1 -p
【YOUR PROJECT】 【YOUR BUCKET】
done done 2021/1/10 v1.0.1
77 gcp_project = 【YOUR PROJECT】 (削除) done done 2021/1/10 v1.0.1
83 [PROJECT_NUMBER]@cloudbuild.
gserviceaccount.com@cloudbuild.gserviceaccount.com
[PROJECT_NUMBER]@cloudbuild.
gserviceaccount.com
done done 2021/1/10 v1.0.1
37 service microservice done done 2022/8/28 v2.0.0
69 tf validate terraform validate done done 2022/8/28 v2.0.0

増補・改訂

PDFページ 内容 PDF反映 ePub版反映 修正日 version
36 クレデンシャル情報の設定追記 done done 2021/1/10 v1.0.1
8章 リソース名にexampleサフィックスを追加 done done 2021/1/10 v1.0.1
全体 バージョン更新 done done 2022/8/28 v2.0.0
18 scopesをcloud-platformに done done 2022/8/28 v2.0.0
23 key_algorithmを削除 done done 2022/8/28 v2.0.0
45 identity_namespace -> workload_pool done done 2022/8/28 v2.0.0
47 GKE_METADATA_SERVER -> GKE_METADATA done done 2022/8/28 v2.0.0
47 oauth_scopesをcloud-platformに done done 2022/8/28 v2.0.0
59 Artifact Registry GA done done 2022/8/28 v2.0.0
69 GCPのルールセットGA done done 2022/8/28 v2.0.0
71 TFLint初期化にtflint --initを利用 done done 2022/8/28 v2.0.0
72 TFLintデフォルトのルールセットを追加 done done 2022/8/28 v2.0.0
73 Conftestサポート対象を更新 done done 2022/8/28 v2.0.0
83 公式のモジュールテスト状況を追加 done done 2022/8/28 v2.0.0
86 go mod利用方法を更新 done done 2022/8/28 v2.0.0

リソース

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

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

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

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

技術書典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 〜基礎編〜 第2版』の正誤表と増補・改訂をお知らせします。

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

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

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

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

正誤表

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

増補・改訂

PDFページ 内容 PDF反映 ePub版反映 修正日 version
全体 バージョン更新 done done 2022/8/28 v2.0.0
16 ロックファイル追加 done done 2022/8/28 v2.0.0
71 etcdサポート終了 done done 2022/8/28 v2.0.0
86 GCE作成コマンド化 done done 2022/8/28 v2.0.0
90 moved追加 done done 2022/8/28 v2.0.0
96 tgmigrateコラム追加 done done 2022/8/28 v2.0.0

リソース