Tama Ruby会議01の発表資料です。
OSS初心者がつまづきながらOSSマナーを学んでいく話 Tama Ruby!"012019.07.06 @fuqda90
View Slide
fuqda(ふくだ)と申します!・Tama.rb Organizor・Ruby/Rails歴 1.5年〜 fuqdaと申します・Tama.rb Organizor!Ruby / Rails"1#$
fuqda(ふくだ)と申します!・Tama.rb Organizor・work@STORES.jp, inc.・Ruby/Rails歴 1.5年〜本日のお話
(OSS初心者&経験の浅いプログラマーが)失敗の中でOSSマナーを学んでいく話
自分は強くないけれど...憧れの先輩方を真似て始めてみたら学びが深くなったのでオススメしたい
こう言う人がいる
そもそもOSSって強い人がやるものじゃないの?自分はそんなに強くないから...
本日の目標
経験の浅い自分の取り組みを話すことで まだ取り組んだことのない方に(自分にはまだ早いと思ってる方に)「自分もやってみようかな」そう思ってもらうこと※あくまで取り組み方の一つとして聞いて頂ければ幸いです
本題
【本日のメニュー】 第1章 OSSに取り組むきっかけ第2章 初コントリビュートしたときの話第3章 やらかし & 気付き
第1章 OSSに取り組むきっかけ第2章 初コントリビュートしたときの話第3章 つまづき & 気付き
業務でRailsに当てたモンキーパッチ※コードの詳細は割愛
この経験の中で気付いた...出来合いのライブラリをそのまま使えば良いわけではないかもしれない
きっと今後も複雑なアプリの要件に立ち向かうたびにこうした機会は訪れるだろう...
決意する!
普段使ってるOSSにパッチを送ったり自力で直せるようになるぞ
モンキーパッチ(社内に閉じた修正)じゃなく、OSSにプルリクエストを送ってみたい!
第1章 OSSに取り組むきっかけ第2章 初コントリビュートしたときの話第3章 やらかし & 気付き
無い知恵を絞る...
パッチを送るために2つのアプローチを取ることに
1. 気になるリポジトリのコードを 片っ端から追いかける 2. 業務で困っていること(不便)を考える
ある日Railsのリポジトリを読んでいたら...
軽微だがパッチを送れそうな箇所を発見
直す対象はわかったが...OSSってどうプルリク送れば良いのか分からない
いろんな先輩エンジニアの方々に質問してみた
自分の中で目から鱗だった回答
Q. プルリクでメンテナーに分からないことを 質問してもいいものなんですか?A. 仕事と同じで長く関わっている人の方が仕様に詳しいのは当たり前!疑問に思ったことは質問しても大丈夫だよ!!
その後も疑問点を相談しつつ拙い英語でプルリクを出した
この時のPRを投げる手順は以前Qiitaに投稿したので気になる方はそちらも参考までに...
OSS初プルリクだったもののRailsにマージしてもらえた
今度は業務にも活きるパッチを送りたい
1. 気になるリポジトリのコードを片っ端から追いかける2. 業務で困っていること(不便)を考える
そういえば、あれ...直したいかも
mongoid (gem) MongoDBをActiveRecord的に操作する ためのODM(Object Documen Mapper)
不便に思うところを直してみた
実際にやったこと
mongoidのデフォルトではrails g model で生成されるクラスにcreated_at と updated_at が付与されないのでデフォルトで付与するようにした ⏰※これをやらない場合、毎回モデル生成のたびにrails g model モデル名 --timestamp で打つことに
例の如くプルリクを送ってみた
この時の私は自分が最低の修正をしてしまったことに気付いていなかった
その後プルリクにコメントが付く...
雑な訳)ActiveRecordはこのオプションをサポートしている。ActiveRecordに合わせるため、このPRはリジェクトされるべきだ!!
最低の修正の中身
オプション(--timestampオプション)そのものを消した(最低)(このオプションそもそもいらなくない?と思ったので...)
その後、懸命な消火活動は続く
しかし、クローズしようぜ的なコメントがつき万事休す
その直後、この件についてTwitterで呟いた際に貴重なアドバイスが✨
このとき、 大切なことに気付く...
OSSにパッチを送る行為(修正内容&PR内での振る舞い)にもマナーがあるということを
今回の場合だとmongoidのオプションそのものを消すのではなくそれを生かした上で期待する修正をしてあげるのがマナーだとわかった
@kamipoさんのアドバイスに則って修正し直してみた
mongoidが目指す方向性に寄せてActiveRecordのやり方に準拠して直すようにした
色々やらかしましたが...なんとかmergeされることに✨
このプルリクエストはその後に修正内容に関してマナーを意識する大切な気付きになった
まとめ
年数は関係ない!取り組んだ方の経験に応じた学びがきっとある!興味ある方は是非 → 当該リポジトリの思想に触れる事による学び → 自分が使っているOSSの中身を知る学び
OSSは公共物なので使わせてもらえることを当たり前にしないメンテナーに感謝しつつ(マナーある)PRが送れると最高かと✨
それでも一人で やるのは不安... そんな方は!
コミュニティにおいでよ!
Tama.rbでもOSSコードリーディング部という活動をしており、コミュニティでOSSのコードに触れる機会を不定期で設けています (あわよくばパッチも送ったり!)
まだOSSに取り組んだことのない方も!是非コミュニティと一緒にやっていきましょう!!
ご静聴ありがとうございました!