想定読者
- OSSに興味を持っている方
- OSSの探し方に苦戦している方
はじめに
good first issueから探し,OSSのapi-automation-agentへコントリビュートするまでの手順をまとめました.OSSにコントリビュートしたいと思っている方は参考にしてみてください.
good first issueとは
good first issueは、初めての貢献者でも取り組みやすいとされるissueに付与されるラベルです。具体的には、小さなバグの修正や機能の追加,ドキュメントの更新などが該当します。
api-automation-agentとは
OpenAPI/Swagger仕様またはPostmanコレクションから、テンプレートに基づいて自動でAPIのテスト等が含まれるフレームワークを生成するオープンソースのAIエージェントです.
以下に今回作成したプルリクエストのリンクを貼りますので興味ある方はご覧ください。
コントリビュートの流れ
- good first issueから取り組めそうなissueを探す
- コントリビュートガイドラインを読む
- リポジトリをフォークする
- コードを編集する
- プルリクエストを作成する
- レビューコメントに対応する
続いて、これらの手順について詳細に解説していきます。
1. good first issueから取り組めそうなissueを探す
まずは、取り組めそうなissueを探すところからはじめました。
以下のページではgood first issueが含まれているOSSを掲示しているので参考にしてください.
- https://up-for-grabs.net
- https://www.firsttimersonly.com
- https://goodfirstissues.com
- https://goodfirstissue.dev
goodfirstissues.comからgood first issueを絞り込む画面

まずプログラミング言語で絞りこみ,good first issueのラベルが付いたissueを探してリポジトリの中身などを見ました.
GitHubから探す場合はlabel:good first issueを検索バーに追加しましょう.

ここが特に大変で,自分でもできそうなissueにはたいてい誰かが取り組んでいたため,見つけるのに苦労しました.
そこで,Star数を10から1000に絞り込んで始動したばかりのOSSを中心に探すと,今回のOSSを見つけることができました!
issueは,自分でもできそうな難易度で,興味を持ったものを選びました.
具体的には,APIの接頭辞(ex: /api, /api/v1など)を削除する機能を追加するという内容でした.コマンド引数のオプションを追加して,内部処理も変更し,それらのテストを追加するものでした.変更の量は多そうだったのですが,挑戦したいという思いから取り組みました.
このあたりは自分自身がやってみたいことで選ぶのもありだと思いますし,簡単なドキュメントの更新から始めるのでもいいと思います.
2. コントリビューションガイドラインを読む
著名なOSSプロジェクトにはコントリビューションガイドラインが存在します。
これは、新規のコントリビューターがプロジェクトに参加する際のルールを明記した文書で、コードに変更を加えてオリジナルのリポジトリにマージするまでの流れを知ることができます.
ガイドラインに則ってプルリクエストを作成しないとマージされない可能性があるため、まずはガイドラインを読みました。今回の場合は,タスクの見つけ方やコントリビュートまでの流れ,コードフォーマットやログの出し方まで詳しく書かれていたため全て確認しました.
3. リポジトリをforkする
次に、GitHub上のapi-automation-agentリポジトリをforkしました。これをすることで,自分のリポジトリにコピーを作成することができ,オリジナルのリポジトリに影響を与えることなく安全に編集することができます.
4. コードを編集する
forkしたリポジトリ上で、issueの内容に基づいてコードを編集しました。
まずは今回修正すべき関数と,その呼び出し元関数を目で追うコードリーディングをしました.
また,今回の修正と類似している--endpointsという既存のコマンド引数があったため,これを参考に--prefixesというコマンド引数を追加しました.また,この引数が指定されていない場合はこれまでの挙動を維持するよう処理を修正しました.プロジェクトができて1年程度だったため比較的読みやすく,スムーズに取り組むことができました.
最後に,テストやLinterなどを整備してからコミットを作成しました.
コミットメッセージに関しては、ガイドラインに指示がなかったため過去のコミットメッセージを参考にしました.
1コミットが大きくならないよう,何をしているかタイトルだけでわかる単位で作成しました.
5. プルリクエストを作成する
コードの編集が完了したら、次にプルリクエストを作成します。
英語が苦手なので、すでにマージされているものを参考にしながら、文章を作成しました。
fork先のリポジトリにpushすると自動でオリジナルのリポジトリにもすぐに変更が届くので,変更内容をまとめてからPRすると安心です.
6. レビューコメントに対応する
プルリクエストに対して、コメントがある場合はその対応をします。
今回は一発でLGTMをいただき,マージされたので特にありませんでした.
感想
コマンド引数の一つを追加するという自分にとっては大きな変更で,無事にマージされたので大変有意義でした!
プロジェクト自体,大きいものではありませんが少しずつ大きなものに挑戦していきたいと思っています.
OSSの魅力は今まで知らなかった文法を勉強するという意味もあります.今回のプロジェクトでは,デコレータを用いて重たい処理を一時保存する機能が参考になりました!
ちなみにGitHubのプロフィールにコントリビュートしたプロジェクトが表示されるので,かなり達成感を感じられます.
最後までご覧いただきありがとうございました.興味のある方はぜひコントリビューターになりましょう!