🏥

Productivity Weekly (2023-09-27号)

2023/10/10に公開

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

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

2023-01-25 号から、基本的に隔週で連載することとしました。たまに単独でも投稿するかもしれません。
今週は 2023-09-27 単独号です。

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

news 📺

OrbStack 1.0: Fast, light, easy way to run Docker containers and Linux

https://orbstack.dev/blog/orbstack-1.0

Docker Desktop 代替である OrbStack のベータ期間が終わり、v1.0 がリリースされました。これまでは商用非商用関わらず無料でしたが、ベータ期間が終わったことでとうとう商用利用が有償となりました。現在商用利用している方は、30 日以内(10/21 くらいまでに?)に有償ライセンスを購入する必要があります。

The app is free for personal, non-commercial use. You must purchase a Pro or Enterprise license for freelance, business, and other commercial use within 30 days. Contact us if you have questions.

Plan は Free、Pro、Enterprise の 3 種類があります。

  • Free
    • 価格: $0
    • 個人で非商用利用のみ
  • Pro
    • 価格: $8/user/month (yearly) or $10/user/month (monthly)
    • 商用利用可能
    • 優先サポート付き
    • Organization で一括購入可能
  • Enterprise
    • 価格: お問い合わせ
    • SAML SSO 利用可能

Individual と Organization の概念があり、Individual(個人)で Pro プランを契約できます。
もし組織として購入を一括で行いたい場合は Organization を作成し、各アカウントを紐づけて行きましょう。

とうとう OrbStack が商用利用有償化しましたが、個人的には OrbStack はとても軽快で使いやすい Docker Desktop 代替なので、お金を払ってでも使って行きたいですね。

各種リンク:

本項の執筆者: @korosuke613

partial checkout (--filter) オプション追加 - Release v4.1.0 · actions/checkout

https://github.com/actions/checkout/releases/tag/v4.1.0

actions/checkout に partial clone (git clone --filter) のオプションが追加されました。partial clone を設定すると大規模なリポジトリにおいて clone や fetch を高速化できるケースがあります。

partial clone 自体の説明は GitHub 公式の解説記事(英語日本語)が詳しいです。
ちなみに v3.5.3 でリリースされた sparse checkout と partial clone との違いなどについてはこちらの記事も図解入りで分かりやすいのでおすすめです。

https://swet.dena.com/entry/2021/07/12/120000

最近は git 自体に大規模リポジトリをうまく扱うための機能が色々追加されているのですが、sparse checkout や partial clone など主要なものは actions/checkout からでもかなり使えるようになってきました。基本的には actions/checkout のデフォルトの挙動は CI 向きになっているため新しいオプションの指定は必ずしも必要ありませんが、大規模なリポジトリを扱っている場合には一度調べてみると良いかもしれません。

本項の執筆者: @Kesin11

GitHub Actions: Transitioning from Node 16 to Node 20 - The GitHub Blog

https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/

actions/runner の方では既にリリース済みでしたが、JavaScript の action を実行するための Node.js のバージョンが 16 から 2024 年春を目処に 20 へ移行されることが正式にアナウンスされました。
action 作者の方は Node.js 16 から 20 へのアップデート対応をしていきましょう。

アップデートの際には公式の各種 actions のように major バージョンを上げてリリースしてもらえると今しばらく Node.js 16 を使わざるを得ない GHES ユーザーは助かります

本項の執筆者: @Kesin11

GitHub Actions - Force cancel workflows - The GitHub Blog

https://github.blog/changelog/2023-09-21-github-actions-force-cancel-workflows/

GitHub Actions のワークフローを force-cancel するための API が追加されました。REST API ドキュメントはこちらです。
これまでワークフローをキャンセルしても応答しないことがありました。
その際、force-cancel API を使用することでワークフローを強制的にキャンセルし、他のワークフローの実行がブロックされる問題を回避できるようになりました。

Customers should still only use force-cancel if the workflow fails to respond to POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel.

と書かれているので、最終手段として使う API といった感じだと思われます。

本項の執筆者: @r4mimu

Passkeys are generally available - The GitHub Blog

https://github.blog/2023-09-21-passkeys-are-generally-available/

GitHub.com で Passkeys が GA になり、のすべてのユーザーが Passkeys 認証を行えるようになりました。
7 月のパブリックベータから 2 ヶ月ほどで GA になったので、早いですね。
以前 GitHub が宣言していた securing all contributors with 2FA by the end of 2023 に精力的に取り組んでいることが伺えます。

Linux や Firefox のような、まだ Passkeys に完全対応していないプラットフォームでも使えるように、クロスデバイスの登録が可能になっています。
また、既存のセキュリティキーを Passkeys にアップグレードするオプションも提供されているため導入も簡単です。

本項の執筆者: @r4mimu

Amazon Corretto 21 is now generally available

https://aws.amazon.com/jp/about-aws/whats-new/2023/09/amazon-corretto-21-generally-available/

AWS が提供する OpenJDK21 ディストリビューションである Amazon Corretto 21 が GA になりました。
Amazon Corretto 21 は LTS であり、Linux、Windows、macOS で利用可能とのことです。

OpenJDK21 はパターンマッチングや仮想スレッドが正式に導入されたことや、main メソッドに public static void を書かなくてもよいプレビュー機能が追加されたことで話題でした。早速 Amazon Corretto が対応してくれているのは嬉しいですね。

本項の執筆者: @r4mimu

GitHub Copilot Chat beta now available for all individuals - The GitHub Blog

https://github.blog/2023-09-20-github-copilot-chat-beta-now-available-for-all-individuals/

