GitHub.com上でのCopilotがエンプラ以外に開放(beta)など|Productivity Weekly(2024-10-09)
こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。
僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1 週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。
本記事はその時のネタをまとめたものです。
2023-01-25 号から、基本的に隔週で連載することとしました。たまに単独でも投稿するかもしれません。
今週は 2024-10-09 単独号です。
今回が第 165 回目です。過去の記事はこちら。
news 📺
GitHub Copilot now available in github.com for Copilot Individual and Copilot Business plans - The GitHub Blog
GitHub Copilot in GitHub.com の一部の機能を Copilot Individual と Copilot Business プランのユーザーでも使えるようになりました(プレビュー)。これまでは Copilot Enterprise プランでのみ利用可能でした。
GitHub.com 上で Copilot Chat が使えるようになることで、任意のリポジトリに関する質問が手軽にできるようになったり、プルリクエストのサマリーを Copilot に作成させたり、失敗した Actions のジョブの分析をさせたりできます。
Individual ユーザはすぐに利用できますが、Business ユーザは管理者による有効化が必要になります。使いたい場合は管理者に許可を取りましょう。
なお、プレビュー機能であるため、通常の規約とは異なりプレリリース規約が適用されます。規約を確認した上で利用するようにしましょう。
本項の執筆者: @korosuke613
Introducing “CI/CD Admin” – A New Pre-Defined Organization Role for GitHub Actions - GitHub Changelog
GitHub の定義済み Organization Role において、新たに CI/CD Admin ロールが追加されました。このロールには、GitHub Actions に関する設定を行うための権限が付与されています。
2024 年 3 月に GitHub Actions に関する権限を設定できるようにはなっていたため、カスタムロールとして独自に同じロールを作ることはできましたが、カスタムロールの上限が 10 個しかないことと、デフォルトでロールが用意されている方が使いやすいことから、このロールの追加は嬉しいです。
GitHub Actions に関する権限は渡したいが、Organization Admin 権限は渡したくない、という場合は珍しくないと思うので、積極的に活用していきましょう。
本項の執筆者: @korosuke613
Actions: new images and ubuntu-latest changes - GitHub Changelog
GitHub Actions において、Ubuntu 24.04 ランナーが GA となり、今後 ubuntu-latest
が徐々に 24.04 に切り替わっていくことが発表されました。
移行は 10/30 までに完了します。それまでは 22.04 と 24.04 が同じラベルで混在することになるので、両方のバージョンで動くようにするか、あるいは ubuntu-22.04
などの明示的なバージョン指定をするのが良いでしょう。
また、この記事ではついでに macOS 15 ランナーがパブリックべーたとして利用可能になったことも紹介されています(なぜ別の changelog としないのか...)。
本項の執筆者: @korosuke613
Repository level Actions Usage Metrics - public preview
GitHub において、今年 7 月に GA となった Actions Usage Metrics ですが、リポジトリレベルでも見られるようになりました(プレビュー)。これまでは GitHub Enterprise Cloud の Organization レベルでのみ利用可能でした。
Changelog では次のように、GitHub Enterprise Cloud 利用者向けに使えるようになる旨が書かれています。
Actions Usage Metrics is in public preview for all GitHub Enterprise Cloud customers at the repository level.
しかし、実際のところ READ 権限のあるリポジトリでは Enterprise と関係なくても利用可能なようです。
これは自分のリポジトリ https://github.com/korosuke613/zenn-articles/actions/metrics/usage
上記は自分がオーナーのリポジトリですが、facebook/react のように関わりのないリポジトリでも利用できました。
てっきり GHEC の Enterprise 配下リポジトリだけの話かと思っていましたが、もしかしたら GHEC のユーザーであるかどうかだけで判断されているのかもしれません。
Actions Usage Metrics を使ってどういうワークフロー、ジョブに時間がかかっているかを分析してみましょう。
本項の執筆者: @korosuke613
Evolving GitHub Issues (Public Preview) - GitHub Changelog
GitHub の Issue が刷新されます(プレビュー)。Issue の親子関係を設定できるようになったり、ラベルとは別に Issue のタイプ(Bug、Feature、Initiative、Task)を設定できるようになったり、検索にカッコを使えるようになったり、UI が若干変わったりしています。
親子関係やタイプは登場したばかりで上手く使うのが難しい気がしますが、便利そうならどんどん使ってみましょう(API や Webhook でのペイロードがどうなるのか気になる)。
現在は Organization 単位でパブリックベータとなっています。使いたい方は waitlist に登録しましょう。
本項の執筆者: @korosuke613
Amazon ElastiCache and Amazon MemoryDB announce support for Valkey | AWS Database Blog
Amazon ElastiCache において、Valkey がサポートされました。Valkey は今年 Redis からフォークされた OSS のインメモリキーバリューストアです[1]。
発表内容によると、Serverless、ノードベース共に低価格を実現し、課金対象の最小キャッシュサイズも 100 MB からとなっている(Redis は 1GB から)、かつ、Redis OSS との API 互換性もあるため、低い移行コストで高いリターンを得られそうです。
上記の発表とは別に、開始方法に関する AWS ブログや、サイバーエージェントさんによる Valkey サポートの何が嬉しいかを検証した記事なども上がっています。
- Amazon ElastiCache for Valkeyの開始方法 | Amazon Web Services ブログ
- ElastiCacheでValkeyがサポートされたけど何が良いのか検証してみた - CyberAgent SRG #ca_srg
Amazon ElastiCache を使っている方は移行を検討してみましょう。
本項の執筆者: @korosuke613
Visual Studio Code September 2024
VSCode の 9 月分の更新! わいわい!
個人的に面白かった機能とその軽い説明は以下です:
- Public code matching in chat
- Copilot Chat においても、GitHub Copilot が出力したコードが GitHub.com で公開されているコードと一致するか検査できるようになりました。
- これまでは Chat では検査できませんでした。
- 以下にこの機能をわかりやすく説明する画像を紹介記事から引用します:
- Drag and drop files to add chat context
- ファイルのドラッグ&ドロップで Copilot Chat にコンテキストを追加できるようになりました。
- これまでファイルをコンテキストに追加する場合、テキストでファイル名を記述する必要がありました。
- 次のリンク先の動画がわかりやすいです:
先月に引き続き Copilot Chat の改善が多かったです。そのほかにもたくさんの改善が入ってて、どんどん便利になっていて嬉しいですね。
本項の執筆者: @ajfAfg
know-how 🎓
terraform-aws-provider 5.68.0 で非推奨になった aws_iam_role の inline_policy の改修を行ったときのメモ✍️
小ネタです。タイトルにある通り、terraform-aws-provider 5.68.0 にてリソース aws_iam_role
の引数 inline_policy
が非推奨になり、代わりにリソース aws_iam_role_policy
の使用が推奨されています。この改修の際、ナイーブに Terraform コードから inline_policy
を消して aws_iam_role_policy
を使うと、Terraform ステートからは inline_policy
が消えない問題があり、このままでは 2 つのポリシーがコンフリクトするので import を使おうね、という話です。
微妙にハマりがちポイントだと思うので、知っておくと改修の際に役立ちそうです。
本項の執筆者: @ajfAfg
tool 🔨
kellyjonbrazil/jc
主要なシェルコマンドの出力結果を JSON や YAML 形式の文字列に変換するツールです。変換をサポートするコマンドの数は、2024 年 10 月 22 日現在 169 となっています。以下に使用例を引用します:
$ dig example.com | jc --dig
[{"id":38052,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],
"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,
"opt_pseudosection":{"edns":{"version":0,"flags":[],"udp":4096}},"question":
{"name":"example.com.","class":"IN","type":"A"},"answer":[{"name":
"example.com.","class":"IN","type":"A","ttl":39049,"data":"93.184.216.34"}],
"query_time":49,"server":"2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",
"when":"Fri Apr 16 16:09:00 PDT 2021","rcvd":56,"when_epoch":1618614540,
"when_epoch_utc":null}]
発想はわかるけど本当にやったの!?というツールです。ここまで多くのパーサーを書くには眠れない夜もあっただろう。種々のシェルコマンドを駆使して出力結果の特定の部分だけ抜き出すのは場当たりすぎて大変がちなので、jc
& jq
のコンビで楽にシェル芸していきたいですね。
本項の執筆者: @ajfAfg
Go製CLIツールGatling Commanderによる負荷試験実施の自動化
OSS の負荷試験ツール Gatling をもとに、次の 2 つのツールを作って運用している話です:
- 並列処理により大規模な負荷をかけられる Gatling Operator
- Gatling Operator による負荷試験で発生する細々とした作業を全自動化する Gatling Commander
もう少し詳しい説明は次の通りです。まず、Gatling 単体だと ZOZO さんが期待する負荷をかけられませんでしたが、仮想マシンの台数増加による手法はマシンの準備や実行タイミングの調整といった運用面の課題がありました。そこで、Kubernetes クラスタ上で複数の Gatling を実行する Kubernetes Operator Gatling Operator が開発されました。Gatling Operator により元々の課題は解決できましたが、また異なる運用上の課題が発生しました。それが Gatling オブジェクトの自動作成や負荷試験の自動停止を始めとするトイルです。このトイルを削減する目的で Gatling Commander が開発され、Gatling/Gatling Operator による負荷試験が全自動化されました。今後は、この負荷試験を定期実行して継続的にシステムのパフォーマンスを監視したいとのことです。
k8s による負荷試験の並列化に留まることなく、全自動化まで取り組まれていてめちゃくちゃすごいという気持ちです。全自動化まで行けると CI 上で実行できるのでめちゃくちゃ嬉しいですね。一方で、全自動化はどこかで割り切りが必要がちだと思っているので、自動化しづらいテストシナリオはなかったのかな?と少し気になりました。負荷試験の経験がほとんどないので、想像以上に自動化が効く分野の説もあります。
今後僕も大規模な負荷試験に関わることは全然考えられるので、手法の 1 つとして覚えておきたいです。
本項の執筆者: @ajfAfg
read more 🍘
Productivity Weekly で出たネタを全て紹介したいけど紹介する体力が持たなかったネタを一言程度で書くコーナーです。
-
news 📺
-
End of life for Actions Node16 - GitHub Changelog
- GitHub Actions の GitHub-hosted runner において、いよいよ Node.js 16 がデフォルトでインストールされなくなりました
-
2024 年 6 月 30 日よりデフォルトの Node.js は 20 となっていましたが、Node.js 16 はインストールされたままであり、
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true
環境変数を設定することで引き続きデフォルトの Node.js を 16 とできていました - 今回インストールもされなくなったことで、この方法も使えなくなります
-
Annotations in the GitHub Actions log view - GitHub Changelog
- GitHub Actions のジョブ詳細画面においてアノテーションが表示されるようになりました
- これまではワークフローサマリーの画面にしか表示されなかったため、正直どのジョブのことなのかやジョブ詳細画面でのアノテーションの確認ができなくて不便でした
- 便利になりますが、デフォルトで折りたたまれているので個人的には展開してほしいです(気づかないため)
-
AWS、生成 AI を活用したバーチャルアシスタント AWS re:Post Agent を発表 - AWS
- AWS のコミュニティサイトである AWS re:Post において、生成 AI を活用したアシスタント AWS re:Post Agent が発表されました
- コミュニティでの質問に対してすぐさま回答してくれるそうです
- 例: https://repost.aws/questions/QUnqsxSXqxSN6My2Nvbokh-w
- どうやら時間差でサポートエンジニアによるレビュー、修正が入るようです
- 僕は AWS re:Post を全く使ったことがありませんが、便利そうですね
-
End of life for Actions Node16 - GitHub Changelog
-
know-how 🎓
-
BunでNode.jsのツールをSingle-file executable binaryにしてバイナリを配布する | Web Scratch
- Bun を使って Node.js で動くツールをシングルバイナリにして配布する方法を紹介しています
- Bun にはクロスコンパイルをして各種プラットフォーム向けのシングルバイナリを作る機能があるようで、どのようにビルドするかを説明してくれています
- 色々つまづき所もあるようで、対応されていない dynamic import をする場合の対処法なども
- Deno でも似たようなことをできるらしいですが、今回は技術的に厳しい部分もあって Bun を選んだようです
- ファイルサイズはどうなのかなと思い Releases を見にいきましたが、やはり Go などに比べると大きめですね
-
「GitHub CI/CD実践ガイド」イベント基調講演ダイジェスト+FAQ #Forkwell_Library
- 今年発売した書籍「GitHub CI/CD 実践ガイド」の著者による本の内容に関する講演のダイジェストと FAQ をまとめてくれた記事です
- 多くの質問をイベント内でもらったようで、未回答となってしまったの質問にも回答してくれています(すごい)
- 僕も本を読みましたが、GitHub Actions に留まらず、CI/CD に関する基本や考え方も書いてくれていて良本だと思いました。ぜひ読んでみてください
-
Four Keysを活用してチームの開発生産性を改善した時のふりかえりの考え方と手法を紹介します - ZOZO TECH BLOG
- ZOZO さんによる、Four Keys を活用してチームの開発生産性を改善した時のふりかえりの考え方と手法の紹介記事です
- 背景、課題、工夫、効果が網羅されており、事例の 1 つとして参考にできます
-
【新刊】2024年10月26日発売『エンジニアチームの生産性の高め方〜開発効率を向上させて、人を育てる仕組みを作る』
- 開発生産性に関する書籍が発売されました
- 最近は Findy さんが開発生産性に力を入れていたため、この本も関わっているのかなと思いましたが、著者プロフィール的に今回は関わってなさそうでした(LINE ヤフーさん多め)
- 開発生産性に関わるムーブメントの広がりを感じますね。いろんな視点でのお話を知っておきたいです
-
「みんなで金塊堀太郎」という施策で億単位のコスト削減を達成 & 表彰されました | CyberAgent Developers Blog
- サイバーエージェントさんによるコスト削減を実現するための施策「みんなで金塊堀太郎」の紹介記事です
- コスト削減ってなかなか目立ちづらい取り組みだと思うので、ちゃんと削減できたことを表彰してもらえるのは良いことだなと思いました(生産性を極力下げないコスト削減が大事という前提)
-
BunでNode.jsのツールをSingle-file executable binaryにしてバイナリを配布する | Web Scratch
本項の執筆者: @korosuke613
あとがき
今回もマジで遅くなってしまいすみません。最近は予算策定に給与評価にで大変空いた時間が少なくなってしまいました。
今年から僕も評価する側に回ってしまったのでいつもより大変ですね(苦笑)
サイボウズの生産性向上チームでは社内エンジニアの開発生産性を上げるための活動を行なっています。そんな生産性向上チームが気になる方は下のリンクをクリック!
Discussion