プラットフォームエンジニア2年目の2021年を振り返ります。2020年にマイクロサービスのプラットフォームの開発・運用に携わり始めてから、丸2年が経過しました。2021年は、本業ではインフラからアプリケーションまで影響範囲の広い大きめのプロジェクトを担当しました。それに加え、複業ではSREに挑戦して修行しました。

2020年

駆け出しプラットフォームエンジニア1年目

2021年

2年目にやったこと

本業では、主につぎのプロジェクトに携わりました。

  • Workload Identity導入・移行
  • CIのセキュリティ強化
  • Cloud SQL IAM database authentication検証
  • GCPとTerraform本配布

Workload Identity導入・移行

クラスタ上のサービスアカウントキーを撲滅すべく、GKEのWorkload Identityを有効化し、クラスタ上の全サービスを移行するプロジェクトです。

Google Cloud Platformで学ぶTerraform 〜実践編〜を書くときに、動作検証やTerraformモジュールのクラスタ側・マイクロサービス側の実装を通じて雰囲気は把握しているつもりでした。しかし、想像よりはるかにいろいろありました。

テストクラスタ上のテンプレートマイクロサービスサービスを使った各ユースケースを検証や社内外で仕様・制約調査しながら、移行計画を含むDesign docを書いて議論スタートです。クラスタ上のほとんどのサービスがGCPにアクセスするため、移行の対象範囲はほぼ全マイクロサービスです。アクセスするにあたってApplication default credentials(ADC)を適切に利用しているかを確認するため、Sourcegraphを利用し、数百マイクロサービス分のKuberetesのマニフェストとアプリケーションの実装内容の調査を進めました。その中で、サービスアカウントキーをADC外で活用して署名しているユースケースがいくつか見つかったため、ライブラリを管理しているチームに更新を依頼したり、アプリケーションの実装の変更手順をドキュメント化したりして移行に備えました。

導入を開始するにあたっては、各組織のエンジニア向けの全体集会で背景などをプレゼンしたり、ドキュメントを整備したりしました。初期段階で移行してくれる参加チームを募り、ベータリリースステータスでフィードバックを集め、Terraformの実装、ドキュメントなどに反映します。GAさせた後は、移行に必要な作業の重さでグループ分けをして期限を定め、移行サポート専用のSlackチャンネルでサポートしながら進めていきました。

今回の導入・移行は、一括で一様に設定変更のPRを大量に作成して完結するものでなく、ほとんどのチームの多大な協力を必要としました。すでに社内で構築された仕組みで効率よく調査できた部分や、現在進行系で整備されてるしくみで今後より低コストで移行できるようになっていきそうな部分もあります。今後もプラットフォーム全体に影響ある機能の導入やそのための移行をすることはあるので、移行しやすさや技術選定が可逆的か不可逆的かなどを意識してやっていこうと思います。

CIのセキュリティ強化

これも移行を伴うものです。従来のものを検討漏れなく段階的に廃止していく難しさや、(やりづらくても)問題発生時の切り戻しをいかに実現性高く準備すべきか、できる限りの移行自動化などに学びがありました。

Cloud SQL IAM authentication検証

Cloud SQL IAM データベース認証の検証と導入手順のドキュメント準備を行いました。比較的新しい機能において、どのスコープで導入すべきか、導入と見送りに線を引く基準はなにか、見送るにしてもどういう条件が揃えば導入したいか、そのロードマップ(揃わなかった条件はいつか満たされるのか)の情報をどう得るかというところに学びがありました。

GCPとTerraform本配布

開発者がマイクロサービスを開発するにあたり、多くの必要なリソースはTerraformモジュールで作成されます。しかし、各チーム固有のリソースは書いてもらわないといけないため、それを少しでも楽にしてもらうべく2020年に2冊の本を書きました。

私がマイクロサービス開発をし始めたとき、Terraformのplanの見方や書き方がよくわからなかったり、Terraformの本はたいていAWSベースで書かれていたりで、GCPもそれほど詳しくない中キャッチアップしづらいという問題意識がありました。それを踏まえて書いたので、社内のオンボーディング資料にすべく配布しました。効果はある程度測定したかったのでGoogleフォームで申し込みをしてもらったところ、述べ130人弱のメンバーに受け取ってもらえました。

チームメンバーから「なんとなく触ってた会社のTerraform moduleがちゃんとわかるようになった。CIが出してくれる反映差分もできるようになった」というおすすめを頂いて、読んでみたいと思いました。

というメッセージ付きで申し込んでくださった方もいて、書いてよかった、配ってよかったなぁと思います。業務経験は最大限活かしつつも、外に出せる程度に簡略化・抽象化して書いたので、今後も活用していきます。

複業

2021年は「旗を立てる」をキーワードに複業に取り組みました。

旗を立てる2021年

エンジニアとしてのキャリアの中では、開発基盤やインフラに携わった期間は相対的に短めです。闘い抜く技術力を高めるためにも、本業以外でもそれらの業務に携わりたいと考えるようになりました。技術発信やその他の研鑽ではなく、業務という形式にこだわったのは、座学に偏りがちな私自身の性格を踏まえてのことです。

具体的には、2組織でつぎの業務に携わりました。

  • kustomizeの導入
  • kubernetes-external-secretsの導入
  • インフラの防災訓練
  • マイクロサービス化検討サポート
  • gRPCのprotoと生成コード管理基盤整備
  • マイクロサービスとインフラ課題整理とOKR決め
  • オブザーバビリティ整備
  • セキュリティ脆弱性対応

詳細はOffersMagazineに寄稿する形でまとめています。

複業SREとして広げる課題解決の幅と深さ。期待値以上の成果を上げるまでに何をしたか

業務時間の大半を過ごす組織への貢献最大化を主眼に置きつつも、組織に依存しない形で自分が何者かを定義し、目指す方向に歩みを進めていくことのよさを感じた1年でした。

キャッチアップとアウトプット

