---
title: AIと二人三脚で OSSにコントリビューションしてみた
tags: 
author: [デロ](https://docswell.com/user/dero1to)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/Y76W4LKL7V.jpg?width=480
description: PHP勉強会@東京 #187 #phpstudy https://phpstudy.connpass.com/event/391794/
published: May 29, 26
canonical: https://docswell.com/s/dero1to/5E18W6-i_tried_contributing_to_oss_working_hand-in-hand_with_ai
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/Y76W4LKL7V.jpg)

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


# Page. 2

![Page Image](https://bcdn.docswell.com/page/G75MQ1PM74.jpg)

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


# Page. 3

![Page Image](https://bcdn.docswell.com/page/9J29P16RER.jpg)

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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/DEY45Z95JM.jpg)

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


# Page. 5

![Page Image](https://bcdn.docswell.com/page/VJNYN3L478.jpg)

LT（体験談）


# Page. 6

![Page Image](https://bcdn.docswell.com/page/YE9PR944J3.jpg)

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


# Page. 7

![Page Image](https://bcdn.docswell.com/page/GE8DW9QVED.jpg)

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


# Page. 8

![Page Image](https://bcdn.docswell.com/page/LELMNWXR7R.jpg)

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


# Page. 9

![Page Image](https://bcdn.docswell.com/page/4JMYX9LPJW.jpg)

なぜContributionしたのか


# Page. 10

![Page Image](https://bcdn.docswell.com/page/PJR9NGKY79.jpg)

本業で困ったから


# Page. 11

![Page Image](https://bcdn.docswell.com/page/PEXQNXL4JX.jpg)

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


# Page. 12

![Page Image](https://bcdn.docswell.com/page/3EK9NWLPED.jpg)

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


# Page. 13

![Page Image](https://bcdn.docswell.com/page/L73WV13475.jpg)

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


# Page. 14

![Page Image](https://bcdn.docswell.com/page/87DK8X45JG.jpg)

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


# Page. 15

![Page Image](https://bcdn.docswell.com/page/VJPK8PMDE8.jpg)

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


# Page. 16

![Page Image](https://bcdn.docswell.com/page/2EVVN29GEQ.jpg)

困ったな


# Page. 17

![Page Image](https://bcdn.docswell.com/page/57GLKR4DEL.jpg)

AIの⼒を借りよう


# Page. 18

![Page Image](https://bcdn.docswell.com/page/4EQYNVGXJP.jpg)

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


# Page. 19

![Page Image](https://bcdn.docswell.com/page/KJ4WGM5271.jpg)

AIと⼈間の⼆⼈三脚


# Page. 20

![Page Image](https://bcdn.docswell.com/page/LE1YD8WK7G.jpg)

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


# Page. 21

![Page Image](https://bcdn.docswell.com/page/GEWGYZ6PJ2.jpg)

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


# Page. 22

![Page Image](https://bcdn.docswell.com/page/47ZLX1Y6J3.jpg)

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


# Page. 23

![Page Image](https://bcdn.docswell.com/page/YJ6W4LDLJV.jpg)

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


# Page. 24

![Page Image](https://bcdn.docswell.com/page/GJ5MQ13MJ4.jpg)

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


# Page. 25

![Page Image](https://bcdn.docswell.com/page/LE3WV169E5.jpg)

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


# Page. 26

![Page Image](https://bcdn.docswell.com/page/8EDK8XV87G.jpg)

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


# Page. 27

![Page Image](https://bcdn.docswell.com/page/V7PK8PVWJ8.jpg)

AIに⾊々調べてもらった


# Page. 28

![Page Image](https://bcdn.docswell.com/page/2JVVN2Z9JQ.jpg)

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


# Page. 29

![Page Image](https://bcdn.docswell.com/page/5EGLKR44JL.jpg)

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


# Page. 30

![Page Image](https://bcdn.docswell.com/page/4JQYNVGR7P.jpg)

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


# Page. 31

![Page Image](https://bcdn.docswell.com/page/K74WGM5QE1.jpg)

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


# Page. 32

![Page Image](https://bcdn.docswell.com/page/LJ1YD8WLEG.jpg)

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


# Page. 33

![Page Image](https://bcdn.docswell.com/page/GJWGYZ6Q72.jpg)

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


# Page. 34

![Page Image](https://bcdn.docswell.com/page/4EZLX1Y373.jpg)

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


# Page. 35

![Page Image](https://bcdn.docswell.com/page/Y76W4LDZ7V.jpg)

ここで悩みます


# Page. 36

![Page Image](https://bcdn.docswell.com/page/G75MQ13974.jpg)

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


# Page. 37

![Page Image](https://bcdn.docswell.com/page/9J29P1Z5ER.jpg)

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


# Page. 38

![Page Image](https://bcdn.docswell.com/page/DEY45ZR6JM.jpg)

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


# Page. 39

![Page Image](https://bcdn.docswell.com/page/VJNYN3X178.jpg)

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


# Page. 40

![Page Image](https://bcdn.docswell.com/page/YE9PR98YJ3.jpg)

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


# Page. 41

![Page Image](https://bcdn.docswell.com/page/GE8DW98KED.jpg)

いざ、Issues！


# Page. 42

![Page Image](https://bcdn.docswell.com/page/LELMNWRP7R.jpg)

Issues出せた！😄


# Page. 43

![Page Image](https://bcdn.docswell.com/page/4JMYX9R2JW.jpg)

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


# Page. 44

![Page Image](https://bcdn.docswell.com/page/PJR9NGR579.jpg)

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


# Page. 45

![Page Image](https://bcdn.docswell.com/page/PEXQNXRXJX.jpg)

PullRequestも出せた！😄


# Page. 46

![Page Image](https://bcdn.docswell.com/page/3EK9NWR9ED.jpg)

😴


# Page. 47

![Page Image](https://bcdn.docswell.com/page/L73WV18975.jpg)

🌅


# Page. 48

![Page Image](https://bcdn.docswell.com/page/87DK8XM8JG.jpg)

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


# Page. 49

![Page Image](https://bcdn.docswell.com/page/VJPK8PRWE8.jpg)

数⽇後


# Page. 50

![Page Image](https://bcdn.docswell.com/page/2EVVN2R9EQ.jpg)

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


# Page. 51

![Page Image](https://bcdn.docswell.com/page/57GLKRM4EL.jpg)

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


