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入門 世界に参加する最初のひと押し / OSS first step
Search
Masahiro Wakame
November 03, 2018
Programming
7
720
OSS入門 世界に参加する最初のひと押し / OSS first step
https://camphor.connpass.com/event/104719/
Masahiro Wakame
November 03, 2018
Tweet
Share
More Decks by Masahiro Wakame
See All by Masahiro Wakame
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
630
DatastoreからSpannerに 移行したいぞ途中編 / migrate Datastore to Spanner in progress
vvakame
0
1.1k
Google Cloud Next 2019 わくわく報告会 / Google Cloud Next 2019 WakuWaku Report
vvakame
1
430
メルカリ社員100人に聞いたGoLandの使い方 / JetBrains Night Tokyo 2018
vvakame
27
13k
GCP Compute 概要と選定 / DevFest Tokyo 2018
vvakame
12
1.6k
GoでGraphQLサーバを立てるぞ! / Building GraphQL server by go
vvakame
15
4.7k
『Re:VIEW+CSS組版やっていき』を やった話とWebエンジニアが期待する未来 / CSS Publishinng for Web Developers
vvakame
3
8.9k
go.mercari.io/datastore はいいぞ! / go.mercari.io/datastore is pretty good!
vvakame
4
1.1k
最強のDatastoreライブラリを作った / golang.tokyo #11
vvakame
3
10k
Other Decks in Programming
See All in Programming
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
46
30k
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
210
生成AIで日々のエラー調査を進めたい
yuyaabo
0
640
KotlinConf 2025 現地で感じたServer-Side Kotlin
n_takehata
1
230
A2A プロトコルを試してみる
azukiazusa1
2
1.1k
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
110
CursorはMCPを使った方が良いぞ
taigakono
1
170
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
290
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
1
330
ASP.NETアプリケーションのモダナイズ インフラ編
tomokusaba
1
410
Go1.25からのGOMAXPROCS
kuro_kurorrr
1
800
Is Xcode slowly dying out in 2025?
uetyo
1
190
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
It's Worth the Effort
3n
185
28k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Docker and Python
trallard
44
3.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
RailsConf 2023
tenderlove
30
1.1k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Writing Fast Ruby
sferik
628
61k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Transcript
OpenSourceSoftware⼊入⾨門 世界に参加する最初のひと押し わかめ まさひろ
わかめ まさひろ @v vakame Masahiro Wakame DefinitelyTyped tsfmt 技術書典
今⽇日話すこと •OSSって何? •OSSってどうやって回ってるの? •問題の⾒つけ⽅ •どうすると⼊っていきやすいか
Welcome! •ようこそʙʙ! •質問あったら話を遮って⼿をあげる •いっぱい質問があったら嬉しい •時間が⾜りなくなっても気にしない 旅(⼈人に対して)の恥はかき捨て…!
OSSって何? Open Source Software
Open Source Software? •ソースが公開されている •修正を送ると取り込んでくれる(かも) •ライセンスの元、好きに使える オープンソースの定義
どうやって回っているの? •⼤⼈数が⽬にするので⾼品質…!? •ほんの⼀握り… •ぶっちゃけ直接⾦にはならない •だってオープンだから
OSSは⾼高品質なの? •いろいろな要素に左右される •オーナーの気質や⼒量やモチベ •ユーザがたくさんいるか •リリースサイクルの⾧さ
つまり? •⼤多数はショボい •→課題がいろいろある! •→やっていく余地が多い! ショボい問題ほど直しやすい!
はたして⾦金金になるの? •我々の近場のOSSは基本⾦になりません •様々なメリットがあるのでやります •パッチ来ると嬉しいな とか
会社がオーナーの場合 •サポートを売ったりする •サービスホストしてレンタルしたり •商⽤利⽤する場合フィーを取るとか OSSにしとくと退職した後も使える(⼩小声
個⼈人がオーナーの場合 •趣味(儲からない) •パトロン系サービスの利⽤(儲かる?) •どこかに雇われて仕事としてやる •クックパッド→Rubyコミッタ •メルペイ→僕 仕事の100%ではないです
何故⾃自分がやるのか •世界を⾃分好みの⽅向に誘導したい! •⾃分の持つ技術を世界に共有したい! 池に⽯石投げると楽しいみたいな話
どこでやるか •GitHub ←調べた時の情報が多い •それ以外 ←僕はよくわからん •Linux, Android, WebKit etc… •ゆえに主にGitHubの話をします
問題の⾒見見つけ⽅方 ⾒見見つけたら直せる
開発やっていますか? •やっている •やってない やりましょう
やると困ることがある •機能たりない •バグってる •こんな機能ほしい •→やっていく必要がある やらずに困れることはほぼないです
どうする?→改善 •コードを書いて送る •パッチを送る •Pull Requestを送る •取り込まれる→リリースされる→使える •嬉しい!!✌
以上! 脳筋感がありますね
⼊入っていきましょう 誰もが初回は初めて
プロトコル •これバグじゃね?と報告する •原因分析に協⼒する •原因を特定する •直し⽅相談する •直す! 実施すると偉いライン 報告すらしないと偉くない
プロトコル •これバグじゃね?と報告する •原因分析に協⼒する •原因を特定する •直し⽅相談する •直す! いきなりここに⾏行行くと⾟辛い話になる時がある
前段階 •いきなり報告するの怖い…! •どこかで質問して確かめる •⾃分のやり⽅が悪い?それともバグ? •StackOverflowとか •コミュニティや所属組織のチャット
その他の⽅方法 •Good first issue 探す •TypeScriptの例 bit.ly/2PGmKao •友達がƅ ƅ´ωAƅ ƅŇűƅŖ
したのを助ける •ようするに代わりに直す
機能追加の話 •バグ報告よりちょっとむずかしい •まず提案する •◦◦ができると我々はより幸せになれる! •PR送ってみていい?って聞く 慣れたらいきなり送っても⾟辛くない
英語 •みんな使ってる •わりとみんな下⼿ ≒ ⾮ネイティブ多い •英語ヘタやな!って⾔われたことない •わかる努⼒をしてくれる(すき •こっちもわかる努⼒する
英語 •みんなの1st⾔語⇔英語 翻訳機はまぁある •Google翻訳を使い倒していこうな! •英語→⽇本語よく使う •変な⽇本語出てきたら英を⼿直しする ⽇日→英→⽇日 も使う
⻄西海海岸語 •cool →ただの相槌 •good →ヤバい指摘をする前の枕詞 •部分ではなく⽂全体を解釈する必要あり 僕が勝⼿手に⾔言ってます
PRやパッチを送る 捨てて書き直す覚悟
コードを送る意味 •だいたい以下の意味を含む •俺のコードこそ最強! •お前に俺のコードあげるから •あとのメンテは全部よろしく! •↑なかなかすごいこと⾔ってる
納得が必要 •じゃないと引き取ってくれないよね •基本的な姿勢 •我々は味⽅同⼠である •我々はコードを改善したい これを会話の⼟土台に使う
上⼿手に議論する •コード⾒せてわかりあえる時もある •そうじゃない場合やっていく必要がある •喧嘩(決裂)に突⼊すると旨味なし •アホには近寄らない 多少慣れが必要です(最初はみんな下⼿手)
議論とは? •合意できる部分を確かめ合う作業 •討論とは全く異なる(討論は合意しない) •相⼿の真の意⾒を引き出す必要がある •こともある •オーナーの意⾒を取り込むほうが早い 譲れるところは最⼤大限譲るのが楽
脇道:⾯面⽩白い読み物 •d.hatena.ne.jp/hyoshiok/20090704 •TOMOYO Linuxに学ぶ説得術 •パッチ送る⼈ともらう⼈の観点の差
Tips •前書いた記事 bit.ly/2CYFPNV •主語をIやYouではなくWeにする •Weにして破綻しない⽂章を書く •We are stupid! Fxxk we!
とは書けない
オーナーの気持ち •みんなに便利に使ってほしい •モチベは維持したい •みんなが困ることはあまりしたくない •あわよくば⼈のリソースで楽したい
便便利利に使ってほしい •⾃分が便利ならみんなもきっと便利 •コードが広く使われて検証されてほしい •バグが⾒つかるから ついでにパッチくれ •できれば⾦も欲しい •↑難しい
モチベ維持したい •OSSで最も重要かつ貴重なリソースは? •オーナーのやる気 •やりたくないことやってほしい •僕の場合ドキュメントとか英語書くとか
みんなを困らせたくない •バグ埋め込みたくない •バグりやすいコードmergeしたくない •Breaking Changeしたくない •≒気軽にBCするライブラリ使いたくない •↑ものすごく⼤事 すごく⼤事 とても
やりとりの実例例 •最近の活動 bit.ly/2zpGpRo •mergeされずにcloseされたPRもちらほら •#327→#353→#388→#392(→#404) •紆余曲折を経て⽬的を果たしたヤツ 達成⽬目標伝える→オーナーを尊重した修正
与太話 時間余ってる?どう?
ライセンス •ちゃんと確認する •⼀番厄介なライセンスは? •ライセンス無し •↑ライセンス何?と聞けば概ね解決する
⾃自分がオーナー •やりたくないことはやらなくていい •ライセンス違反の指摘とかは除く •とりあえず公開することに慣れる •反応0がデフォなので過度な期待はしない •README.mdだけはちゃんと書く
⾃自分とは •有象無象の⼀部である •多少雑でもわりとすぐ忘れられる •きちんと説明できないと話が進まない 良くも悪くも
CONTRIBUTING.mdとか •GitHubのテンプレ的構造がある •bit.ly/2JzOWWP •TypeScriptの場合 bit.ly/1o2weYt ⾒見見てみよう!
質問コーナー