Skip to main content

· 9 min read
Shunsuke Suzuki

2022 年を振り返っていきます。

--

詳細については上記のリンクに譲るとして、大きな出来事としては

色々挙げましたが、環境の変化という意味では転職と一人暮らしが非常に大きかったですね。

転職

転職してからは基本英語でコミュニケーションを取るようになりました(といっても日本人しかいないような場では日本語で話しますが)。 OSS 活動などを通じて英語の読み書きはこれまでもしてきたのでさほど苦ではないのですが、 Listening, Speaking には結構苦労をしています。英語の学習が重要なのはわかっていながらも、どうしても OSS 活動の方に時間と気力を費やしてしまいがちです。とはいえ、自身の今後のキャリアを考えると英語は多分避けられないしなんとかやっていくしかないですね。

一人暮らし

これまでずっと実家ぐらしだったのですが、ようやく実家を出て一人暮らしを始めました。生活力0の自分に真っ当な暮らしが出来るのかあまり自信はありませんでしたが、意外とちゃんとした生活を送っています。 3 食自炊してるし。 運動もして毎日体組成計にも乗るようになり、 1 年前より 3, 4 kg ぐらい痩せました。いい話です。

gha-trigger

(出来れば A を使いたいが) A では B は出来ないから C を使います、と言われたら、いや A でも B は出来るよと言いたくなるのがエンジニアというものです(?)。 つまり、作った背景としては必要だから作ったというよりは、 GitHub Actions でも出来るということを示すために作ってみせたというところが大きいです。 まぁ「こうすれば出来るよ」って言うのだけであれば簡単ですが、実際に動くものを作ってみせるのは自分らしいところかもしれません。

ドキュメント含めて折角力を入れて作ったので活用したいところではありますが、現状自分の方では活用できていません。 環境変数 GITHUB_* を変更できない(run step 内部では変更できるけど) という GitHub Actions の制約が結構厳しく、既存の Action を活用しづらいというのがネックかなと思います。 一方で Google Cloud Build や AWS CodeBuild からの移行先としてはありかなとは思います。

tfaction

Terraform の Workflow は各社で個別に実装されていて OSS のような再利用可能な形で公開されることは少ないと思うので (atlantis なんかはありますが、あまり良くしりません) 、 tfaction のリリースは意義深いものだったと思っています。 tfaction を使わないものの、 tfaction のアイディアを参考に Terraform Workflow を実装したという話もたまに聞きます。 (tfaction 使えばいいのになとは思いつつ) それも想定された tfaction の使われ方で、単に blog でアイディアを公開するよりも OSS のように実行可能なソースコードでメンテ可能な形で公開できたことに満足しています。

aqua

2022 年は aqua 中心の年と言っても過言ではありませんでした。かなりの時間を費やしました。 結果として単に「インストールの手間がちょっと省けて便利」なツールとは次元が違うツールになったと思っています。 その割に GitHub Star 数が少なく、自分の考えている aqua の良さが十分に理解されていない点を残念に思います。 それでも幾つかのブログ記事で紹介いただいたり、いろいろな方に contribution していただいたり、 Sponsor になりたいと言っていただけたり、著名なエンジニアの方に興味を持ってもらって contribution していただけたりと、ありがたいことも沢山ありました。 Sigstore や SLSA といった自分に取って新しい技術を学んで取り入れたり、技術的なチャレンジも色々出来ました。

Standard Registry がサポートする package の数が遂に 1,000 に到達しました。これはかなりすごいことだと思っています。最近は自分よりもむしろ他の contributor の方々から追加していただくことも多く 2022-12-31 現在 aqua-registry の contributor の数は 34 人になっています。ありがたい話です。

2022-12-31 時点の GitHub Status

Followers: 180

image

image

7 ヶ月前と比べるとまぁまぁ増えましたね。 commit 数は結構減ってしまってますが。

来年取り組みたいこと

来年も引き続き、 OSS 活動を中心に頑張ります。

  • aqua
    • Registry の checksum 検証 (未定)
    • v2 リリース
    • パッケージ構成も含めたリファクタリング
    • 社内でももっと導入していきたい (個人の願望です)
  • tfaction
    • より汎用的に使えるようにする (未定)
      • 現状決め打ちされている部分を一部設定可能にできないか
    • Reusable Workflow の提供 (未定)
      • 需要あるのか(?)
  • 新しい OSS の開発
    • tfcmt, aqua, tfaction に次ぐ OSS を作りたい
  • GitHub Sponsor 始める
  • 英語
    • Listening, Speaking 頑張る
      • ネイティブキャンプ始めようかなぁ
    • 文法も勉強し直したほうがいい気もするが、どうするのがいいんだろうか

· 3 min read
Shunsuke Suzuki

Blog posts

OSS Contribution

Issue

created daterepositoryshort description
2022-12-18sigstore/cosignImprove the document for new users to understand quickly that Cosign supports blobs signing
2022-12-01cloudflare/cloudflaredcloudflared-darwin-amd64.tgz of the version 2022.11.1 is empty

Pull Request

merged daterepositorylangPR's short description
2022-12-29bufbuild/protoc-gen-validatedocumentdocs: fix installation
2022-12-28crazy-max/diundockerfilechore: fix the file extension
2022-12-22x-motemen/blogsyncgochore: build assets for Windows
2022-12-03mercari/github-app-token-generatorgofix: use GITHUB_OUTPUT instead of deprecated set-output command
2022-12-03slsa-framework/slsa-verifiergodocs: fix go install
2022-12-02slsa-framework/slsa-verifiergodocs: refer v2.0.0 in README
2022-12-02slsa-framework/slsa-verifiergofix: fix the Go package version to v2
2022-12-02slsa-framework/slsa-verifiergodocs: add the checksum of v2.0.0

