🇺🇦

Productivity Weekly (2022-03-02号)

2022/03/09に公開

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

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

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

news 📺

View network transfer information in Resources tab - CircleCI Updates

https://circleci.com/changelog/#view-network-transfer-information-in-resources-tab

https://discuss.circleci.com/t/helping-customers-predict-the-cost-of-enabling-the-ip-ranges-feature-an-update-to-the-resources-tab/43068

CircleCI の Docker エグゼキュータを使うジョブにおいて、ネットワーク転送量を確認できるようになりました。Job 詳細画面の RESOURCES タブから In/Out 両方の合算を確認できます。


こんな感じ

上記 2 つ目のリンク(Discuss)では、去年追加された IP 範囲を固定する機能(IP ranges)を使用する際のコスト計算や最適化に利用できると書かれています。

また、CircleCI では 2022/03/01 よりストレージとネットワークが課金対象になる予定です。ネットワーク転送量を抑えるためにもジョブごとに確認できるようになったのは良いですね。


https://circleci.com/docs/ja/2.0/faq/#how-do-I-calculate-my-monthly-storage-and-network-costs より

Estimated runtime now available for ongoing builds - CircleCI Updates

https://circleci.com/changelog/#estimated-runtime-now-available-for-ongoing-builds

CircleCI で実行中パイプラインの推定残り時間が出るようになりました。パイプラインのステータス下に推定残り時間が表示されます。推定残り時間は以前のパイプラインの実行に基づいているとのことです。あとどれくらいでパイプラインが終わるかわかるのは地味に嬉しい変更ですね。


こんな感じ。残り 1 時間 13 分との予測が出ている。

Dedicated hosts for macOS - CircleCI Updates

https://circleci.com/changelog/#dedicated-hosts-for-macos

CircleCI において、macOS の専用ホストを利用できるようになりました。

専有ホストとなるので 1 台の物理的な macOS マシンを独占できます(既存の macOS Executor は仮想マシン上での実行です)。専有ホストを利用するメリットとしてはセキュリティが向上すること GPU へのアクセスが可能になることなどが述べられています[1]。ただし、1 時間あたり 100 クレジットの消費となり、最低 24 時間はリースしなければいけません。

これまでの macOS Executor よりもパワフルに使えるため、Apple 製品向けアプリのデベロッパーにとって嬉しい選択肢かもしれません。

know-how 🎓

Cypress + Serve で Chrome拡張機能のE2Eテストを実装する

https://zenn.dev/ryo_kawamata/articles/cypress-extension-testing

Chrome 拡張機能の E2E テスト方法のうちの 1 つについて解説した記事です。テストフレームワークの Cypress と静的ファイルをサーブする serve を組み合わして E2E テストを行なっています。

この記事では、サンプル拡張機能のポップアップのテスト方法、CI のワークフロー、実際に OSS で使っているコードへのリンクなどが載っています。セットアップ方法やテストコード、CI ワークフローの yaml も載せてくれており、今すぐ試すことが可能となっています。

記事を参考に自分も試してみたのですが、とても簡単に試せました(※)。拡張機能のポップアップをテストする方法について全く知見がなかったので大変助かりました。僕みたいな Chrome 拡張機能の E2E テスト方法よくわからんという人におすすめです。

※ 簡単にできるとは書きましたが、M1 Mac を使ってたためか最初のセットアップで苦戦しました。

セットアップで苦戦した話

pnpm i をやると esbuild-darwin-64 が落とせないからインストールができない。

❯ pnpm i 
Lockfile is up-to-date, resolution step is skipped
Packages: +762
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Packages are copied from the content-addressable store to the virtual store.
  Content-addressable store is at: /Users/korosuke613/.pnpm-store/v3
  Virtual store is at:             node_modules/.pnpm
 WARN  GET https://registry.npmjs.org/esbuild-darwin-64/download/esbuild-darwin-64-0.13.3.tgz error (ERR_PNPM_FETCH_404). Will retry in 10 seconds. 2 retries left.
 WARN  GET https://registry.npmjs.org/esbuild-darwin-64/download/esbuild-darwin-64-0.13.3.tgz error (ERR_PNPM_FETCH_404). Will retry in 1 minute. 1 retries left.
Progress: resolved 762, reused 759, downloaded 0, added 761, done
 ENOENT  ENOENT: no such file or directory, open '/Users/korosuke613/ghq/github.com/korosuke613/e2e-sample-webext/node_modules/.pnpm/esbuild-darwin-64@0.13.3/node_modules/esbuild-darwin-64/package.json'
node_modules/.pnpm/dtrace-provider@0.8.8/node_modules/dtrace-provider: Running install script...

関連してそうな Issue。

x86_64 向けの Node.js を用意したりもしたけどダメだったが、以下の手順でやればできた。
(なぜこれでできたのかはよくわかってない)

  1. pnpm install ---lockfile-only
  2. pnpm i

この後は手順通り行けた。

Renovate の大量の Pull Request を処理する技術 - スタディサプリ Product Team Blog

https://blog.studysapuri.jp/entry/2022/02/18/080000

