Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
rubocop-daemon 裏話: OSS の苦悩
Search
Hayato Kawai
March 07, 2024
790
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
rubocop-daemon 裏話: OSS の苦悩
「Omotesando.rb #95」で発表した LT スライドです。
https://omotesandorb.connpass.com/event/311351/
Hayato Kawai
March 07, 2024
More Decks by Hayato Kawai
See All by Hayato Kawai
ALB ログから Trace を気合で繋げる技術
fohte
7
900
トークン対パフォーマンスを最大化しよう
fohte
5
1.5k
Amazon Bedrock のコスト内訳を気合でトラッキングする
fohte
0
110
Bedrock のコスト監視設計
fohte
2
890
Data Access Control で実現するより細かい権限制御
fohte
0
570
Datadog が支える Wantedly のシステム運用
fohte
0
200
Devin や Cursor などの生成 AI ツール導入に向けて何を取り組んだのか
fohte
2
430
Datadog Network Monitoring を活用して NAT Gateway 課金を 80 % 削減した話
fohte
2
900
Trace Metrics と Istio Metrics でサービス健全性を監視する
fohte
0
630
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Become a Pro
speakerdeck
PRO
31
6.3k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
ラッコキーワード サービス紹介資料
rakko
1
4.9M
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
First, design no harm
axbom
PRO
2
1.3k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
360
Transcript
rubocop-daemon 裏話 OSS の苦悩 Omotesando.rb #95 2024-03-07 - Hayato Kawai
(@fohte)
あなた誰 名前: @fohte (ふぉーて) 川井 颯人 (Hayato Kawai) 所属: ウォンテッドリー株式会社
趣味: 🎮 🎹
持ち帰ってほしいこと • 世の中の OSS owner はすごい ◦ OSS は面白いが大変なこともある
話すこと • rubocop-daemon gem を作りました • そこで感じた OSS 特有の苦悩を話します
中身の話は昨日の LT でしました https://speakerdeck.com/fohte/rubocop-server-mode-noshi-zu-mi
rubocop-daemon gem を作りました (2018 年) (再掲)
RuboCop 本体に 取り込まれました 🎉 (2022 年) https://github.com/ruboco p/rubocop/pull/10706 Big Thanks
to @koic (再掲)
(再掲) rubocop-daemon の高速化アプローチは単純 • require 'rubocop' したプロセスを サーバーとして用意 (デーモン化) ◦
このサーバーにリクエストする ◦ アプリケーションサーバーを起動し続け、リクエストを待ち受けて処理するのと同じ rubocop-daemon (server) $ rubocop-daemon exec … ターミナル $ rubocop-daemon exec …
None
rubocop-daemon は自然流入で伸びた • 特に宣伝をせず、自然に認知されていった ◦ gem 作ったよ〜とツイートしたくらい ◦ 勝手に伸びたのは、ユーザーが本当に求めていたものだったから ?
(推測) • @bbatsov (RuboCop 作者) のブログで取り上げられて 認知が一気に増えた ◦ "The Missing Ruby Code Formatter | Meta Redux" https://metaredux.com/posts/2019/03/30/the-missing-ruby-code-for matter.html
ブログで紹介され バズっている様子
OSS 面白い期
OSS 面白い期 (〜2019 年) • バズって嬉しい! ◦ RuboCop の third-party
gem として RuboCop に認知されるのは嬉しい
OSS 面白い期 (〜2019 年) • issue や PR も盛んに来て楽しい! ◦
ちゃんと使われていて嬉しい! ◦ issue/PR に対応して感謝されると嬉しい!
OSS つらくなってきた期
OSS つらいポイントまとめ • 英語がつらい • スパゲッティと化した rubocop-daemon-wrapper • セットアップガイドが大変 •
issue/PR 対応が大変
😇 英語がつらい 😇
OSS つらくなってきた期 (2019 年〜): 英語がつらい • 英語がつらい ◦ 議論できるほどの英語力がない ▪
当時は ChatGPT もなかった… ▪ 今なら ChatGPT でやり取りはできるので楽になっていそう ◦ 語彙や文法に誤りがないか調べながら書くのは時間がかかる ▪ 普段の業務では、英語を読むことはあっても書くことはない ▪ 1 コメント書くのに 1 時間くらいかかる… ◦ 認知されるにつれて issue/PR も多くなる ▪ 時間がめちゃくちゃかかる
スパゲッティと化した rubocop-daemon-wrapper
OSS つらくなってきた期 (2019 年〜): rubocop-daemon-wrapper • rubocop-daemon サーバーに通信するための クライアントは rubocop-daemon
実装が遅い ◦ サーバーは TCP/IP で実装されているので、nc コマンド (netcat) で実装できる • nc コマンドを手で叩きたくない => wrapper を用意 ◦ rubocop-daemon-wrapper というシェルスクリプトを用意 ◦ ついでに rubocop コマンドとして振る舞えるようなインターフェースに ▪ エディタ等からも利用しやすくする
OSS つらくなってきた期 (2019 年〜): rubocop-daemon-wrapper • rubocop-daemon サーバーに通信するための クライアントは rubocop-daemon
実装が遅い ◦ サーバーは TCP/IP で実装されているので、nc コマンド (netcat) で実装できる • nc コマンドを手で叩きたくない => wrapper を用意 ◦ rubocop-daemon-wrapper というシェルスクリプトを用意 ◦ ついでに rubocop コマンドとして振る舞えるようなインターフェースに ▪ エディタ等からも利用しやすくする
🔥 シェルスクリプト 🔥
シェルスクリプトはつらい • nc コマンドが OS によって 若干違う ◦ 条件分岐の嵐
シェルスクリプトの特に nc コマンドがつらい • 分岐はつらい ◦ 差異を吸収するための分岐が大量に発生 • テストも難しい ◦
手元に OS があるわけではない ▪ Docker でやるという手もあるが、再現できているのか分からない • すべての OS を網羅するのは現実的ではない ◦ 自分が使う OS ではないのでモチベーションが高くない ▪ ニッチなものだと特に …
😇 セットアップガイドが大変 😇
OSS つらくなってきた期 (2019 年〜): セットアップガイドが大変 • rubocop-daemon はエディタから使われがち ◦ 高速化の目的がコーディング中のフィードバックを速くしたいため
• ユーザーとしてはセットアップガイドがあってほしい ◦ 最初に「導入したいけどどうやって導入すればいいんだろう ?」となる
OSS つらくなってきた期 (2019 年〜): セットアップガイドが大変 • エディタから rubocop-daemon を実行したい ◦
エディタ本体には rubocop-daemon クライアントは実装されていない ◦ つまりエディタのプラグインを作る or 設定する必要がある ▪ 作るのは大変なので rubocop-daemon-wrapper の出番
OSS つらくなってきた期 (2019 年〜): セットアップガイドが大変 • エディタはたくさんある ◦ Vim (Neovim),
VSCode, JetBrains IDE, … • エディタのプラグインもたくさんある ◦ VSCode だと RuboCop を実行するプラグインは複数ある ▪ vscode-ruby-rubocop, vscode-ruby, …
OSS つらくなってきた期 (2019 年〜): セットアップガイドが大変 • エディタの数 × プラグインの数だけ セットアップガイドが生まれる
◦ ただし、自分が使っているエディタとプラグインはそれぞれ 1 つずつ ◦ 自分が使っていないエディタ・プラグインのガイドを メンテナンスする必要がある
😇 Issue/PR 対応が大変 😇
OSS つらくなってきた期 (2019 年〜): issue/PR に対応するのは大変 • せっかく立ててくれた issue/PR は対応したい
◦ ただし英語が… ◦ PR の場合はより考えることが多い
PR は全部 merge したいが難しい • せっかく PR 作ってくれたのだし merge したい
◦ レビューどうする? ▪ 英語つらい問題 ▪ merge して気になったところは自分で修正してしまうという手もある • ただし merge のたびに修正するのも自分が大変 …
PR は全部 merge したいが難しい • merge すると自分がメンテナンスの責務を負うことに なる ◦ merge
したものに対してさらに別の PR が来ることもある ◦ これは誰がレビューする? 自分しかない ▪ つまり分かってないといけない • 使ってない OS、エディタ、プラグインは … • merge しないのが一番簡単ではある ◦ でも善意を無下にしたくない
仕事以外の時間でこれをやるのは大変 • 前提として、コード書くのは楽しいし、 他の人に使ってもらえることもとても嬉しい ◦ ただし前述のことには時間も MP も使う ◦ しかもそれを仕事以外の時間でやる
▪ 🤯
結果としてメンテナンスせずに放置してしまうことに • これらの苦悩があり、issue/PR を放置してしまった ◦ ごめんなさい 🙇 ◦ OSS owner
を移譲する or commiter を増やすという手もあった ▪ が見知らぬ人に権限を渡して大丈夫なのか ? という心配が勝った
rubocop-daemon は archive します • RuboCop 本体に取り込まれたことで、 多くのケースで RuboCop 単体で十分になった
◦ rubocop-daemon は役目を果たした • リポジトリは archive します (近いうちに)
OSS は素晴らしい • OSS は素晴らしい文化 ◦ 利用するソフトウェアの中身が自由に見れ、変更し、あわよくば利用者の変更が 本体に取り込まれる。これは OSS のとても大きな魅力
• 一方で OSS owner として苦悩を感じることもある ◦ ユーザーとしてはリスペクトの心を忘れずにいたい (自戒)
(再掲) 持ち帰ってほしいこと • 世の中の OSS owner はすごい ◦ OSS は面白いが大変なこともある