Productivity Weekly (2021-02-17号)
こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。
僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。
本記事はその時のネタをまとめたものです。
今回が第 14 回目です。過去の記事はこちら。
news
GitHub Enterprise Server 3.0 is now generally available - The GitHub Blog
GitHub Enterprise Server 3.0がGAになりました。去年の12月に発表されてから二度のRC版を経て、ようやく来たかという感じです。
やはり目玉新機能はActionsとPackagesが使えるようになることでしょうか。Actionsを使いたい場合はセルフホストランナーを用意する必要があります[1]。個人的にはDark modeをGHES[2]でも使いたかったのですが、こちらはまだのようです。
このリリースによる詳しい情報は下記のリンクを参照してください。
Release notes - GitHub Docs
Go 1.16 is released!
go:embed
機能が追加されていたり、go install
でバイナリのバージョンが指定できるようになったりといった機能が追加されています。また、リンカが変更されたことにより、ビルド時のパフォーマンスが向上しているようです。
詳しくはリリースノートを読むか、以下のサイトが詳しくまとめており、参考になります。
know-how
.terraform.lock.hcl 完全に理解した / How to update .terraform.lock.hcl efficiently - Speaker Deck
.terraform.lock.hcl
というロックファイルが生成されるようになりました。この資料は、不可解な挙動をする.terraform.lock.hcl
の解説や対策をまとめたものになります。
僕は何も考えずにgit add
してたのであまり気にしたことはなかったのですが、挙動が気になった方はこの資料を読むことをおすすめします[3]。
Engineering Ladder | メルカリエンジニアリング
メルカリが期待するエンジニアの成長段階ごとに取るべき行動やスキルを明文化した資料です。9つの指標があり、それぞれに6段階のレベルがあります。このLadderはメルカリエンジニアの評価やキャリア設計に利用されているそうです。
期待する行動やスキルは組織によって全く異なるものになると思うので、このLadderをそのまま使うことはできないと思いますが、自分の組織でも同じようなものを作りたいとなった時に参考にできそうです。
Google TypeScript Style Guide
Googleで採用されているTypeScriptのスタイルガイドを外部向けに調整したガイドです。構文や型システムの使い方などに対して細かくルール、ベストプラクティスが設定されています。
tsconfig.json
などの設定ファイルを生成するgts init
やスタイルガイドに沿っているかどうかをチェックするgts lint
といった機能を持っています。
Googleのスタイルガイドに賛同できる人は使ってみるとよいかもしれません。
How to Make 100 Releases Per Day with Only 6 Quality Engineers
WayfairというEコマース企業はQAエンジニアがたった6人しかいないのに、1日あたり100回のリリースを行っているようです。この記事ではそれを実現するための取り組みを紹介しています。
テスト自動化、CI/CDパイプラインの構築といったことはもちろん、コードカバレッジやテスト通過率、パフォーマンスなどのメトリクスの可視化して誰もが品質向上に勤めるようにする、新機能をオンオフできるようにしてリスクを軽減するなどさまざまな工夫が記述されています。
リリースサイクルを高速化したい場合に参考にできると思います。
tool
Early Access Program for Qodana, a New Product That Brings the "Smarts" of JetBrains IDEs Into Your CI Pipeline | JetBrains Blog
JetBrains IDEの静的解析をCIで実行できるようにするツールQodanaがEAP[4]として公開されました。
大きく分けて、静的解析を行うリンター機能と解析結果を表示するWeb UI機能があるようです。Dockerイメージ、GitHub Actionが用意されており、すぐにCIに組み込めるようになっています。また、GitHub Appsはまだ誰でも使えるわけではないようで、Qodana-demo organizationに所属する必要があるようです。
既存のプロファイルを使うこともできるので、自分たちでカスタマイズしたJetBrains IDEの設定を使うこともできます。
Dockerイメージが2GB近くあって大きい[5]ことや、ライセンスの問題で30日ごとにDockerイメージのバージョンを最新版にしないといけない[6]などと、ちょっと使い勝手が悪そうな部分もありそうです。
また実際に使ってみたところ、生成したレポートをホスティングしないと見ることができなかったことや、表示される解析結果の情報が少ないなどと、(プレビュー版だからしょうがないのですが)本格的にCIで使うには工夫が必要そうです。
生成されたレポートをダウンロードし、index.htmlを開いたところ
conwnet/github1s: One second to read GitHub code with VS Code.
VSCodeっぽくGitHub上のリポジトリを閲覧できるツールのリポジトリです。フォルダ移動やファイル検索が比較的楽にできます。デモサイト?が用意されており、github1s.com
という風に、1s
をリポジトリのURLに加えることで、そのリポジトリをVS Codeライクに開くことができます。
ただ、使ってみたところ、現在は開いているファイルしか検索対象にできないようです。GitHub上でソースコードを読むのにストレスを感じている人は使ってみるとよいかもしれません。
また、似たようなものにCodeSandboxで開く方法があります。
こちらは、githubbox.com
という風にbox
をリポジトリのURLに加えることで、そのリポジトリをCodeSandboxで開くことができます(自動的にCodeSandboxにリダイレクトします)。CodeSandboxに慣れている方やウェブアプリのリポジトリを開く場合はこちらを利用するとよいかもしれません。
あとがき
今週はネタが多かったですね。Go 1.16がリリースされて、最近Goを全く書いていないのでGoでなんか作りたいなという気持ちになりました。
ちなみに、明日(2/18)ある「サイボウズ技術説明会 for student!」というオンラインイベントでサイボウズの開発文化と生産性向上チームのお話をする予定なので、気になる人はぜひお越しください。僕以外にもkintone開発チームの人とNecoチームの人がお話しします。
生産性向上チームでは毎週こういったネタを共有する会を行っています。そんな生産性向上チームが気になる方は下のリンクをクリック!
omake
今週のおまけです。花粉が舞ってるのか目がかゆいです。
遊戯王カードをドローする GitHub Action を作りました
Issueのコメントで遊戯王のカードをドローするためのGitHub Actionを作ったという記事です。draw
またはドロー
とコメントすると発火するデモが用意されています。
ドローするとランダムな遊戯王カードの画像がコメントされます。法律にはあまり詳しくないのですが、著作権的には怪しそうです。
記事ではアクションの解説と、開発からGitHub Marketplaceに公開するまでを説明しています。アクションの使い道は正直思いつきませんが、GitHub Actionsにはこういう使い方もあったのかと気付かされますね。
僕もドローしたところ、Bound Wandを引きました。バウンドワンドは攻撃力上昇と相手によって破壊され墓地に送られた場合に装備モンスターを蘇生する効果を持つ装備魔法です。そこまで強いカードではありませんが、対戦相手にとっては嫌な装備でしょう。
ちなみに、ドローした後放置してたらたくさんのメールが来てて驚きました。コメントすることで自動でIssueをSubscribeしてしまうからですね。もしドローしたらUnsubscribeすることをおすすめします。
Discussion