🫧

GitHub.com上でのCopilotがエンプラ以外に開放(beta)など|Productivity Weekly(2024-10-09)

2024/11/05に公開

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

僕たち生産性向上チームは毎週水曜日に 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

https://github.blog/news-insights/product-news/github-copilot-now-available-in-github-com-for-copilot-individual-and-copilot-business-plans/

GitHub Copilot in GitHub.com の一部の機能を Copilot Individual と Copilot Business プランのユーザーでも使えるようになりました(プレビュー)。これまでは Copilot Enterprise プランでのみ利用可能でした。

GitHub.com 上で Copilot Chat が使えるようになることで、任意のリポジトリに関する質問が手軽にできるようになったり、プルリクエストのサマリーを Copilot に作成させたり、失敗した Actions のジョブの分析をさせたりできます。

Individual ユーザはすぐに利用できますが、Business ユーザは管理者による有効化が必要になります。使いたい場合は管理者に許可を取りましょう。

なお、プレビュー機能であるため、通常の規約とは異なりプレリリース規約が適用されます。規約を確認した上で利用するようにしましょう。

https://x.com/GitHubJapan/status/1839472005718139083

本項の執筆者: @korosuke613

Introducing “CI/CD Admin” – A New Pre-Defined Organization Role for GitHub Actions - GitHub Changelog

https://github.blog/changelog/2024-09-25-introducing-ci-cd-admin-a-new-pre-defined-organization-role-for-github-actions/

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

https://github.blog/changelog/2024-09-25-actions-new-images-and-ubuntu-latest-changes/

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

https://github.blog/changelog/2024-10-01-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

https://github.blog/changelog/2024-10-01-evolving-github-issues-public-preview/
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

https://aws.amazon.com/jp/blogs/database/amazon-elasticache-and-amazon-memorydb-announce-support-for-valkey/

Amazon ElastiCache において、Valkey がサポートされました。Valkey は今年 Redis からフォークされた OSS のインメモリキーバリューストアです[1]

発表内容によると、Serverless、ノードベース共に低価格を実現し、課金対象の最小キャッシュサイズも 100 MB からとなっている(Redis は 1GB から)、かつ、Redis OSS との API 互換性もあるため、低い移行コストで高いリターンを得られそうです。

上記の発表とは別に、開始方法に関する AWS ブログや、サイバーエージェントさんによる Valkey サポートの何が嬉しいかを検証した記事なども上がっています。

Amazon ElastiCache を使っている方は移行を検討してみましょう。

本項の執筆者: @korosuke613

Visual Studio Code September 2024

https://code.visualstudio.com/updates/v1_94

VSCode の 9 月分の更新! わいわい!

個人的に面白かった機能とその軽い説明は以下です:

  • Public code matching in chat
    • Copilot Chat においても、GitHub Copilot が出力したコードが GitHub.com で公開されているコードと一致するか検査できるようになりました。
    • これまでは Chat では検査できませんでした。
    • 以下にこの機能をわかりやすく説明する画像を紹介記事から引用します:
      • Copilot 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 の改修を行ったときのメモ✍️

https://sadayoshi-tada.hatenablog.com/entry/2024/09/28/150009

小ネタです。タイトルにある通り、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

https://github.com/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による負荷試験実施の自動化

https://speakerdeck.com/okmtz/gozhi-cliturugatling-commanderniyorufu-he-shi-yan-shi-shi-nozi-dong-hua

OSS の負荷試験ツール Gatling をもとに、次の 2 つのツールを作って運用している話です:

  1. 並列処理により大規模な負荷をかけられる Gatling Operator
  2. 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 で出たネタを全て紹介したいけど紹介する体力が持たなかったネタを一言程度で書くコーナーです。

本項の執筆者: @korosuke613

あとがき

今回もマジで遅くなってしまいすみません。最近は予算策定に給与評価にで大変空いた時間が少なくなってしまいました。
今年から僕も評価する側に回ってしまったのでいつもより大変ですね(苦笑)

サイボウズの生産性向上チームでは社内エンジニアの開発生産性を上げるための活動を行なっています。そんな生産性向上チームが気になる方は下のリンクをクリック!
https://www.docswell.com/s/cybozu-tech/5R2X3N-engineering-productivity-team-recruitment-information


脚注
  1. 参考: AWS、Redisをフォークした「Valkey」を、同社サービスのElastiCacheとMemoryDBで採用すると明らかに - Publickey ↩︎

GitHubで編集を提案
サイボウズ 生産性向上チーム 💪

Discussion