Productivity Weekly (2022-03-30号)


こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。

僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1 週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。
本記事はその時のネタをまとめたものです。

今回が第 68 回目です。過去の記事はこちら

news 📺

ジョブにおける OIDC トークン - CircleCI に関する最新情報

https://circleci.com/ja/changelog/#ジョブにおける-oidc-トークン

CircleCI が OIDC に対応しました。AWS や GCP などの認証時にシークレットが必要なくなるので、シークレットを CircleCI 上に保管しなくてもよくなります。

詳細は公式ドキュメントに載っています[1]

また、クラメソさんの試してみた記事が既に出ていました。画像を混じえて丁寧に方法を載せてくれています。

https://dev.classmethod.jp/articles/circleci-supported-oidc-so-i-tried-linking-it-with-aws/

まだ circleci/aws-clicircleci/gcp-cli といった CircleCI 公式の Orb などでは対応されてないようで、OIDC トークンを使った認証は手動で行う必要があります。例えば GitHub Actions では AWS が開発している aws-actions/configure-aws-credentials アクションで簡単に OIDC を使った認証ができます。

Orb による対応に関しては CircleCI Japan が vote してくれと言っているので、vote することで対応の優先順位が上がるかもしれません(余裕がある人は該当 Orb にプルリクエストを送るのもありだと思います)。

Ignore commits in the blame view (Beta) | GitHub Changelog

https://github.blog/changelog/2022-03-24-ignore-commits-in-the-blame-view-beta/

GitHub の blame 画面において、.git-blame-ignore-revs ファイルに書かれたコミットを無視して表示できるようになりました(ベータ)。

git blame は任意のファイルの各行がどのコミットによって変更されたかを調べるためのコマンドです。よく意図のわからないコードがどのコミットで追加されたかを特定するために使われます。git blame は Git のコマンドですが、GitHub 上でも同じようなことができます。

Git コマンドの方では、git blame --ignore-revs-file <ignoreしたいコミットが載ったファイル> <対象ファイル> で blame に出すコミットを無視できます。今回の GitHub の変更も同じようなもののようです。

実際に自分のブログのリポジトリで試してみました。最近巨大なリファクタリングをしたので、そのコミットを無視するようにしてみます。


.git-blame-ignore-revs 設置前。refactor: respects the lint というコミットが表示されている


.git-blame-ignore-revs 設置後。refactor: respects the lint というコミットが消えている

確かに該当コミットが見た目上消え去り、過去のコミットを追いやすくなりましたね。今回の使い方のようなフォーマッタ系の巨大なコミットを無視したいときとか便利かもしれません。

Following organizations | GitHub Changelog

https://github.blog/changelog/2022-03-23-following-organizations/

GitHub において Organization をフォローできるようになりました。ユーザをフォローした時と似たような情報が出てくるようです。フォローした Organization に関する情報はダッシュボードの新しい「For you」フィードに流れるようになります。この Organization に関する情報は見逃したくないという方はフォローしてみてください。

know-how 🎓

Docker Compose V2で変わったdocker-compose.ymlの書き方

https://zenn.dev/miroha/articles/whats-docker-compose-v2

去年秋頃 Docker Compose v2(docker compose)がリリースされましたが、従来の Docker Compose v1(docker-compose)と違い、v2 では Compose Spec に準拠しているため docker-compose.yaml の書き方が新しくなっているという記事です。

Compose Spec では Compose ファイルの仕様が定義されています。この記事では、Compose Spec が従来の v1 の書き方とどう違うのかが書かれています(後方互換性がある為、v1 の記法はそのまま使えます)。

個人的には、Compose Spec ではファイル名を compose.yaml とするのがデフォルトとなっていることに驚きました。全く知りませんでした。新しく compose.yaml を書く際は最新の書き方に則って書きたいですね。

Introducing Real World Testing with Cypress

https://cypress-io.ghost.io/blog/2022/03/28/real-world-testing-with-cypress/

E2E テストツール Cypress の公式学習サイト「Real World Testing with Cypress」の紹介記事です。テストの基礎、Cypress の基礎、高度な使い方を学ぶことができます。他にも実際のアプリケーションに近いアプリのテスト例が 30 個あったり、より実際のアプリケーションに近い Shopify ストアの構築とテストに関するチュートリアルがあったりします。

面白いのが、この学習サイト自体が GitHub で公開されており、しっかりと Cypress でテストされていることです[2]

https://github.com/cypress-io/cypress-realworld-testing

Cypress の学習だけじゃなく、E2E テストノウハウを学ぶのにも使えそうです。

tool 🔨

The secret of the macOS Monterey network quality tool

https://danpetrov.xyz/macos/2021/11/14/analysing-network-quality-macos.html

macOS Monterey にネットワーク帯域の速度を測るコマンド networkQuality が追加されていると言う話です。端末で networkQuality を叩くだけで実行できます。

デフォルトで上り下りを同時に測定するので実際のユースケースに近いと筆者は述べています。

自分も実際に測ってみたら以下のようになりました。

❯ networkQuality
==== SUMMARY ====
Upload capacity: 522.864 Mbps
Download capacity: 502.196 Mbps
Upload flows: 16
Download flows: 12
Responsiveness: High (1344 RPM)

Responsiveness: High という結果になりました。公式のサポートドキュメントによると、High は「高い:ネットワークを共有しているデバイスや App の数に関係なく、App やサービスは安定した接続を維持できます。」を意味してるようです。

こういう計測ツールはたくさんありますが、デフォルトでインストールされているのが嬉しいですね。覚えておきたいです。

koneta 🍘

Productivity Weekly で出たネタを全て紹介したいけど体力が持たない、または、そんなに言うことがなかったネタを一言程度で書くコーナーです。

あとがき

4 月になって新卒社員が入ってきたのでウキウキしてます。
最近あんまり Weekly 書く時間が取れてないので、ちょっと小ネタが多くなってしまいました。

生産性向上チームは今年の夏にインターンを開催するので、興味があればエントリーしてください(4/22 エントリー開始)。

サイボウズの生産性向上チームでは社内エンジニアの開発生産性を上げるための活動を行なっています。そんな生産性向上チームが気になる方は下のリンクをクリック!

https://note.com/cybozu_dev/n/n1c1b44bf72f6
脚注
  1. なぜか日本語の Changelog には GitHub Actions の OIDC ドキュメントへのリンクが貼っており、CircleCI のドキュメントへのリンクが貼られていなかった。2022/04/02 確認したら英語版の Changelog は CircleCI のドキュメントがリンクされてた。 ↩︎

  2. 手元の M1 Mac で動かしたところ、Node.js 14 だからかわかりませんが Wasm 関連のエラーが出てしまいました。Node.js 16 で実行したところうまく動きました。 ↩︎