Productivity Weekly (2022-03-02号)
こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。
僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1 週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。
本記事はその時のネタをまとめたものです。
今回が第 64 回目です。過去の記事はこちら。
news 📺
View network transfer information in Resources tab - CircleCI Updates
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
CircleCI で実行中パイプラインの推定残り時間が出るようになりました。パイプラインのステータス下に推定残り時間が表示されます。推定残り時間は以前のパイプラインの実行に基づいているとのことです。あとどれくらいでパイプラインが終わるかわかるのは地味に嬉しい変更ですね。
こんな感じ。残り 1 時間 13 分との予測が出ている。
Dedicated hosts for macOS - CircleCI Updates
CircleCI において、macOS の専用ホストを利用できるようになりました。
専有ホストとなるので 1 台の物理的な macOS マシンを独占できます(既存の macOS Executor は仮想マシン上での実行です)。専有ホストを利用するメリットとしてはセキュリティが向上すること GPU へのアクセスが可能になることなどが述べられています[1]。ただし、1 時間あたり 100 クレジットの消費となり、最低 24 時間はリースしなければいけません。
これまでの macOS Executor よりもパワフルに使えるため、Apple 製品向けアプリのデベロッパーにとって嬉しい選択肢かもしれません。
know-how 🎓
Cypress + Serve で Chrome拡張機能のE2Eテストを実装する
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。
- Error: The package "esbuild-linux-64" could not be found, and is needed by esbuild · Issue #1646 · evanw/esbuild
- pnpm find wrong bin version when multiple esbuild version exists · Issue #3238 · pnpm/pnpm
x86_64 向けの Node.js を用意したりもしたけどダメだったが、以下の手順でやればできた。
(なぜこれでできたのかはよくわかってない)
pnpm install ---lockfile-only
pnpm i
この後は手順通り行けた。
Renovate の大量の Pull Request を処理する技術 - スタディサプリ Product Team Blog
Terraform の巨大モノレポでの Renovate の運用ノウハウについてをまとめた記事です。Terraform の巨大モノレポを題材としていますが、汎用的に使える技も載っています。
この記事では、大量のプルリクエストを短時間で処理する必要がある背景、解決方法、結果などが説明されています。解決方法で挙げてる 10 個の設定項目にはそれぞれに設定する理由や注意点などが載っていて親切です。
(特に Terraform の)モノレポで Renovate を利用している方にはとても参考になりそうだと思いました。依存関係更新は大変ですが、だからと言ってやらないわけにはいかないので、どんどん人間の負担を減らしていきたいですね。
CI/CDをリポジトリ分割し、CircleCIの設定ファイルのメンテナンス性を向上させた話 - サーバーワークスエンジニアブログ
巨大な .circleci/config.yml
を CI と CD で分割し、かつ、ダイナミックコンフィグを使って各設定ファイルも分割したことで保守性を向上させたという話です。
記事では、課題、対策方針、対策の詳細などが書かれており、巨大 config.yml に困っている方は参考にできるかもしれません。
Sigstore によるコンテナイメージの Keyless Signing - Flatt Security Blog
先日話題になってた Sigstore と OpenID Connect を活用して GitHub Actions 上で Docker イメージを署名する方法などを解説している記事です。
記事では、Sigstore の説明、ローカルの鍵を用いた署名方法、OIDC を活用した署名方法(Keyless Signing)などが載っています。特に OIDC と GitHub Actions を活用した署名方法にはワークフロー例も載っているのですぐに Docker イメージの署名ができます。イメージ提供者はこれを機に署名し始めてもいいかもしれません。以前紹介した記事と合わせて参考になると思います。
tool 🔨
PlanetScaleというサーバレスDBが凄く勢いのあるサービスらしいのでQuick Startやってみた - Qiita
PlanetScale というサーバレスな DB サービスの紹介記事です。よくあるマネージドな DB サービスとの主な違いは水平スケーリングシステムやブランチ機能、自動バックアップ機能を備えているところのようです。記事では、サービス概要や料金(無料枠も)、登録方法や Quick Start のレポなどが載っています。
ブランチ機能を使ってスキーマの変更を簡単に検証できるのは面白い機能だなと思いました。また個人で使う分には十分すぎる無料枠があるのも気になりますね。色々やって遊びたいです。
koneta 🍘
Productivity Weekly で出たネタを全て紹介したいけど体力が持たない、または、そんなに言うことがなかったネタを一言程度で書くコーナーです。
-
Electronの代替を目指す軽量なRust製フレームワーク「Tauri」、リリース候補版に到達 - Publickey
- デスクトップアプリを HTML/CSS/JS で開発できるクロスプラットフォームなフレームワーク Erectron の代替を目指すフレームワーク「Tauri」が RC になったという記事です
- Rust 製で軽量とか
- 内部的には Chromium を使ってないので Electron の完全な代替にはならなさそうだけどそれでも互換性は改善されてきてるらしい
-
Gists Now Support Mermaid Diagrams | GitHub Changelog
- Mermaid が GitHub のマークダウンでレンダリングされるようになりましたが、Gist でもレンダリングされるようになりました
-
Online FlowChart & Diagrams Editor - Mermaid Live Editor
- Mermaid のライブエディタです
- サンプルをすぐ呼び出せたりいろんな形式で出力できるのは良いですね
-
All npm accounts are now enrolled in login verification | GitHub Changelog
- npm において、2FA を有効にしてない全ての npm アカウントはログイン時にワンタイムパスワードがメールで届くようになったらしいです
- 2FA の代わりにはならないので 2FA を有効にしましょう
-
k8sの各種CDツールを比較する - pospomeのプログラミング日記
- k8s の CD ツールまとめ
- ArgoCD しか使ったことないんだけどこんなにたくさんあるんだという気持ち。
-
GmailのネイティブmacOSアプリを元Appleエンジニアが開発 - iPhone Mania
- 元 Apple の人が開発してる Gmail の macOS 向けクライアントアプリについて
- まだベータ
- インストールしてみたけどまさかの日本語対応してて驚いた
- 僕は Gmail 以外も使ってるので Spark というメールクライアントを愛用しています
-
alacritty+tmuxもいいけど、weztermがすごい件
- Rust 製のクロスプラットフォームなターミナル wezterm の紹介
- カスタマイズ性がすごい、tmux 相当のターミナルマルチプレクサを内蔵してるとか
- でも色々機能がないようなので必ずしも tmux の代替にはならなさそう
あとがき
遅れてすみません。~~なんとか 1 週遅れで済んだ。~~今週号はネタの数が多くて小ネタが多くなってしまいました。エルデンリングはじめてみたんですけど、ソウルシリーズやったことなかったので右も左もわからず四苦八苦してます。
サイボウズの生産性向上チームでは社内エンジニアの開発生産性を上げるための活動を行なっています。そんな生産性向上チームが気になる方は下のリンクをクリック!
いつもならここで終わるのですが、宣伝が 2 つあるので下のも見て行ってください。
宣伝: Productivity Weekly の内容を自由に話す会をやります。
Productivity Weekly で出てきたネタについて生産性向上チームが自由に話す Cybozu Productivity News を初開催します🎉
事前に収録・編集した映像を YouTube でプレミア公開します。配信後も見られるようにするのでこの時間に合わないという人もいつでも見られます。その時間に Twitter ハッシュタグ(#cybozu_productivity_news)で質問とか来たらリアルタイムで答える予定ではあります。
初開催なので今後どうなるかさっぱりわかりません😇
良ければ見てください。
宣伝: 生産性向上チーム、今年もサマーインターン開催するってよ
生産性向上チームは今年もサマーインターンを開催するので、興味のある方は是非エントリーください!(エントリーは 4/25 開始の予定)
去年のインターン生が参加ブログも書いてくれたので気になる方はそちらもご覧ください。
omake 🃏
今週のおまけです。
Spark を開発している Readdle はウクライナ企業だった
僕は昔から PDF ビューアの PDF Expert っていうアプリやメールクライアントの Spark っていうアプリを愛用しているのですが、それらを開発している企業 Readdle からウクライナ支援の寄付のお願いメールが来てました。
まさか Readdle がウクライナの企業だとは知らなかったので驚きました。このメールに載っている「寄付」は Readdle に対してではなくウクライナに対する寄付なのですが、上記アプリでお世話になっていることと、今後も良いソフトウェアを開発していってほしいという気持ちから僕もウクライナに寄付しました。
個人的にはウクライナを応援してるので寄付しようかな〜とは漠然と考えてたんですけど、行動には移れていませんでした。このメールを読んだときに「いますぐ支援しないと」いう気持ちになってすぐ寄付しましたね。
結局何が言いたいのかというと、PDF Expert も Sparkも非常に良いアプリなので知らなかった人はぜひ使ってみてください。
-
むしろ今までは GPU が使えなかったんですね。 ↩︎
Discussion