Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

こう言う人がいる

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

本日の目標

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

本題

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

決意する!

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

無い知恵を絞る...

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

実際にやったこと

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

最低の修正の中身

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

まとめ

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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