OSS Gateに参加したらOSSにコントリビュートできた

OSSにいつかコントリビュートしたいという想いから、OSS Gate東京ワークショップ2019-09-14に参加しました。

OSS Gateは、OSS開発未経験者の方とOSSの門をくぐった先輩メンターがペアになってOSS開発を体験するイベントです。メンターのサポーターがいるなど育てるが意識されたコミュニティであると感じました。

タイムスケジュールは、以下の通りです。

  • アイスブレイク
  • OSS開発手順を説明
  • 対象OSSを動かす
  • ミニふりかえり
  • プロジェクトにフィードバックする
  • ふりかえり
  • まとめ
  • アンケート記入
  • ワークショップのふりかえり

当日の資料は、OSS Gate's slidesにあります。

アイスブレイク

このタイミングで、メンターの方が決まりました。メンターは、@coe401_さんでした。Railsのソースコードを読むのが楽しいという話をされて興味が湧きました。

OSS開発手順を説明

OSSとは何かを教えてもらいました。Open Source Initiativeに記載されているものがOSSということを知りました。Apache License 2.0とMIT licenseの他にも多くのライセンスがあり驚きました。

また、Pull Request(以降、PRと呼ぶ)のみがOSS活動と思っていたのですがIssueを上げることも活動に含まれると知り、少し気が楽になりました。

OSSを選ぶ

対象OSSを決めるところから行いました。以前、簡易HTTPサーバーを作った際に、HTTPレスポンスにおけるContent-Lengthの厳密性がChromeとFirefoxでは異なるため挙動が違うという問題に遭遇しました。そこで、FirefoxとChromeの実装をのぞいてみようと思ったのですがChromeがOSSでないということで断念しました。

そこで、acts_as_tenantまたはgraphql-rubyにしようと思いました。エンジニアとして働き始めて初めて携わったことがGraphQLでAPIを構築することであったこともあり、思入れがあるgraphql-rubyを選定しました。

OSSを動かす

開発の流れは、GitHubリポジトリに記載されています。

Getting Startedを動かす中で、詰まったポイントのフィードバックがOSS貢献につながるということなので、手順通り動かしました。

すると、GraphQL generatorsOptions項目に--no-graphiql will exclude graphiql-rails from the setupと記述されているが、下記のようにrails g graphql:install --helpで見つからないという問題がありました。

$ rails g graphql:install --help
Running via Spring preloader in process 62782
Usage:
  rails generate graphql:install [options]

Options:
  ...
Skip .keep files for source control
  [--skip-graphiql], [--no-skip-graphiql]                      # Skip graphiql-rails installation
  ...

また、rails g graphql:objectを実行するとテンプレートエンジンに基づいたファイルが生成されるのですが、生成されるファイルとドキュメントに齟齬があることがわかりました。

イベント内で達成できそうなものは、後者だったのでドキュメントを改善することにしました。

原因を調査

改善ポイントが明白になったので、GitHub上で齟齬が起きている原因を調査することにしました。

GitHubには、ショートカットが用意されており?を押すとよく利用するショートカット一覧が表示されます。 

sg ctを利用して原因を調査すると、Nest under common namespace for better autoloading availabilityの修正でドキュメントと内容がズレたことがわかりました。

これは、Rubyの定数探索問題を解消するPRです。

PRを投げる

なぜ、ドキュメントが実際に生成されらコードとズレが生じているのか該当PRまで把握できたのでPRを投げることにしました。

メンターが参考記事を紹介してくれたので、手順通りに進めました。

初めから英語の文章を考えていたのですが、日本語で整理した後に英語にした方がよいとアドバイスをもらったので、日本語で整理しました。

内容がまとまったので英語の文章に直し、PRを投げました。

github.com

直後に、Rubyの定数探索問題を解消したbary822さんからメッセージが届き、驚きと嬉しさが込み上げきました。

mergeされるまで

graph-rubyの開発者であるrmosolgoさんは、土日にコードを書かないようなのでワクワクしながら月曜日になるを待ちました。

しかし、月曜日になってもmergeされることはなくGitHubからメールが届くのを何度も確認しながら今か今かとその時を待ち望んでいました。

2019/09/17。PRを投げてから、3日後。朝起きるとメールが届いていました!!!

mergeされた時のメール

mergeされた!?mergeされました!!!!!

初めてのOSSコントリビュートなので会社で自慢してしまう程、はしゃぎました。

これからもgraphql-rubyにコントリビュートをしようと強く思いました。

まとめ

  • OSSにコントリビュートする手順を学んだ
  • IssueもOSS活動
  • OSS Gateに参加しよう

oss-gate.doorkeeper.jp