Upgrade to Pro — share decks privately, control downloads, hide ads and more …

国産 OSS 立ち上げの事情

国産 OSS 立ち上げの事情

Open Developers Conference 2017 Tokyo (2017/08/19) での発表スライドです。
[イベントURL: https://www.ospn.jp/odc2017/ ]

31d309da3b3b96a39108fe77cdc5e7cd?s=128

Naoki Matagawa

August 19, 2017
Tweet

Transcript

  1. 2017/08/19(⼟) Open Developers Conference 2017 Tokyo ࠃ࢈ 044্ཱͪ͛ͷ࣮৘  0OTFO

    6*͕ (JU)VCͰελʔΛ֫ಘ͢Δ·ͰͷಓͷΓ ຢ઒ ঘथ !O@NBUBHBXB
  2. ࣗݾ঺հ •⼜川 尚樹 (24) • アシアル株式会社(2016年4⽉〜) • Web エンジニア 2年⽬

    •Onsen UI (2015年10⽉〜) • Web 系のオープンソース UI ライブラリ • https://onsen.io/
  3. σϞʢ0OTFO 6*ͷ঺հʣ https://tutorial.onsen.io/

  4. もっと⽇本から OSS が出るといいな OSS を⽴ち上げて 何のメリットがあるの? ͜ͷൃදͷ໨ඪ 発表後 OSS を⽴ち上げたとして、

    どうやって伸ばすの? ⾃分も OSS を ⽴ち上げてみようかな?
  5. ࠓճ͓࿩͢͠Δ಺༰ I. OSS ⽴ち上げのメリット II. OSS の⽴ち上げ⽅ III. OSS の良い⽴ち上げ⽅

    1. OSS の成⻑指標の洗い出し 2. OSS の成⻑指標のフル活⽤ 3. 他 OSS の成⻑指標の調査 4. OSS の公開 & 成⻑施策の実⾏開始 IV. まとめ
  6. 044্ཱͪ͛ͷϝϦοτ

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

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

  9. 044্ཱͪ͛ͷϝϦοτ •(2) テスト⼯数削減 • 欲しいライブラリを⾃作しようと思った時... • 閉じた環境で開発: • 全てのテスト・修正を⾃分たちで⾏う必要がある •

    ⼿が回らない → そこそこの品質にしかならない • 開いた環境で開発: • ユーザがテスト・修正してくれる → 品質向上
  10. 044্ཱͪ͛ͷϝϦοτ • まとめ • 個⼈や中⼩企業、⼤企業が こぞって OSS を⽴ち上げる理由は、 (1) 広告効果

    と (2) テスト⼯数削減 でほぼ説明できる • 欲しいライブラリは⼿に⼊るし、広告にもなる、 だから開発する • 純粋なボランティアは少数派。みんな⾒返りを求めている!!
  11. 044্ཱͪ͛ͷϝϦοτ •(↓以前と違った⾒え⽅がしませんか?)

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

  13. 044ͷ্ཱͪ͛ํ

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

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

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

  17. ࢥߟ࣮ݧ  Կ͕ىͬͨ͜ͷ͔ • OSS は公開するだけでは使われない • なので誰も使ってくれなかった • なので

    OSS ⽴ち上げのメリットも得られなかった • 個⼈や中⼩企業での OSS ⽴ち上げでは 「開発がうまく進まない」問題よりも 「⽴ち上げの時点でコケる」問題の⽅が圧倒的に⼤きい • これは悪い⽴ち上げ⽅。では良い⽴ち上げ⽅とは?
  18. 044ͷѱ্ཱ͍ͪ͛ํɺྑ্ཱ͍ͪ͛ํ 1 10 100 1000 10000 100000 ユーザ数の伸び 1 10

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

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

    どうやっているかは分かりません
  21. 044ͷྑ্ཱ͍ͪ͛ํ •Onsen UI で⾏っているユーザ数増加施策: 1. OSS の成⻑指標の洗い出し 何をもって「ユーザ数が伸びた」と⾒なすか、はっきりさせる 2. OSS

    の成⻑指標のフル活⽤ 「1⽇1回⼿動でチェック」はやめよう 3. 他 OSS の成⻑指標の調査 成⻑した OSS が実際にどういう推移を辿ったのか確認する 4. OSS の公開 & 成⻑施策の実⾏開始 データに基づいて⾏動する
  22. <044ͷྑ্ཱ͍ͪ͛ํ> ੒௕ࢦඪͷચ͍ग़͠

  23. 044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷચ͍ग़͠ •何をもって「ユーザ数が伸びた」と⾒なすか、 はっきりさせる • 正味のユーザ数を⾒積もるのは意外と難しい • 「知っているが使う気がない」ユーザ、 「知っているが今使うタイミングにない」ユーザ、などなど、

    ユーザの動態は複雑 • 直感 ダメ、ゼッタイ • OSS の⾒かけの伸びと実態は著しく異なります
  24. 044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷચ͍ग़͠ •オススメの指標(※経験則です) (1) GitHub スター数 (2) ダウンロード数 (3)

    API リファレンス の ユニークユーザ数 •その他 • 公式 Twitter アカウント の フォロワー数 • Twitter、Reddit、Hacker News での⾔及数
  25.  (JU)VCελʔ਺ • 性質 • バズり具合と相関 • 実際のユーザ数との相関は⾮常に弱い • 取得⽅法

    • GitHub の stargazers API を使⽤する • Accept: application/vnd.github.v3.star+json フィールドを付加すると 各 star がいつ付けられたのかも取得できる • 備考 • スター数をリポジトリの UU で割ることでスター率も取れる
  26.  (JU)VCελʔ਺ https://github.com/tensorflow/tensorflow

  27. 10 100 1,000 10,000 100,000 1,000,000  (JU)VCελʔ਺  ૬৔ײ

    伝説 世界的に有名 世界的に少し有名 駆け出し 解説記事が出始める ※分野によってスターの付きやすさは異なります (Web 系は付きやすい)
  28.  μ΢ϯϩʔυ਺ •性質 • たった今使ってくれているユーザの数と相関 •取得⽅法 • ダウンロードカウンタを仕掛ける • パッケージマネージャが提供する統計情報を使⽤する

    • 例えば NPM の場合は npm stats microservice を使⽤する •備考 • ⾃動 DL & バージョンアップ によるノイズが混⼊する
  29.  μ΢ϯϩʔυ਺

  30.  "1*ϦϑΝϨϯε ͷ ϢχʔΫϢʔβ਺ •性質 • たった今使ってくれているユーザの数と相関 •取得⽅法 • アクセス解析ツールで取得する

    •備考 • ダウンロード数がうまく取れない場合に有効
  31. <044ͷྑ্ཱ͍ͪ͛ํ> ੒௕ࢦඪͷϑϧ׆༻

  32. 044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷϑϧ׆༻ • 成⻑指標を洗い出しても、そのままでは 「たまに GitHub でスター数を確認して終わり」 「たまにダウンロード数を確認して終わり」 のようになってしまう

    • 短期的な変化は分かるが、 ⻑期的な変化が分からない • 直感 ダメ、ゼッタイ
  33. 044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷϑϧ׆༻ • ⻑期的な変化を客観的に把握するために: • 掟 1 必ず時間推移をプロットする •

    掟 2 累積値ではなく差分の時間推移を⾒る (=累積値の時間推移は微分する) • 掟 3 移動最⼩値を使う
  34. 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 に 満たなかった…
  35. 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 スター数(+指数移動平均) バズったタイミングが すべて分かる
  36. 044ͷྑ্ཱ͍ͪ͛ํ r ੒௕ࢦඪͷϑϧ׆༻ •掟 3 移動最⼩値を使う ダウンロード数のデータは ノイズが多くて分かりにくい

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

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

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

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

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

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

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

    スター数
  44. <044ͷྑ্ཱ͍ͪ͛ํ> 044ͷެ։ ˍ ੒௕ࢪࡦͷ࣮ߦ։࢝

  45. 044ͷྑ্ཱ͍ͪ͛ํ r 044ͷެ։ ˍ ੒௕ࢪࡦͷ࣮ߦ։࢝ • 前準備: • Web サイトの準備

    • Retention ⽤媒体 (Twitter アカウント, ニュースレター, ブログRSS)の準備 • ⼀度興味を持ったユーザに「受動的に」情報を得させる媒体を⽤意する • 初期段階: • Reddit, Hacker News での告知 • Hacker News 砲 • Retention ⽤媒体への誘導 • 成⻑段階: • 品質を維持しつつバズり(virality)を稼ぐ • バグフィックスやリリースはバズりには繋がらない
  46. ·ͱΊ I. OSS ⽴ち上げのメリット • 広告効果 • テスト⼯数削減 II. OSS

    の⽴ち上げ⽅ • 良い⽴ち上げ⽅と悪い⽴ち上げ⽅が存在 III. OSS の良い⽴ち上げ⽅ 1. OSS の成⻑指標の洗い出し 2. OSS の成⻑指標のフル活⽤ • 時間推移をプロットする、累積値の時間推移は微分する、移動最⼩値を使う 3. 他 OSS の成⻑指標の調査 4. OSS の公開 & 成⻑施策の実⾏開始
  47. ࠷ޙʹ

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

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