業務とは別に、プライベートOKRで四半期毎に身につけたいことを決めて取り組みました。キャッチアップすべきことは無限にあるので、「この四半期はこれ以外はやらない」をはっきりさせる意味合いが強いです。

OKRは、各記事でなぜそれが達成したいのかや、どの程度達成したのかなどの振り返りと合わせてまとめています。

2021年は、大学院でコンピューターサイエンスを学ぶための出願準備が多めでした。noteで振り返ったり、計画を立てたりしながら進めています。

出願の動機(本音)は、「もしいま働かなくてもいいとしたら、コンピューターサイエンスをしっかり勉強してみたい」です。しかし、いざ履修したい科目を挙げていくと、現在のプラットフォームエンジニアリングに深く関わる分散システムの理論と実装、クラウドコンピューティングの実装、OS、コンパイラなど、低レイヤーの理解を一歩深めるものが多かったです。OKRで目標に据えるのはもちろん、プラットフォームエンジニアのキャリア上も重要なものとして位置づけていくことになるでしょう。

資格

2021年は1つだけ取得しました。

GCPのネットワークとセキュリティは、資格も活用して体系的に論点をおさえておきたいと思っています。

執筆

年末にGoの本が技術評論社さんから出版されました。

自分が担当した分については、以前ソフトウェアデザインに寄稿したものを更新したのみです。技術書典でも新刊を出せないのが続いており、少しさびしいです。

技術書

チームの人のおすすめリスト(2021年2020年)を読んだりしながら、自分なりに読書リストを作って進めています。意識的にOKRに関連させるようにもしています。これら以外は読まないというわけでもないですが、読むのが速くないので特に大事なものに絞る必要があります。

Platform Engineerへの闘争🐸

リストの中で読み終わった本。

登壇

Open Policy Agent Rego Knowledge Sharing Meetupで久々に登壇しました。

2022年

2022年は、Ubieという会社にSREとして転職します。インフラまわりの技術スタックで共通していることもあれば、SREとプラットフォームチームの役割分担、組織(事業特性)毎にSREが別、プラットフォームチームが領域毎に別だったなど、メルカリの組織と性質・フェーズが異なるので、より広い役割が求められるでしょう。これまで経験のないことも、素早くキャッチアップして貢献していこうと思います。

プラットフォームエンジニア1年目の2020年を振り返ります。大変だったこと、うれしかったこと、キャッチアップを加速させるためにやったことなど。

2020年

異動

2020年に、マイクロサービスを開発するためのプラットフォームを開発・運用するチームに移りました。

Software Engineer, Microservices Platform

2019年までは、そのプラットフォーム上で稼働するマイクロサービスを開発・運用していました。2018年9月の入社当初、GCP、Kubernetes、Goの業務経験がなかった状態で設計〜リリースまでを担う中で、プラットフォームが提供する機能に大いに助けられました。

一方で、サーバーレスなテクノロジーが好きだったり、Kubernetesを学ぶ中でKnativeに出会ったりしたことで「マイクロサービス開発者から見たプラットフォームの利便性」はもっと向上できるのではないかと思い、Microservices Platformチームに参加させてもらうことにしました。

1年目にやったこと

列挙するとつぎのようプロジェクト・役割に携わりました。

  • オンサポート(複数回)
  • Istioワークショップ
  • Network Policyの導入
  • Disaster recoveryテスト
  • リライアビリティ強化

6週間毎に、担当が変わります。

オンサポート

最初はオンサポート(とオンボーディング)でした。マイクロサービス開発者から寄せられるサポート依頼に対応します。オンボーディング観点では、アーキテクチャやリポジトリなどには馴染みがあったので、KubernetesクラスターやTerraform周りのオペレーションや、プラットフォームチームが開発・運用しているコンポーネントのキャッチアップが中心でした。

Terraformは何も知らなかったり、KubernetesのオペレーションはマイクロサービスのデバッグやCKADで出てくる範囲くらいしかわかりませんでした。そのため、

検証環境でやるのを見せてもらう -> 開発環境や本番環境でついてもらってやる

というペアオペレーションが多かったです。フィードバックも毎日夕方に1on1してもらって、改善の日々でした。

マイクロサービス開発時に自分もわからなくて頼っていたエラー対応が、チームを移ったからといって即座にわかるようになるわけがありません。間をおいて何度かオンサポートを担当したり、他のプロジェクトに取り組むなかで理解を深めました(今もなお。アサインに配慮を感じつつ)。

Istioワークショップ

Istioワークショップは、Istio何もわからんの状態からいろいろキャッチアップして、マイクロサービス開発者向けに「サービスメッシュとは何か」を話したり、マイクロサービスのテンプレートとなるマイクロサービスで実際にIstioの機能を試すハンズオンセッションです。

外出自粛直後の3月の開催だったので、慣れないながらもSlackでコミュニケーションしつつ、Google Meetでスライドやターミナルをシェアしながらがんばりました。マイクロサービス開発者目線では、どんな便利なプラットフォームの機能も、機能開発が忙しいときには導入やキャッチアップ自体がかなりのハードルです。こういう試みは大事と思いつつ取り組みました。

つぎの本、Udemyの講座、登壇が特に役立ちました。

ドキュメメントは読みますが、最初にDemoを含む動画で概要をつかむと捗りました。

Network Policy

Network Policyの導入は、KubernetesのNetwork PolicyをTerraformモジュールも利用しつつマイクロサービス開発者が利用できるようにするものです。

今回は利用しない機能、デフォルトで有効にすべきポリシー、サポートするユースケース、段階的な移行方法などを議論しながらDesign Docを書きました。議論のスコープに、Network Policyに限らずプラットフォームコンポーネント全体に影響する事柄もあったことから、シュッと決めきれず難しさを感じました。しかし、ユーザーインターフェースとしてのTerraform variableや、設計議論の進め方など、学ぶことが多かったです。

