AIと二人三脚で OSSにコントリビューションしてみた

>100 Views

May 29, 26

スライド概要

PHP勉強会@東京 #187 #phpstudy
https://phpstudy.connpass.com/event/391794/

profile-image

関西出身 | 新卒4年目 Webアプリケーションエンジニア | Prototype for One | ふんわりと自宅鯖 | フロントからインフラまで色んな勉強会に出没しがち

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

AIと⼆⼈三脚で OSSにコントリビューションしてみた PHP勉強会@東京 #187 デロ | @dero1to

2.

所属 株式会社キュービック Webエンジニア 技術 Ruby、Rails、PHP、Laravel 趣味 ドライブ、ダーツ、アニメ、⾃宅鯖 カンファレンスのスタッフ、配信 デロ @dero1to 運営 ・PHP勉強会@東京 ・PHPカンファレンス⼩⽥原・愛媛 2026 ・EMTEC

3.

OSSに Contribution したことありますか?

4.

⾃分は今回はじめて OSSに Contributionしました

5.

LT(体験談)

6.

今回、初めて⾃分がContributionしたOSS

7.

PHPのじゃなくてごめんなさい!

8.

今回、初めて⾃分がContributionしたOSS

9.

なぜContributionしたのか

10.

本業で困ったから

11.

なぜ困ったのか 担当しているシステムで⾊々なライブラリのバージョンアップの対応をし ていたところ、Google広告のSDKを更新した際に認証が通らなくなった

12.

困ったけどどうしよう ● まずは Issuesを⾒に⾏った

13.

困ったけどどうしよう ● まずは Issuesを⾒に⾏った → 他の⼈で困っているといった様⼦は無い。。

14.

困ったけどどうしよう ● まずは Issuesを⾒に⾏った → 他の⼈で困っているといった様⼦は無い。。 → 急ぎではなかったので、⼀旦保留にした

15.

困ったけどどうしよう ● まずは Issuesを⾒に⾏った → 他の⼈で困っているといった様⼦は無い。。 → 急ぎではなかったので、⼀旦保留にした そろそろなんとかしないと⾏けなくなってきた

16.

困ったな

17.

AIの⼒を借りよう

18.

ただし、AIの⼒は借りつつも 出来る限り⾃分が理解して出したい

19.

AIと⼈間の⼆⼈三脚

20.

まずは調査フェーズ ● 原因を特定するためにどのバージョンから発⽣したかを調べる

21.

まずは調査フェーズ ● 原因を特定するためにどのバージョンから発⽣したかを調べる → v38.0.0 以降で発⽣

22.

まずは調査フェーズ ● 原因を特定するためにどのバージョンから発⽣したかを調べる → v38.0.0 以降で発⽣ ● v37.0.0~v38.0.0の間でどんな変更が合ったかをAIと共に調べる

23.

まずは調査フェーズ ● 原因を特定するためにどのバージョンから発⽣したかを調べる → v38.0.0 以降で発⽣ ● v37.0.0~v38.0.0の間でどんな変更が合ったかをAIと共に調べる → MetadataInterceptorというのが追加され、 代わりに今までの認証情報の受け渡しの処理が削除されていた

24.

まずは調査フェーズ ● 原因を特定するためにどのバージョンから発⽣したかを調べる → v38.0.0 以降で発⽣ ● v37.0.0~v38.0.0の間でどんな変更が合ったかをAIと共に調べる → MetadataInterceptorというのが追加され、 代わりに今までの認証情報の受け渡しの処理が削除されていた MetadataInterceptorって何者?

25.

機能追加のPullRequestを⾒てみる メタデータヘッダーを Google API Clientで共通化するために導⼊されたものらしい

26.

対応できるなら MetadataInterceptorの 流れに沿った⽅がよさそう

27.

AIに⾊々調べてもらった

28.

AIに⾊々調べてもらった google-ads-googleads <AIからの回答> gapic-common で gRPC を呼び出し をする際のオプションをgRPC側が破棄 してしまっている gapic-common grpc

29.

AIに⾊々調べてもらった google-ads-googleads <AIからの回答> gapic-common で gRPC を呼び出し をする際のオプションをgRPC側が破棄 してしまっている gapic-common grpc なるほど、 よく分からん

30.

AIに⾊々調べてもらった google-ads-googleads <AIからの回答> gapic-common で gRPC を呼び出し をする際のオプションをgRPC側が破棄 してしまっている gapic-common gRCP gRPCにバグがありそう

31.

gRPCのバグの情報がないか調べる

32.

gRPCのバグの情報がないか調べる

33.

gRPCのバグの情報がないか調べる コードの情報までは難しくて追えなかったが時系列を追いかけてみた

34.

gRPCのバグの情報がないか調べる コードの情報までは難しくて追えなかったが時系列を追いかけてみた 数年前にgRPCで不具合が起票されていたが、流れて時間経過でクローズ されてしまった。その後Issuesの再Openの話が上がっていたものの結局 再Openされず、ちょうど⾃分が⾒に来る少し前に別の⼈が新たにIssues が作成されていた

35.

ここで悩みます

36.

何を悩んだのか ● 結局原因のちゃんと理解したわけではない ● gRPCの問題を直す技術⼒はない ● 今回使いたいライブラリを使えている⼈がいそう

37.

半分メンテナーに相談する 気持ちで出してみよう

38.

Issuesを書く ● どんなバグが起こっていそうか ● 再現するためのコードとバージョンの情報 ● エラーログ ● 回避案

39.

⽇本語では説明できるけど、 英語でちゃんと伝えられるのか

40.

AIを使って英語化する 複数のAIモデルを使って、伝わるかを推敲 ⽇本語 -> 英語 -> ⽇本語にしたり、 ニュアンスの気になるところを直していく

41.

いざ、Issues!

42.

Issues出せた!😄

43.

いや、、 せっかくなら もうちょいやってみよう

44.

PullRequestを作る ● MetadataInterceptorが⼊る前のコードを復元する ● 恐らくgRPC側のバグが修正されれば治りそうなのでその旨を記録 ● ちゃんとテストコードを書く

45.

PullRequestも出せた!😄

46.

😴

47.

🌅

48.

翌朝 メンテナーの⽅がApproval & Merge してくれていた!

49.

数⽇後

50.

無事にリリース ⼿元の環境にインストールして、動作確認 無事に新しいバージョンを利⽤できるように!

51.

まとめ ● ⾃分が困っている課題は⾃分が表現しないと伝わらない ● AIを使いつつも⾃分なりに努⼒をしてみると結構楽しい ● ⾃分が寝ている間にもOSSをメンテナンスしてくれている⼈がいる OSSを作っている⽅々 いつも本当にありがとうございます