OSS Development

aqua

The notable change is Cosign and SLSA Provenance support. You can install aqua and tools securely. And the Improvement of aqua update-checksum command is also important.

Please see Document and Release Notes for the detail.

  • v1.28.0
    • Improved aqua update-checksum command
      • Ignore unrelated files' checksums in checksum files
      • Support pruning unused checksums in aqua-checksums.json
  • v1.27.0
    • Support a new field private for private packages and registries
    • Support template in go_install package's path attribute
  • v1.26.2
    • Install Cosign asset for correct platform even if AQUA_GOOS and AQUA_GOARCH are set
  • v1.26.1
    • Skip installing Cosign and verify with Cosign in windows/arm64
    • Check if Cosign is supported
  • v1.26.0
    • Support package verification by Cosign and slsa-verifier
  • v1.25.2
    • generate: fix a bug of --pin option

aqua-registry

  • version: v3.100.0 => v3.114.0
  • the number of packages: 961 => 1000 (+39)

Thank you, all contributors!

aqua-installer

  • v2.0.2
    • Update aqua for bootstrap to v1.26.2
  • v2.0.1
    • Use shasum instead of sha256sum if sha256sum isn't found and skip checksum verification if they aren't found
  • v2.0.0
    • Verify aqua with slsa-verifier
  • v1.2.0
    • GitHub Action: Support Windows PowerShell

aqua-renovate-config

  • 1.5.0
    • Refactor presets with Jsonnet
  • 1.4.0
    • Support mongodb/mongodb-atlas-cli/atlascli and ipinfo/cli
  • 1.3.0
    • installer-script: Support updating aqua

update-checksum-action

  • v0.1.1
    • Add an input prune to support aqua update-checksum's -prune option

News

· 3 min read
Shunsuke Suzuki

Blog posts

OSS Contribution

merged daterepositorylangPR's short description
2022-11-12slsa-framework/slsa-verifiergofix: fix error logs

OSS Development

aqua

The notable change is the support of Policy as Code. I'm working on the release of aqua v2 and signing of aqua and aqua-installer.

Please see Release Notes for the detail.

  • WIP
    • v2.0.0-0
      • Only standard registry is allowed by default
      • etc
  • v1.25.0
    • Replace $HOME to the home directory in local registry path
  • v1.24.0
    • Support defining the policy of package installation and execution for security
  • v1.23.1
    • generate: Fix a panic when unknown packages are specified
  • v1.23.0
    • Support filtering packages with tags
  • v1.22.0
    • Add update-aqua command
    • generate: Support specifying version

aqua-registry

  • version: v3.85.0 => v3.100.0
  • the number of packages: 923 => 961 (+38)

Thank you, all contributors!

What I learned

I'm investigating the signing of aqua and aqua-installer.

News

· 3 min read
Shunsuke Suzuki

Blog posts

OSS Contribution

merged daterepositorylangPR's short description
2022-10-21slsa-framework/slsa-github-generatorgofix: use GITHUB_OUTPUT instead of deprecated set-output command
2022-10-17slsa-framework/slsa-github-generatorgofix: use GITHUB_OUTPUT instead of deprecated set-output command
2022-10-04shipyard-run/shipyardgo (shell script)ci: fix checksums.txt

OSS Development

aqua

⭐ Over 200 stars ⭐

The notable change is the support of checksum verification.

Please see the GitHub Project to check prioritized issues.

  • WIP
    • v1.22.0-1
      • 🚀 Support filtering packages with tags
    • #1306 Support restricting registries and packages globally for security
  • v1.21.0
    • Support changing type in overrides
  • v1.20.2
    • cp: Skip creating links
  • v1.20.1
    • update-checksum: Fix the checksum of http package calculated by -deep option
  • v1.20.0
    • 🎉 Support the checksum verification
    • 🎉 cp: Support coping all packages
  • v1.19.5
    • nil check to avoid panic
    • Improve error log: Output download url when it failed to download a file

aqua-registry

🎉 Supported over 900 packages 🎉

🎉 30 Contributors 🎉

I've updated aqua-registry from v3.64.0 to v3.85.0. The number of packages has increased from 870 to 923 (+53). Thank you, all contributors!

tfaction

  • v0.5.19
    • Use GITHUB_OUTPUT instead of deprecated set-output command (ref)
    • Replace https://github.com to $GITHUB_SERVER_URL for GitHub Enterprise

What I learned

I'm interested in the supply chain security and the improvement of local development and CI/CD pipeline.


News

Others

GitHub Copilot's License issue

Tekton's Hermetic Execution Mode

Markdown Style Guide

· 2 min read
Shunsuke Suzuki

Work

I've improved the experience of a huge Terraform Monorepo by introducing my OSS tfcmt and github-comment.

OSS Development

Mainly I focused on the release of gha-trigger. After the release, mainly I'm working on the improvement of aqua.

aqua

  • v1.19.4
    • generate-registry: set complete_windows_ext
    • Support MD5 for the checksum verification
    • Improve a log creating a symbolic link
  • v1.19.3
    • generate-registry: fix the regular expression to extract checksums
    • exec: set config file path

aqua-registry

I've updated aqua-registry from v3.42.0 to v3.64.0. The number of packages has increased from 803 to 870. Thank you, all contributors!

