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
0
170
普通のエンジニアがOSSで世界と繋がるまで.pdf
Yota Hamada
June 26, 2025
Tweet
Share
More Decks by Yota Hamada
See All by Yota Hamada
Go × 軽量ワークフロー言語で実装する LLM ワークフロー
yohamta
2
310
IP電話自動応答システムの実現
yohamta
1
76
Other Decks in Programming
See All in Programming
CSC307 Lecture 02
javiergs
PRO
1
740
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
2k
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
180
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
150
AIエージェントの設計で注意するべきポイント6選
har1101
6
2.9k
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
310
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
590
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
160
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
440
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
140
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.3k
Developing static sites with Ruby
okuramasafumi
1
340
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
990
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
The Language of Interfaces
destraynor
162
26k
The Limits of Empathy - UXLibs8
cassininazir
1
200
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
77
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
210
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
42
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Leo the Paperboy
mayatellez
0
1.3k
SEO for Brand Visibility & Recognition
aleyda
0
4.1k
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」の思想で複雑性の増大を抑えるコードを書く。 • コミュニティ : 小さな貢献も見逃さず、すべてのコントリビューターに感謝と敬意を伝え る。