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で世界と繋がるまで.pdf
Search
Yota Hamada
June 26, 2025
Programming
200
0
Share
普通のエンジニアがOSSで世界と繋がるまで.pdf
Yota Hamada
June 26, 2025
More Decks by Yota Hamada
See All by Yota Hamada
Go × 軽量ワークフロー言語で実装する LLM ワークフロー
yohamta
2
340
IP電話自動応答システムの実現
yohamta
1
86
Other Decks in Programming
See All in Programming
Spec Driven Development | AI Summit Vilnius
danielsogl
PRO
1
140
継続的な負荷検証を目指して
pyama86
1
750
Firefoxにコントリビューションして得られた学び
ken7253
2
160
[RubyKaigi 2026] Require Hooks
palkan
1
300
エラー処理の温故知新 / history of error handling technic
ryotanakaya
7
1.8k
2026-04-15 Spring IO - I Can See Clearly Now
jonatan_ivanov
1
190
運転動画を検索可能にする〜Cosmos-Embed1とDatabricks Vector Searchで〜/cosmos-embed1-databricks-vector-search
studio_graph
1
660
Road to RubyKaigi: Play Hard(ware)
makicamel
1
550
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
190
20260514 - build with ai 2026 - build LINE Bot with Gemini CLI
line_developers_tw
PRO
0
330
「Linuxサーバー構築標準教科書」を読んでみた #ツナギメオフライン.7
akase244
0
1.4k
ローカルLLMでどこまでコードが書けるか / How much code can be written on a local LLM
kishida
2
320
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
120
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
180
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
Why Our Code Smells
bkeepers
PRO
340
58k
How to Ace a Technical Interview
jacobian
281
24k
BBQ
matthewcrist
89
10k
Side Projects
sachag
455
43k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.9k
Embracing the Ebb and Flow
colly
88
5k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Transcript
普通のエンジニアがOSSで 世界と繋がるまで Yota Hamada GitHub / X: @yottahmd
オープンソースのワークフローエンジン
Cron Airflow
Daguとは? - CronとAirflowの「中間」 • Cronの手軽さと、高機能ワークフローエンジンの「中間」を埋める選択肢 • 実行ファイル一つで動作 • DB不要でシンプル •
組み込みWeb UI
YAML 定義 可視化
GitHub が荒野だった日
「OSS活動は何かされていますか?」
はじめてのOSS - 貢献の形はコードだけじゃない • 当時流行り始めていた TypeScript を学習 • 質の高いオンライン書籍 TypeScript
Deep Dive を発見(ただし英語版のみ) • 💡「これを翻訳すれば、自分の勉強にもなるし、誰かの役にも立つかもしれな い!」
None
⼀つの活動が、新たな機会を運んでくる 翻訳活動 Udemy 講座作成 記事執筆依頼
【世界で7万人が受講】Understanding TypeScript 日本語版
ゲーム開発にはまる
ライブラリ開発で学んだ「上位互換に殺される感覚」 ゲームの設計パターン ECS に魅了さ れ、ライブラリ donburi を開発・公開 出典: Unity manual
- ECS concepts
海外技術者のチュートリアルで利⽤される • 海外の有名ブログで紹介され、多く のスターを獲得! • …しかし、ある日、圧倒的に高性能 な競合ライブラリが登場 m110氏により開発された airplanes mlange-42氏によるベンチマーク
強者が次々現れる、 OSS の現実
Dagu開発へ - 原動⼒は「Cron地獄」への課題感 • 当時勤務していた大手企業での深刻な問題 ◦ 数百のCronジョブが複数のサーバーに散在 ◦ 全体を把握しているのは、勤続10年のベテランエンジニアただ一人 ◦
障害が起きると、彼の「頭の中の設計図」だけが頼り… • Airflow等は導入が重すぎ、商用製品は高価で手が出せない
シンプルで⼿軽な選択肢がない 釘
Dagu 開発へ 高機能 手軽さ Cron Airflow
Go ならわかるシステムプログラミング ラムダノート
なぜ Go ⾔語を選択したのか • 依存関係の少なさ (標準ライブラリの充実) • シングルバイナリ(embed機能) • 優れた並行処理
(goroutine + channel) Go gopher 画像: Renée French 作
⼤きなソフトウェアを作り続ける技術 1. 小粒なイテレーションで達成感を得る • 壮大な計画は立てない。毎週「動くもの」を積み重ねる。 ◦ 1 週目: CLI で最低限
DAG を実行できるように ◦ 2 週目: Web UI で DAG が表示されるように ◦ 3 週目: 途中でキャンセル、再開できるように 2. 「Deep Module」の思想で変化に強く • I/F はシンプルに、複雑さは内部に隠す。 • シンプルな I/F を組み重ねて複雑なものを作る。
「Deep Module」の思想 出典: ソフトウェア設計について twada技術顧問と話してみた 〜 A Philosophy of Software
Design をベースに 〜
参考: Unix OS における Deep Module の例 • ファイル入出力は、5個の関数(システムコール)で成り立っている open
read write lseek close ファイルを開く ファイルから 読み込む ファイルへ 書き込む 読み書きする位置を 移動する ファイルを閉じる OS アプリケーション 物理デバイス(HDD / SDD)
OSSを「育てる」上で最も重要だと気づいたこと 「すべての貢献に、貢献者の名前を明記して感謝を伝えなさい」 (元 Firefox コミュニティマネージャーの友人からの助言) • リリースノートでのクレジット表記を徹底 ◦ バグ報告、機能提案、ドキュメント修正 …関わってくれた全ての人に感謝を
• 結果:リピート貢献率が明らかに向上! 自分の貢献が正当に評価されることが、次の貢献へのモチベーションに繋がる。
OSS 開発の原動⼒ 1. 「Cron地獄」のような課題への「怒り」 2. 利用者の声 3. 作品を育てる楽しさ
⾃分の作品を育てる
AI エージェントの活⽤ • Issue の要約と修正案の検討 • 要求事項のまとめ、Issue のドラフト作成 • Pull
Request の作成
⾃分⼀⼈が感じている課題は 実は世界の誰かも同じように感じている 海外 Dagu ユーザーとの情報交換ミーティング
ご清聴ありがとうございました まとめ • 課題発見: 日々の業務で感じる「不便」や「怒り」は、開発の最高の原動力になる。 • 継続のコツ : 小さく始め、目に見える達成感を毎週積み重ねて、モチベーションを維持 する。
• 設計思想: 「Deep Module」の思想で複雑性の増大を抑えるコードを書く。 • コミュニティ : 小さな貢献も見逃さず、すべてのコントリビューターに感謝と敬意を伝え る。