tfcmt

  • v3.4.1
    • fix: Fix links to GitHub Actions jobs in GitHub Enterprise
    • chore: Update Go from v1.18.5 to v1.19.1
  • v3.4.2
    • fix: Add pull request labels properly even if a pull request number isn't passed as an argument or an environment variable
  • v4.0.0
    • breaking change: Remove features to output environment variables for security

github-comment

  • v4.5.1
    • fix: Fix links to GitHub Actions jobs in GitHub Enterprise
    • chore: Update Go from v1.18.5 to v1.19.1
  • v4.5.2
    • fix: Check if the configuration base is nil
  • v5.0.0
    • breaking change: Remove features to output environment variables for security

go-ci-env

  • v3.0.1
    • fix: fix GitHub Actions JobURL for GitHub Enterprise

tfaction

  • v0.5.17
    • feat: Show how to create a scaffold pull request with $GITHUB_STEP_SUMMARY
  • v0.5.18
    • tfmigrate-plan: Support testing with Conftest

New OSS 🚀

gha-trigger

I've released gha-trigger, which is Webhook Server and Actions to run GitHub Actions securely.

oss-contribution-guide

I've published OSS Contribution Guide, which is a guide to creating GitHub Issues and Pull Requests for OSS Contribution.

· 10 min read
Shunsuke Suzuki

仕事

仕事はあまり書けることもないんですが、元気にやっています。 tfcmt, github-comment, aqua をとあるリポジトリに導入しました。

OSS 開発

aquaproj/aqua

ツールのインストール時に checksum を検証する機能の開発を進めています。 基本的な機能の開発は既に出来ていて prerelease も出しています。 あとは現職に導入してフィードバックをもらいながら正式リリースに持っていきたいと思っています。

aqua-registry

v3.20.0 => 3.42.0

Package 数が 702 から 803 まで増えました。 Contribution してくださった方々、ありがとうございます。

今月は Pull Request の数がすごくて 91 個の PR がマージされました。

ありがたい話ですし、これほどの PR が来る OSS を開発できたことを誇りに思います。

aqua-registry がサポートするツールの数が 800 を超えました。 ちなみに asdf-plugins がサポートする数は 2022-08-30 時点で 514 なので、 asdf よりだいぶ多くなりました。

$ asdf plugin list all | wc -l
514

また、 GitHub の API rate limit に引っかかるようになったので対応しました。

  • github.token を使う
  • main branch で test するのやめる
  • ci-info の結果を cache

後述する aqua registry のための framework を使って CI とローカル開発を大きく改善しました。

aqua registry のための framework

aqua Registry を開発するための Framework をリリースしました。 主な aqua Registry といえば Standard Registry ですが、 組織内の private なツールのための Private Registry を作ることも出来ます。 aqua-registry を開発するためのコードは元々 aqua-registry のリポジトリ内に置いてありましたが、 それを Private Registry を開発するのにも使えるよう、別の OSS として切り出しました。 また、 Private Registry の Template Repository とドキュメントも整備しました。

自分も社内のツールのための Private Registry を作るのにこれらを使っています。

aqua-installer

aqua-installer を GopherJS を使って JavaScript Action に出来ないか検証しました。

結論を言うと今はまだやめたほうが良さそうということで諦めました。 興味のある人は zenn の scrap を見てみてください。 将来的に GopherJS がより成熟してきたらまた検討するかもしれません。

aqua-renovate-config

go datasource をサポートしたら warning が大量に出るようになったので対応しました。

tfcmt

  • v3.4.0
    • commit hash に関連した PR を取得して PR にコメントするようにしました

GitHub 側の仕様変更で、今月になって commit に対する comment が PR の timeline に表示されなくなりました。

そのため、 CI で push event を hook して commit にコメントをしている場合、 tfcmt plan の結果が PR に表示されなくなるというケースがありました。

そこで commit hash に関連した PR を取得して PR にコメントするようにしました。 なお、元々 pull_request event を hook するなどして PR 番号が tfcmt に渡っている場合は関係ありません。

tfaction

  • v0.5.15: tfmigrate-apply 中の typo の修正
  • v0.5.16
    • tfmigrate が history の保存先に GCS をサポートしたことのに合わせて、 tfmigrate-plan job で .tfmigrate.hcl を scaffold する際に GCS を指定できるようになりました
    • gsutil が Workload Identity Federation をサポートしたことに合わせて、 setup job の中で最新の gsutil をインストールするようになりました
    • これにより、それまで AWS を利用することが前提だったのが、 AWS の代わりに GCP を使うことができるようになりました

github-comment

上記の tfcmt と同様の変更を github-comment にもしました。

ci-info

  • v2.1.0
    • public repository なら GitHub Access Token なしで動くようにしました
  • v2.1.1
    • arm64 support

OSS の新規開発 🚀

gha-trigger

まだ開発中ですが、新しい OSS を開発しています。詳細はまたいずれ書けたらと思います。

その他

Aqua Picker (Third Party)

公式ではないですが、 aqua に色々 Contribution してくださっている 4513echo さんが作られているサイトです。

ありがたい話です。

Chrome の tab を手動で group 作って整理するようにしてみた

tab たくさん開きすぎて目的のページが見つからなくなって手当たりしだいに閉じるみたいなのをなんとかしたいとは前から思ってました。

たまに Chrome の拡張機能をググったりしつつもどれもしっくりこず、特に何も対策を打たずに来ましたが、 最近 Chrome 標準の Grouping 機能を使って、業務のトピックごとに Group を使って整理するようにしてみました。

それなりにうまくいってますが、まだ改善の余地はありそうな感じはするので、模索していきたいと思います。

その他のその他

aqua

GitHub Sponsor になると言ってもらえてありがたい。

