☕️

Productivity Weekly (2022-05-25号)

2022/05/29に公開
2

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

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

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

news 📺

Terraform 1.2 Improves Exception Handling and Updates to the CLI-driven Workflow

https://www.hashicorp.com/blog/terraform-1-2-improves-exception-handling-and-updates-to-the-cli-driven-workflow
https://github.com/hashicorp/terraform/releases/tag/v1.2.0

Terraform 1.2 がリリースされました。precondition/postcondition で動的な値の検証ができるようになりました。また、replace_triggered_by で特定のリソースやリソースの属性に変化があったときに replace を発生させられるようになりました。

precondition は resource/data 作成前に渡された variable などを検証できる機能です。data と組み合わせることで validation でできない検証もできます。検証に失敗するとリソースは作られずコマンドが失敗します。postcondition は resource/data/output 作成後にそれらの値、属性を検証できる機能です。検証に失敗するとコマンドが失敗します(巻き戻りません)。

正直使い所や使い分けが難しいです。ここら辺はさっそくクラメソさんが precondition/postcondition をわかりやすく解説してくれているので、こちらを参照してください(Terraform v1.2 の新機能 precondition と postcondition を調べた | DevelopersIO)。

replace_triggered_by は指定した属性に変化があった場合にリソースを作り直す(replace する)構文です。# forces replacement の属性を利用者側が指定できるような感じです。-replace オプションと違って自分で指定する必要がないのは嬉しいですね。

なかなかすぐにいろんな場所で使えるテクニックではなさそうですが、かゆいところに手が届く系の機能追加かなと思います。覚えておきたいですね。

Development Container CLI

https://code.visualstudio.com/blogs/2022/05/18/dev-container-cli

Microsoft が dev container CLI と Development Containers Specification を発表しました。

VSCode では、Remote Containers 拡張機能を使って開発環境として用意したコンテナ内での開発ができます。今回、それについての仕様や利用するための CLI をオープンソースで公開したようです。

こちらの記事(dev container CLIとDevelopment Containers Specificationについて)が日本語で今回の件を説明しており、わかりやすかったです。こちらの記事もご参照ください。

devcontainer の仕組み、devcontainer.json を VSCode の外で使いまわせるようになり、ゆくゆくは JetBrains IDE なんかでも使えるようになるかもしれません。未来があっていいですね。

Improved REST API documentation | The GitHub Blog

https://github.blog/2022-05-24-improved-rest-api-documentation/

GitHub の REST API ドキュメントが改善されました。

3 カラムレイアウトとなり、パラメータの説明と例を同時に見やすくなりました。また、例で意味のある値が使われるようになり、GitHub CLI での例も追加されています。他にも、パラメータテーブルの改善、レスポンスのスキーマの追加、可能性のあるステータスコードの追加、ナビゲーションの改善などがあります。

以前は正直とても使いづらい API ドキュメントでした。レスポンススキーマが無かったので試行錯誤を繰り返さなければいけなかったのを覚えています。ステータスコードも何が飛んでくるかよくわからなかったし、1 つのページにコンテンツが詰め込まれすぎてページがカックカクになり開くのも大変だったのを覚えています。

新しい REST API ドキュメントは非常に使いやすいですね。ありがたいです。

Math support in Markdown | The GitHub Blog

https://github.blog/2022-05-19-math-support-in-markdown/

GitHub の Markdown で数式を記述できるようになりました。LaTeX 形式をサポートしており、MathJax というライブラリで描画されます。

普段の LaTeX と似たように、$ で囲むとインライン表示となり、$$ で囲むとブロック表示となります。

数学的なライブラリを作るときや計算量を最適化するプルリクを送る時などに使えそうです。個人的には学生の頃に欲しかったですね(ロボコンで数式書きたい場面が多々あった)。必要な人は使っていきましょう。

Updates to Markdown pasting on GitHub | GitHub Changelog

https://github.blog/changelog/2022-05-19-updates-to-markdown-pasting-on-github/

