Slide 1

Slide 1 text

2017/08/19(⼟) Open Developers Conference 2017 Tokyo ࠃ࢈ 044্ཱͪ͛ͷ࣮৘ 0OTFO 6*͕ (JU)VCͰελʔΛ֫ಘ͢Δ·ͰͷಓͷΓ ຢ઒ ঘथ !O@NBUBHBXB

Slide 2

Slide 2 text

ࣗݾ঺հ •⼜川 尚樹 (24) • アシアル株式会社(2016年4⽉〜) • Web エンジニア 2年⽬ •Onsen UI (2015年10⽉〜) • Web 系のオープンソース UI ライブラリ • https://onsen.io/

Slide 3

Slide 3 text

σϞʢ0OTFO 6*ͷ঺հʣ https://tutorial.onsen.io/

Slide 4

Slide 4 text

もっと⽇本から OSS が出るといいな OSS を⽴ち上げて 何のメリットがあるの? ͜ͷൃදͷ໨ඪ 発表後 OSS を⽴ち上げたとして、 どうやって伸ばすの? ⾃分も OSS を ⽴ち上げてみようかな?

Slide 5

Slide 5 text

ࠓճ͓࿩͢͠Δ಺༰ I. OSS ⽴ち上げのメリット II. OSS の⽴ち上げ⽅ III. OSS の良い⽴ち上げ⽅ 1. OSS の成⻑指標の洗い出し 2. OSS の成⻑指標のフル活⽤ 3. 他 OSS の成⻑指標の調査 4. OSS の公開 & 成⻑施策の実⾏開始 IV. まとめ

Slide 6

Slide 6 text

044্ཱͪ͛ͷϝϦοτ

Slide 7

Slide 7 text

044্ཱͪ͛ͷϝϦοτ •OSS の開発元は個⼈, 中⼩企業, ⼤企業など様々

Slide 8

Slide 8 text

044্ཱͪ͛ͷϝϦοτ •(1) 広告効果 Google が開発しました 個⼈(Zaharia ⽒)が開発しました

Slide 9

Slide 9 text

044্ཱͪ͛ͷϝϦοτ •(2) テスト⼯数削減 • 欲しいライブラリを⾃作しようと思った時... • 閉じた環境で開発: • 全てのテスト・修正を⾃分たちで⾏う必要がある • ⼿が回らない → そこそこの品質にしかならない • 開いた環境で開発: • ユーザがテスト・修正してくれる → 品質向上

Slide 10

Slide 10 text

044্ཱͪ͛ͷϝϦοτ • まとめ • 個⼈や中⼩企業、⼤企業が こぞって OSS を⽴ち上げる理由は、 (1) 広告効果 と (2) テスト⼯数削減 でほぼ説明できる • 欲しいライブラリは⼿に⼊るし、広告にもなる、 だから開発する • 純粋なボランティアは少数派。みんな⾒返りを求めている!!

Slide 11

Slide 11 text

044্ཱͪ͛ͷϝϦοτ •(↓以前と違った⾒え⽅がしませんか?)

Slide 12

Slide 12 text

࣍ͷεςοϓ • 実際に OSS を⽴ち上げて、伸ばす!! 新OSS

Slide 13

Slide 13 text

044ͷ্ཱͪ͛ํ

Slide 14

Slide 14 text

ࢥߟ࣮ݧ •偉い⼈ 「OSS のメリットは分かった。ウチも公開だ!」

Slide 15

Slide 15 text

ࢥߟ࣮ݧ •偉い⼈ 「OSS のメリットは分かった。ウチも公開だ!」 ↓ 内製していたライブラリを 思い切って GitHub に公開

Slide 16

Slide 16 text

ࢥߟ࣮ݧ •結果: •誰も使ってくれない! • ダウンロード数は 1桁、ユーザからの反応は ゼロ • 何が起こったのか?

Slide 17

Slide 17 text

ࢥߟ࣮ݧ Կ͕ىͬͨ͜ͷ͔ • OSS は公開するだけでは使われない • なので誰も使ってくれなかった • なので OSS ⽴ち上げのメリットも得られなかった • 個⼈や中⼩企業での OSS ⽴ち上げでは 「開発がうまく進まない」問題よりも 「⽴ち上げの時点でコケる」問題の⽅が圧倒的に⼤きい • これは悪い⽴ち上げ⽅。では良い⽴ち上げ⽅とは?

Slide 18

Slide 18 text