Terraform の巨大モノレポでの Renovate の運用ノウハウについてをまとめた記事です。Terraform の巨大モノレポを題材としていますが、汎用的に使える技も載っています。

この記事では、大量のプルリクエストを短時間で処理する必要がある背景、解決方法、結果などが説明されています。解決方法で挙げてる 10 個の設定項目にはそれぞれに設定する理由や注意点などが載っていて親切です。

(特に Terraform の)モノレポで Renovate を利用している方にはとても参考になりそうだと思いました。依存関係更新は大変ですが、だからと言ってやらないわけにはいかないので、どんどん人間の負担を減らしていきたいですね。

CI/CDをリポジトリ分割し、CircleCIの設定ファイルのメンテナンス性を向上させた話 - サーバーワークスエンジニアブログ

https://blog.serverworks.co.jp/2022/02/25/142741

巨大な .circleci/config.yml を CI と CD で分割し、かつ、ダイナミックコンフィグを使って各設定ファイルも分割したことで保守性を向上させたという話です。

記事では、課題、対策方針、対策の詳細などが書かれており、巨大 config.yml に困っている方は参考にできるかもしれません。

Sigstore によるコンテナイメージの Keyless Signing - Flatt Security Blog

https://blog.flatt.tech/entry/sigstore_keyless_signing

先日話題になってた Sigstore と OpenID Connect を活用して GitHub Actions 上で Docker イメージを署名する方法などを解説している記事です。

記事では、Sigstore の説明、ローカルの鍵を用いた署名方法、OIDC を活用した署名方法(Keyless Signing)などが載っています。特に OIDC と GitHub Actions を活用した署名方法にはワークフロー例も載っているのですぐに Docker イメージの署名ができます。イメージ提供者はこれを機に署名し始めてもいいかもしれません。以前紹介した記事と合わせて参考になると思います。

tool 🔨

PlanetScaleというサーバレスDBが凄く勢いのあるサービスらしいのでQuick Startやってみた - Qiita

https://qiita.com/tak001/items/cfbaa9dcb542929ff235

PlanetScale というサーバレスな DB サービスの紹介記事です。よくあるマネージドな DB サービスとの主な違いは水平スケーリングシステムやブランチ機能、自動バックアップ機能を備えているところのようです。記事では、サービス概要や料金(無料枠も)、登録方法や Quick Start のレポなどが載っています。

ブランチ機能を使ってスキーマの変更を簡単に検証できるのは面白い機能だなと思いました。また個人で使う分には十分すぎる無料枠があるのも気になりますね。色々やって遊びたいです。

koneta 🍘

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

あとがき

遅れてすみません。~~なんとか 1 週遅れで済んだ。~~今週号はネタの数が多くて小ネタが多くなってしまいました。エルデンリングはじめてみたんですけど、ソウルシリーズやったことなかったので右も左もわからず四苦八苦してます。

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

いつもならここで終わるのですが、宣伝が 2 つあるので下のも見て行ってください。

宣伝: Productivity Weekly の内容を自由に話す会をやります。

https://cybozu.connpass.com/event/241131/

Productivity Weekly で出てきたネタについて生産性向上チームが自由に話す Cybozu Productivity News を初開催します🎉

事前に収録・編集した映像を YouTube でプレミア公開します。配信後も見られるようにするのでこの時間に合わないという人もいつでも見られます。その時間に Twitter ハッシュタグ(#cybozu_productivity_news)で質問とか来たらリアルタイムで答える予定ではあります。

初開催なので今後どうなるかさっぱりわかりません😇
良ければ見てください。

宣伝: 生産性向上チーム、今年もサマーインターン開催するってよ

https://twitter.com/Shitimi_613/status/1501360726966878212

生産性向上チームは今年もサマーインターンを開催するので、興味のある方は是非エントリーください!(エントリーは 4/25 開始の予定)

去年のインターン生が参加ブログも書いてくれたので気になる方はそちらもご覧ください。

https://note.com/hysrtr/n/nd13916204c6c

omake 🃏

今週のおまけです。

Spark を開発している Readdle はウクライナ企業だった

https://twitter.com/Shitimi_613/status/1500334384448421890

僕は昔から PDF ビューアの PDF Expert っていうアプリやメールクライアントの Spark っていうアプリを愛用しているのですが、それらを開発している企業 Readdle からウクライナ支援の寄付のお願いメールが来てました。

まさか Readdle がウクライナの企業だとは知らなかったので驚きました。このメールに載っている「寄付」は Readdle に対してではなくウクライナに対する寄付なのですが、上記アプリでお世話になっていることと、今後も良いソフトウェアを開発していってほしいという気持ちから僕もウクライナに寄付しました。

個人的にはウクライナを応援してるので寄付しようかな〜とは漠然と考えてたんですけど、行動には移れていませんでした。このメールを読んだときに「いますぐ支援しないと」いう気持ちになってすぐ寄付しましたね。

結局何が言いたいのかというと、PDF ExpertSparkも非常に良いアプリなので知らなかった人はぜひ使ってみてください。

脚注
  1. むしろ今までは GPU が使えなかったんですね。 ↩︎

GitHubで編集を提案

Discussion