雑に使えるというのは、学習コストの低さの表れかなと思います。 これは team や project にツールを導入し、普及していく上ではとても重要なことです。 個人で使う分には多少学習コストが高くても好きなものを使えば良いですが、 他の人にも広めていく上では学習コストの低さは極めて重要です。 仕事で使う場合には学習することが目的ではなく、他にもやるべきことがあるはずなので、 そういう状態でもストレスなく、簡単に使えることがスムーズに導入を進める上で大事です。 なので、学習コストが低くて team や project に導入しやすいという意味でも、 個人の dotfiles だけでなく team, project で使うツールのバージョン管理にも aqua が広がっていくと良いなと思っています。

また、雑に使えると言っても、 aqua では registry も含めて version を厳格に固定し管理され、バージョンの差異による問題が起こらないようになっています。

こうやって徐々に認知されていくのはいい話ですね。

aqua-registry

PR お待ちしてます。

tfcmt

tfaction

GCPでのworkload identityと連携できるか

できます。

github-comment

github-comment でコメントが長すぎた場合に、代わりのコメントを post する設定です。

inspire しました。

It is inspired from suzuki-shunsuke/github-comment.

ci-info

ci-info が自動で環境変数から commit hash などの情報を取得してくれるという話ですね。 内部的には go-ci-env というライブラリを使っています。

· 7 min read
Shunsuke Suzuki

仕事

今月から Mercari の Platform Group の Platform DX team のメンバーとして仕事をしています。 英語で若干苦労している部分はありますがなんとかやっています。

このご時世なので同僚の方とオフラインで会うことは当分無いだろうなと思っていましたが、 2 回ぐらい歓迎会をして頂き(オンラインを含めるともっとある)、顔を合わせることができました。

ドキュメントはかなり整ってますし、わからないことは聞けば教えてもらえますし、毎日メンターと 10 ~ 15 分程度 1on1 をやっているので順調にオンボーディングを進められているかなという気がしています。

自動化の仕組みとかはかなり整っていますが、 aquatfcmt, github-comment といった自分が開発している OSS を活用して更に DX を高めたりコードを綺麗にしてメンテナンス性を高めることができるのではないかなと感じています。

現在幾つかのタスクに取り組みつつ、上記のツールを導入するためにツール側を若干修正しています。 新しい環境に移ることで今まで見えてなかった部分が見えてツールを進化させることが出来ていていい話だなと思います。

OSS 開発

aquaproj/aqua

v1.15.1 => v1.18.0

  • v1.16.0
    • aqua g の検索結果の表示を改善
  • v1.17.0
    • log のカラー出力を環境変数で制御できるようにした
    • progress bar をデフォルトで無効化した。環境変数で有効化できるようにした
  • v1.18.0
    • aqua cp コマンドのサポート
      • Docker image などにツールをインストールし、 aqua なしで実行できるようにする際に便利

aqua cp を使った Docker image の build に関しては以下に書きました。

aqua-registry

v3.5.0 => v3.20.0

Package 数が 637 から 702 まで増えました。 Contribution してくださった方々、ありがとうございます。

あと、 aqua-registry に contribution するためのシェルスクリプト generate-registry.shscaffold.sh を Go で書き直したり、新たに create-pr-new-pkg というコマンドを追加したりしました。 Go で書き直すことで Windows でも動くようになりました。 scaffold してから PR を作成するまでが自動化できるようになり、より簡単に contribution できるようになりました。かなり便利です。

例えば以下の 3 コマンドで kevwan/depu を追加する PR を作成できてしまいました。 #4992

$ go run ./cmd/scaffold kevwan/depu # scaffold
$ depu --help # 動作確認
$ go run ./cmd/create-pr-new-pkg kevwan/depu # PR 作成

また Style Guide を整えました。

https://aquaproj.github.io/docs/reference/registry-style-guide

そして既存のコードを Style Guide に合わせて修正しました。

Package 数が 700 を超え、順調にパッケージの数は増え続けています。 これも簡単に新しいパッケージを追加できるアーキテクチャも含めた仕組み作りの賜物です。 ユーザーからは見えにくい部分ですが、この辺の良さも伝わればいいなと思います。

tfcmt

  • v3.3.0
    • Google Cloud Build を標準でサポート

github-comment

  • v4.3.0
    • post command で既存のコマンドの更新をサポート
    • ARM64 をサポート
  • v4.4.0
    • Google Cloud Build を標準でサポート

go-ci-env

  • v3.0.0
    • API を大幅に修正し、使いやすくした
    • generic package を削除
    • Add function を追加し、独自の Platform をサポートしやすくした
    • JobURL を追加

tfaction

  • v0.5.13
    • tfaction.yaml と tfaction-root.yaml で環境変数を設定できるようになりました。特定の working directory で terraform の -parallelism を変えたいときとかに便利です
  • v0.5.14
    • v0.5.13 で生じた、 terraform apply を実行する際に GCS から plan file をダウンロードするのに失敗するバグを修正しました (GCS じゃなくて S3 を使っている場合は関係ありません)

tfaction, もしかして某W社でも使われている(?)

その他

aqua の Twitter アカウントを作ってみた

@aquaclivm あとは hash tag #aquaclivm を活用し始めました(ちょくちょくつけるの忘れますが)。 aqua というワードがあまりにも一般的すぎて検索しても aqua が埋もれて見つけられないので、 aqua に関して呟くときは @aquaclivm をメンションするなり hash tag をつけるなりしてもらえると助かります。

starship, Yggdroot/LeaderF を導入

