OSSに貢献したいのに、まだ貢献していないあなたへ ( GitHubでのPullRequest作成のススメ )

# この記事で言いたいこと

- 「OSSへの貢献」って敷居のイメージが高すぎる気がする。
  - 実際はもっと「皆でわいわい・がやがやとやる」イメージ。
  - OSSは遊び場。PullRequestはコミュニケーション手段。
- ボーイスカウト精神から始めよう。
  - PullRequest / Issue を出さないのは悪だ (出すのが悪ではない)
- 「自分のニーズ」を軸にしよう。
  - 「自分が分かりづらい」READMEを訂正する。
  - 「自分が欲しい」機能のIssueを立てる。
  - 逆に「自分が不都合を感じていない」「欲望を感じていない」事柄に対してPullRequestを出そうとしても、モチベーションが持てないんじゃないかと思う。

# CASE. ライブラリの中に隠し要素を見つけた時

へぇ！ こんな環境変数使えるんだ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/89618/aaadd67b-94e3-42d1-f194-ea7d23a153ec.png)


きっと隠しコマンド”みたいな”ものだな。
だって README に書いてないし。

(まあ、書いておいても良いと思うんだけど)

## ‥で終わらせるなよ！

[Pull Request](https://github.com/pyenv/pyenv-virtualenv/pull/272) 出そうぜ。
README のテキストを1行追加するだけ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/89618/12ed931c-280a-9c0c-76cc-0fe3d73306b6.png)



## レビューを受ける

表現だけ訂正したら良さそう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/89618/c12d3013-5518-c4c5-1ab9-fa632a50f71e.png)


## マージ・反映される

![image.png](https://qiita-image-store.s3.amazonaws.com/0/89618/abdffae1-db4b-8165-aa72-dfa83227e992.png)

すぐにREADMEにも反映される。
こうして隠し要素は公式要素になったのだった。

# CASE. ニドランの謎

ダミーデータを生成するライブラリに「ポケモンの名前」という種類のものがあり、そこに二匹のニドランが登録されていた。

「ニドランはオスメスの二匹がいる」というポケモン基本知識を持たずに、片方を削ったPullRequestを出したら、コメントがついた。

「男女を表すマークを付けたら良いんじゃない？」

だがこの時はコメントの意味を取り違えて、すぐに自分でPullRequestをCloseしてしまっていた。

(というか、今振り返っていてコメントの意味に気付いた)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/89618/ad1148e0-cf29-74f8-7f88-bc860ed8a8c8.png)

[Faker::Pokemon two Nidorans by YumaInaura · Pull Request #833 · stympy/faker](https://github.com/stympy/faker/pull/833)

# CASE. ドキュメントの謎

ドキュメントを眺めてて、謎を感じる。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/89618/98a371b3-c586-c888-8bc4-8c0fa1b8eb20.png)


何度読んでもつじつまが合わない。
やがて「ドキュメントの不備」なんじゃないかと理解し始める。

まあ、人が作るものだし、仕方ないんだろうな。


## ‥じゃないんだよ！ PR 出そうぜ！

そこで立ち去ってる場合じゃない。なめんなよ。

最近じゃGitHubで管理してるドキュメントも多い。
PR作ってドキュメントを直そう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/89618/62ed4acd-eca7-e849-a610-c7f150f1f51e.png)

## PR出してみた例

たまたまApproveが付いたが、これは結果論なのだ。

PR提出は「意見」であり「クレーム」でもあり「メッセージ」でもある。
「問いかけ」であり「コミニュケーション」なのだ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/89618/3e5fe0e6-0988-254d-baff-11b8595c4e19.png)

# CASE. テスト環境が壊れていた

PullRequestを出す前にテストを走らせたら、何やら大量に黄色い文字が出る。

まさかテスト環境が壊れているとは思わず「まあ、こんなものかなぁ」と最初は思っていたが、なんだかおかしい。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/89618/3df08a68-78f2-5576-fdef-dc1846745da7.png)

いろいろと調べているうちに、環境依存でテストが落ちてしまうことが分かった。(GitHubのCIも落ちていた)

## 以下略

見て見ぬふりせずプルリクチャンス。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/89618/c5c2160c-91c9-0f0d-d826-c670e9cd85af.png)

テストが壊れている、そんなこともある。

必ずしも「正しく動く環境」を誰かが用意してくれてるわけじゃない。
OSSは皆で作るもの。

ところでこの件では、思いも寄らなかった派生部分 ( YAML の文法 ) の勉強にもなった。

# 疑問

## 本当にPullRequestを出して良いんだろうか？

「これは正しい変更か？」
「PullRequestを出すべきなのか？」

あまり迷いすぎると何も出来なくなってしまう。
迷わず行けよ。行けば分かるさ。

「自分は、READMEにあって良いものだと思う」
「READMEにあれば助かる」

この気持ちを大事にしたい。

## 「Issueに書いても良いんじゃない？」

**PullRequest > Issue > 何もしない**

Issueというのは、自分で変更ができない時のものじゃないかと思っている。
(単にその機能のユーザーだったり、そもそもPullRequestが許可されていなかったり、時間がなかったり、技術的にすぐ出来ることじゃなかったり)

自分でPullRequestを出せるなら、わざわざIssueを立てるまでもない。
(もちろんレポジトリの方針にもよると思うが) Issueを立てるかPull Requstを出すかで迷ったら、後者で良いんじゃないだろうか。

## ドキュメントを更新するだけでOSSへの貢献と言えるの？

ではぎゃくにきこうこれがこうけんじゃないといえるのかね？

正直言うと「貢献」でさえもどうでもいいと思っている。

- 自分が分かりづらいものを、自分で分かりやすくする。
- 自分が使いづらいものを、自分で使いやすくする。

これが根源ではないだろうか。

メインターゲットは自分。自分の満足のために尽くすべきだ。
自分が使いやすくなったライブラリは使いやすいだろうし、自分が読みやすくなったREADMEは読みやすい。これは当たり前。

それが他の人の満足にもつながればラッキーだけど、例えそうならなかったからと言って、何が悪いわけでもない。

# あわせて読みたい？

- [小さな小さなプルリクエストを大きな大きなリポジトリに通した - Qiita](https://qiita.com/ryusaka/items/f765bf4c0cb1d5fffb33)
- [Github で Fork して PullRequest を送るのはこんなに簡単 - Qiita](https://qiita.com/YumaInaura/items/acff806290c8953d3185)
- [拝啓 本当は Qiita を書きたいのに、まだ迷っているあなたへ。 - Qiita](https://qiita.com/YumaInaura/items/4d2c602d59c62daa9344)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->