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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
87
Other Decks in Programming
See All in Programming
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
4
460
PHPでバイナリをパースして理解するASN.1
muno92
PRO
0
460
空間オーディオの活用
objectiveaudio
0
150
PicoRuby for IoT: Connecting to the Cloud with MQTT
yuuu
2
770
継続的な負荷検証を目指して
pyama86
3
1.1k
JCON - Create Agentic AI Apps, The Easy Way!
kdubois
1
110
AlarmKitで明後日起きれるアラームアプリを作る
trickart
0
130
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
3.1k
エラー処理の温故知新 / history of error handling technic
ryotanakaya
7
1.9k
【ディップ|26年新卒研修資料】TDD実装演習
dip_tech
PRO
0
180
GoogleCloudとterraform完全に理解した
terisuke
1
190
検索設計から 推論設計への重心移動と Recall-First Retrieval
po3rin
5
1.7k
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
260
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
130
Building AI with AI
inesmontani
PRO
1
980
Code Reviewing Like a Champion
maltzj
528
40k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
210
Faster Mobile Websites
deanohume
310
31k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
110
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
RailsConf 2023
tenderlove
30
1.4k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
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」の思想で複雑性の増大を抑えるコードを書く。 • コミュニティ : 小さな貢献も見逃さず、すべてのコントリビューターに感謝と敬意を伝え る。