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
640
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.8k
『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
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
1
350
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
210
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
16
13k
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
2
680
バイブスあるコーディングで ~PHP~ 便利ツールをつくるプラクティス
uzulla
1
260
リッチエディターを安全に開発・運用するために
unachang113
1
230
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
430
iOS開発スターターキットの作り方
akidon0000
0
120
型で語るカタ
irof
0
780
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
2
780
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
130
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
6
960
Featured
See All Featured
Writing Fast Ruby
sferik
628
62k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
GraphQLとの向き合い方2022年版
quramy
49
14k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
RailsConf 2023
tenderlove
30
1.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Automating Front-end Workflow
addyosmani
1370
200k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
The Cult of Friendly URLs
andyhume
79
6.5k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
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 ⾒見見てみよう!
質問コーナー