仕事用の PC をセットアップした際、今まで使ってた denite.nvim や kube-ps1 がうまく動かず、調べるのも面倒なので別のツールに乗り換えました。

その他のその他

aqua gr コマンドすごい便利。

fish で aqua を補完できるようにした話です。いい話

いい話

わかる。みんなにこの良さを知ってほしい

初物理出社時の記念写真

image

· 7 min read
Shunsuke Suzuki

仕事

05-18 がリクルートでの最終出社日でした。 https://techblog.szksh.cloud/job-change-2022-06/

なので今月は丸々休みです。来月 07-01 から働きます。

日報(?)

https://zenn.dev/shunsuke_suzuki/scraps/dbfdeb67518c52

zenn で日報のようなものを書いてみました。休み中なのに偉い。 06-07 だけ何も書いてないですね。この日はグダグダ漫画読んでたのかもしれません。 でも基本は休み中もずっと OSS のメンテしてました。

Blog

OSS 開発

aquaproj/aqua

Windows 対応は非常に大きな改修でしたが、反響がほぼなくて残念でした。

v1.9.0 => v1.15.0

aqua-registry

v2.19.0 => v3.5.0

Package 数が 515 から 637 まで増えました。 #4181 binenv が対応しているツールに関して、 aqua-registry でもだいたい対応しました。

tfcmt

  • v3.2.4: -auto-approve なしで tfcmt apply 実行できるようにしました。
  • v3.2.5: Windows に対応しました

asciinema-trim

https://github.com/suzuki-shunsuke/asciinema-trim/releases/tag/v0.1.2

Windows に対応しました

その他

aqua が紹介されました

著者の zoetro さんは以前も aqua に関する記事を書いてくださいました。ありがたい話です。

Terraform や Kubernetes では様々な周辺ツールがあり、それらのツールの管理に aqua は非常に便利だと思います。

Windows 環境を用意するなら Amazon Workspaces が便利

https://zenn.dev/shunsuke_suzuki/scraps/6859774d379414

aqua の Windows 対応で Windows 環境が必要だったので Amazon Workspaces を使いました。 とても簡単に Windows 環境を用意できるので便利でした。

tfcmt plan は plan ファイルを使っても実行できる

terraform plan の代わりに terraform show コマンドを使えば plan file を使って tfcmt でコメントできます。

https://github.com/suzuki-shunsuke/tfcmt/issues/316

tfaction の Star 数がなぜか増えた

理由はよくわかりませんが、結構 star 数が増えました。

image

Renovate が GitHub Actions x.y.z-0 を x.y.z に update してくれない原因と修正方法

https://zenn.dev/shunsuke_suzuki/scraps/9b4a3e5e8f6925#comment-09bfe96f8a2c1d

Slide 作成は Google Slide が自分にあってる

Slide をなにで作るか考えたりしましたが、結局 Google Slide が自分には合ってるのではないかという結論に至りました。 もっとも Slide ってあまりコスパが良くないので、ブログとかドキュメントのほうが良い気はしますね。

https://zenn.dev/link/comments/888dbb8af3ca0a

マイク買ってみた

https://www.amazon.co.jp/gp/product/B099ZZMGJ5

image

aqua の動画を撮るのに内臓のマイクだとイマイチな気がしたのでマイクを買ってみました。 有線のヘッドホンしないといけないのがちょっとマイナスですね。 QuickTime Player で録画してみたら、まぁ内臓のマイクよりはクリアな気がしますが、 音を拾いすぎている気もします。

買ったあとちょっと動画収録に使っただけであまり使ってないですが、来月から仕事でも使う機会あるのかな?内蔵マイクで十分な気もするけど。

運動

アキレス腱が痛くて走れないんですが、卓球はなんとか出来ます。 マイラケットとマイシューズを買いました。 週1, 2 くらいでやってますが、仕事始まったら週1になるかも。

その他のその他

tweet の埋め込み、もうちょいいい感じにしたいですね。

tfaction に関するコメント。ありがとうございます。すごい自動化されている感じがしていいですよね。

自分が LINE で Corporate Engineer やってた頃に作った Slack App が未だに現役らしくて感動しました。

さいごに

05-19 から 1 ヶ月以上に渡る有給消化が終わりました。 長い休みの間に新しい OSS を作ったりしたいとも思ってましたが、既存の OSS (主に aqua) のメンテで手一杯でした。 それでも aqua や tfcmt などを改善できたので良かったです。

来月から Mercari で働きます。 環境が大きく変わるはず(特に英語)なので、楽しみな半面ちょっと緊張します。

· 10 min read
Shunsuke Suzuki

仕事

05-18 がリクルートでの最終出社日でした。

https://twitter.com/szkdash/status/1526875250646204417

https://twitter.com/szkdash/status/1527235538951974912

Blog

OSS Contribution

merged daterepositorylangPR's short description
2022-05-07terraform-linters/tflint-ruleset-awsgofeat: support provider aliases

Terraform の AWS Provider の Alias が設定されている場合でも tflint の AWS Plugin の Deep Check が正しく動くようにしました。

https://github.com/terraform-linters/tflint-ruleset-aws/issues/331 を読むと分かりやすいかも。 これを実装する際にはメンテナの @wata727 さんに結構フォローしていただき、助かりました。

OSS 開発

新規

特になし

Update

Demo

https://twitter.com/szkdash/status/1531555164800557056

若干情報が古くなっていたので、デモ動画を作り直しました。

aquaproj/aquaproj.github.io

https://github.com/aquaproj/aquaproj.github.io