GitHub の Markdown において、テキストを選択した状態で URL をペースト (cmd|ctl + v) すると [...](https://...) の形式で貼り付けられるようになりました。また、スプレッドシートのセルや HTML のテーブルを選択して貼り付けるとマークダウンの表形式で貼り付けられるようになりました。

どういうものかは記事内の GIF を見るのが早いです。

もし従来通りの貼り付け方をしたい場合は cmd|ctl + shift + v または cmd|ctl + shift + option|alt + v でできます。

選択して貼り付けで [...](https://...) 形式になってほしいとは個人的に思っていたのでこれは嬉しいです。VSCode なんかはそういう挙動になってたのでなおさら。テーブルを変換してくれるのも結構嬉しいですね。マークダウンのテーブル形式に直すの面倒だったので。

Actions can now run in a Node.js 16 runtime | GitHub Changelog

https://github.blog/changelog/2022-05-20-actions-can-now-run-in-a-node-js-16-runtime/

GitHub Actions において、アクションの runs.usingnode16(Node.js 16)を指定できるようになりましたというアナウンスがされました。この変更自体は以前も紹介しました通り、GitHub-hosted runner においては去年の 12 月くらいから対応されていました。GitHub Enterprise Server においても 3.3 以降であれば最新の actions/runner を使えば利用できたようなので、アナウンスが遅れてやってきた感じになります。

このアナウンスにはアクション作成者向けのメッセージも載っており、GHES 3.3 より前で BRAKING CHANGES が加えられる可能性を利用者に通知するためメジャーアップデートする必要があると書かれています。確かに actions/*のアクションが Node.js 16 で動くようになった際は軒並みメジャーアップデートされていましたね。

Node.js 12 は今の所引き続き使えるとのことですが、12 は 2022 年 4 月末でサポート終了となったので、特別な理由でもない限りは使わないことを強くお勧めします。また、まだ 12 を使っている古いアクションやワークフローがあれば 16 に移行しましょう。

know-how 🎓

「LeanとDevOpsの科学」を実際にチームに適用した際の工夫 - talk at DevOpsDays Tokyo 2022 - Visional Engineering Blog

https://engineering.visional.inc/blog/412/devops-days-tokyo-2022-after/

ビズリーチさんが DevOpsDays Tokyo 2022 で発表した『Lean と DevOps の科学』の four keys を測定した話(スライド)と補足と質問への回答記事です。

スライドでは、まず事前知識(ソフトウェアプロセス改善(SPI)について、計測の必要性、デリバリーパフォーマンス指標 four keys について、four keys を改善するケイパビリティについてなど)の説明があり、その後計測のための具体的な事例が説明されています。事例としては、計測の仕様やケイパビリティ保有調査、計測結果の活かし方などが説明されています。また、エンジニアからの相談例や工夫・苦労したポイントなども書かれています。

記事にはスライドの補足ともらった質問への回答も書かれているので、スライドと一緒に読むのをお勧めします。

four keys が気になっている方にもこれから計測と改善を始めたい人にも既にやってる人にも参考になる内容であると思います。改善していきたいですね。

オンコールアラートアンチパターン - ださろぐ@はてな

https://dasalog.hatenablog.jp/entry/2022/05/23/141749

オンコールアラート(即座に対応を求めることを目的としたアラート)のアンチパターン集です。アンチパターンごとにどういう対処をするのが良いかが書かれています。

個人的に心当たりのあるパターンがいくつかあるな...と思いました。とりあえずアラートを設定してヨシ!とはならないので、気をつけていきたいですね。既存のアンチパターンも直していきたい。

長年運用されてきたモノリシックアプリケーションをコンテナ化しようとするとどんな問題に遭遇するか? / SRE NEXT 2022

https://speakerdeck.com/nulabinc/sre-next-2022

ヌーラボさんによる長い歴史のあるモノリシックアプリケーション(Backlog)をコンテナ化するときに遭遇する問題と対処法をまとめたスライドです。

スライドでは、アーキテクチャの説明、コンテナ化プロジェクトの説明(体制、方針、スケジュールなど)、遭遇した問題と解決法(複数)などが紹介されています。

長い歴史を持つアプリケーションを運用しているところには割と親近感が湧きそうな内容だなと思いました。遭遇した問題に心当たりがある人も多そうです。これからコンテナ化していくぞいというところは参考になりそうです。

koneta 🍘

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

あとがき

先週号(2022-05-18 号)を投稿した次の日に今週号を投稿するとは思ってもみませんでした。がんばった、俺。

昨日先週号を出したばっかなのであんまりあとがきに書くこともないっすね。

そういえば僕は Civilization という文明を指導して世界の覇権国家を目指すゲームが好きなんですけど、その Civilization っぽいゲーム Old World が日本語対応するみたいなので買って遊んでみました(ターン制ストラテジー「Old World」のSteam/GOG版の配信がスタート。日本語表示は6月中に実装予定)。遊んでみた感想としてはめちゃくちゃ Civ っぽいのですが、考えることが多くて慣れるまで難しいです。でも面白いです。そっくりすぎないところは良かったですね。

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

おまけ 🃏: さよなら「あなたとJAVA」 - きしだのHatena

https://nowokay.hatenablog.com/entry/2022/05/25/034700

かの有名なあなたと JAVA が終わったようです。

Javaと言えばこれだった
 あなたとJAVA,
今すぐダウンロー
         ド

まあ改行がおかしいこと自体はちょっと前に直ったらしいんですけどね(あなたとジャバ、今すぐダウンロードの改行位置に関して)。

どうやらいつの間にか「あなたと JAVA 今すぐダウンロード」自体がなくなってしまってなんかそれっぽいよくあるページになってしまったようですね。「Get Java for desktop applications」。

改行位置が修正されてしまった件は伏線だったのかもしれません。少なくとも僕が学生の頃からあの赤いちょっとダサいページでした。5 年後くらいには「あなたと JAVA 今すぐダウンロード」を知らない人も出てくるんだろうなと思うとやはり寂しさを感じてしまいますね。

別に Java が終わったわけじゃないんですけど。

GitHubで編集を提案

Discussion

roottoolroottool

Remote - Containers信者なので、CLIのOSS化によって他エディタにも活用される未来が楽しみ

おまけ

Old Worldは気になってた作品なので、レビュー助かります🙏

typoがあって、SivではなくCivです🙋
Civilizationなので。

Futa HirakobaFuta Hirakoba

Old World、一族の育成がとにかく難しいです。まだ全然掴めていません。

typoがあって、SivではなくCivです🙋

あ〜〜
Civ好きと言っておきながら綴りを間違えてたとはお恥ずかしい限りです。
ご指摘ありがとうございます!修正します🙇