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」で1億ダウンロード突破の開発者が語る OSS 開発のリアル
Search
jsakamoto
July 06, 2025
Programming
0
67
いいね が燃料! 「自分のOSS」で1億ダウンロード突破の開発者が語る OSS 開発のリアル
オープンソースカンファレンス 2025 Hokkaido のセミナー枠での発表資料です。
jsakamoto
July 06, 2025
Tweet
Share
More Decks by jsakamoto
See All by jsakamoto
UI コンポーネントカタログに MCP サーバー機能を追加する試み、そしてその結果
jsakamoto
1
11
minify の効果を最大限に引き出す TypeScript コードを書く
jsakamoto
2
280
JavaScript 以外の言語によるフロントエンド Web 開発が既に実用段階である話
jsakamoto
0
2.5k
ベクトル化を使った意味検索を、簡単にアプリケーションに搭載できる時代になっていた件。
jsakamoto
2
240
CSR? SSR? C# で作る Web アプリフレームワーク Blazor のレンダリング方式を整理する
jsakamoto
0
740
UI コンポーネントカタログ “Storybook” を、C# で SPA が作れる Blazor で再実装した話
jsakamoto
0
1.4k
Evolution of Blazor in .NET 8 - Exploring the Multi-Page Apps Implementation by Blazor!
jsakamoto
1
900
C#でSPAを実装する Blazor で UI コンポーネントカタログ Storybook を使いたい! “Blazing Story” の紹介
jsakamoto
0
840
C#でSPAを作る Blazor WebAssembly の進化 - そしてその先へ
jsakamoto
2
190
Other Decks in Programming
See All in Programming
GPUを計算資源として使おう!
primenumber
1
290
TypeScriptでDXを上げろ! Hono編
yusukebe
3
860
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
440
マッチングアプリにおけるフリックUIで苦労したこと
yuheiito
0
240
知って得する@cloudflare_vite-pluginのあれこれ
chimame
1
120
プロダクトという一杯を作る - プロダクトチームが味の責任を持つまでの煮込み奮闘記
hiliteeternal
0
180
ご注文の差分はこちらですか? 〜 AWS CDK のいろいろな差分検出と安全なデプロイ
konokenj
4
670
副作用と戦う PHP リファクタリング ─ ドメインイベントでビジネスロジックを解きほぐす
kajitack
2
440
変化を楽しむエンジニアリング ~ いままでとこれから ~
murajun1978
0
140
MCPで実現できる、Webサービス利用体験について
syumai
7
1.9k
The Niche of CDK Grant オブジェクトって何者?/the-niche-of-cdk-what-isgrant-object
hassaku63
1
690
リバースエンジニアリング新時代へ! GhidraとClaude DesktopをMCPで繋ぐ/findy202507
tkmru
4
1.2k
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
Documentation Writing (for coders)
carmenintech
72
4.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Statistics for Hackers
jakevdp
799
220k
Rails Girls Zürich Keynote
gr2m
95
14k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Making Projects Easy
brettharned
116
6.3k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Transcript
None
2
• OSS プロダクトの使い方の話… は、しません • 有名 OSS にコミットする話... は、しません •
「自分の OSS」を開発し世界へ公開することをお話します 3
What Kind of OSS Am I Developing? 4
• つまり、一定規模のアプリケーションやミドルウェアとかではない • 小粒な機能セットの、ライブラリや単発のコンポーネント • 2019 年頃からは Blazor 向けが中心 5
• Blazor の公式ドキュメントにも掲載 https://learn.microsoft.com/aspnet/core/blazor/c omponents/prerender?#prerendering-guidance 6
• Storybook を 100% Blazor で再実装 • 過去のオープンソースカンファレンス Hokkaido でも紹介
• 最近 MCP サーバー機能を追加しました https://github.com/jsakamoto/BlazingStory/ 7
1億超 13 https://www.nuget.org/profiles/jsakamoto 95 8
• すごいと思った? • でも実は裏 (?) があるんです 9
ChromeDriver, 67,325,743 IEDriver, 11,942,413 GeckoDriver, 7,761,313 GeckoDriver Win64, 2,676,651 その他,
29,103,485 “~Driver” だけで 75% 以上 95 パッケージのうち、この4パッケージだけ で4分の3を占める WebDriver バイナリを収録しただけ のパッケージ Selenium の開発に関与している訳 ではない WebDriver バイナリを NuGet パッケージに 仕立てているだけ 10
1年 2年 3年 4年 5年 6年 7年 8年 9年 10年
11年 12年 13年 0 80,000,000 160,000,000 240,000,000 320,000,000 自分 x 95 パッケージ 著名OSS x 1 パッケージ 11
• 少しだけある • 古いですけど NPOI とか • 自分のアイディアを通すのが面倒 • 英語の壁
• そもそものスキルの課題 12
What Motivates Me to Develop? 13
• SNS でいいねをもらうこと • YouTube チャンネルでの紹介 • Microsoft 公式の ASP.NET
Community Standup とか 14
BlazorWasmPreRendering.Build Blazing Story Blazor Gamepad Blazor i18n Text Find Razor
Source File Awesome Blazor Browser 15
ユーザーは @jsakamoto をお だてておけば、ライブラリが手に 入る @jsakamoto は、おだてられた らドーパミンが分泌される 16
• 日本語文化も大事にしたいです • しかしソフトウェア界隈は英語話者の数が圧倒的に多い • たくさん いいね をもらうには、英語で発信したらいいのでは... ! •
幸い、近年の機械翻訳は秀逸 17
• 言い訳 心の安寧 が得られる • 金銭での対価は払っていないが、 OSS コミュニティに貢献してるから、という免罪符 • OSS
は、消費するだけだと枯れてしまいかねない • OSS の “フリーライド” それ自体には罪悪感を感じる必要はない • ただし、Issue 報告して保守してもらうばかりだと作者の心が折れる • 何の解決にもならないが、自分で OSS を開発・公開するようになって、他 OSS への不 具合報告にめっちゃ気を遣うようになった 18
Choosing an OSS License 19
利用者側には制約を求めたくない • ソースコードの開示不要 • 商用利用可 派生物はソース開示を強制したい • Fork されてもオープンソースであることを 堅持したい
• 放棄された OSS を fork しクローズドで配 布するビジネスを許したくない 20
• 利用者側には制約を求めたくない • GPL では いいねがもらえなく 利用者がいなくなってしまう心配 • 派生物はソース開示を強制したい •
そこで LGPL を採用 • LGPL は利用している側のソースコードの開示不要… と理解していた • .NET 向けライブラリなので基本的に動的リンクなので • しかし、利用者側のリバースエンジニアリングを許可する必要があった • 静的リンクしていないことを証明するため、らしい 21
• MIT License • オープンソースであることにこだわらない場合 • それよりも利用しやすさを優先する場合 • The Unlicense
• 独自性・独創性がなさすぎなもの • Selenium WebDriver のパッケージに採用 22
Honestly, Is It Profitable? 23
• お金もらうと責任が大きくなりそう • いいねが欲しいだけで 個人の “楽しみ” としてやっているので • “金払ってるんだから” という理由で態度でかい人が出現しそうで怖い
• でも最近、README に Banner を掲載する系の広告モデルが気 になってはいる 24
• OSS 活動により Microsoft MVP Award を受賞 • Microsoft MVP
Award の特典がなかなかによい 25
Challenges in OSS Development 26
• 調子にのって本数を作りすぎた • 95 パッケージ • 保守が大変 • Issue 登録されても数ヶ月着手できないとか
• 既存のパッケージの改善も遅々として進まず • 新しいものを学んだり作ったりする時間が削られる • 作りたいパッケージのアイディアはまだ湧いてくる 27
構想・リサーチ 7% 本体機能の実装 14% テスト開発 21% README の作成 57% ※体感上のイメージです
28
• README の作成がいちばんしんどい • しかもこだわりで英語で書かなくてはならない縛り • 生成系 AI のおかげでだいぶん楽にはなってきた •
でもここを一番がんばらないと いいねが 使って もらえない • このライブラリで何ができるのか・何を解決するのかを冒頭ではっきりさせる 29
• 「あなたのライブラリを使ったら、エラーになりました」 • ビルド時のエラー? 実行時のエラー? • 何をどう操作したのか? • エラーメッセージとスタックトレースは? •
ブラウザやプラットフォームのバージョンは? • 普通には自分の手元で再現しない • 再現用のサンプルプログラムが添付されていれば、解決が早くなる 30
• 「我が社の製品はあなたのライブラリを使用しています。 あなたのライブラリにセキュリティ上の脆弱性があるかどうか、 1 営業日以内に返答してください。」 • そういう厳格さが求められる界隈があるのはわかる • けれども責任持てないですよ •
多くの OSS およびその利用許諾では、利用者が責任を持つ 31
• 本質的な変更に加えて、あらゆるファイルのコーディングスタイル を変更 • this を付ける/付けないとか、静的メソッドを拡張メソッドにするとか、そういうレベルの 変更を含む • 迂闊に Merge
すると何が紛れ込むか恐ろしい • 個人活動の OSS なので変更内容の把握に時間を割きたくない 32
• スキマ時間で開発してるので、自分の書いたコードや設計を忘れる • 95 パッケージもあるし • バグ修正や機能追加でデグレーションが容易に発生し得る • 自動化テストの整備は必須 •
自動化テストがあるおかげで、安心してコードの変更ができる • コードが腐らない • 継続したソフトウェアの維持発展に欠かせない • テストを書くのも楽しいよ 33
The Rise of AI and the Future of OSS Development
34
• チャットアプリ • ChatGPT • Google Gemini • Claude •
GitHub Copilot Pro+ • よく使うモデルは GPT-4.1 と Claude Sonnet 4 • Agent モードはあまり使った実績がない • コード補完を常用 35
• README を書くのがずいぶんと楽になった • 機能追加部分の書き足しの草稿とか • バージョン移行用のガイドの作成とか • とくに英語で書いてもらえるのがうれしい •
ドキュメントコメントを書くのが劇的に楽になった • おおむね手放しで任せられる感じ 36
• コーディング作業は結局、おおむね今までどおり • コード補完で、若干の作業効率の向上はある • ChatGPT の Web 検索で調べ物の効率は向上した •
コーディングをまるごと任せられる感じがしない • Vibe Coding とか流行っているようではありますが... • 待ち時間ばかりかかって生産性を感じない • コーディングは “楽しみ” なので AI に押しつけたい動機が低い • “自分だけが取り残されるのではないか” の不安から試してはいるけど 37
• 正直、未来のことはわかりません • いまはまだダメな感じにみえるコーディング技能だって、ここ数年の進化をみると、数年 後、数ヶ月後にはどうなっているかわからない • UI コンポーネントライブラリは、AI にCSS生成を任せるヘッドレス タイプが流行るのではという記事を見た覚え
• でも自分の観測範囲では、まだまだ旧態依然としたライブラリが元気な印象 • 何かは変わっていくんでしょうけど、無くなることもなさそう 38
Conclusion 39
• 自分の OSS を開発・公開する、という関わり方もある • 使うだけでもない • 既存の著名 OSS に貢献するのでもない
• 不純な動機でも構わない • 世界のどこかの誰かのためになれば Win-Win • その手段としての OSS 開発活動 • もちろんマネタイズも • いかにして持続可能にするか 40
• 「自分の OSS」作りに挑戦したいあなたに • 実際に歩を進めるきっかけ、または今後の指針の参考になれば幸いです • OSS を使いつつ、様々な製品開発で価値創造しているあなたに • ユーザーへの貢献、ありがとうございます
• いっぽうで OSS を開発・公開している人たちにも励ましの一言を • 不具合報告の際はできれば再現サンプルの提示を 41
Powered by ONLY OFFICE Desktop Editors 42