Visual Studio と VS Code のすべての GitHub Copilot 個人ユーザー向けに GitHub Copilot Chat のベータ版がリリースされました。
これまで、エディタ内に ChatGPT のプロンプトを組み込んだりするサードパーティ製の拡張機能などがありましたが、公式の GitHub Copilot Chat リリースにより、エディタ上でより簡単に AI の恩恵を受けることができるようなったと思います。
プロンプトでのやりとりだけでなく、直接ファイル内のコードを選択して、AI とやりとりできるのでとても便利そうです。

本項の執筆者: @r4mimu

know-how 🎓

RenovateでGitHub成果物のチェックサムを更新する - プログラムモグモグ

https://itchyny.hatenablog.com/entry/2023/09/22/140000

Renovate の regexManager を活用してシェルスクリプトや Dockerfile 中で curl でダウンロードしてくるツールのバージョン更新&チェックサムの値更新をする方法を紹介した記事です。

例えばシェルスクリプトで特定の成果物をダウンロードするコードがある場合、同スクリプト内にチェックサムを埋め込んでおき、sha256sum -c などでダウンロードした成果物が改ざんされていないか確認できます。
特定のプログラムのバージョンを Renovate で自動更新する際、通常はバージョンのみを更新してチェックサムは更新してくれません。

この記事では、バージョンとチェックサムの両方を更新する方法が紹介されています。

さらに、Renovate がどのようにしてチェックサムを用意しているのかの解説も書かれています。

チェックサムを使って成果物の改ざんを検証するのは大事ですが、Renovate などの依存関係更新ツールとは相性が悪いと思っていました。
Renovate でチェックサムごと更新できるのは知りませんでした。勉強になります。

本項の執筆者: @korosuke613

tool 🔨

組織でのはてなブログ運営をGitHub上で行うためのテンプレートリポジトリ「HatenaBlog Workflows Boilerplate」を公開しました - はてなブログ開発ブログ

https://staff.hatenablog.com/entry/2023/09/21/182000

はてなさんが GitHub ではてなブログの運営をできるようにするテンプレートリポジトリを公開しました(ベータ)。

テンプレートを利用することで、下書きの作成、更新、内容のレビューや公開を GitHub 上で行うことができるとのことです。GitHub Actions 上で x-motemen/blogsync[1] を使い、各種 API を叩いています。ワークフローは hatena/hatenablog-workflows で公開されているものを利用するようになっています。

はてなブログはいろいろなテック企業が技術ブログとして使っているのをよく見ます[2]。はてなブログには下書きを限定リンクで共有できるので社内でレビューしてもらうこともできますが、GitHub で管理できるようにはなっていないので、このテンプレートを使うことでより組織でのブログ運営がしやすくなりそうですね。

どうやら、initialize ワークフローを実行することで、既存記事をリポジトリに取り込むことができるようなので、導入は割と簡単そうです。

まだまだベータ版らしく、画像の自動アップロード&はてな記法への差し替えなどはこれから対応予定とのことです。
今後に期待ですね。

本項の執筆者: @korosuke613

あとがき

遅くなってしまいすみません。今週号です。

実は 10/12(木)から、生産性向上チームを一瞬(2-3 ヶ月)はなれて他のチームへ体験に行くので、Weekly の投稿が遅くなったり別の人がするようになったりするかもしれません。どうなるかわからん。

今週は omake (まじめな) があるので、この下の方も読んでね。

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

Engineering Productivity Meetup #1 in Tokyo - connpass

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

サイボウズの東京オフィスで開発者の日々の生産性を高めるための知見や技術を語り合うイベントを開催されます(宣伝)。
発表・質問・交代含む 10 分程度の LT 形式です。簡単な自動化でもなんかすごい改革でも、「開発生産性の向上」に関する内容であればなんでもいいので、みなさんどしどし参加してください。

omake 🃏: korosuke613/zenn-metadata-updator-action アクションに予約投稿計算機能を追加したよ

今週のおまけです。

実は今回の記事から、平日の日が昇ってる時間に記事を公開するようになりました。

ただ、Zenn CLI の予約投稿機能で published_at を手動で設定するのがダルかったので、毎回次のビジネスアワーを自動で入力するようにしました。

元々 published を自動化するために korosuke613/zenn-metadata-updator-action というのを作っているのですが、v2.1.0 から published_at を自動で計算してプルリクを作る機能を追加しました(とは言えバグりまくってたのでその後 v2.1.2 まで上がった)。

https://github.com/korosuke613/zenn-metadata-updater-action/blob/df3a64bae17aab23167e892359d030799ad30599/action.yml#L38-L40

auto-generate-published-atnext_business_day_<HH> または next_day_<HH> を入力することで、次のビジネスデイ、または次の日の <HH> 時に記事を公開するプルリクを作成できます。
利用には published: true との併用が必要です。

実装が気になる人はここらへんを見てください。

https://github.com/korosuke613/zenn-metadata-updater-action/blob/df3a64bae17aab23167e892359d030799ad30599/src/functions.ts#L190-L243

ただ、あまりちゃんとテストできてないので、この記事を公開するときにまたバージョンが更新されているかもしれません。


(追記) ちゃんと動いてそう

(さらに追記)
嘘つきました。publishedAt ではなく published_at でした。
全然完成してなかった。
今直してます(直しました)。

本項の執筆者: @korosuke613

脚注
  1. 3rd party ツールを使うんだなーと思いましたが、開発者ははてなさんの CTO の方でした。 ↩︎

  2. 弊社もやってるよ。Cybozu Inside Out | サイボウズエンジニアのブログ ↩︎

GitHubで編集を提案
サイボウズ 生産性向上チーム 💪

Discussion