初めてOSSコントリビュートしました!
はじめに
私はエンジニア歴3年目で、最近モバイル開発を始めて3ヶ月になります。
この度、初めてOSSにコントリビュートしました!🔥といっても今回はたった2行程度の修正だけです。
OSSへのコントリビュートはハードルが高いと思い込んでいましたが、実際に挑戦してみると意外と取り組めるかも?と思えたのでこの記事では、そのときの体験を簡単にまとめてみました!
主に手順について記載しています。
少しでも参考になったら嬉しいです!
コントリビュートに至った背景
現在、React Nativeを使用してARアプリの開発を進めています。その中で、viroというライブラリを利用しているのですが、このライブラリはメンテナンスがあまり行われておらず、不具合がいくつか見つかりました。
しかし、私のアプリはこのライブラリに依存しているため、不具合を放置するわけにはいかず、なんとかして解決する必要がありました。
私の場合、バグに遭遇した際、関連しそうなIssueを調べたところ、すでに解決しているPRを見つけました。そこで、同様の修正を横展開すれば問題が解消するのではないかと試してみたところ、なんと本当にバグが解消しました、、、!
それをきっかけにコントリビュートに挑戦してみようと思いました。
コントリビュートする手順
以下に自分の体験をもとにコントリビュートする手順を記載します。
1.コントリビュートするOSSライブラリを決める
まず、コントリビュートするOSSライブラリを選びます。
バグや改善点を見つけるほか、リファクタリングやドキュメント修正のような軽微な修正でもOKです。
ライブラリを選んだら、修正内容を具体的に決めます。
2.ライブラリのリポジトリを「Fork」する
GitHubで対象のリポジトリを自分のアカウントにForkします。
「Fork」を押下
「Create Fork」を押下
Forkが成功すると自分のリポジトリに追加されます。
3.Forkしたリポジトリをクローンする
Forkしたリポジトリをローカル環境にクローンします。
git clone <リポジトリURL>
4.ブランチを作成して修正する
main
ブランチから作業ブランチを作成し、コードを修正します。
5.コントリビュートルールを確認する
対象リポジトリのコントリビュートルールを確認します。
READMEに記載されていることが多いです。
私の場合は特に記載がなかったため、他の人のPR内容を参考にしました。
6.修正をリモートにpushする
修正内容をコミットし、リモートにpushします。
ここで気をつけたことは最後に記載しました。
7.PRを作成する
Forkした自分のリポジトリから、Fork元の対象リポジトリに対してPRを作成します。
PRの説明文は英語で記載するのが一般的です。
日本語で内容をまとめてから、ChatGPTなどで翻訳するのも良い方法です。
また、私の場合は参考にしたPRや、関連のあるissueのリンクを貼りました。
8.マージされてリリースされるのを待つ
PRがマージされ、ライブラリに反映されるのを待ちます。PRに対してコメントが付いた場合は対応しまします。
マージやリリースまでの時間はリポジトリの活動頻度によって異なります。
私がコントリビュートしたリポジトリは、半年ほど更新が止まっている状態だったため、時間がかかりそうでした。そのため、一応Discordのコミュニティにも周知しておきました笑
(まだマージはされていません、、、^^;)
気をつけたこと
以下の点について気をつけました。
- 修正した箇所以外コミットしない(package.lock.jsonに差分が出ても含めないようにしました。)
- 自動フォーマッターによって大量差分が出ないようにする
自動フォーマッターで大量差分が出る対策
Prettierなどの自動フォーマッターが適用されると大量の差分が発生してしまうことがあります。
そこで特定のファイルに対して一時的にPrettierを無効化しました。
Prettierの設定ファイルである.prettierrc
に、以下の設定を追加します。
files
に該当ファイルを記載します。
{
"overrides": [
{
"files": ["./dist/components/Viro3DObject.js"],
"options": {
"requirePragma": true
}
}
]
}
設定を保存した後、該当ファイルを修正し、保存します。
修正が完了したら、.prettierrc
に加えた設定を元に戻します。
エディタ側でPrettierを一時無効化することもできますが、今回は.prettierrc
を修正する方法を取りました。
まとめ
今回は、初めてOSSにコントリビュートした手順とその感想をまとめました。
英語が読めないから無理だと思っていましたが、翻訳アプリもあるし、AIもあるのでなんとかなりました笑
最初はハードルが高いものだと感じていましたが、小さな修正からでも始められることがわかりました。
ぜひ、気軽に挑戦してみてください!
また、今回私がコントリビュートしたライブラリ「viro」ではモバイルアプリにARを組み込むことができます。
以前の記事では、viroを使用したARの技術検証についても書いています!
有識者の皆様、ぜひviroのサポートをよろしくお願いします☺️
Discussion