044ͷѱ্ཱ͍ͪ͛ํɺྑ্ཱ͍ͪ͛ํ 1 10 100 1000 10000 100000 ユーザ数の伸び 1 10 100 1000 10000 100000 ユーザ数の伸び • メリットが最⼤化される(=ユーザ数が増え続ける)ことが 良い⽴ち上げ⽅として定義できる 広告効果 テスト⼯数 削減

Slide 19

Slide 19 text

044ͷྑ্ཱ͍ͪ͛ํ

Slide 20

Slide 20 text

⾠ ஫ҙ ⾠ •ここからお話しする内容は個⼈的な経験則です • 確⽴された定⽯ではありません • 他の OSS の⽅々が どうやっているかは分かりません

Slide 21

Slide 21 text

044ͷྑ্ཱ͍ͪ͛ํ •Onsen UI で⾏っているユーザ数増加施策: 1. OSS の成⻑指標の洗い出し 何をもって「ユーザ数が伸びた」と⾒なすか、はっきりさせる 2. OSS の成⻑指標のフル活⽤ 「1⽇1回⼿動でチェック」はやめよう 3. 他 OSS の成⻑指標の調査 成⻑した OSS が実際にどういう推移を辿ったのか確認する 4. OSS の公開 & 成⻑施策の実⾏開始 データに基づいて⾏動する

Slide 22

Slide 22 text

<044ͷྑ্ཱ͍ͪ͛ํ> ੒௕ࢦඪͷચ͍ग़͠

Slide 23

Slide 23 text

044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷચ͍ग़͠ •何をもって「ユーザ数が伸びた」と⾒なすか、 はっきりさせる • 正味のユーザ数を⾒積もるのは意外と難しい • 「知っているが使う気がない」ユーザ、 「知っているが今使うタイミングにない」ユーザ、などなど、 ユーザの動態は複雑 • 直感 ダメ、ゼッタイ • OSS の⾒かけの伸びと実態は著しく異なります

Slide 24

Slide 24 text

044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷચ͍ग़͠ •オススメの指標(※経験則です) (1) GitHub スター数 (2) ダウンロード数 (3) API リファレンス の ユニークユーザ数 •その他 • 公式 Twitter アカウント の フォロワー数 • Twitter、Reddit、Hacker News での⾔及数

Slide 25

Slide 25 text

(JU)VCελʔ਺ • 性質 • バズり具合と相関 • 実際のユーザ数との相関は⾮常に弱い • 取得⽅法 • GitHub の stargazers API を使⽤する • Accept: application/vnd.github.v3.star+json フィールドを付加すると 各 star がいつ付けられたのかも取得できる • 備考 • スター数をリポジトリの UU で割ることでスター率も取れる

Slide 26

Slide 26 text

(JU)VCελʔ਺ https://github.com/tensorflow/tensorflow

Slide 27

Slide 27 text

10 100 1,000 10,000 100,000 1,000,000 (JU)VCελʔ਺ ૬৔ײ 伝説 世界的に有名 世界的に少し有名 駆け出し 解説記事が出始める ※分野によってスターの付きやすさは異なります (Web 系は付きやすい)

Slide 28

Slide 28 text

μ΢ϯϩʔυ਺ •性質 • たった今使ってくれているユーザの数と相関 •取得⽅法 • ダウンロードカウンタを仕掛ける • パッケージマネージャが提供する統計情報を使⽤する • 例えば NPM の場合は npm stats microservice を使⽤する •備考 • ⾃動 DL & バージョンアップ によるノイズが混⼊する

Slide 29

Slide 29 text

μ΢ϯϩʔυ਺

Slide 30

Slide 30 text

"1*ϦϑΝϨϯε ͷ ϢχʔΫϢʔβ਺ •性質 • たった今使ってくれているユーザの数と相関 •取得⽅法 • アクセス解析ツールで取得する •備考 • ダウンロード数がうまく取れない場合に有効

Slide 31

Slide 31 text

<044ͷྑ্ཱ͍ͪ͛ํ> ੒௕ࢦඪͷϑϧ׆༻

Slide 32

Slide 32 text

044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷϑϧ׆༻ • 成⻑指標を洗い出しても、そのままでは 「たまに GitHub でスター数を確認して終わり」 「たまにダウンロード数を確認して終わり」 のようになってしまう • 短期的な変化は分かるが、 ⻑期的な変化が分からない • 直感 ダメ、ゼッタイ

Slide 33

Slide 33 text

044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷϑϧ׆༻ • ⻑期的な変化を客観的に把握するために: • 掟 1 必ず時間推移をプロットする • 掟 2 累積値ではなく差分の時間推移を⾒る (=累積値の時間推移は微分する) • 掟 3 移動最⼩値を使う