zenn と違って dev.to, medium で書いた記事は GitHub で管理されていなかったのが嫌だったので、 aquaproj.github.io で Blog を有効化して dev.to, medium の記事をコピーしてきました。 Canonical URL を設定しています。 新たに英語で記事を書く際にはこちらで書いて、 dev.to にクロスポストして Canonical URL を設定することにしました。

関連: https://zenn.dev/shunsuke_suzuki/scraps/43b8f553d08b6f

あと DocSearch による検索がいつの間にか動かなくなっていたのでサポートに問い合わせました。 https://github.com/aquaproj/aquaproj.github.io/issues/76

aquaproj/aqua-registry

https://github.com/aquaproj/aqua-registry

v2.11.0 => v2.19.0 (ツール数: 470 => 515)

様々なツールを追加しています。 package type go のツールも追加しました。 https://github.com/aquaproj/aqua-registry/pull/3713

aquaproj/aqua

https://github.com/aquaproj/aqua

  • v1.5.0-0 => v1.9.0
  • v1.5.0: package 名のエイリアスをサポート
    • リポジトリ名が変わったり、別の org に transfer されたりしたときのための機能
  • v1.5.1
    • 同じツールを複数バージョンインストールする場合(基本そんなことしないけど)のバグを修正
    • Registry ファイルの拡張子が .json の場合、 JSON としてパース
    • リファクタリング
  • v1.6.0
    • standard registry の override のサポート: registry.yaml の代わりに registry.json を指定することで若干パフォーマンスが改善する
    • experimental feature という概念の導入
      • execve(2) でコマンド実行をサポート。残念ながら macOS で正常に動作しないケースが見られるので experimental feature としてリリース
    • retry の limit に引っかかった場合にエラーを返すようにした
    • リファクタリング
  • v1.6.1
    • log に GOOS と GOARCH を追加。問い合わせ時に便利
    • 大幅なリファクタリング
    • unit test の大幅な追加
  • v1.6.2
    • v1.6.1 のバグ修正。 aqua g と aqua list で global configuration を読まなくなっていたのを修正
  • v1.6.3
    • aqua g で 1 件もマッチしなかった場合に panic が発生するのを修正
  • v1.7.0
    • Go 製のツールをインストール時に go build でビルドするのをサポート
  • v1.8.0
    • aqua g で GitHub Tag からバージョンを取得できるようにした
  • v1.9.0
    • github_archive, go で commit SHA を version として指定できるようにした

checksum の検証も POC として実装してみました。 しかし checksum のリストのファイルを Git で管理しないといけないのがユーザーの体験を損なうので、どうするのが良いのかよく分からず一旦置いています。

https://github.com/aquaproj/aqua/issues/427

tfcmt

https://github.com/suzuki-shunsuke/tfcmt

  • v3.2.1 => v3.2.3
  • v3.2.2: apply の merge commit に関連する Pull Request を API で取得
  • v3.2.3: GitHub Enterprise Support の修正。 Graph QL API の Endpoint を変更できるようにした

github-comment

https://github.com/suzuki-shunsuke/github-comment

  • v4.1.1 => v4.2.0
  • v4.2.0: GitHub Enterprise のサポート

renovate-issue-action

https://github.com/suzuki-shunsuke/renovate-issue-action

Project に追加できるようになったことで、だいぶ実用レベルに達した気がします。

v0.2.1 => v0.3.1

  • v0.2.2
    • Issue の title と body のデフォルトを改善
    • additional_body field の追加
  • v0.2.3
    • Issue を Project に追加できるようにした
  • v0.3.0
    • Issue の body 関連のフィールドを整理
  • v0.3.1
    • 紛らわしいログを削除

asciinema-trim

https://github.com/suzuki-shunsuke/asciinema-trim

v0.1.0 => v0.1.1

再生速度の変更をサポートしました。

https://twitter.com/szkdash/status/1531563963057852416

その他

CLAS でオフィスチェアをレンタルしました

以前からオフィスチェアに興味はあったものの、結構高いですしいきなり高いものを買って失敗するのは嫌だったのでレンタルで試すことにしました。 レンタルもはじめてなので一番安い (1,650 円 / 月) のから試すことにしました。

注文してから届くまでに 2 週間以上かかりました。 Amazon とかの翌日配送に慣れていたので、 2 週間以上かかることに驚きましたが、そういうものかと思うことにしました。

一番安いのにしたものの、座り心地は今までのよりだいぶ良いです。 今まで自分は背もたれに寄りかかっている感覚があまりなかったのですが、新しいのだと自然と腰に背もたれが当たって支えられているような感じがします。 と言いつつ、一番安いものなのでもっといいやつも試したいとは思っています。肘掛けが若干ほしいです。

オフィスチェアの他に興味あるものとしては、ベッドも興味あります。 ベッドのレンタルもあるようです。ただベッドの場合は、今使ってるやつをどうすればいいのかよくわからないし、オフィスチェアよりも面倒な気もします。

https://clas.style/furniture/bed/

運動

有給消化で時間に余裕もありますし、運動を週 5, 6 くらいでするようにしています。 元々食事には気を使っていてお酒も飲まないし間食もしないのですが、引きこもっていたら気づかぬうちに結構太っていました。

その他のその他

go-yaml は別に watch しているわけではないですが、 v3.0.0 の tag が打たれていることに気づきました。 v3 は長いこと tag が打たれてなくて使う気になれませんでしたが、 tag が打たれたということは stable になってきて安心して使えるということなのでしょうか? v2 と v3 でどう変わってるか把握してないので、調べてみても良いかも

WhiteSource が MEND に名称が変わったらしいです。

https://github.com/spf13/afero 便利