また、導入にあたり希望マイクロサービスのベータテストを行い、フィードバックをもらって改善するプロセスなどは「プロダクトとしてのプラットフォーム」を強く感じました。

会社のテックブロクは書きませんでしたが、技術的にはつぎの記事のようなイメージです。

Terraform Kubernetes Providerとkindで試すNetworkPolicy

こういうユースケースのテストにこそTerratestを使ってみたかったです。最近出した本中のモジュールで、はじめて使いました。

Disaster Recoveryテスト

Disaster Recoveryテストは、GCPのTokyoリージョンが利用できない状態になったら…を想定して、すでに用意していたDisaster Recovery計画に基づきOsakaリージョンでサービスを一時的に立ち上げるものです。

クラスター内のリソースバックアップにVeleroを利用し、復旧用スクリプトを用意するなどしました。チーム横断的にとりくむプロジェクトだったので、あえて議論の枠を準備したり、定例や振り返りをリードしてみたりに挑戦しました。

リライアビリティ強化

リライアビリティ強化は、Datadogのモニター、ダッシュボードなどを見直たりしていい感じにアラート対応できるようにする取り組みです。

数百あるDatadogのモニターをすべてリストアップし、Playbookがないものを洗い出して追加したり、よくアラートが鳴るものの原因を調査したり、絶賛年末大掃除みたいな感じでした。

メンバーが増えて、再現可能な状態でオンコールにオンボーディングするには、適切な閾値でアクションのとれるアラートが鳴るのは大前提です。

その他

インターンメンバーの面接・メンターも担当しました。これまで、中途メンバーの面接やメンターはやったことはあったものの、インターン関連でははじめてです。

これがすべてです。

メンターという形ではなくても、プロジェクトのリードとして新しく入ってくる方のサポートをする機会もたくさんありました。学びの機会にあふれています。

キャッチアップとアウトプット

もちろん、業務中も必要なキャッチアップ時間やサポートはありました。しかし、僕は闘争する民族なので、これまでもやっていたプライベートOKRで四半期毎に身につけたいことを決めて取り組みました。キャッチアップすべきことは無限にあるので、「この四半期はこれ以外はやらない」をはっきりさせる意味合いが強いです。

OKRは、各記事でなぜそれが達成したいのかや、どの程度達成したのかなどの振り返りと合わせてまとめています。

2019年10〜12月の振り返りと2020年 〜YAML Engineerとしての闘争〜

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

2020年4〜6月ふりかえり 〜より抽象的なプラットフォーム仕草を身につける〜

2020年7〜9月ふりかえりと10〜12月OKR 〜プラットフォームエンジニア設計譚〜

2020年10〜12月ふりかえりと1〜3月OKR 〜旗を立て始める〜

資格

1年と少しで、KubernetesとGCP関連の試験をいくつか受け合格しました。

  • 2019/12: Certified Kubernetes Application Developer (CKAD)
  • 2020/3: Certified Kubernetes Administrator (CKA)
  • 2020/6: Google Certified Professional Cloud Architect
  • 2020/9: Google Certified Professional Cloud DevOps Engineer
  • 2021/1: Google Certified Professional Data Engineer

Kubernetes関連のものは、テストでも準備でも実技不可避だったので取り組みました。Kuberneteクラスターのバージョンアップなどでかなり役立ちました。

GCP関連のものは、それぞれ動機が異なります。Cloud Architectは、Terraformの本を書こうとしたらGCPの基礎理解がなさすぎて書けなかったからです。執筆を一時中断し、あわてて『Official Google Cloud Certified Professional Cloud Architect Study Guide 』を読みました。模試Webサービスつきなことや、物心ついてからクラウド概論に触れてなかったこともあったりで役立ちました。文章に品があって良いです。

Cloud DevOps Engineerは、SREの原理・原則を理解したかったタイミングで確認テストとして受けました。テキストは『サイトリライアビリティワークブック ―SREの実践方法』です。

Professional Data Engineerは、GCPのDBまわりをざっくり知りたかったのと、Terraform本にデータパイプラインの例を足したかったので勉強しました。安定の『Official Google Cloud Certified Professional Data Engineer Study Guide』が教材です。

極論資格として取得できてなくてもよかったですが、どの時期に何を勉強していたかがわかりやすくていいですね。

執筆

1年で3冊の本を執筆・改定しました。毎Q締切があってきつい1年でしたが、取り組んでよかったです。

Knative本は、同僚に「なぜIstio(VirtualService)を使わずにKnativeはトラフィックスプリッティングのような機能を実現できるのか」と質問されて答えられなかったのがきっかけで調べることにしました。ちょうどIstio関連のプロジェクトに取り組んでいたタイミングで、ネットワークまわりをいろいろ調べられました。

Terraform本は、GCPでTerraformを体系的に学ぶための情報がないという問題意識に基づき書きました。

特にオンサポートをやる上では、Terraformのデバッグは必須です。また、何かプラットフォームとして機能を提供する際には、Terraformモジュール設計が大体必要です。自分が実務に取り組む前に知っておきたかったことをまとめました。

さらに、マイクロサービスの開発者にとっても、有益な情報であると考えました。たとえプラットフォームがモジュールを提供しても、マイクロサービス独自に利用するリソースについては、現状Terraforを書かなくてはいけません。エラー調査をプラットフォームチームに依頼する際も、大まかな仕組みや原因がある程度わかった方が容易です。プラットフォームのエンジニアとしては、困ったら頼ってほしいと思いつつ、マイクロサービス開発者としては、頼っていいものなのか自分たちでなんとかできるものなのか切り分けできたかったという思いがありました。そういうものを意識しなくても、開発に集中できるプラットフォームを目指しているのは言うまでもありません。

(前年比)業務に密接に関連した執筆は「あ、これ昨日検証したやつや!」の連続で、本業に活きていている感がすごかったです。

ついでに、売上で椅子が得られたりしたのでとてもよかったです。

7〜9月のKRのひとつに掲げていたのが「学び方の改善」です。

