エンジニア歴2年半、やっとOSSに貢献できました。

# 初コントリビュート！

OSSへのコントリビュート（貢献）を初めて出来ました！やったことはドキュメントの修正ですが、自分の中で大きな一歩なので記事にしてみます。

これまでOSSに何かしらコントリビュートしたいな、と思いつつ全然出来なかったのでちょっと自信を持てる良いきっかけになりました。
私以外にも「やりたいけど出来ないよ〜」「どうしたら良いの？」という方も多いと思うので、どうやったか・何を考えたか、という観点で記事を書きました。

## はじめに結論

以下のような手順で進みました。

- ドキュメントに誤りがあることを発見
- 修正してローカル環境で確認
- 他にも同じ状態の他言語も修正
- プルリク作成
- マージしてもらう！

プルリクを作成してから約20日でマージ頂きました。正直忘れたころにマージされて「あ、マージされたんだ！」となりました。

作成してから数日は「コメントで間違い指摘されてないかな・・・」など気になるので結構プルリクを見ていたのですが、終わってみるとそんなことは無く無事に終了しました。

では以下に順を追って、もう少し詳細を書きます。

## 何をしたの？

FastAPIというPythonのフレームワークのドキュメントの誤りを修正しました。
以下がプルリクエストです。

https://github.com/tiangolo/fastapi/pull/5214

私が修正したのは以下のページです。　

https://fastapi.tiangolo.com/ja/tutorial/

こちらの手順でFastAPIをインストールする、という項目があります。

私は過去にFastAPIをインストール済※でしたが、更新しておくか、と実施したところ次のエラーが・・・

当時のコマンド
`pip install fastapi[all]`

発生したエラー
`zsh: no matches found: fastapi[all]`

:::note info 
※過去にインストールした際はbashで実施していたのですが、zshに切り替えていたので今回エラーに遭遇してしまったようです。bashだとクォーテーションがなくても実施可能でした。
:::

あれ、コマンドをその通りコピペしたのになぜ？と思いつつ、ググってみると次のStack Overflowにヒットしました。

https://stackoverflow.com/questions/72127673/zsh-no-matches-found-fastapiall

あぁ、zshだとこのままじゃダメなのか、ということでこの時はクォーテーションを付けました。

・・・がふと思いました。
「**いやこれドキュメントが間違っているから直せば良いんじゃない？**」と。
正確には間違っているというかはzshで実施できない、ですがStack Overflowにも投稿している人がいるので同じように困る人は世の中に居たんだろうな、居るだろうな、という気持ちでやっていこうとしました。

:::note info
ドキュメント通りにやったのに、何か分からない点があってググって解決できた・あるいはググる必要があった場合がポイントだと思っています。
:::

## 具体的な貢献方法について

とはいえ今まで貢献したことが無かったので。

まずはFastAPIの開発-貢献ページをみました。

:::note info
OSSのWebサイトには「こうやってね！」と貢献手順が記されたページが存在していると耳にしたので。
プロジェクトによってはプルリク・Issueの書き方が決められていたりするようなので、作り始める前に一度目を通すようにしましょう。
:::

https://fastapi.tiangolo.com/ja/contributing/

慣れない手つきでFastAPIをforkして、ブランチを作って修正し、ドキュメントもローカル環境でWebサイトの状態で再現できるようなので改修できたことを確認しました。

が、さらに思いました。「これ、他にも同じような場所ないだろうか？」

普段の開発時でも、影響範囲を調べるのによくGrepしているので気になったのです。

そして今回もその癖でGrepしてみたところ同じような箇所が他にも出る出る・・・！
反対に、ダブルクォーテーションが既に付与されているファイルもありました！
「なんでこっちは修正されているの？」と思い、PyCharmを利用してコミット履歴を追ってみて分かったのですが、zshで実行できないケースは他の人も当然直面していました。
そのため英語のドキュメントは修正されていた、ただし日本語など他言語まで修正されていなかった、という状態だったようです。

なのでDoc修正なので影響度も大きくないだろう、どうせなら**他言語も一緒に直した方が世界の困る人も減るだろう**、ということで一緒に修正しました。

なお、過去の英語を改修したプルリクをみる限り、他にも同じようにクォーテーションを付与していないとzshでエラーになるコマンドが存在していたので、元々発見したコマンド以外に加えて一緒に修正しました。

GitHubの使い方も引き続き怪しいながらプルリクエストを作成し、
OSSへのコントリビュートも今までしたことがなかったのでDeeplでしっかりと（？）翻訳しつつ、間違っていたらごめんねというメッセージを添えて作成しました。

### 実際に送ったメッセージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/fa73f416-838b-523e-abbc-8a6d88500d53.png)

カタコト感が否めないですが、こんな英文でもなんとかなりました（比較的easyなものだったから、という前提はありますが）。


あとは関係していそう、ということで他言語で対応をしてもらった時のプルリクも添えておきました。
最悪「こいつの英語よくわからんけどこのプルリクと関係してることを言ってんのかな？」と思ってもらえるように。

タイトル一つとってもどうすれば良いか悩んだのですが、英語のドキュメントを修正したときに作成されたプルリクとほとんど同じにして作成完了！

それから20日後、忘れたことにFastAPIの作者、tiangolo氏から連絡をもらってマージされた、という話です。

## 改めての学び

指摘された訳ではないですが、当初作成したタイトルが修正されていました。
当初は
quote `pip install` command for zsh compatibility for japanese etc
としていましたが、
quote `pip install` command for zsh compatibility in multiple languages
 
と修正されていました。
確かに、日本語など、ではなく複数の言語だったなと思ったので次からは気をつけようと思いました。

## おわりに

どうだったでしょうか？
OSSの機能そのものに対してのプルリクではありませんでしたが、OSS活動の第一歩を踏み出せたかなと思っています。

私のような拙い英語でも（今回は比較的軽微な内容だったからだと思いますが）何とか出来ます。**ドキュメント修正ひとつでも、世の中に困る人はたくさんいると思うのでもし気がついた方はぜひプルリク出してみましょう！**

少しでもやっていきたい方の背中を押せたら幸いです。