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
700
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
430
DatastoreからSpannerに 移行したいぞ途中編 / migrate Datastore to Spanner in progress
vvakame
0
1k
Google Cloud Next 2019 わくわく報告会 / Google Cloud Next 2019 WakuWaku Report
vvakame
1
410
メルカリ社員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.7k
go.mercari.io/datastore はいいぞ! / go.mercari.io/datastore is pretty good!
vvakame
4
1k
最強のDatastoreライブラリを作った / golang.tokyo #11
vvakame
3
10k
Other Decks in Programming
See All in Programming
HTML/CSS超絶浅い説明
yuki0329
0
200
AWSマネコンに複数のアカウントで入れるようになりました
yuhta28
2
140
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
3
190
React 19でお手軽にCSS-in-JSを自作する
yukukotani
5
590
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
800
“あなた” の開発を支援する AI エージェント Bedrock Engineer / introducing-bedrock-engineer
gawa
9
1k
shadcn/uiを使ってReactでの開発を加速させよう!
lef237
0
350
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
340
非ブラウザランタイムとWeb標準 / Non-Browser Runtimes and Web Standards
petamoriken
0
440
AWS Lambda functions with C# 用の Dev Container Template を作ってみた件
mappie_kochi
0
200
2024年のkintone API振り返りと2025年 / kintone API look back in 2024
tasshi
0
160
最近のVS Codeで気になるニュース 2025/01
74th
1
220
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Raft: Consensus for Rubyists
vanstee
137
6.7k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
GitHub's CSS Performance
jonrohan
1030
460k
A designer walks into a library…
pauljervisheath
205
24k
Embracing the Ebb and Flow
colly
84
4.5k
Mobile First: as difficult as doing things right
swwweet
222
9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
52k
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
The Cost Of JavaScript in 2023
addyosmani
47
7.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 ⾒見見てみよう!
質問コーナー