学び続ける生き物は、その学び方を改善することで得られるメリットが計り知れないほど大きいです。

エンジニアの知的生産術 ―効率的に学び、整理し、アウトプットする』を読んだり、チームの人のおすすめリストを読んだりしながら自分なりに読書リストを作って進めています。意識的にOKRに関連させるようにしています。これら以外は読まないというわけでもないですが、読むのが速くないので特に大事なものに絞る必要があります。

Platform Engineerへの闘争🐸

読み終わった本。

こういうのも親身に相談に乗ってもらえるので、安心して闘争できるのがうれしいです。

複業

サーバーレスコミュニティのつながりもあり、複業にも取り組みました。以前いったんは始めたものの結局タイミングやフェーズ合わなかったり、執筆や寄稿もある意味複業とは思いますが、案件に入っていくのは初めてです。

いつか一緒になにかできたら…と思ってた方々と一緒に仕事できてよかったです。一方で、あまり案件に深く入れないまま終わってしまったので残念でした。SlackでGCPの質問に答える係を3ヶ月担当しました。

フロントと認証・認可まわりは課題っぽいです。

2021年

2021年のことも書こうとしたのですが、思ったより長くなったので別記事にします。

業務的には、引き続きPlatform Engineerへの闘争を進め、プラットフォームエンジニアとしての運用ももっと楽にできるようにしたり、マイクロサービス開発者向けにサーバーレスで想起されるような体験を提供していきたいです。

四半期ごとの個人OKR振り返りです。

2020年4〜6月は、プラットフォームエンジニアとして必要な技術要素であるGCPとTerraformを学ぶのが主な内容でした。

振り返り対象の個人OKRはこの記事2020年1〜3月ふりかえり 〜HCLエンジニアとしても闘争〜で立てています。

OKRの振り返り

3段階で見ていきます。

  • できた
  • 微妙
  • できなかった

Objective 1

プラットフォームのインフラを支える技術の基礎力向上

Key Result 1 【微妙】

Terraformの概念、書き方を理解しデバッグできる

  • 技術書典9で『GCPで学ぶTerraform』を書く
  • 『実践Terraform』『Terraform Up & Running』を読んで理解が必要な見取り図を描く

今期は目次を作るところまででした。OKRを立てた時点では、つぎの技術書典を7月と想定していました。しかし、次回は9月という公式アナウンスがあったので、それを目指して書こうと思います。

少しTerraform関連の本を読んだり、GCPを学んだりした現段階ではつぎのような目次を考えています。

1 Why

なぜTerraformが必要なのか
解決する課題

  • Why IaC
  • Why Terraform
  • (Why GCP)

2 What

  • Terraformを使ってできること
  • 使い方の調べ方
  • GCPのデフォルトとTerraformのデフォルト
書き方
  • 文法
  • HCL?

機能

なんのためにあるのか
やってはダメなこと

プロバイダー
* tfsatate
* terraform import
* terraformer

3 How

準備
  • CLI
  • Terraformのバージョニング
  • VSCodeのサポート
  • tflint
ハンズオン
  • あるアーキテクチャを作っていく
    • 3 layered
  • テンプレート
    • Module
    • Microservice、プラットフォーム
    • ベストプラクティス or Opinionatedのテンプレート化
    • 早めに楽な運用にたどり着くためのガイド、複雑さを導入したいわけではない
  • GCP上のベストプラクティス
    • Log
    • データ分析
    • パイプライン
    • 権限管理 IAM

コンテナ触れたいが、KubernetesのYAMLとの住み分けとかの話になりそう
VM -> サーバーレス
GCE -> GKE -> App EngineかCloud Runなど

4 Operation

  • CI/CD
    • ローカル
    • GCP CI/CDサービス
    • CI/CD SaaS
    • GitHub Action
  • tfstate分割
    • すでに動いてるの安全に分割する
  • tfnotify
  • Providerアップデート
  • 開発環境・本番環境
  • デバッグ
    • TF_LOG=DEBUG
    • プレイグラウンド

フルで書くのは厳しそうなので、特に興味あるものや、ここにないけど決定的に必要な要素などあればぜひ教えてください!

読んだ・読んでる本。

Why Terraform、Why IaCがめっちゃみっちり書いてあってすごい。

Key Result 2 【できた】

GCPの全体像を把握する

GoogleさんのProfessional Cloud Architect試験に合格しました。自宅からのリモート受験です。6/28に受験し、まだ最終結果メールがきません。

当初はGCPのコンピューティング、ネットワーク、ストレージの目次程度が頭に入れば試験は受けなくてもいいかなと思っていました。しかし、6月頃にいざ本格的にTerraformの本の準備を始めるにあたり、もう少し足腰鍛えた方がよさそうと思い6月はGCPの勉強をすることにしました。

また、同時期に複業でGCPのアーキテクチャなどの相談に乗るお仕事もいただいたので、腕力向上必須でした。

準備過程では、上記のProfessional Cloud Architect Certification 2020を一通り見ました。これは星5つで評価を求められたら星1つです。結局最後まで見てしまったのが悔やまれます。

Official Google Cloud Certified Professional Cloud Architect Study Guide』はとてもよかったです。章末問題や模試2回分は、本番より難易度が低かったものの、アプリでの復習がとてもやりやすかったです。各サービスの説明は細かいわけではなかったですが、「アーキテクト」として働くための視点の持ち方がイメージでき、今後の仕事にプラスになりそうでした。

他にも、複業の準備も兼ねてつぎの本を拾い読みしました。試験文脈ではないですが、役立ちました。

機械学習系は置いておくにしても、GCP文脈でもう少しデータプラットフォームやDevOps系の話題に馴染んでおきたいなぁと感じています。

Key Result 3 【できた】

『KnativeとIngress Gateway』の完成

  • レビューコメントをもらっている内容を一通り反映する
  • 今あるissueをすべて閉じる

だいぶ追記し、Boothで第2版を発売中です!

KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜(PDF、ePubセット) #技術書典

