🧤

フロントエンドエンジニア、はじめてのOSSコントリビュート

2024/08/19に公開

はじめに

本記事は、はじめてOSSにコントリビュートする際の心構えについてまとめたエッセイです。
ここでは、私自身の経験を通じて、どのように初めてのコントリビュートに至ったのかを紹介します。

実際のPRの内容

https://github.com/elk-zone/elk/pull/2907/files
具体的には、nuxt.config.tsPageMeta の型拡張を定義する数行程度の変更を行いました。

どういう流れでコントリビュートまで至ったか

次に、実際に私がどのような流れでコントリビュートに至ったのかを振り返ります。

  1. Vue/Nuxtに強くなりたい:日常の業務でVueやNuxtを使用しており、その理解をさらに深めたいという思いがありました。
  2. OSSのVue/Nuxtアプリケーションのソースコードを読む:実際に稼働しているアプリケーションのソースコードを読むことで、実践的な知識を身につけようと考えました。
  3. elkを選ぶ:著名なコントリビューターが多く、かつNuxtを使用しているelkのプロジェクトが良いと判断しました。
  4. コードを読む:まずは全体のコードベースを把握するためにリーディングを進めました。
  5. 見たことのないシンタックスに出会う:ソースコードの中で、初めて見るシンタックスに遭遇しました。
  6. ドキュメントを調べる:わからない部分があればドキュメントを参照し、理解を深めました。
  7. 反復作業:このプロセスを数日間繰り返し、徐々にプロジェクトの全体像を把握しました。
  8. 問題の発見:その過程で、改善点を発見しました。
  9. 実装方針を検討:問題を解決するための具体的なコード変更の手順を考えました。
  10. PRの作成:最後に実装を行い、プルリクエストを提出しました。
  11. マージ:提出から約一ヶ月後にマージされました。

目的意識を持ってOSSリーディングをする

OSSコントリビュートの際によく推奨されるのが、「good first issue」ラベルのついたIssueに取り組む方法です。これは、多くの初心者にとって適切な入り口かもしれませんが、私は逆に難易度が高いと感じました。
というのも、自分が関与していない問題を解決する場合、コードベースやプロジェクトの全体像を把握するのに時間がかかり、モチベーションを維持するのが難しいと感じたためです。

そこで私は、Issueを起点にするのではなく、自分で問題を見つけて新たにIssueを作成し、その解決策としてPRを提出しました。このアプローチのメリットは以下の通りです。

  • モチベーションの維持:自分で見つけた課題のため、関心が高く、解決に向けた意欲を保ちやすい。
  • 実装が明確:コードベースから修正箇所を自分で探る場合、すでにある程度の実装方針が頭の中に描かれていることが多く、取り組みやすい。

このように、強い目的意識を持ってソースコードをリーディングし、問題を発見、そしてPRを実装していく流れが、自分にとってはより簡単かつ自然なアプローチでした。

OSSの選定

さて、はじめてのOSSコントリビュートに向けて、どのようなOSSを読むのが良いでしょうか。
私の経験から言うと、vuejs/corenuxtなどのライブラリやフレームワークよりも、アプリケーションベースのOSSプロジェクトを選ぶことをお勧めします。

例えば、VueやNuxtで実装されているアプリケーションのelkは、普段の業務に近い形でコーディングできるため、初めてのコントリビュートに最適です。

その他にも、以下のようなアプリケーションベースのプロジェクトがあります。

おわりに

OSSへのコントリビュートは、技術スキルを向上させるだけでなく、オープンソースコミュニティの一員としての達成感を得られる貴重な経験となりました。
また、コントリビュートしなくとも、elkのソースコードには学びが多く、Vueエンジニアであれば必見なのでぜひ!
https://github.com/elk-zone/elk

Vue・Nuxt 情報が集まる広場 / Plaza for Vue・Nuxt.

Discussion