OSS
RxSwift

RxSwiftにコントリビュートするまでの軌跡


はじめに

この記事は、CyberAgent 19新卒 エンジニア Advent Calendar 2018の13日目のものになります。

また、岩手県立大学 Advent Calendar 2018の13日目のものでもあります。w


コントリビュートしようと思った経緯

もともと僕は機会があればOSSにコントリビュートしたいなと考えていましたが、なかなか何をしたら良いのかわからず動き出せずにいました。

僕は自分のアプリでも業務でもRxSwiftを使う機会が多く、たまたま自分がよく使うDriverで、使いたい関数が実装されておらず、やってみようと思いました。

今回は僕がRxSwiftのDriverにtakeを実装するまでの手順を書いてみたいと思います。


最初にまとめを..

大きめのOSSプロジェクトには、大抵の場合Contributor向けのガイドが用意されているので、それを読んだ上で従い、コミットしましょう。


手順


1. Contributor向けのガイドを探す

大抵のプロジェクトには入っているであろう、READMEをまずは読みます。

その中に Contribute という部分がないかを探します。

RxSwiftのREADMEはとてもしっかり書かれていて、

Help out Check out contribution guide

という部分があるので、クリックしてCONTRIBUTING.mdに飛びます。


2. CONTRIBUTING.mdを読む

RxSwiftにコミットする内容は4つに分類されています。


  1. Issue fixes

  2. Performance improvements

  3. Documentation improvements

  4. New operators (read carefully!)

今回の場合は新しい関数の追加だったので、4. のNew operators (read carefully!)に当たります。


read carefully!


👀


General Rule

ここにはすべてのContributor向けのメッセージが載っています。

要約すると、


  1. PRのtargetはdevelopにする

  2. PRを出す前に./scripts/all-tests.shを実行し、passすることを確認する

  3. CHANGELOG.mdを更新する

という感じです。


New operators

今回は新しい関数の追加なので、ここを読みます。


If you're thinking about adding new operators to RxSwift, please make sure you discuss them via an issue first.


内容を要約すると、

1. 必要としている機能はRxSwift Communityにあるかも知れないから先に見てね

2. ReactiveXにあるオペレータはRxSwiftExtにあるかも知れないから先に見てね

3. いずれにしてもまずはIssueで話そう!



  1. いずれにしてもまずはIssueで話そう!


とのことだったので、とりあえずIssueを立ててみました。

Add operator take to SharedSequenceConvertibleType #1761


3. Issueでの議論

Add operator take to SharedSequenceConvertibleType · Issue #1761 · ReactiveX/RxSwift · GitHub

にて、SharedSequenceConvertibleTypeにはdelay, startWith, skipなどが実装されているのでtakeもあってもよいのではないかという話をしました。


Can't make a decision on this, but that's where my opinion stands more or less. Would have to defer to@kzaherfor final word.


@kzaherの言葉を待とうとのことだったのですが、なかなか返信が来なかったので、先にPRを出してみました。多分優先度の高い議論ではなかったのでしょう。

Googleの人だし、絶対に忙しい。w


4. PullRequestを出そう

まず最初に、RxSwiftのプロジェクトがでかすぎてどのファイルをいじれば良いのかわからず、困りました。ですが、既に追加されているオペレータがあるということを手掛かりにコードジャンプで編集すべき場所を見つけられました。

今回提出したPRはこれになります。

Add operator take in SharedSequence by kzumu · Pull Request #1786 · ReactiveX/RxSwift · GitHub

ですが、まだマージされていないんですよね。w

早く見てくれますように。


最後に

こんな流れでPRを出すところまでできました。

余談ですが、最近ではBoostNoteのコミュニティに参加して、iOS App Renewalのチャンスを伺っています。

年明けから始動するらしいので楽しみです。

こういう活動を行っているおかげか最近少しずつ英語力がついてきたような気がして楽しいです。

海外で仕事とかしてみたいなぁ。

最後までお読み頂きありがとうございました!