Skip to main content

· 9 min read
Shunsuke Suzuki

自分の仕事 (SRE, Platform Engineer) と趣味 (OSS 活動) についてエンジニア以外の方にもわかるように説明します。 背景としては、時々世間話のような形で仕事や趣味について聞かれることがあるもののあまり上手く説明できないことが多いので、一度文書化してみようと思った次第です。 エンジニアの方以外にも分かるよう分かりやすさを重視するため、少々雑で乱暴な説明をすることがあるかもしれません。 エンジニアの方などからすると引っかかる部分もあるかもしれませんが、予めご了承ください。

仕事で何をやっているのか

自社サービスを運営している IT 企業でソフトウェアエンジニアをやっています。 ソフトウェアエンジニアとは要はプログラマのようなもので、プログラムを書くことを仕事にしています。 ソフトウェアエンジニアといっても色々な種類がありますが、自分はインフラエンジニアとして働いています。 もっと正確にいうと SRE や Platform Engineer と呼ぶべきですが、説明を簡単にするためにインフラエンジニアとして説明します。 インフラという言葉は、社会インフラや生活インフラのように、人々の社会生活を支える基盤となる施設や設備のことを指します。 自分はインフラエンジニアとして、所属する企業が運営するサービスを支える基盤を作っています。 つまり、自分はユーザー向けのサービスの機能を直接的に作っているわけではなく、それを支えるインフラを作る、いわば縁の下の力持ちのような存在です。 具体的にどういうことをやっているかというと、サーバー (サービスを動かすためのコンピューター) やデータベースなどのサービスを動かすのに必要な環境を用意したり、サービスが安定して使えるようにしたり、異常にすぐきづけるようにしたり、サービスの開発者が効率よく開発できるようにしたりしています。 こういったことを手作業でやることもありますが、エンジニアの醍醐味はプログラムによって自動化することですので、エンジニアとしてこれらを可能な限り自動で実現するような仕組みづくりをしています。

趣味 (OSS 活動) について

OSS 活動とはなにか

趣味として OSS 活動をしています。 OSS は Open Source Software の略で、ここでいう Source はソースコードのことです。 あらゆるプログラムは C や Java といったプログラミング言語で書かれていて、そのプログラムを書いたソースコードがあります。 例えばみなさんが使っている Windows や Word, Excel などにもソースコードがありますが、当然それらは公開されていません。 そういったソースコードが非公開なソフトウェアとは対象的に、ソースコードが公開されていて誰もが (一定の条件付きで) 自由に使って良いものを OSS と呼びます。 OSS は個人や企業を問わず広く使われていて、 OSS を全く使ってないソフトウェア・サービスはないといっても過言ではありません。 自分が開発する OSS も個人はもちろん企業でも使われています。 OSS 活動には幾つか種類がありますが、自分は以下のようなことをやっています。

  1. 自分で OSS を作って公開すること
  2. 他人の OSS に不具合を報告したり新しい機能を提案すること
  3. 他人の OSS を修正すること

何を作っているのか

自分は様々な OSS を作っていますが、それらは全て開発者向けのものであるため、開発者以外に説明するのはかなり難しいです。 幾つか頑張って説明すると、まずソフトウェアのインストールとバージョン管理を自動化する aqua という OSS を作っています。 バージョン管理とはようするにソフトウェアのバージョンを上げたり(アップデート)下げたり(ダウングレード)するということです。 あとは Terraform というとあるソフトウェアの実行結果を分かりやすく通知する tfcmt という OSS なども作っています。 他にも色々作っているんですが、要するに開発者にとって便利なものを作っています。

なぜ OSS 活動をやるのか

残念ながら OSS 活動で食べていけるだけのお金を稼ぐのは難しく、金銭的にはあまりメリットがありません。 それでも自分が OSS 活動をするのには色々理由があります。

  1. 楽しいから
  2. 問題を解決するため、より便利になるため
  3. 自分の OSS 活動を評価してもらえると嬉しいから

まず単純に楽しいからです。 数学やパズルのように問題を解く快感がありますし、期待通り動いたときの気持ちよさもあります。 あとは OSS 活動を通じて知識やスキルを身につけることが出来、これも楽しいです。 次に、自分が遭遇した問題を解決したりより便利にするためです。 こんなのあったら便利だなと思ったら自分で作ってしまえるのがプログラミングのいいところです。 既製品では満足できないから DIY するようなものなのかもしれません。 最後に、自分の OSS 活動を評価してもらえると嬉しいからです。 自分の OSS は個人や企業を問わず広く使っていただいています。 SNS で自分の OSS を褒めてもらったりすると嬉しいですし、それだけのことをやったんだと誇らしい気持ちにもなります。

あとは OSS 活動で食べていくのは難しいとは言いましたが、 OSS 活動がキャリアアップにつながることはあります。 すごい OSS 活動をすれば能力の証明になりますし、それがきっかけでスカウトが来たり、採用面接でコーディングテスト (プログラミングのスキルを見るためにコードを書いてもらうテスト) が免除されることもあります。 まぁキャリアアップが目的で OSS 活動をしているわけではありませんが、こういうメリットもあるということです。

· 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 読まねば