初版との差分はこちらにまとめています。

増補・改訂にあたっては、toVersusさんにたくさんフィードバックいただきました。ありがとうございました!!

商業版も、インプレスR&Dさんから2020年7月10月発売です。

KnativeとIngress Gateway Ambassador、Contour、Gloo、Kourier、Istioに見出すEnvoyコントロールプレーンの実装パターン

あくまでも「KnativeでなぜIngress Gatewayが差し替えられるのか?」という自身の疑問に答えるための本です。結果的にAPI Gateway、Envoyなどさまざまな発見がありました。この喜びを、よりたくさんのエンジニアと分かち合うことができたら嬉しいです。

推敲過程でいろいろな本にお世話になりました。

Objective 2

生きてる実感を得て心をワクワクさせる

Key Result 1 【できた】

ゆったりとした時間を過ごすための自分なりのルールを作る

「ゆったりとしていない」と感じるのは、自分で立てた目標とはいえ目標以外に向いた興味から目を背けていたからです。限られたプライベートな時間を最大限自身の成長に繋げるためのストレッチな目標を立て、リソースをそこに集中するのだから必要な犠牲かもしれません。それでも持続できなければ元も子もないので、「スイスイ検証水曜日」というのをはじめました。

スイスイ検証水曜日

興味持ったことは手を動かして検証して良い枠を週1設けます。数時間でアウトプットまでたどりつくのはなかなか難しいですが、結果的に業務に流用したり、複業に活かしたりしながらワイワイできて楽しかったので続けようと思います。

ちなみにこの記事はスイスイ検証水曜日のアウトプットの一部です。

Terraform Kubernetes Providerとkindで試すNetworkPolicy

あと、ゲームを解禁した結果、(やや罪悪感はあるものの)楽しみが増えました。同僚に激推しされたゼルダ。面白すぎて、このゲームを知らない状態に戻れなくなるのが少し寂しいです。

Key Result 2 【できた】

趣味と闘争する

  • 体脂肪率12%

noteで書いたこの腹の3ヶ月後のさらに3ヶ月後の世界です。このOKR振り返りを書いている時点で14.6%くらいです。

一時期13%台まで落としたものの、体重は落ち体脂肪率は上がっていく状況になって立ち往生しています。

もろもろの自宅ジム化に必要な器具は揃ったので、数値目標は掲げず、筋トレ週2を継続して体づくりを継続しようと思います。

カロリー計算目的であすけんというアプリを使い始めました。3食記録し、アドバイスがもらえたり、栄養素の内訳が表示されたりします。思ったよりカロリーが足りてなさそうな日が多かったり、ビタミンA・食物繊維が絶望的に足りなかったり、いろいろな気づきがあり改善しました。Fitbitで計測した体重、体脂肪、歩数、などを連動できたり、写真からメニューを登録できたり便利です。