Slide 34

Slide 34 text

0 500 1000 1500 2000 2500 3000 3500 4000 4500 2014/1/1 2015/1/1 2016/1/1 2017/1/1 GitHub 044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷϑϧ׆༻ •掟 1 必ず時間推移をプロットする グラフ1. Onsen UI の 累積 GitHub スター数 ここで何かが起きたことが 分かる なぜか stargazers API から 得たデータでは star 数が 5000 に 満たなかった…

Slide 35

Slide 35 text

0 2 4 6 8 10 12 14 16 18 20 2014/1/1 2015/1/1 2016/1/1 2017/1/1 GitHub (N=18) 044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷϑϧ׆༻ •掟 2 累積値ではなく差分の時間推移を⾒る グラフ2. Onsen UI の ⽇別 GitHub スター数(+指数移動平均) バズったタイミングが すべて分かる

Slide 36

Slide 36 text

044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷϑϧ׆༻ •掟 3 移動最⼩値を使う ダウンロード数のデータは ノイズが多くて分かりにくい

Slide 37

Slide 37 text

044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷϑϧ׆༻ •掟 3 移動最⼩値を使う 単に平均を取ると ノイズの影響を受ける

Slide 38

Slide 38 text

044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷϑϧ׆༻ •掟 3 移動最⼩値を使う 移動最⼩値を取ると きれいにノイズが消える

Slide 39

Slide 39 text

044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷϑϧ׆༻ •掟 3 移動最⼩値を使う データによっては 対数軸を使うと効果的

Slide 40

Slide 40 text

<044ͷྑ্ཱ͍ͪ͛ํ> ଞ 044ͷ੒௕ࢦඪͷௐࠪ

Slide 41

Slide 41 text

044ͷྑ্ཱ͍ͪ͛ํ r ଞ 044ͷ੒௕ࢦඪͷௐࠪ •例として、⾊々な OSS の ⽇別 GitHub スター数の時間推移を分析

Slide 42

Slide 42 text

044ͷྑ্ཱ͍ͪ͛ํ r ଞ 044ͷ੒௕ࢦඪͷௐࠪ • 最初は理想的な伸び⽅をしているが、途中で崩壊 • 各バズりはリリースのタイミングとは無関係に発⽣ ※とある OSS の⽇別 GitHub スター数

Slide 43

Slide 43 text

044ͷྑ্ཱ͍ͪ͛ํ r ଞ 044ͷ੒௕ࢦඪͷௐࠪ • 最初に⼤きくバズってはいるが、その後の伸びが悪い ※とある OSS の⽇別 GitHub スター数

Slide 44

Slide 44 text

<044ͷྑ্ཱ͍ͪ͛ํ> 044ͷެ։ ˍ ੒௕ࢪࡦͷ࣮ߦ։࢝

Slide 45

Slide 45 text

044ͷྑ্ཱ͍ͪ͛ํ r 044ͷެ։ ˍ ੒௕ࢪࡦͷ࣮ߦ։࢝ • 前準備: • Web サイトの準備 • Retention ⽤媒体 (Twitter アカウント, ニュースレター, ブログRSS)の準備 • ⼀度興味を持ったユーザに「受動的に」情報を得させる媒体を⽤意する • 初期段階: • Reddit, Hacker News での告知 • Hacker News 砲 • Retention ⽤媒体への誘導 • 成⻑段階: • 品質を維持しつつバズり(virality)を稼ぐ • バグフィックスやリリースはバズりには繋がらない

Slide 46

Slide 46 text

·ͱΊ I. OSS ⽴ち上げのメリット • 広告効果 • テスト⼯数削減 II. OSS の⽴ち上げ⽅ • 良い⽴ち上げ⽅と悪い⽴ち上げ⽅が存在 III. OSS の良い⽴ち上げ⽅ 1. OSS の成⻑指標の洗い出し 2. OSS の成⻑指標のフル活⽤ • 時間推移をプロットする、累積値の時間推移は微分する、移動最⼩値を使う 3. 他 OSS の成⻑指標の調査 4. OSS の公開 & 成⻑施策の実⾏開始

Slide 47

Slide 47 text

࠷ޙʹ

Slide 48

Slide 48 text

(JU)VCΞΧ΢ϯτΛ͓࣋ͪͷํ͸ɺͥͻ͝ࢧԉΛʂ https://github.com/OnsenUI/OnsenUI

Slide 49

Slide 49 text

(JU)VCΞΧ΢ϯτΛ͓࣋ͪͷํ͸ɺͥͻ͝ࢧԉΛʂ Thank you for listening!