Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OSS初心者がつまづきながらOSSマナーを学んでいく話

fuqda
July 05, 2019

 OSS初心者がつまづきながらOSSマナーを学んでいく話

Tama Ruby会議01の発表資料です。

fuqda

July 05, 2019
Tweet

More Decks by fuqda

Other Decks in Programming

Transcript

  1. OSS初心者がつまづきながら
    OSSマナーを学んでいく話
     
     
     
    Tama Ruby!"01
    2019.07.06 @fuqda90

    View Slide

  2.  fuqda(ふくだ)と申します!
    ・Tama.rb Organizor
    ・Ruby/Rails歴 1.5年〜
     fuqdaと申します
    ・Tama.rb Organizor
    !Ruby / Rails"1#$

    View Slide

  3.  fuqda(ふくだ)と申します!
    ・Tama.rb Organizor
    ・work@STORES.jp, inc.
    ・Ruby/Rails歴 1.5年〜
    本日のお話

    View Slide

  4. (OSS初心者&経験の浅いプログラマーが)
    失敗の中で
    OSSマナーを
    学んでいく話

    View Slide

  5. 自分は強くないけれど...
    憧れの先輩方を
    真似て始めてみたら
    学びが深くなったので
    オススメしたい

    View Slide

  6. こう言う人がいる

    View Slide


  7. そもそもOSSって
    強い人がやるものじゃないの?
    自分はそんなに強くないから...

    View Slide

  8. 本日の目標

    View Slide

  9. 経験の浅い自分の取り組みを話すことで
     まだ取り組んだことのない方に
    (自分にはまだ早いと思ってる方に)
    「自分もやってみようかな」
    そう思ってもらうこと
    ※あくまで取り組み方の一つとして聞いて頂ければ幸いです

    View Slide

  10. 本題

    View Slide

  11. 【本日のメニュー】
    第1章 OSSに取り組むきっかけ
    第2章 初コントリビュートしたときの話
    第3章 やらかし & 気付き

    View Slide

  12. 第1章 OSSに取り組むきっかけ
    第2章 初コントリビュートしたときの話
    第3章 つまづき & 気付き

    View Slide

  13. 業務でRailsに当てた
    モンキーパッチ
    ※コードの詳細は割愛

    View Slide

  14. この経験の中で気付いた...
    出来合いのライブラリを
    そのまま使えば良いわけでは
    ないかもしれない

    View Slide

  15. きっと今後も
    複雑なアプリの要件に
    立ち向かうたびに
    こうした機会は訪れるだろう...

    View Slide

  16. 決意する!

    View Slide

  17. 普段使ってる
    OSSにパッチを送ったり
    自力で直せるようになるぞ

    View Slide

  18. モンキーパッチ(社内に閉じた修正)
    じゃなく、OSSに
    プルリクエストを送ってみたい!

    View Slide

  19. 第1章 OSSに取り組むきっかけ
    第2章 初コントリビュートしたときの話
    第3章 やらかし & 気付き

    View Slide

  20. 無い知恵を絞る...

    View Slide

  21. パッチを送るために
    2つのアプローチを取ることに

    View Slide

  22.  1. 気になるリポジトリのコードを
       片っ端から追いかける
     2. 業務で困っていること(不便)を考える

    View Slide

  23.  1. 気になるリポジトリのコードを
       片っ端から追いかける
     2. 業務で困っていること(不便)を考える

    View Slide

  24. ある日
    Railsのリポジトリを
    読んでいたら...

    View Slide

  25. 軽微だがパッチを送れそうな箇所を発見

    View Slide

  26. 直す対象はわかったが...
    OSSって
    どうプルリク送れば良いのか
    分からない

    View Slide

  27. いろんな先輩
    エンジニアの方々に
    質問してみた

    View Slide

  28. 自分の中で目から鱗だった回答

    View Slide

  29. Q. プルリクでメンテナーに分からないことを
       質問してもいいものなんですか?
    A. 仕事と同じで長く関わっている人の方が仕様に
    詳しいのは当たり前!
    疑問に思ったことは質問しても大丈夫だよ!!

    View Slide

  30. その後も疑問点を相談しつつ
    拙い英語でプルリクを出した

    View Slide

  31. この時のPRを投げる手順は以前Qiitaに
    投稿したので気になる方はそちらも
    参考までに...

    View Slide

  32. OSS初プルリクだったもののRails
    にマージしてもらえた

    View Slide

  33. 第1章 OSSに取り組むきっかけ
    第2章 初コントリビュートしたときの話
    第3章 やらかし & 気付き

    View Slide

  34.  今度は業務にも活きる
    パッチを送りたい

    View Slide

  35. 1. 気になるリポジトリのコードを片っ端から追いかける
    2. 業務で困っていること(不便)を考える

    View Slide

  36.  そういえば、
    あれ...直したいかも

    View Slide

  37. View Slide

  38. mongoid (gem)
     MongoDBをActiveRecord的に操作する
     ためのODM(Object Documen Mapper)

    View Slide

  39. 不便に思うところを
    直してみた

    View Slide

  40. 実際にやったこと

    View Slide

  41. mongoidのデフォルトでは
    rails g model で生成されるクラスに
    created_at と updated_at が付与されないので
    デフォルトで付与するようにした ⏰
    ※これをやらない場合、毎回モデル生成のたびに
    rails g model モデル名 --timestamp で打つことに

    View Slide

  42. 例の如くプルリクを送ってみた

    View Slide

  43. この時の私は自分が
    最低の修正をしてしまったこと
    に気付いていなかった

    View Slide

  44. その後プルリクに
    コメントが付く...

    View Slide

  45. 雑な訳)
    ActiveRecordはこのオプションを
    サポートしている。ActiveRecordに合わせるため、
    このPRはリジェクトされるべきだ!!

    View Slide

  46. 最低の修正の中身

    View Slide

  47. オプション(--timestampオプション)
    そのものを消した(最低)
    (このオプションそもそもいらなくない?と思ったので...)

    View Slide

  48. その後、懸命な消火活動は続く

    View Slide

  49. しかし、クローズしようぜ的な
    コメントがつき万事休す

    View Slide

  50. その直後、この件について
    Twitterで呟いた際に
    貴重なアドバイスが✨

    View Slide

  51. View Slide

  52. View Slide

  53. このとき、
     大切なことに気付く...

    View Slide

  54. OSSにパッチを送る
    行為(修正内容&PR内での振る舞い)にも
    マナーがあるということを

    View Slide

  55. 今回の場合だと
    mongoidのオプション
    そのものを消すのではなく
    それを生かした上で期待する修正をしてあ
    げるのがマナーだとわかった

    View Slide

  56. @kamipoさんの
    アドバイスに則って
    修正し直してみた

    View Slide

  57. mongoidが目指す方向性に寄せて
    ActiveRecordのやり方に
    準拠して直すようにした

    View Slide

  58. View Slide

  59. 色々やらかしましたが...
    なんとかmergeされることに✨

    View Slide

  60. このプルリクエストは
    その後に修正内容に
    関してマナーを意識する大
    切な気付きになった

    View Slide

  61. まとめ

    View Slide

  62.   年数は関係ない!
    取り組んだ方の経験に応じた学びが
    きっとある!興味ある方は是非
     → 当該リポジトリの思想に触れる事による学び
     → 自分が使っているOSSの中身を知る学び

    View Slide

  63.  OSSは公共物なので
    使わせてもらえることを
    当たり前にしない
    メンテナーに感謝しつつ
    (マナーある)PRが送れると最高かと✨

    View Slide

  64. それでも一人で
     やるのは不安...
     そんな方は!

    View Slide

  65. コミュニティにおいでよ!

    View Slide

  66. Tama.rbでもOSSコードリーディング部
    という活動をしており、
    コミュニティでOSSのコードに触れる
    機会を不定期で設けています
    (あわよくばパッチも送ったり!)

    View Slide

  67. まだOSSに
    取り組んだことのない方も!
    是非コミュニティと一緒にやってい
    きましょう!!

    View Slide

  68. ご静聴
    ありがとう
    ございました!

    View Slide