Productivity Weekly (2021-05-12号)
こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。
僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1 週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。
本記事はその時のネタをまとめたものです。
今回が第 25 回目です。過去の記事はこちら。
news
Sync an out of date branch of a fork from the web | GitHub Changelog
GitHub のフォークしたリポジトリにおいて upstream に追従するのを Web UI 上のボタンからできるようになりました。
これまで upstream との差分が出た場合にはローカルマシン上で、upstream を定義(まだ無ければ)して、fetch して、main ブランチにマージ[1]して...というような作業をする必要がありました。正直非常に面倒でした。この機能が追加されることで、簡単にフォークしたリポジトリを upstream に同期できるようになります。OSS コントリビューターの方などフォークする機会が多い人にはとても嬉しい変更ですね。
'matches' logical statement in config - CircleCI
CircleCI Cloud に matches 文が追加されました。ブランチ名やタグ名に正規表現がマッチするかでワークフローの実行やステップの実行を制御できます。(以前紹介したpath-filteringは任意のファイルの有無でワークフローの実行を制御できるものでした。)
実際にどんなものか使ってみました。
今まではジョブ単位なら filters
で制御できてましたがワークフロー単位やステップ単位でのスキップはテクニックが必要でした。それらが簡単にスキップできるようになったのは良いですね。しかも、ブランチやタグ以外の値も利用可能なので柔軟にスキップできます。
Shift left AWS tag enforcement with Terraform and tfsec - Sander Knape
Terraform AWS Provider にデフォルトタグ機能が追加されました(v3.38.0 から)。プロバイダの設定でタグをサポートするすべてのリソースに共通のタグを設定できます。全てのリソースに共通のタグを付与したい場合(特定のアプリケーションであることを表したい場合など)、今まではリソースごとにそのタグを設定する必要がありました。
これからは以下のように default_tags
を使って設定できます。
provider "aws" {
default_tags {
tags = {
Application = "Hoge"
}
}
}
全てのリソースに共通のタグをつけるのが簡単になったことで野良リソース(構成管理されていないリソース)が見つけやすくなったり、アプリケーションに関わるリソースが検索しやすくなったりと、生産性が上がりそうです。
Get started with a 1Password Secrets Automation workflow
サーバー等のプログラムから 1Password[2] 上のシークレットを参照/保存できる 1Password Secrets Automation がリリースされました。アプリケーションから直接 1Password 上のシークレットを取得するのではなく、Connect Server というサーバを経由してシークレットを取得できます。この Connect Server は自前でデプロイする必要があります。
さっそくクラメソさんが試してみた記事を出していました。
1Password Secrets Automation を情シスメンバーの助力を得つつ試してみた | Developers.IO
シークレットの管理方法は色々ありますが、1Password Secrets Automation を使うことで数あるシークレットを一元管理できそうです。
know-how
corepack is 何?
Node.js に corepack というパッケージマネージャー管理ツールをバンドルすることが決まりました。この記事では、corepack とは何かを解説しています。
Node.js のパッケージマネージャーには npm や yarn がありますが、どのパッケージマネージャーを使うか、どのバージョンを使うかをデフォルトで強制できません。そのため yarn で管理しているプロジェクトで npm を使えたり、npm v6 で管理しているプロジェクトで npm v7 が使えたりしてしまいます。
そう言った問題を解決するために、corepack を使うことで、パッケージマネージャの種類やバージョンを固定できます。corepack はまだバンドルされていませんが、npm でインストールして利用できます。この記事では、インストールや有効化、実際の挙動も紹介されています。
僕もよく npm のバージョンが v6 か v7 かがプロジェクトによって異なるため面倒なことになるので、corepack 良いなと思いました。しかし、まだ Node.js にバンドルされていないためチームで使ったり、asdf などのランタイム管理ツールとの相性が悪い[3]ので、早くバンドルしてほしいですね。
tool
withfig/autocomplete: Fig adds VSCode style autocomplete to your terminal
mac のターミナルアプリ上でコマンドを打つ際に自動補完を IDE チックにしてくれるツールです。まだ誰でも使えるというわけではなく、Early Access に登録して待つ必要があります。
withfig/autocomplete にコマンドごとの補完設定が記述されており、ここにあるコマンドには対応しているようです。js を記述して配置することで自前のスクリプトの補完設定も可能です。
1 回使ってみたいと思い Early Access に登録してみましたが、まだ wait list のままなので使えていません。興味ある方はとりあえず Early Access に登録しておくことをお勧めします。
SpectralOps/teller: A secrets management tool for developers built in Go - never leave your command line for secrets.
各種クラウドサービスに置いたシークレットをローカルのターミナルに展開できるツールです。
プログラム実行時に必要なシークレットを Git に追加するわけにはいかないので、.envrc などのファイルに環境変数として記述することが多いと思います。Git で管理できないため、クローンしてからそう言った設定をする必要がありちょっと面倒です。teller を使うことで必要最低限なシークレット(シークレットを取り出すためのシークレット)のみをローカルに用意すればよくなるため、環境構築が楽になります。
シークレットをどこに保存しているかも明確になり、チーム開発時も役立ちそうです。
google/zx: A tool for writing better scripts
JavaScript でシェルスクリプトを簡単に書くためのライブラリおよびツールです。JS からシェルのコマンドを呼び出す処理を書くのはまあまあ面倒ですが、zx を使うことで楽に記述できます。非同期処理も書きやすいのが良いですね。
実際に触ってみました。↓
当たり前ですが zx は node で動作するため、node が動く環境でなければ動かせません。なのでこれからシェルスクリプトを全く書かなくても良いかと言うとそう言うわけではないですが、node のプログラム内で手軽にシェルのコマンドを扱えるのは良いですね。
koneta
Productivity Weekly で出たネタを全て紹介したいけど体力が持たない、または、そんなに言うことがなかったネタを一言程度で書くコーナーです。
-
Security keys are now supported for SSH Git operations | The GitHub Blog
- Github に対して push や pull をする際に ssh キーとして yubikey などのセキュリティキーが使えるようになりました。
-
Copying and pasting Markdown code blocks just got a whole lot easier. Click to copy and paste away!
- GitHub で、Markdown のコードブロックを簡単にコピーできるようになりました。ボタンをポチッと押すだけ
-
生産性が爆上がりするブラウザ:Sidekick|One Capital|note
- Sidekick というブラウザの紹介です。速度に自信があり、色々なクラウドサービスをサイドバーに登録できるようです。お金を払えばチームで利用できてそこが面白そうです。
-
banga/git-split-diffs: GitHub style split diffs in your terminal
- diff を GitHub ライクに表示するツールです。似たようなものにdeltaがありますが、こちらの方がより GitHub っぽいです。あと、体感でこちらの方が軽い気がしました。npm でインストールする必要があるのがちょっと嫌ですね。
-
readme.so - Easiest Way to Create A README
- README.md の雛形を生成できるサイトです。OSS の README 書くのに便利そうです。
あとがき
ゴールデンウィーク明けの Productivity Weekly でした。みなさん久々の Weekly でイキイキとしていました。僕はもう GW 何やってたか忘れてしまいました。記憶がない...
生産性向上チームでは毎週こういったネタを共有する会を行っています。そんな生産性向上チームが気になる方は下のリンクをクリック!
omake
今週のおまけです。
持たずに操作!ハンズフリーマルチアングルスマホホルダー
写真を見ての通りです。スマホを腕に装着できる画期的なアイテムです。腕に巻いたホルダーにはスマホアームがついており、スマホの角度や位置を自由自在に変えることができます。これを使えば左手に荷物、右手に電車の吊り革と言うような状況になってもスマホで動画を見ることができます。観光地での歩きながらの動画撮影もしやすそうですね。
めちゃくちゃほしいとなって後で注文しようと思ってたら予約商品となってしまっていました...
前見た時は普通に買えそうだったのに...トホホ...
とりあえず注文しました。ほしい方は早めに予約しましょう。
Discussion