GitHub Actions の pull_request closed event では workflow が trigger しないことがある

GitHub doesn’t queue the merge commit job for closed PRs; So workflows using on: { pull_request: { types: [“closed”] } } will not consistently be triggered.

Bot が team に対してメンションするには team を read する権限が必要

Mercari の Security Team の Blog Series 読まねば

· 18 min read
Shunsuke Suzuki

転職することになったのでその経緯とかを書こうかなと思います。

現職ではなにをやっていたのか

現職では Recruit でスタディサプリ及び Quipper Product (Quipper School, Quipper Video) の SRE をやっていました。

2019-10-01 から Quipper Japan Branch の SRE team に Join し、 Quipper Japan Branch が 2021-10-01 に Recruit に統合されてからは Recruit の SRE をやっていました。 統合されてからも携わっているプロダクトや業務内容は特に変わってないので、 2 年 9 ヶ月ほど在籍していたことになります。

https://github.com/suzuki-shunsuke/resume に職務経歴書を置いているのでそちらも参照してください。 ちなみにこのリポジトリは今回の転職の際に作ったのですが、このリポジトリが更新されているのに気づいて自分の転職をいち早く察した方もいたようでした。

SRE として様々なことを経験しましたが、特に自分は Terraform の CI/CD Pipeline の改善に注力してきました。 そしてその過程で様々な OSS を開発してきました。 詳細はブログや職務経歴書に書いてあるので割愛します。

コロナの流行に伴い途中から今に至るまでフルリモートになり、フルリモートだった期間のほうが長いです。 フルリモートになってからはオフィスにはワクチンの職域接種を除き 1 回しか行ってないですし、 同じチームでも自分の後に入社した方とは直接会ったことはないです。 ですが、 Slack や Google Meet などでコミュニケーションを取っていたので自分としては特に不便はありませんでした。

スタサプ SRE のすすめ

IT の力で教育に変革を起こし、学びたい人がより自由に学べる世界を目指すスタディサプリ及び Quipper Product に関われて嬉しく思っています。 転職する自分が言うのもなんですが、スタサプの SRE チームは本当に恵まれた環境です。転職を考えている人は是非候補に入れてみてください。

スタサプ SRE の良いところ:

  • 同僚(SRE 以外も含む)が優秀
  • 現状に満足することなく、日々改善に取り組んでいる
    • 技術的な部分だでなく、 MTG などのあり方なども日々見直している
    • 振り返りをし、課題と改善案を考え実行するというサイクルを日々回している
  • 自己完結なプロダクトチームのためのプラットフォームの開発を行っている
    • SRE がプロダクトチームに依頼を受けてインフラを構築するのではない
  • 裁量が大きく、自分で課題を見つけて改善することが出来る
    • なぜそれが必要なのか Issue を書くなど、説明責任は伴うが、ちゃんと説明できれば No とはあまり言われない
    • 自走出来ない人には向きません
  • 情報が比較的オープン
    • Slack の Private channel や DM でのコミュニケーションがほぼない
    • GitHub リポジトリもスタサプ関連のものならほぼ全部見れる
    • GitHub を検索すればだいたい情報が見つかる
  • ドキュメントを書く文化もある
  • Postomortem や Design Doc, Production Readiness Check, SLI/SLO といった SRE の基本的なプラクティスが既に定着している
  • サービスが安定している
    • サービスの性質上・ SNS でバズって急にスパイクするようなことがほぼない
    • 基本的には k8s の Cluster Autoscaler や Horizontal Pod Autoscaler で対応できる(長期的なサービス拡大のために他にもやっていることはあります)
    • 障害は少なく、深夜や休日に稼働しないといけないことも少ないので、 QOL を損なわない

https://brand.studysapuri.jp/career/position/sre にもいいことが書いてあるので、読んでみてください。

あと、 Security に特化したポジションもあるので、そちらも興味があれば是非。

転職への流れ

転職のきっかけは、 @deeeet さんから Twitter DM で声をかけていただいたことでした。 deeeet さんとは過去に 2 回ほど面識があり、最初は「突撃 Terraform」、2 回目は Open Policy Agent Rego Knowledge Sharing Meetup というオンライン LT 会でした。 ただ、面識があるとはいえ deeeet さんが自分のことを認識しているとは思っていなかったので驚きました。 ここ何年か OSS の開発や blog の執筆などを精力的に行ってきたのが功を奏したのかもしれません。

DM で声をかけていただいてから直ぐにカジュアル面談をして頂き、その後直ぐ採用ページから応募しました。 職務経歴書の言語の指定は特にありませんでしたが、採用ページに日本語の JD がないことから、英語で書きました。 markdown で書いて md-to-pdf で PDF に変換しました。 markdown で職務経歴書を書いたのははじめてですが、自分にとっては Word などと比べてずっと書きやすかったです。

自分は今回のも含めて過去に 3 回転職をしていますが、 エージェントを介さずに直接応募したのははじめてでした。 過去 2 回の転職活動は色々な会社の募集要項に目を通して複数社の面接を受けて日程を調整して面接を受けに行ってと、なかなか精神的にも肉体的にも大変でした。 一方、今回は 1 社しか受けなかったこと、またこのご時世なので面接も全てリモートだったこともありだいぶ負担は少なかったです。

どこに転職するのか

2022-07-01 から、 Mercari の Platform Group に Join します。まだ1ヶ月以上先ですが、今から楽しみです。

