こんにちは。プロダクト開発部の福山です。Sansanでは主に法人向け名刺管理サービス「Sansan」の開発をしていますが、プライベートでは月に1回程度(*1)OSSにPull RequestをあげているゆるいOSSコントリビューターです。
「なぜOSSにコントリビュートするのか?」
という問いには、
「自分のコントリビュートによって世界の誰かが、よりそのOSSを好きになってくれる可能性があるから」
と答えます。
大げさに言ってしまいましたが、世界の前線に立っているエンジニアから「Awesome!」って言ってもらえるのが単純にうれしいからというのが本音です。
ということで本記事ではOSSへのコントリビューションについて書きたいと思います。
何年か前に「How to Contribute to Open Source」という記事を偶然読んで、とても良いことがたくさん書いてあったのでぜひいろんな人に読んでほしいと思っていたのですが、今年に入って「オープンソースにコントリビュートする方法」として日本語で公開されていることに気づきました。
以下、7つのセクションで構成されています。
- オープンソースにコントリビュートする理由は?(Why contribute to open source?)
- コントリビュートするということが意味するもの(What it means to contribute)
- 新しいプロジェクトに順応しよう(Orienting yourself to a new project)
- コントリビュートするプロジェクトを見つけよう(Finding a project to contribute to)
- コントリビュートする方法(How to submit a contribution)
- コントリビュートを提出した後に起こること(What happens after you submit a contribution)
- やりました!(You did it!)
時間がある方はぜひ上の記事を一読していただきたいのですが、本記事では私なりの視点や経験を交えてOSSコントリビュートのポイントを以下の3つに絞って紹介したいと思います。
- コーディングがすべてではない
- アクティブなプロジェクトを見極める
- 英語を恐れずにコミュニケーションする
それでは一つずつ具体的に見ていきましょう。
コーディングがすべてではない
OSSコントリビュートと言うとどうしても「コーディングでコントリビュートする」と捉えてしまいがちなのですが、それだけではありません。むしろ大事なのはコーディング以外の部分で、これは「かならずしもコードを書く必要はありません」でも述べられています。
中でも私がおすすめしたいのはチュートリアルなど入門者向けのドキュメントです。何かしらOSSを使い始めるときに、まずはREADMEを読んだり、関連する記事をググったりすると思います。このときになんとなく進めていくのではなく、どのように進めていったかという点と、どうやったらもっとスムーズに進められたかという観点を雑で良いのでメモしておきます。そうすると、落ち着いたタイミングでこのメモを元に以下の方法でコントリビュートがしやすくなります。
1. 自分のブログで「やってみた」系のエントリを書く
2. 軽微であれば既存のドキュメントを編集してPull Requestを作る
3. Issueをたてる、あるいはSlackコミュニティなどがあれば改善を提案してみる
個人的には1をやりつつ2または3も行うのがおすすめです。使い始めのときに感じたことはとても貴重です。多くの場合すぐに忘れ去ってしまうので、メモで残しておいてフィードバックをする価値は大きいです。今後新しくOSSを使う人のオンボードを改善する可能性が高いので、Pull Requestや提案をした場合にもリアクションされやすい印象があります。1だけでもOSSへの立派なコントリビュートだと私は思っていますが、どうしてもブログのエントリも時間の流れとともに古くなってしまうので、2または3でぜひ本家のドキュメントも改善して、未来の貢献にも繋げていけるようにするとより良いと思います。
以下は、私が以前Open Policy AgentというOSSのドキュメントにコントリビュートしたPull Requestになります。
修正内容は微々たるものなのですが、JSON Pointerというものに不慣れな入門者はきっと自分だけじゃないと思って例を追加したものになります。LGTMがついてマージされるとうれしいですよ!
アクティブなプロジェクトを見極める
やったことが水の泡になってしまわないためにも、どのようなプロジェクトにコントリビュートすると良いか、という観点も大事です。「 コントリビュートする前のチェックリスト 」という素晴らしいチェックリストがあるのでサッと目を通してみてください。
特に以下の点については私も新しいプロジェクトにコントリビュートするときに注意している点です。
- 最新のコミットはいつか?
- IssueやPull Requestが最近のものか?
- IssueやPull Requestにリアクション(会話など)があるか?
せっかくコントリビュートをしても無反応で終わってしまうことほど悲しいものはないので、アクティブなプロジェクトを見極められるように注意しておきましょう。
英語を恐れずにコミュニケーションする
海外の人はみんな英語ができるという固定観念を捨てることもとても大事です。IssueやPull Requestであったり、Slackでの発言に完璧な英語で話さなくてはならないというプレッシャーを感じる必要はありません。実際にOSSのコミュニティを覗いてみるとわかりますが、文法が合っていない発言はとても多いです。文法が綺麗かどうかではなく、伝えようとする姿勢が大事ですし、健全なコミュニティであれば、たとえ伝わりにくい英語になっていたとしても意図を汲み取ろうとしてくれます。
英語はできないと思い込んでしまっている方がとても多い印象があるので、そこはいったん騙されたと思ってSlackなどで「Hi!」から始めてみてはどうでしょうか?IssueやPull Request、あるいはSlackは非同期コミュニケーションです。いきなりFace to Faceで英会話をしないといけないわけではなく、Google翻訳の力も大いに活用しながら自分のペースでコミュニケーションが可能です。自分が思っている以上にコミュニケーションが可能だということに気づく良いきっかけにもなると思います。
「効果的にコミュニケーションする」というセクションで、おすすめのコミュニケーション方法の例が紹介されているので参考にすると良いと思います。最終的には英語版のフレーズを使うことになるので、英語版も合わせてチェックしておくと良いです。(若干わかりづらいですが「😇」がGoodで「😢」がBadな例です)
「OSSにコントリビュート」しながら「英会話のスキルアップ」もできるので、一石二鳥ではないでしょうか?
まとめ
駆け足でサッと紹介しましたが、「OSSにコントリビュートしてみたいかも?」と思ってもらえたら幸いです。
コントリビュートのハードルは多くの方が思っている以上に低いので、ぜひともファーストコントリビューションにチャレンジしてみてください。
「オープンソースにコントリビュートする方法」でも引用されていますが、ジョン・F・ケネディの以下の名言が印象的です。
Ask not what your country can do for you - Ask what you can do for your country
「OSSからどんな恩恵を受けられるかだけを考えるのではなく、OSSにどう貢献できるかを考える」マインドセットがとても大事だと思います。日々お世話になっているであろうOSSへの視点がきっと変わってくると思います。
今日からOSSへのコントリビュートを始めてみませんか?
*1:ここ半年はなかなか活動できていません。2019年は達成しました。