Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OSS初心者がつまづきながらOSSマナーを学んでいく話
Search
fuqda
July 05, 2019
Programming
4
3.1k
OSS初心者がつまづきながらOSSマナーを学んでいく話
Tama Ruby会議01の発表資料です。
fuqda
July 05, 2019
Tweet
Share
More Decks by fuqda
See All by fuqda
Composition API時代の Pub/Subパターンでの状態管理
fuqda
4
3.1k
RubyでPrettierを使ってみた
fuqda
0
280
RSpecによるOpen API自動テスト
fuqda
3
1k
OSSへの プルリクエスト作成の手引き
fuqda
2
310
Rails Girls Tokyo 13th Sponsor LT by STORES
fuqda
0
170
黒歴史リポジトリを使ったリファクタリング勉強法のススメ
fuqda
1
1k
Ruby2.7の新機能で簡易版Rubyインタプリタを実装してみる
fuqda
0
480
カンファレンスで技術的お土産を 増やすために出来ることを考えた
fuqda
2
470
Other Decks in Programming
See All in Programming
Creating a Free Video Ad Network on the Edge
mizoguchicoji
0
110
Amazon Bedrock Agentsを用いてアプリ開発してみた!
har1101
0
330
광고 소재 심사 과정에 AI를 도입하여 광고 서비스 생산성 향상시키기
kakao
PRO
0
170
どうして僕の作ったクラスが手続き型と言われなきゃいけないんですか
akikogoto
1
120
現場で役立つモデリング 超入門
masuda220
PRO
15
3.2k
Outline View in SwiftUI
1024jp
1
320
ローコードSaaSのUXを向上させるためのTypeScript
taro28
1
610
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
聞き手から登壇者へ: RubyKaigi2024 LTでの初挑戦が 教えてくれた、可能性の星
mikik0
1
130
「今のプロジェクトいろいろ大変なんですよ、app/services とかもあって……」/After Kaigi on Rails 2024 LT Night
junk0612
5
2.1k
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
530
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
Featured
See All Featured
Happy Clients
brianwarren
98
6.7k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Scaling GitHub
holman
458
140k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Typedesign – Prime Four
hannesfritz
40
2.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Facilitating Awesome Meetings
lara
50
6.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Documentation Writing (for coders)
carmenintech
65
4.4k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Transcript
OSS初心者がつまづきながら OSSマナーを学んでいく話 Tama Ruby!"01 2019.07.06 @fuqda90
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. 業務で困っていること(不便)を考える
1. 気になるリポジトリのコードを 片っ端から追いかける 2. 業務で困っていること(不便)を考える
ある日 Railsのリポジトリを 読んでいたら...
軽微だがパッチを送れそうな箇所を発見
直す対象はわかったが... OSSって どうプルリク送れば良いのか 分からない
いろんな先輩 エンジニアの方々に 質問してみた
自分の中で目から鱗だった回答
Q. プルリクでメンテナーに分からないことを 質問してもいいものなんですか? A. 仕事と同じで長く関わっている人の方が仕様に 詳しいのは当たり前! 疑問に思ったことは質問しても大丈夫だよ!!
その後も疑問点を相談しつつ 拙い英語でプルリクを出した
この時のPRを投げる手順は以前Qiitaに 投稿したので気になる方はそちらも 参考までに...
OSS初プルリクだったもののRails にマージしてもらえた
第1章 OSSに取り組むきっかけ 第2章 初コントリビュートしたときの話 第3章 やらかし & 気付き
今度は業務にも活きる パッチを送りたい
1. 気になるリポジトリのコードを片っ端から追いかける 2. 業務で困っていること(不便)を考える
そういえば、 あれ...直したいかも
None
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で呟いた際に 貴重なアドバイスが✨
None
None
このとき、 大切なことに気付く...
OSSにパッチを送る 行為(修正内容&PR内での振る舞い)にも マナーがあるということを
今回の場合だと mongoidのオプション そのものを消すのではなく それを生かした上で期待する修正をしてあ げるのがマナーだとわかった
@kamipoさんの アドバイスに則って 修正し直してみた
mongoidが目指す方向性に寄せて ActiveRecordのやり方に 準拠して直すようにした
None
色々やらかしましたが... なんとかmergeされることに✨
このプルリクエストは その後に修正内容に 関してマナーを意識する大 切な気付きになった
まとめ
年数は関係ない! 取り組んだ方の経験に応じた学びが きっとある!興味ある方は是非 → 当該リポジトリの思想に触れる事による学び → 自分が使っているOSSの中身を知る学び
OSSは公共物なので 使わせてもらえることを 当たり前にしない メンテナーに感謝しつつ (マナーある)PRが送れると最高かと✨
それでも一人で やるのは不安... そんな方は!
コミュニティにおいでよ!
Tama.rbでもOSSコードリーディング部 という活動をしており、 コミュニティでOSSのコードに触れる 機会を不定期で設けています (あわよくばパッチも送ったり!)
まだOSSに 取り組んだことのない方も! 是非コミュニティと一緒にやってい きましょう!!
ご静聴 ありがとう ございました!