写真のBASE BREAD週4朝、BASE PASTA週1昼か夜も定着しました。

  • 燻製料理を生産できるようにする(from ワクワクリスト

Zwilling(ツヴィリング)社の燻製用の鍋を購入しました。

燻製の基本』という本を読み、燻す木材の種類やそれに合う食材、難易度等があることを知りました。よきです。

クロノ・トリガー好きなら好きかも!と同僚に勧められてはじめました。何回かやったものの、執筆期間に始めたため定着せず…執筆期間後にでゼルダに出会い、今はゼルダのない土日が考えられません。

あと、昔おじさんにもらってやっていたファミコン。くにおくん ザ・ワールド クラシックスコレクションに時代劇が含まれていたのでやりました。

勇者シリーズが30周年を迎えたのを記念し、サンライズが公式YouTubeチャンネルでエクスカイザー全話と他のを5話まで無料公開!テレビで見始めたのは4作目からで、元祖のエクスカイザーは観たことなかったので観ました。

後続シリーズの場面がいろいろと頭をよぎる原点でした。その後、2作目のファイバードも観終わり、今は最終作のガオガイガーシリーズを観ています。在宅勤務になってから昼は勇者シリーズ、夜は最近のやつ(Dr.STONEシーズン1を観終わり、鬼滅の刃を観ている)をご飯を食べながら観るようになりました。

Key Result 3

ワクワクリストを整理する

  • 優先度
  • 何をしたら実現できるか
  • 費用
  • 期間

とりあえずカテゴリタグをつけてみたら、半分が旅行でした。


(旅行系の一部)

今旅行のこと想像しても、何もピンときませんね。いざ実現するとなると、それぞれ1週間休みとらないと厳しいので(ほんまか?)、予約できる状況になったらチケット予約する心積もりはしときます。

そもそもこれを書き始めたのは、OKRに追われすぎてしんどいというのがきっかけでした。Objective 2のKR1がいい雰囲気になってきたところで、この項目にそこまで希望を見出さなくて良くなってきた感があります。よいことです。

今は個人OKRを適度に達成し、プラットフォームを作るチームで挑戦し続け、嫁氏と適度に競争しながらゼルダを嗜み、猫たちを眺め、筋トレし、サウナで整えるならそれで満足です。

在宅勤務に慣れ、サウナも復活したのはけっこうでかいのかもしれません。

ログ

OKRとしては追ってないものの、記録しておきたいことのコーナーです。

読書

記事中ここまでで書いた以外のものです。

自分の興味に蓋をして息苦しさを感じていたときに、マネージャーさんとの1on1で「自己肯定感足りてないのでは?」という話を聞いて読んでみた本です。一連の流れをつぶやいています。

最終的にスイスイ検証水曜日で回収されました。

「OKRと関係ない、自分の好きなことについてnoteに記事を書こう」という動機で書いた記事の1つです。今の今まで、4月に突然noteに記事を書き始めた理由を忘れていましたw

サウナは自分にとって大事なライフワークの1つ。自分以外のサウナ好きがサウナについて語るのに触れながら、自分にとってのサウナを考えてみようと思って読みました。

『さうなと』を読んで

前Q読んでいた『遅いインターネット』にも、さきほど登場した『20歳の自分に受けさせたい文章講義』にも評論家としての吉本隆明さんが登場します。よしもとばななさんのお父さんなんですね。

何となく気になって、何かしら本を読んでみたいと思って検索したらこの本に出会いました。たぶんこういう本がメインではないです。

よその家の猫の話(生態)ってあまり聞いたことなかったので新鮮でした。吉本さんちの猫は、適当に外にも出かける半野生的な猫さんなだけに余計に。

スポーツ系に限らず、いろんな研究分野が関係しているのだなぁと思いました。科学的とは?の説明から始まるのがいい感じです。

筋トレをしてくれるトレーナーさんの経験で語られる世界からの変遷が書かれてましたが、トレーナーさんもこういうの読んでないのかな?とも思いました。

人生の先輩が語る教訓には真理が含まれてると思います。ただ、大昔から人間は同じものに苦しみ、それが研究されて名前もついていると思うので、研究の成果として受け取る方が好みかもなぁと思いました。

初期案と実際に放送されたデザインが全然違うのが多くて最高でした。

学び方を学ぶのはよい投資と思っています。エンジニアとしての経験(課題とそれに対する解決策の適用)も増えてきたので、目の前の具体的な技術を学ぶのを継続しつつももう少し原則、プラクティス、この分野ならこれみたいなみんなオススメ系の本比率も上げていいのかなと感じました。経験が少なすぎるタイミングで少し抽象度の高い事柄に触れても実感がわかないし、抽象化した自身の経験を適用できる範囲も限られます。

最近の仕事では、何かしらの技術を導入するにあたって性質上影響範囲が大きく、設計ドキュメントでwhy?を考える機会が増えました。その中で、ソフトウェア開発の原則、ベストプラクティス、それらが目の前のか課題解決になぜ適用できるのか、メリット・デメリットは何かなどを議論し、合意し、利用者の疑問に答えられる必要があります。つまり「この技術をこう使ったら、動く!」のようなスタンスでは、物事が何も前に進みません。これまで以上に具体と抽象を行き来して、戦闘力を高める必要があります。

学びて思わざれば則ち罔し、思いて学ばざれば則ち殆し、はどちらかに偏りがちなので肝に銘じたいです。

不合理な人間の行動にもパターンがあるので、そういうのを自覚すると気づきがあるし、パターンを利用する意図が透けて嫌気がさすこともあるでしょう。

転職したい気持ちはないですが、鬼気迫るエピソードで面白かったですw

英語

チーム構成の出自のダイバーシティが以前よりさらに増してきました。MTG、設計ドキュメント、Slackでのやりとり、議論はもちろんリモート飲み会もすべて英語です。大体において、これ日本語でも厳しそうみたいなことが多い一方で、英語で話すのも書くのも余裕はないです。継続して学習しています。

4〜6月の英会話(NativeCamp)の受講状況はこんな感じでした。

  • 4月: 30回、12時間48分
  • 5月: 30回、12時間48分
  • 6月: 28回、11時間53分

火、木、土、日の朝25分 * 2。受けた直後はやった感はあるものの、月単位でみるとそこまで時間割いてないですね。ペースを落とさなければ、年150時間。無理なく続けられそうなペースな気がします。

思いどおり喋れるようになってきたのを感じるときもあれば、頭が回らなくて喋る内容を先にすべて書くときもあります。

成長度を測りたいような、測りたくなような気がします。

Microsoft MVP

かなりコンテナマネジメント系の実績を推したのですが、Cloud & Datacenter ManagementカテゴリーでなくMicrosoft Azureカテゴリーでの受賞になりました。いずれにせよ光栄です。やっていくことも変わりません。

今後の話

Objective 1

プラットフォームのインフラを支える技術の基礎力向上

つぎでTerraform周りをいったん整理し切ろうと思います。2019年10〜12月あたりから、プラットフォーム仕草(プラットフォームを開発するエンジニアが習得すべき技術要素やプラクティスなどの素養全般)を身につけるために、具体的な技術をテーマに据えてきました。Kubernetes、GCP、Terraformなど、業務との関連性の高い順になっています。

目の前の業務に必要なものばかりなので、いい感じにプライベート時間の学習をアラインできたと思います。

一方で、読書セクションに書いたように、ソフトウェア開発の原則、ベストプラクティス、古典、基礎系に割く時間も長期的目線で増やしていくタイミングなのかなぁとも思います。

7〜9月は技術書典だけで大変だと思うので徐々に…。

Key Result 1

Terraformの概念、書き方を理解しデバッグできる

前回から引き続きです。本番が9月のいつなのかけっこう気になります。

  • 技術書典9で『GCPで学ぶTerraform』を書く

Key Result 2

DevOpsのプラクティスを身につける

理論を学びつつ、目の前のクラウドサービスにどう適用するのかを学ぶのはよいタイミングっぽいです。

Key Result 3

学び方の改善

知的戦闘力を高める 独学の技法』にはとても影響を受けました。1テーマに据えます。

Objective 2

より気持ちよく暮らす

重要だが緊急性が低く、積極的にやる気も起きないので放置していたことを片付けます。

Key Result 1

断捨離と整理

そこまで物に溢れてるわけではないけれど、広めのクローゼットに甘えてる感があります。日常生活で光が当たらない部分を含め、物を減らしたい欲もあります。手を動かし始めたらちゃんとやりそう!

  • いらない服捨てる
  • 紙の本減らす

Key Result 2

猫たちとのよりよい共生

より大きくなり、外にも興味を持ち始めた猫たちとの生活をよりよくします。

  • 大きいトイレに交換する
  • ラムちゃん去勢
  • ふわふわくん外散歩できるようにする

Key Result 3

ume, yamazoeに行く(状況が許せば)

奈良育ちなのもあり、クラウドファンディングで支援したのでタイミングが合えば行きたいです。

静かな山里で、サウナ。最高っぽいです。

Key Result 4

冷蔵庫買い換えるか検討する

めっちゃ困ってるわけでもないですが、野菜室の野菜が凍ったりします。凍っててもサクサク切れるやつとか気になるので、ひとまず調べてみます。

今期の総合的な気分です。

四半期ごとの個人OKR振り返りです。

2020年1〜3月は仕事ではメルペイからメルカリのMicroservices Platformチームへの正式な異動・転籍が決まったタイミングでした。

振り返り対象の個人OKRはこの記事2019年10〜12月の振り返りと2020年 〜YAML Engineerとしての闘争〜で立てています。

個人OKR(特にObjective 1)は会社のOKRとは別でその基礎を固める意味合いのもので構成していました。

OKRの振り返り

3段階で見ていきます。

  • できた
  • 微妙
  • できなかった

Objective 1

プラットフォーム開発の基礎力向上
※働きはじめて特に厳しそうな分野が見つかれば変更してフォーカスする

当初定めたものと業務上必要そうなものにずれはなかったので変更していません。

Key Result 1 【できた】

CKAを取得2020年3月までに取得する

3月に集中的に取り組んで達成できました。別の記事で詳しくまとめています。

CKAとCKADを受験した動機とよかったこと

CKA(とCKAD)を取得できても、新しいチームで自分が戦力になることは保証されません。しかし、これらすら取得できなかったら適性面で厳しいと言えるような内容だったり、実務に活きるような実践が積めたりしました。時間をかけて取り組んでよかったです。

Key Result 2 【できた】

サービスメッシュ、LBなどの動作の仕組みをKubernetesの文脈で説明できる

  • 『Istio Up and Runnning』読む
  • 技術書典8でKnativeに利用できるGatewayコンポーネントの話を書く

説明しました。お仕事でIstioのワークショップを開催したので、その過程でキャッチアップも兼ねました。

別の記事で詳しくまとめています。

技術書典応援祭の『KnativeとIngress Gateway』と『JavaScriptとSEO』の振り返り #技術書典

プラットフォームでマイクロサービスを開発するエンジニアに概要、メリット・デメリットを説明し、納得して使ってもらう(そこまでは至らなかった)というプロセスは視点を上げる上でも重要な経験に感じます。

Key Result 3 【微妙】

CloudNativeを実現するOSSを開発する(3PR以上)

  • issueを閉じる
  • テスト足す
  • 機能足す

issueをアサインしてもらってPRマージまで持っていけたのはこの1つだけです。

https://github.com/tektoncd/pipeline/pull/1875

他は普段通りの設定ファイルの追加で特に成長がありません。

https://github.com/syndbg/goenv/pull/116
https://github.com/syndbg/goenv/pull/110
https://github.com/syndbg/goenv/pull/109
https://github.com/syndbg/goenv/pull/108
https://github.com/syndbg/goenv/pull/107

成長していきたい分野ではあるものの、今は新しいチームで成果を出すのに必要そうなスキルに集中すべき時期です。

Objective 2

生きてる実感を得て心をワクワクさせる

Key Result 1 【できた】

嫁氏とゆったりした時間を過ごす

  • スターウォーズを観る
  • 低温調理できるようにする(from ワクワクリスト)

妻はスターウォーズ(とアベンジャーズ)が大好きなので映画を観てそのまま食事しました。

何かが理由で行くのをためらった気がするのですが、OKRに入れることでやめずに実行できてよかったです。

あとは低温調理。単に興味があったのと、Key Result 2との兼ね合いで飽きずに美味しく鶏肉を食べる必要がありBONIQを購入しました。

低温調理といえばAnovaの印象が強いかもしれませんが、比較した結果我がにはBONIQという結果になりました。

  • コンセントの変換器不要
  • Amazonで買える(今は中古しかなさそう)
  • クックパッドにメニュー豊富

が主な理由です。Anovaを買ってもたぶん満足していた気がします。

別で記事を書けたらと思いますが、特にルーロー飯とレバーのコンフィが絶品です。

6 packsチャレンジ中ひたすらBONIQで低温調理した鶏肉を食べていて、まったく飽きなかったのが何よりも大きな成果です。

あと、なんとなくこのノリでドラム式洗濯乾燥機導入できてよかったです。

Key Result 2 【できた】

趣味と闘争する

  • スノボする(from ワクワクリスト)
  • 腹筋を割る(from ワクワクリスト)
  • 土日のうち1時間をピアノに充てる(from ワクワクリスト)

ピアノは1月の最初こそやってたものの、Objective 1に押しつぶされたり、キーボードが置いてある部屋が寒かったりで諦めました。

スノボは何年かぶりに前々職の同僚と行けたので満足です。ただ、1日目に膝を打ち過ぎ、2日目はサウナなど1人旅になってしまったので膝を守る術を身に付けたいですね。

それはそれで楽しかった説もあります。

これら3つの中で特に時間を割いたのは「腹筋を割る」でした。結論としては成功と言ってもいいかなと思います。

1月の半ばからパーソナルトレーニングに通い、食事制限やランニングと合わせてがんばりました。

明確に目標体脂肪を宣言するともっとストイックになれたかもしれません。しかし、けっこうな自粛ムード、慣れないリモートワークの中での食事制限はこれ以上きつくすると挫けそうでした。

とりあえず豚カツ、カツカレー、天ぷら、皿うどん、焼肉、家系ラーメン、うな重、餃子、酢豚、良いコース料理、イタリアンプリン、タルト、チーズケーキなどが食べたいです。

筋トレや低脂質高タンパクな料理などの知見が増えたので別で記事にしようと思います。

OKR文脈では体脂肪率12%台になるまではがんばります。

Key Result 3 【できなかった】

ワクワクリストを整理する

  • 優先度
  • 何をしたら実現できるか
  • 費用
  • 期間

まったくできませんでした。ワクワクリストというのは、OKRを決めてその達成を追えば追うほどよくわからなくなってしまった「俺何するために生きてるんやっけリスト」のことです。

前回のO2 KR3で作成しました。

旅行系はGWが直近のチャンスかと思ってましたが、当分無理そうですね。技術系はきっとできることがあったり、実現に向かって進捗してることもあるので、次回もう一度このまま掲げます。

ログ

読書数、登壇数などの習慣目標は前回を最後にいったん追わないことにしました。

しかし、残しておくのはよいと思うのでセクション自体は残します。

読書

読んだ

元々インフラをやっていたわけではない人にとって優しい書き方で好感度が高かったです。

MEAP(Manning Early Access Program)なのでメールでアップデートが通知されるのもよかったです。

オライリーさんの方もやってくれたらなぁ。

細かくて読み進めている間に前に書いてあることを忘れました。

あるコンポーネントが落ちてるとき、何がダメで何が生きてるのかコンポーネント毎に書いてるのがよかったです。

CKAの準備タイミングで読んでました。内容はあまり覚えてないです。

内容覚えてる本はないかもしれないですね。

技術書典の方を読みました。開発合宿で同僚が入門してたのを見て、そういえばやってなかったなぁと。

人間の性質上、知らないうちに陥ってしまう罠を自覚するのは大事と思っています。

新刊の『SSLをはじめよう』を購入したらサービスしていただき、読みました。

けっこう長いこと積ん読になってたな…

サピエンス全史の人の本です。オーディブルで聴きました。

徴税官のイメージ変わります。オーディブル。

短いスパンの振り返り取り入れてみようと思いました。オーディブル。

罠避けたいシリーズです。オーディブル。

読んでる

『KnativeとIngress Gateway』なりIstioなりはネットワークの理解が必要です。

これまでSIerの営業で情報系の試験勉強をしたり、エンジニアとしてネットワークごしの通信をするコードを書いたりする中でピンと来たことはありませんでした。

しかし、ようやく基礎から勉強して実感がわく時期がきたので読みはじめました。

同僚のKubernetesセキュリティ関連の登壇をレビューするにあたり読みはじめました。

Kubernetesよりも相対的にDockerの方が馴染みがないので、その復習から入るのが助かります。

復習といっても知らなかったことが多い…

久々にエモい気持ちになった技術書です。

AmplifyでReact、Lambda、AppSync、API Gateway、Cognitoベースのアプリケーションを動かしながら作っていきます。

DXはLambdaみたいな運用の手間を減らす基盤だけでなく、開発を支える程よく抽象化されたライブラリ、裏でよく管理してくれるIaC、CLIが一体となって実現されるのだなぁと強く感じさせられました。

まだアーリーアクセスですが、最終版は提出される雰囲気です。

オライリー本の日本語版の監訳、できるのならやってみたいんですがどなたか伝手ありませんか…!

Design Docなど英語で書く機会が増えたのと、英語に限らず技術文脈で書くことは多いのでライティングは投資していきたい分野です。

技術自体のキャッチアップは当然やるとして、インフラ、プラットフォーム、SRE的な考え方だったり、チームが立脚する文化を学ぶことの大事さを感じる機会が増えました。

体が「活字」を求めているときに読みたい著者の1人の本です。

とても鮮明に僕らが立っている・立たされている精神のあり方が描写されています。

英語

チームでのやりとりは基本的にすべて英語になりました。

受験英語は好きだったものの、実際に仕事でガッツリ使うのは初めてなのでトレーニングをはじめました。

スピーキング

会社サポートでオンライン英会話のNativeCampを受講しています。カランメソッドと実践!仕事の英語というのを半分ずつ受けています。

  • 2月: 30回、12時間40分
  • 3月: 28回、11時間54分

25分/1レッスン * 2連続平日の朝1時間を週数日、土日に各1時間。レッスンが終わったら次のレッスンの予約をその場でとり、なるべく途切れないようにしています。

話しやすくなったようなそうでもないような、成長は実感しづらいです。

リスニング

Podcastを去年の夏頃から聴いてます。この辺が特に好きです。

あとはUdemyの技術系講座は基本英語なのでそれを受講しています。元のスピードの遅いのは1.25倍にして聴いてます。それより速いと頭に全然残りません…

最近少し聴き取れる割合が増えた気がします。

言語問わず話が長いと集中できない感はあるなぁと日本語のオーディブルを聴くようになって思いました。。

リーディング

会社でSafari Books Onlineを契約しているのはありがたいですね。

あと暇なときにエンジリッシュで単語を覚え直しています。中級単語とかでも真新しいのはないですが、記述もあるので定着はします。

ライティング

読んでいる本のセクションに書いた本を読んだり、Grammarlyでチェックしたり、DeepLで比べたりしています。

定量的な変化を感じたいのでTOEFLでも受けようかとも思うのですが、技術面のキャッチアップを優先します。

今後の話

仕事のオンボーディングは進んでいるので、中核となる技術のキャッチアップを中心に進めていきます。

Objective 1

プラットフォームのインフラを支える技術の基礎力向上

Key Result 1

Terraformの概念、書き方を理解しデバッグできる

  • 技術書典9で『GCPで学ぶTerraform』を書く
  • 『実践Terraform』『Terraform Up & Running』を読んで理解が必要な見取り図を描く

Key Result 2

GCPの全体像を把握する

Key Result 3

『KnativeとIngress Gateway』の完成

  • レビューコメントをもらっている内容を一通り反映する
  • 今あるissueをすべて閉じる

Objective 2

生きてる実感を得て心をワクワクさせる

これ続けたいですね。

Key Result 1

ゆったりとした時間を過ごすための自分なりのルールを作る

食事制限したり、資格とったり、目標は達成できて人生進捗した気分になります。

でも、過多で息苦しくて、あんまり生きてる心地しないんですよね…

Key Result 2

趣味と闘争する

Key Result 3

ワクワクリストを整理する

  • 優先度
  • 何をしたら実現できるか
  • 費用
  • 期間