OSS Gateオンラインワークショップに参加してOSSにPRを出した

先日、『OSS Gateオンラインワークショップ』というのに参加してきました!

oss-gate.doorkeeper.jp

勉強になったしとても楽しかったので、その振り返りを書きます🙌

きっかけ

僕が現在プログラミングを勉強しているフィヨルドブートキャンプで、前にこのワークショップとのコラボ企画を開催されていることがあり、OSS Gateさんの名前は認識していました。

そして最近、フィヨブー卒業生のハムさんがこのワークショップに参加されたのを見て改めて興味を持ったのと、次回開催でハムさんがサポーターとして参加されることを知ったので、自分も参加してみようと思いました。

余談1

上記の前回開催ワークショップは6/14(土)でしたが、この日はフィヨルドブートキャンプ内でLT会があった日でした。 そのLTの中でとても感銘を受けたものがあり、その時の勢いで(まさにエイヤーで)即このワークショップに申し込みをした、という経緯があります。

speakerdeck.com

きっかけを作ってくれたham-capさん、そしてhirokiej さんに感謝です🙏

余談2

土曜日の日中開催のため、参加するには家族の協力が不可欠になります。ソフトウェア開発のことは何も知らない家族にOSSのことを説明するにあたり、「ゲームのMODを修正・改善できるよう製作者に要望を出すみたいな感じ」という説明が刺さりました。
「MODを直すのは偉大だ、どんどんやれ」「私のやってるゲームのMOD直してくれない?」などと言われ、ニュアンスが伝わって良かったなと思いましたが実際MODを直すのは別の話なので無理だと伝えました😂

当日の流れ・学んだこと

当日の流れ

当日はざっくり以下のような流れでワークショップが進んでいきました。

  1. OSS開発手順の説明
  2. コントリビュートしたいOSSを探す
  3. OSSを実際に動かしながらフィードバックポイントを探す
  4. OSSへのフィードバック
  5. まとめ・ふりかえり

1日で説明からOSS探しから実際のフィードバックまでやるということで間に合うのか結構心配でしたが、スムーズな進行で説明などもわかりやすく、また実際にフィードバック(PR作成)まで進めることができて良かったです!

学んだこと

ざざーっと箇条書きで書いていきます📝

  • 一次資料(公式ドキュメント・開発リポジトリ)を参照する
    • 誰かのブログ記事などに載っている方法を参照してうまくいってしまうと、コントリビュート(貢献)に繋がらなくなる
    • 本来、ソフトウェアは一次情報だけで無理なく操作できるのが理想
    • 一次情報で不足していたり誤っていることがあればそれを改善することで貢献できる
  • 自分の「困った」を大切にする
    • 「この不明点は、自分が初学者だからわからないだけなのでは…」と思わなくていい
    • 自分が困ったら、同じ部分で困る人が他にもいるはず
    • 「こうなっていたら自分は困らずに済む」という状態になるように改善要望を出す
      • 開発者自身はドキュメントを見ずにできちゃうので、意外と気づかない。初学者のためにはこういう部分こそがコントリビュートチャンス
  • Issueは丁寧に、PRはシンプルに
    • Issueを出す場合は、とにかく丁寧に書く
      • 自分の動作環境、何をしたのか、何をしてないのか、期待した結果がどうで実際の結果がどうだったのか等を、省略せずに書く
    • PRを出す場合はコードが語ってくれる
      • コードの差分によって何をしたいのかは明確なので、descriptionを長々と書く必要は無い(むしろ簡潔なほうが良い)
  • コントリビュートのお作法を確認する
    • OSSではコントリビュートの手順などを指定されていることも多い。CONTRIBUTING.md やその他の部分で、コントリビュートの方法が書かれていないか確認する
  • ライセンスを確認する
    • ライセンスはOSSの利用・改変・再配布等に関するルールを定めたものなので、めちゃくちゃ重要

どこにPRを出したか

僕は現在、フィヨルドブートキャンプの最終課題である『Web サービスを作る』というプラクティス(通称『自作サービス』)に取り組んでおり、Ruby on Railsのアプリケーションを開発中です。

そこでまさにこれから導入しようと思っているbulletというgemにPRを出しました。

bulletは、N+1問題を検出してくれる便利かつ有名なgemです。

The Bullet gem is designed to help you increase your application's performance by reducing the number of queries it makes. It will watch your queries while you develop your application and notify you when you should add eager loading (N+1 queries), when you're using eager loading that isn't necessary and when you should use counter cache.
(bullet)

「有名gemはたくさんの人の目に触れているので、改善ポイントをサッと見つけられないこともある」という話もあったので少し不安でしたが、ドキュメントに沿ってインストール・設定を進める中で改善できそうな箇所を見つけることができました。

そして実際に立てたPRは以下です。ギリギリワークショップの時間内に間に合いました🏃‍♂️

github.com

感想・今後の展望

楽しかったです!

今回のワークショップで実際にPRを出すところまでできて、OSS参加のハードルが少しだけ下がったように思います。
今回はREADMEを少し修正するというシンプルなPRでしたが、引き続きOSSに触れる中で何か気づくことがあればIssueやPRを立てていきたいですし、ゆくゆくはコードの中身を改善するようなコントリビュートもできたら良いなと思いました🚀

追記:マージされました🎉

ブログを公開した日の夜(PR提出の翌日)、無事マージされていることを確認しました😄

github.com

迅速に対応いただいてありがとうございます〜!!!

Insightsの方にもコントリビュートの履歴が残りました