OSSへの貢献はエンジニアとして得るものしかない。　〜OSS「Lexical」コアチームの方へのインタビューと自分の体験〜

オープンソースソフトウェア（OSS）は、現代のソフトウェア開発において不可欠な存在だ。
にも関わらず、多くのエンジニアがOSSへの貢献に距離を感じているのではないだろうか。
実は、私も以前はその一人だった。
しかし、OSSへの一回の貢献を経験して、見える世界が全く変わった。
この記事を通して、皆さんにもOSSの魅力をお伝えしたい。

本記事には、Meta製のOSS「Lexical」のコアチームのAcyさんへの短いインタビューと、私自身の体験談を書いた。
日本の皆さんに向けたAcyさんの言葉は特に印象深いので、ぜひご一読いただきたい。

# OSS開発者への質問：日本人のコミットが嬉しいか？
OSSを開発する方々が、OSS貢献についてどのように感じるのか知りたかったので、私がコントリビュートしたOSS「Lexical」のコアチームの一員である[Acy Watosonさん](https://github.com/acywatson)に伺ってみた。

__私__:
lexical.jsのバグを見つけたときに、日本人が積極的に報告や貢献をしてくれたら嬉しいですか？
これは主観だが、私の周りには優秀なプログラマーはたくさんいるが、OSSコミュニティは自分とは関係ない、必要ないと思っている人もいるように感じます。
そこで、世界的に有名なOSSを作っているAcyさんのような方に「コントリビューションしてくれると嬉しい」と言っていただけるだけで励みになるだろうと思い、ぜひ声をいただけたら嬉しいです。

__Acyさん__:
どのような方であっても、lexicalに貢献してくれる人は嬉しいです。人々が時間を割いてくれることは有り難いことであり、一人一人と関わり、感謝する時間がもっとあればと思います。
ところで、私はLexicalを作ったという手柄を立てることはできません。私は、trueadm、Gerard、Maksim、そして他の人たちが創始したものを謙虚に受け継いでいるに過ぎません。でも、皆さんの貢献（原文：努力）をサポートできるのは嬉しいことです🙂。

<details><summary>原文</summary>

Me:
Would you be happy if Japanese people actively reported and contributed when they found a bug in lexical.js?
This is subjective, but I think there are many talented programmers in Japan, but I think many people think that the OSS community has nothing to do with them and that they are not needed.
If someone like Acy, who creates world-famous OSS, says that they accept contribute, that alone is encouraging, so I'd love to hear from you.
Of course, I write on the blog that when contributing, please read the guidelines and ensure quality.

Acy:
I’m happy when anyone of any origin contributes to Lexical. It’s humbling that people take the time to do so and I just wish I had more time to engage and thank each one individually.

By the way, I can’t take the credit for creating Lexical. I’m really just a humble steward of what @trueadm, @Gerard, @Maksim and others originated. But I’m happy to support your efforts all the same 🙂
</details>


# OSSに貢献して自分が得られたこと
次に私がMetaのOSSに貢献して得たことを３つ紹介する。「Metaの」という枕詞を付けたのは、きちんと整備されているOSSでないと得られない部分もあるだろうと思い、念の為つけた。

ちなみに、今回のコミットはこちらである。

https://github.com/facebook/lexical/pull/5363

### その１：自分の技術力が世界中に役立つという実感が得られた。
書いたコードは１行に過ぎないのだが、その１行でとあるlexicalのバグを解消している。
自分自身でその修正の恩恵を受けているし、自分以外のエンジニアもこの１行の恩恵を受けるだろう。
また、これからlexicalを用いて幾つものソフトウェアが生まれ、それらを使うであろう何億人という人たちにも、この１行は使われる。
そう考えると、ほんの少しだが、世界の人々に対して貢献できたと思う。
ソフトウェアは使われてなんぼだ。使われれば使われるだけエンジニア冥利に尽きる。
自分の技術を用いて、快適な世界への前進にほんの少しでも役立てたと思うと、自分が世界に役立てているという喜びを感じる。
日常の仕事でも感じる感覚ではあるのだが、OSSは人数のスケールが尋常じゃない。
自己効力感が高まり、自信にもつながる。

### その２：Meta式のコミット体験ができた
実際にコミットをし、レビュアーの方と議論できたのも素晴らしい体験だった。
コミット前に膨大なテストケースを通したり、コミット後に自動テストの膨大なCICDパイプラインが走ったりするのにも感動した。
よく考えてみれば、複雑なソフトウェアを設計し、OSSという形で世界中のコントリビューターの力を借りて、品質を維持しつつ世界で使われるソフトウェアに成長させるのは、並大抵のことではない。
そのためには、網羅的なテストと効率的なCICDパイプラインの整備、コードレビューの品質が重要であろう。
OSSをスケールするために必要な、その当たり前に気づけたのは大きい。
私自身、テストに対する意識が大きく変わったし、本質をついたコードレビューにも視点の高さを学んだ。
学んだことをチームでも活かしたい。

### その３：GitHubのマイページに勲章が入った
これは邪だが、MetaのOSSにコントリビュートしたことが自分のGitHubのマイページに表示されるようになったのも嬉しかった。
マイページの左側にPullSharkという称号がついて、それをクリックするとfacebookという文字が躍り出る。
もし帰省先の札幌の雪道でコケても「我、GAFAMコントリビューターやぞ！ドヤァ（一行修正してるだけ）」でメンタルを保てる。
なんと素晴らしいことか。
ここまで書いて、冒頭のインタビューに答えていただいたAcyさんの謙虚さと真逆なことに気がついた。見習わなければならない。
![Screenshot 2023-12-22 at 10.09.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984288/31321e64-410a-422f-f36f-5b17c05fd7db.png)

# OSSに貢献する方法
OSSに貢献する方法は、検索すれば出てくるのでそちらに任せる。
ただ、各OSSごとにルールが決まっていることがあるため、そのルールに従った上で貢献することになる。
例えば、lexicalの場合は、テストを通してからコミットする、と言ったガイドがある。
なので、こちらを読んだ上で貢献してほしい。

https://github.com/facebook/lexical/blob/main/CONTRIBUTING.md

# まとめ
- OSSに貢献できたら、普段使っているOSSの開発者の助けになれる。
- どんな小さいバグであってもOSSに貢献すれば、世界のエンジニアやエンドユーザーにgiveできる。自分はそれを実感できて本当に嬉しかった。
- 貢献を通してそのOSSにおける開発手法といった仕事のやり方を学べる。
- おまけ的にGitHubに勲章がついて嬉しい。
- コントリビューションのガイドがあれば、まず目を通すこと。

皆さんもLet's OSSライフ！