🌴

Productivity Weekly (2021-05-12号)

2021/05/15に公開

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

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

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

news

Sync an out of date branch of a fork from the web | GitHub Changelog

https://github.blog/changelog/2021-05-06-sync-an-out-of-date-branch-of-a-fork-from-the-web/

GitHub のフォークしたリポジトリにおいて upstream に追従するのを Web UI 上のボタンからできるようになりました。

これまで upstream との差分が出た場合にはローカルマシン上で、upstream を定義(まだ無ければ)して、fetch して、main ブランチにマージ[1]して...というような作業をする必要がありました。正直非常に面倒でした。この機能が追加されることで、簡単にフォークしたリポジトリを upstream に同期できるようになります。OSS コントリビューターの方などフォークする機会が多い人にはとても嬉しい変更ですね。

'matches' logical statement in config - CircleCI

https://circleci.com/changelog/#matches-logical-statement-in-config

CircleCI Cloud に matches 文が追加されました。ブランチ名やタグ名に正規表現がマッチするかでワークフローの実行やステップの実行を制御できます。(以前紹介したpath-filteringは任意のファイルの有無でワークフローの実行を制御できるものでした。)

実際にどんなものか使ってみました。
https://zenn.dev/korosuke613/scraps/6b8a88c88d4479

今まではジョブ単位なら filters で制御できてましたがワークフロー単位やステップ単位でのスキップはテクニックが必要でした。それらが簡単にスキップできるようになったのは良いですね。しかも、ブランチやタグ以外の値も利用可能なので柔軟にスキップできます。

Shift left AWS tag enforcement with Terraform and tfsec - Sander Knape

https://sanderknape.com/2021/05/shift-left-aws-tag-enforcement-terraform-tfsec/

Terraform AWS Provider にデフォルトタグ機能が追加されました(v3.38.0 から)。プロバイダの設定でタグをサポートするすべてのリソースに共通のタグを設定できます。全てのリソースに共通のタグを付与したい場合(特定のアプリケーションであることを表したい場合など)、今まではリソースごとにそのタグを設定する必要がありました。

これからは以下のように default_tags を使って設定できます。

provider "aws" {
  default_tags {
    tags = {
      Application = "Hoge"
    }
  }
}

全てのリソースに共通のタグをつけるのが簡単になったことで野良リソース(構成管理されていないリソース)が見つけやすくなったり、アプリケーションに関わるリソースが検索しやすくなったりと、生産性が上がりそうです。

Get started with a 1Password Secrets Automation workflow

https://support.1password.com/secrets-automation/

サーバー等のプログラムから 1Password[2] 上のシークレットを参照/保存できる 1Password Secrets Automation がリリースされました。アプリケーションから直接 1Password 上のシークレットを取得するのではなく、Connect Server というサーバを経由してシークレットを取得できます。この Connect Server は自前でデプロイする必要があります。

さっそくクラメソさんが試してみた記事を出していました。

1Password Secrets Automation を情シスメンバーの助力を得つつ試してみた | Developers.IO
https://dev.classmethod.jp/articles/1password-secrets-automation/

シークレットの管理方法は色々ありますが、1Password Secrets Automation を使うことで数あるシークレットを一元管理できそうです。

know-how

corepack is 何?

https://zenn.dev/teppeis/articles/2021-05-corepack

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

https://fig.io/

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.

https://github.com/SpectralOps/teller

各種クラウドサービスに置いたシークレットをローカルのターミナルに展開できるツールです。

プログラム実行時に必要なシークレットを Git に追加するわけにはいかないので、.envrc などのファイルに環境変数として記述することが多いと思います。Git で管理できないため、クローンしてからそう言った設定をする必要がありちょっと面倒です。teller を使うことで必要最低限なシークレット(シークレットを取り出すためのシークレット)のみをローカルに用意すればよくなるため、環境構築が楽になります。

シークレットをどこに保存しているかも明確になり、チーム開発時も役立ちそうです。

google/zx: A tool for writing better scripts

https://github.com/google/zx

JavaScript でシェルスクリプトを簡単に書くためのライブラリおよびツールです。JS からシェルのコマンドを呼び出す処理を書くのはまあまあ面倒ですが、zx を使うことで楽に記述できます。非同期処理も書きやすいのが良いですね。

実際に触ってみました。↓
https://zenn.dev/korosuke613/scraps/07729cd55a628b

当たり前ですが zx は node で動作するため、node が動く環境でなければ動かせません。なのでこれからシェルスクリプトを全く書かなくても良いかと言うとそう言うわけではないですが、node のプログラム内で手軽にシェルのコマンドを扱えるのは良いですね。

koneta

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

あとがき

ゴールデンウィーク明けの Productivity Weekly でした。みなさん久々の Weekly でイキイキとしていました。僕はもう GW 何やってたか忘れてしまいました。記憶がない...

生産性向上チームでは毎週こういったネタを共有する会を行っています。そんな生産性向上チームが気になる方は下のリンクをクリック!
https://blog.cybozu.io/entry/2020/08/31/080000

omake

今週のおまけです。

持たずに操作!ハンズフリーマルチアングルスマホホルダー

https://www.thanko.jp/shopdetail/000000003748/

写真を見ての通りです。スマホを腕に装着できる画期的なアイテムです。腕に巻いたホルダーにはスマホアームがついており、スマホの角度や位置を自由自在に変えることができます。これを使えば左手に荷物、右手に電車の吊り革と言うような状況になってもスマホで動画を見ることができます。観光地での歩きながらの動画撮影もしやすそうですね。

めちゃくちゃほしいとなって後で注文しようと思ってたら予約商品となってしまっていました...

前見た時は普通に買えそうだったのに...トホホ...
とりあえず注文しました。ほしい方は早めに予約しましょう。

脚注
  1. マージじゃなくても git reset --hard upstream/main という風にするのもありか。 ↩︎

  2. パスワード管理サービス。 ↩︎

  3. 各環境ごとにcorepackをインストールする必要がある。 ↩︎

GitHubで編集を提案

Discussion