Mercari には優秀なエンジニアが集まってますし、 Platform Group の Blog Series を読んで技術的にチャレンジングなことをやっていて面白そうだと感じました。 自分が現職で取り組んでいた Terraform CI/CD Pipeline などの改善にも通じる部分があり、自分の経験・強みを活かしつつ新しいことに挑戦できるのではないかと思いました。 Blog Series や OSS の公開など、社外にも技術をオープンにしているのも良い文化だと感じました。

現職でプラットフォームエンジニアリングのようなことをやっていく中で、 抽象化された UI/UX を提供すること・生産性を損なわずにプラットフォームのセキュリティを担保することがとても重要かつ難しい課題だと感じていて、 Developer Experience at MercariSecuring Terraform monorepo CI に書かれていることに共感しました。

余談ですが、とある方から転職するなら Hashicorp に転職して欲しいと言われました。 自分のこれまでの OSS の開発の経験を活かし、より多くの人・組織に使ってもらえる OSS の開発に携わってほしい(そのほうがより大きなバリューが出せる)という意図だと思いますが、 具体的な社名が出てくるとは思っていなかったのでびっくりしました。 どこに所属するにせよ、より多くの人・組織に使ってもらえるような OSS の開発をしていきたいですね。

おまけ: OSS 活動の振り返り

転職の話とは関係ないですが、ついでにここ数年の OSS 活動などについても振り返りたいと思います。

GitHub followers

2022-05-19 時点の状況

GitHub Followers: 139

image

やはり Star 数上位 3 つは思い入れがありますし、 github-commentci-info も便利なのでもっと評価されてほしいと思います。 色々なものを作ってきましたが、ここではこれらに絞って紹介します。

aqua

一番思い入れがあるのは aqua です。 汎用的な CLI のバージョン管理ツールは色々ありそうで意外とあまりありません(多分)。 有名なのは asdf くらいですが、これは自分が求めているものではありませんでした (Nix とかもあるけど、良く知りません) 。

バージョンを固定することで、バージョンの違いによるトラブルを起こらないようにすることができます。 aqua は使うのがとても簡単で、 (symbolic link さえ作られていれば) コマンド実行時に自動で指定したバージョンがインストールされバージョンが切り替わります。 aqua g による検索は使い勝手がよいです。 GitHub Actions で簡単に導入ができるよう Action が提供されています。

aqua は Renovate の Preset Config を提供しており、 Renovate を使って簡単に update の自動化ができます。 aqua は Renovate を最も上手く活用した OSS の一つだと思っています。

aqua には Registry という Ecosystem があります。 aqua 本体への contribution にはそれなりのハードルがあるかと思いますが、 aqua-registry という公式の Registry には簡単に Contribution することができます。 2022-05-19 時点でありがたいことに自分以外に 13 人の方に Contribution 頂いています。 本体とは独立した拡張機構を持った OSS を作ることができたことにも満足しています。

aqua-registry に登録されているツールの数は、 2022-05-19 現在 asdf-plugins を超えました。 だから aqua のほうが優れているという話ではありませんが、 asdf と同等以上に多くのツールをサポートしているとは言えると思います。

$ asdf plugin list all | wc -l   
470

$ aqua list | wc -l
499

aqua はツールのインストールと継続的 update を非常に容易にします。 ツールをダウンロードして展開してインストールするような定型的なシェルスクリプトを書く必要はありませんし、いつまでも古いバージョンが使われることもありません。

また、 Go で GitHub Actions の Action を作りたいと行った場合に、態々 Action としてパッケージングせずに aqua で install して run step で実行するということもやりやすくなります。 例えば自分は renovate-issue-action という GitHub Actions で実行することを前提とした CLI ツールを作っていますが、 これも態々 Action としてパッケージングせずに aqua で install して run step で実行するようにしています。

e.g.

- uses: aquaproj/aqua-installer@v1.0.0
with:
aqua_version: v1.6.0
- run: renovate-issue-action

tfaction

tfaction は GitHub Actions で Terraform の CI/CD Pipeline を構築するための Action の Collection です。 便利な単体の Action は色々あると思いますが、 workflow 全体をカバーするものはあまり他にないのではないかと思っています。 こういう CI/CD Pipeline はあまりオープンにされない面もあると思うので、それを OSS にできたことは有意義なことだと思っています。

tfcmt

tfcmt は CI で実行した terraform plan, apply の結果を Pull Request に分かりやすく通知する CLI ツールです。 tfnotify のフォークですが、 GitHub への通知に特化する代わりに様々な機能改善を入れています。 GitHub を使っているのであれば tfcmt を個人的にはオススメします。 OSS は気に入らなければフォークすればいいとはよく言ったものですが(?)、実際にフォークして個人でここまで開発するとは、我ながらよくやったなと思います。

github-comment

github-comment は Pull Request, Issue にコメントをしたりコメントを非表示にしたりする CLI ツールです。 使い方次第ですが、 CI をよりユーザーフレンドリーにし、 Developer と DevOps Engineer の双方の生産性を高めることもできるツールです。

github-comment で PR にコメントをして CI の結果を分かりやすくする

ci-info

ci-info は地味なツールですが、 CI に関連した情報を取得してファイルに書き出したり環境変数として出力する CLI ツールです。 CI を実装していると、 push event に関連する Pull Request とか、 Pull Request の label の list とか、 Pull Request で変更されたファイルの一覧とか、 Pull Request の Author とか欲しくなったりするのですが、そういった情報を取得するコードを毎回書くのは地味に面倒です。ページネーションとかも考えるとなおさらです。 また、 CircleCI や GitHub Actions など複数の CI Platform に対応していて、それらの違いを吸収する意味合いもあります。

さいごに

以上、現職でやってきたこと、転職の経緯、ここ数年やってきた OSS 開発について書きました。