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
いいね が燃料! 「自分のOSS」で1億ダウンロード突破の開発者が語る OSS 開発のリアル
Search
jsakamoto
July 06, 2025
Programming
300
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
いいね が燃料! 「自分のOSS」で1億ダウンロード突破の開発者が語る OSS 開発のリアル
オープンソースカンファレンス 2025 Hokkaido のセミナー枠での発表資料です。
jsakamoto
July 06, 2025
More Decks by jsakamoto
See All by jsakamoto
WebMCPを試してみました
jsakamoto
0
100
VRT in Blazor App Dev - .NET Lab 2026 Jul LT
jsakamoto
0
100
Google Chrome の開発者ツールで C# コードをデバッグできるって知ってました?
jsakamoto
1
130
useEffect は使いたくないのですが、ではどうしたらいいですか
jsakamoto
1
150
開発したプレゼン用ツールが15年経っても誰も使ってくれない話
jsakamoto
0
120
UI コンポーネントカタログに MCP サーバー機能を追加する試み、そしてその結果
jsakamoto
1
150
minify の効果を最大限に引き出す TypeScript コードを書く
jsakamoto
2
420
JavaScript 以外の言語によるフロントエンド Web 開発が既に実用段階である話
jsakamoto
0
3k
ベクトル化を使った意味検索を、簡単にアプリケーションに搭載できる時代になっていた件。
jsakamoto
2
470
Other Decks in Programming
See All in Programming
Modernizing iOS Apps
seyfoyun
0
140
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
190
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
130
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.1k
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
12
7.8k
LLM 101
dalinaum
0
370
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
180
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
220
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
490
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
6k
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
310
sbt 2.0: takeoff
eed3si9n
0
180
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
310
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
23k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
The Limits of Empathy - UXLibs8
cassininazir
2
750
Bash Introduction
62gerente
615
220k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
590
The Curious Case for Waylosing
cassininazir
1
590
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
660
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
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