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
90
いいね が燃料! 「自分のOSS」で1億ダウンロード突破の開発者が語る OSS 開発のリアル
オープンソースカンファレンス 2025 Hokkaido のセミナー枠での発表資料です。
jsakamoto
July 06, 2025
Tweet
Share
More Decks by jsakamoto
See All by jsakamoto
UI コンポーネントカタログに MCP サーバー機能を追加する試み、そしてその結果
jsakamoto
1
35
minify の効果を最大限に引き出す TypeScript コードを書く
jsakamoto
2
290
JavaScript 以外の言語によるフロントエンド Web 開発が既に実用段階である話
jsakamoto
0
2.5k
ベクトル化を使った意味検索を、簡単にアプリケーションに搭載できる時代になっていた件。
jsakamoto
2
250
CSR? SSR? C# で作る Web アプリフレームワーク Blazor のレンダリング方式を整理する
jsakamoto
0
750
UI コンポーネントカタログ “Storybook” を、C# で SPA が作れる Blazor で再実装した話
jsakamoto
0
1.5k
Evolution of Blazor in .NET 8 - Exploring the Multi-Page Apps Implementation by Blazor!
jsakamoto
1
910
C#でSPAを実装する Blazor で UI コンポーネントカタログ Storybook を使いたい! “Blazing Story” の紹介
jsakamoto
0
850
C#でSPAを作る Blazor WebAssembly の進化 - そしてその先へ
jsakamoto
2
200
Other Decks in Programming
See All in Programming
Dart 参戦!!静的型付き言語界の隠れた実力者
kno3a87
0
190
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
770
AHC051解法紹介
eijirou
0
430
AIのメモリー
watany
13
1.4k
GitHub Copilotの全体像と活用のヒント AI駆動開発の最初の一歩
74th
7
2.5k
The State of Fluid (2025)
s2b
0
130
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
1.9k
変化を楽しむエンジニアリング ~ いままでとこれから ~
murajun1978
0
710
Understanding Ruby Grammar Through Conflicts
yui_knk
1
100
[DevinMeetupTokyo2025] コード書かせないDevinの使い方
takumiyoshikawa
2
280
DynamoDBは怖くない!〜テーブル設計の勘所とテスト戦略〜
hyamazaki
0
200
あのころの iPod を どうにか再生させたい
orumin
2
2.4k
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
73
5k
The Language of Interfaces
destraynor
158
25k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Visualization
eitanlees
146
16k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
How to Ace a Technical Interview
jacobian
278
23k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Writing Fast Ruby
sferik
628
62k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
450
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Raft: Consensus for Rubyists
vanstee
140
7.1k
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