機略戦記

Maneuver warfare

銀行もAWSもドラえもんも、負荷平準化によってボトルネックを解除する

ドラえもんだらけ」

  • ドラえもんのある回に「ドラえもんだらけ」というエピソードがある。
  • なんの理由だったか忘れたが、のび太の宿題を代わりにやる事になったドラえもんが、タイムマシンを使って「4時間後の自分」や「8時間後の自分」を連れてきて、宿題を手伝ってもらうという話だ。

まあ、このエピソードではドラえもん同士が喧嘩して宿題はスムーズに進まないのだけど、なんとも夢があるエピソードだと思う。
自分の業務も忙しい時期と余裕がある時期に波があるので、未来の自分に業務を手伝ってもらいたいものだ。

銀行という魔法

さて、タイムマシンは存在しないので、未来の自分に業務を手伝ってもらう事はできないが、それに近い仕組みならすでにある。いや、タイムマシンよりももっと凄い効果を持つものが、ずっと昔からある。

それは銀行による貸金である。

例えば、

  • ある会社が1億円かかる大型の設備投資をしたくなったとする。
  • その設備投資により毎年2千万円の追加収入を見込む事が出き、投資は5年間で回収できる予定である。
  • しかし、残念ならが現時点で1億円のキャッシュを準備する事は出来ない。

この話は本来なら「この投資は今は出来ない」となって終了だ。 しかし、ここに銀行が登場して、1億円の貸付を行えば設備投資が可能になる。 まず、お金を借りて設備投資をして、その後、借り入れを返済して行けば良い。

未来に発生する収益に、過去にさかのぼって仕事をして貰う、という事である。

さて、話はこれだけで終わらない。

銀行からの借り入れは、単に投資の後払いを可能にするだけでは無い。

  • もし設備投資に1億円では無く2億円を投じる事で収入も2倍になると言う予測があり、それを銀行も信用するのであれば、2億円を借りる事も出来る。
    • 信用によって収入を2倍に伸ばすことが出来るのである。
  • いや、もっと投資するともっと収入が増える見込みがあるなら、もっと借りる事が出来て、もっと収入を伸ばす事もできるのだ。
  • 信用があれば資本にレバレッジが効くのである。

株式による資金調達も原理は同じである。

「単位期間あたりの投資額が、現時点で持っているキャッシュの額に制約される」というボトルネックを緩めてやる事が、非常に大きなメリットをもたらす事がある。

共通性

さて、「ドラえもんだらけ」と「銀行からお金を借りて行う設備投資」にはどんな共通性があるだろうか。
私はそれを、長い時間の中に負荷を分散(=平準化)させることで、ボトルネックを緩める事だと解釈している。

  • 銀行であれば「今持っている額以上の投資は出来ない」というボトルネックを、後払いによって解除する。
  • ドラえもんであれば「一晩で終わらせる事ができる宿題の量に限りがある」というボトルネックを、未来の自分と作業分担で解除しようとしている。

未来から借り入れを行った場合、利息によって支払う合計額は増えているが、これはボトルネックではないので重大な問題ではない。
未来から来たドラえもんだって、新たな作業負担を被るが、暇なタイミングの自分を呼んでくれば良かったのだ。

ボトルネックを緩めるためには、非ボトルネックは多少は犠牲にして良いのだ。

もっと違った形の負荷平準化

さて、ここまでの議論で「長い時間の中に負荷を平準化させる」ことで物事がうまくいくケースがあり、負荷を平準化させるためには多少の対価を支払っても良いと言うパターンが見えてきた。

このパターンには様々な親戚が居る。

例えば「統計多重効果」だ。

f:id:Shinya_131:20180824081312p:plain (http://www.soi.wide.ad.jp/class/20040021/slides/06/14.htmlより)

これは例えば、AWSのEC2に代表されるクラウドコンピューティングから高い費用対効果を得られる原理だ。

つまり、CPU使用率のピークタイムが異なる様々なコンピューターリソースを束ねることで、CPU使用率の推移を示すグラフはピークが取れてよりなだらかな曲線を描くようになっていく。これは、ピークタイムが異なる物を束ねることでより稼働率を上げる、つまり設備が余すこと無く使い切られた状態に近づいて費用対効果を高める効果が得られる事を示している。

他にもまだ親戚は居る。 例えば「保険」だ。保険は、加入者の内ごく少数に発生する不幸で巨大な負担を、加入者全員が分散して負担する仕組みだ。 1加入者が負担できる負荷の最大値は小さいものだが、それを大人数の加入者で薄める事で、少なくても金銭的影響は最小限に抑える事が出来る。

最大の負荷がボトルネックになる時は、負荷を平準化して散らしてやれば良い。というパターンが見えてくる。

まとめ

  • 「負荷を平準化する」ことで驚くようなメリットが出る事がある。
  • なぜ価値が生まれるかと言うと、負荷の総量ではなく負荷のピーク時の大きさボトルネックになっており、負荷の平準化によってそのボトルネックが緩むからである。

書き残した事

あまり整理出来ていないが、「負荷平準化の逆」というのもあると思う。

これは特に軍事の世界で良く登場している。

例えば、

飽和攻撃 - Wikipedia

または、

アメリ海兵隊のドクトリンに出てくる「戦力を時間的に集中して投下する事で、敵の指揮命令能力をパンクさせる」というのも似たような物だろう。ランチェスター戦略における「局所優勢」の考え方や、「ダンピング」による競合他社の排除もこのパターンに当てはまるかも知れない。

与えた負荷の総量が問題なのではなく、短い時間だけで良いから敵の対処能力を上回る負荷をかけるのが重要という事なんだろう。

「目的に縛られずに無駄なことをやる」

ここから先、しばらくの間、「目的に縛られずに無駄な事をやる」というのをやって行きたいと思う。具体的には何に使えるのかハッキリしない技術をちょこっと試してみたりと言うのを趣味として積極的にやっていこうと思う。

まだ役に立つかどうかハッキリしない技術」というのは「役に立たない技術」とは全く違う。先のことは予測するのが難しいから価値がハッキリしていないだけである。

仕事では、目的を達するための手段として技術を使いたい。 だから、趣味として目的に縛られずに色々やっていこうと言うのが今考えている。それは長期的に見ると仕事の助けにもなりそうだと考えている。

発端

ある日こんなツイートが流れてきた。

slack-redir.net

僕が尊敬(というか畏怖)しているエンジニアの方が、このツイートを見て共感を示した上で、「目的に縛られずに無駄なことをやろう」とつぶやいていたのが結構長いこと印象に残っている。

何かの役に立つのかわからない、小さな技術的な試みや実験の類が蓄積して、ノウハウに転化するのだと。

企業も似ている

自分がいくつかのデータ分析プロジェクト、特にKPIの設計などに携わる上で感じたことがある。

それは、投資に対して、「短期的な価値は予測(定量化)しやすい」のに対して「長期的な価値は予測(定量化)しにくい」という事だ。

※ ここでは「投資」はお金だけじゃなくて、人とか時間とか設備とかの投資を含めた意味で使っている。以降も同じ

例えば、

  • 事業における投資について、既存事業への投資はリターンを予測しやすいが、新規事業へのリターンは予測しにくい。とか。
  • 研究開発では、生産設備研究への投資は原価削減効果としてすぐ現れるが、イノベーションのための研究はどのくらいの収益に結びつくのか予測しにくい、とか。
  • ソフトウェア開発の現場で、新機能の追加が売上に与える影響は予測しやすいが、コードリファクタリングによる可読性の向上はどう収益に結びつくのか予測しにくい。とか

もちろん、新規常業への投資も、イノベーションのための研究も、コードリファクタリングも、長期的に見れば収益を生み得る。予測が難しいだけである。

にもかかわらず、定量的に予測可能な範囲でだけ投資先を決めてしまうと、「長期的に見ると最適では無くなる」という事が起きるのでは無いだろうか。

それにどう対処すべきか

予測可能な短期への投資をしなければ、そもそも長期的に存続できない。 そして、予測できない長期にも投資しなければ長期的に見て最適とは言えない。

思いつく対処策として、「投資可能なリソースの内一定枠を長期投資に回す」と言うのが有り得そうだ。その枠の中では、短期的な収益を目指さなくても良い事にする事で予測困難なものに対して投資が行える。

投資可能なりソースを、

  • 時分割で長期に配分すると: Googleにかつてあったと言う20%ルールや、freeeの「巨匠」制度 ( http://type.jp/et/feature/1468 )
  • 組織で分割して長期に配分すると: 大企業がもつ「基礎研究所」という組織

になるのかなと。

最初の話しに戻る

目先に役に立つ事しかやっていないと、長期的に見て良くない気がしたので、あえてすぐには役に立たない事を練習していこう。

全体最適を行うためには「部分非最適」を受け入れる必要がある

大体の仕事は、いくつかの機械や人、あるいは組織が連携して働いて最終的な成果(製品とかサービスとか)を作る。

このような仕事において、最終的な成果を増やすためには、「改善を行って効果がある部分」と「ない部分」がある事を認識する必要がある。それを分かっていないと改善するつもりで悪化させてしまう事になる。

そのような場合がある事を、いくつかの例とその背後にある原則を使って説明する。

例え話その1: あるパン工場

あるパン工場の生産ラインを想像してみよう。

  1. 小麦粉と水をまぜ、そこにイーストを入れる。
  2. 温めて生地を発酵させる。
  3. パンの形に成形する。
  4. 焼く。
  5. 包装する。
  6. 箱詰めする。

6つの加工機器を経て、パンが完成する一連の工程である。

これらの工程は、以下のように順番に行う必要がある。

1 → 2 → 3 → 4 → 5 → 6

先ほどのパン工場について、1〜6それぞれの工程が処理できる量は異なるものと仮定しよう。つまり、「1. 小麦と水を練る機械は1時間あたりパン110個分の生地を練れる」「4. パンを焼く機械は1時間あたり100個のパンを焼ける」とかだ。

あなたはこのパン工場の生産速度を改善したいものとする。
あなたならどんな基準で改善すべき工程を選ぶだろうか?

さて、このパン工場の1〜6の工程には、改善するとパンの生産量が増える工程と、改善してもパンの生産量が増えない工程とがある。

例えば、2.生地を発酵させる機械が1時間辺り100個分しか処理できないのに、1.小麦と水を練る機械が1時間あたり150個分の生地を練れるようになってもパンの生産量は増えない。2.生地を発酵させる機械の前に発酵待ちパンが積み上がっていくだけである。1時間で150個分練って、100個分しか発酵させられないので、1時間で50個ずつ発酵待ちの生地が溜まっていく。

あるいは、4. パンを焼く機械が1時間あたり120個しか処理できないのに、5. 包装する機械が1時間あたり180個処理できるようになってもパンの生産量は増えない。5. 包装する機械は1時間の内、累計40分だけパンを包装し、残りの時間はパンが焼けるのを待つことになる。

このように、パンの生産量はパン工場どこを改善しても増えるという訳ではないこのような想定の時、パンの生産量を増やすのは、1〜6の中で最も遅い工程に対する改善のみである。

例え話その2: ピクニックに行く小学生達

  • 小学1年生〜6年生までの小学生が1人ずつ、計6人でピクニックに出かけたとする。
  • それぞれが歩く速度は以下としよう。
1年生さん < 2年生さん < 3年生さん < 4年生さん < 5年生さん < 6年生さん
  • ピクニックに出た6人の小学生が皆で一本道を進む時、このピクニック隊が進むスピードはもっとも足が遅い小学生によって決まる。6年生さんが、ちびっこマラソンで3kmを10分で走れる俊足の小学生であっても全く関係ない
  • ピクニック隊全体の速度を上げたい時、いくら6年生さんが歩くスピードを早めても意味が無い。
    • 1年生さん〜5年生さんが置いてきぼりになって隊列が伸びるだけである。
    • 全体のスピードがあるのは、1年生さんが歩くスピードが上がった時だけである。
  • だから、やるべき事は、1番遅い1年生さんの荷物を、その他の小学生さんが肩替わりしてあげる事である。例えば6年生さんが1年生さんの荷物を持ってあげる。こうすれば全体のスピードが上がる。

この時、荷物を肩替わりした6年生さんのスピードは、「6年生さんだけが歩く時」より遅くなるが、それは、全体のパフォーマンスに全く悪影響を与えていない。むしろ、全体のスピードは上がっている。全体を最適するためには部分の非最適を許容しなければならない。

強度と重さ

左右から引っ張られる1本の鎖の紐を想像しよう。「この鎖の強度を決めるのは、鎖の最も弱い部分である。それ以外を強化しても全体の強度は上がらない

ここまで見てきた様々な例のように、「改善した時、システム全体に効果が出るのはボトルネックの部分のみ」という原則に支配される事象を「鎖の強度世界」と呼ぼう。

一方、別の原則が支配する世界もある。例えば「鎖の重さ」だ。これは、全体のどこを重くしても、鎖全体の重さが増す。このような原則に支配される世界を鎖の重さ世界と呼ぶこととする。

大抵の仕事は鎖の強度世界

「鎖の強度世界」「鎖の重さ世界」この違いを産むのは何であろうか。それは、「システムを構成する各要素が連動するかどうか」である。複数の要素が連動して動き、全体として何か役割を果たす。だからそれらの要素の中にボトルネックが生まれ「鎖の強度世界」の原則が働くようになる。相互作用が無ければ「鎖の重さ世界」のように単純な累積によってパフォーマンスが決まる。

大抵の仕事は「鎖の強度世界」の原則に従う、最終成果物を作るまでに複数の物や人が連動しない仕事というのは少ない。

ソフトウェア開発方法論や生産管理への適用

さて、「鎖の強度世界」という世界観に基づいた方法論は様々ある。 (というか、これこそが様々な生産活動の方法論に共通する一般法則なのでは無いかと私は思う)

根本は同じ「ボトルネックへ集中せよ」である。(ただし、「何がボトルネックなのか?」という考え方はぜんぜん違うが…)

「鎖の強度世界」ではボトルネックへの投資だけが価値を持つ。逆に、ボトルネック以外への投資を絞っても全体のパフォーマンスは落ちない。むしろ、ボトルネック以外への投資を絞り、ボトルネックへ再投資することが全体のパフォーマンスの向上に繋がる。

だから、「あらゆる非効率を許さない」というスタンスは、個別最適化であり、全体最適を損なう考え方なのである。

「あらゆる非効率を許さない」というスタンスは、「生地を発酵させる機械が満タンなのにどんどん生地を練る行為」であり、「6年生さんを全速力で走らせる行為」であり、「クリティカルパスを気にしない行為」であり、「価値あるストリーの優先順位を気にしない行為」であり、どうしようもなく間違っている行為なのである。

https://www.amazon.co.jp/%E3%82%B6%E3%83%BB%E3%82%B4%E3%83%BC%E3%83%AB-%E3%82%A8%E3%83%AA%E3%83%A4%E3%83%95-%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%89%E3%83%A9%E3%83%83%E3%83%88-ebook/dp/B0081M7YEE/ref=dp_kinw_strp_1www.amazon.co.jp

相手に合わせて言い方を変える

「ある製品のソースコードのあるモジュールのがクッソ汚くて直さねばならない」という話を、

  • 収支責任者には「機会損失なので直すべきです」
  • PMには「リスク要因なので直すべきです」
  • エンジニアには「技術的負債なので直すべきです」

みたいに言い方を変えて伝えると伝わりやすい。

それぞれに立場にそれぞれのKPI (評価指標) があるので、「相手が重視しているKPIから見てどうなのか?」という情報を伝える。

余談

そもそも、それぞれが立場を超えて全体の最適を考えて行動できると理想的ですね…。 つまり、自分が持つKPIとその他の人が持つKPIについて考え、そのトレードオフを考慮したり、2つ以上のKPIを両立させる方法を考えて行動したい。

冗長性は「無駄」であると同時に「備え」でもある

バナナの危機

バナナはそんなに好きな果物では無かったが、最近良くバナナを食べるようになった。 私達が慣れ親しんでいる種のバナナが近いうちに流通しなくなる可能性があるからだ。なくなると聞くと惜しくなる。

何が原因でバナナが流通しなくなる可能性があるというのか。
原因は「新パナマ病」というバナナの伝染病だ。

バナナがかかる病気とは?|バナナの立役者たち|ドールバナナの歴史を紐解く|バナナはドール

現在、食卓に流通しているバナナには種がない。 もともと、原種のバナナには種があったが、品種改良によって種がほとんどないバナナが開発された訳だ。これが現在おもに流通している「キャベンディッシュ種」という種類のバナナだ。

この種のないバナナは、株分けによって増やされる。交配を行わずに増えるのでクローンみたいな物であり遺伝的多様性が極端に少ない。

だから、単一の病気によって全滅してしまうリスクも極端に高い。
そのリスクが「新パナマ病」という形で現実のものになろうとしている。

前述の通り、今食卓に流通しているバナナは「キャベンディッシュ種」という種類だが、 20世紀中頃までは「グロスミシェル種」という別の種が流通していたそうである。

このグロスミッシェル種というのは、「弾力があって、クリーミー」で現在流通しているキャベンディッシュ種より美味しかったらしいが、パナマ病という単一の病気で壊滅的な被害を受け、現在はほとんど流通しなくなってしまったらしい。

何か出来ることはあったのか

種のないキャベンディッシュだが、種がある原種のバナナと交配することで、数十万本に1粒の割合で種が出来るらしい。このような方法でキャベンディッシュの亜種をあらかじめたくさんの種類増やしておけば、中には新パナマ病に対して耐性があるバナナがあったかも知れない。

しかし、そのような手間をかけてバナナの遺伝的多様性を確保しようとした人は居なかったようである。

バナナの危機と冗長性

株分けで増える種のないバナナは、品質のばらつきが無く効率的に生産できただろう。 つまり、冗長性が無い。そして、その冗長性の無さは単一の病気による全滅というリスクと表裏一体である。

「冗長性は無駄であると同時に備えでもある」という事を実感した。

冗長性が削られていくメカニズム

  • 「効率的に生産できるか?」という短期的な利益についての指標は定量化しやすい一方、
  • 「バナナから遺伝的多様性が失われている状態を放おっておけば、単一の病気による全滅のリスクはどのくらい高まるか?」という長期的な利益(損失)についての指標は定量化しにくい。

遠い未来ほど不確実性が高くなるので、物事全般について「短期は定量化しやすく、長期は定量化しにくい」という原則が働く。

この原則と、数値にもとづいた理性的な意思決定が組み合わさると冗長性はどんどん削られていく。

例えば、バナナ生産企業において、経営陣に対して、以下のような2つの提案が行われたとしよう。

  1. 「バナナの遺伝的多様性を高め病気による全滅のリスクを回避するために、1億本のバナナをすりつぶして1000個の種子を手に入れ、それを育てましょう!!! 『その施策で病気による全滅のリスクをどのくらい減らせるか?』ですって? それは…定量的には何とも言えません。でも、だいぶ良くなるでしょう」という意見と、

  2. 「そんな施策にお金を使うより農場を広くして生産量を増やしましょう。XXXXXドルの投資で生産量が年間X%向上するので、X年で投資がペイできます。」という意見があれば、

数値に基づいて理性的に判断すれば間違いなく後者の意見が選ばれる。 しかし、そうして理性的に判断して冗長性を削っていった結果、バナナは今、全滅の危機に瀕している。

そして、この現象はバナナに限らずどこででもよく起きうる問題である。

まとめ

  • 冗長性は無駄であると同時に備えでもある
  • 短期は定量化しやすく長期は定量化しにくい
  • 数値に基づいて理性的に判断すると、定量化しにくいものは定量化しやすいものより軽視されやすい

以上がそろうと、短期を重視して冗長性を削りまくる事になり、最終的には長期的利益をそこなって破滅する。

数値に基づいた理性的な判断を超える何かが必要である。

人生を改善するには正味作業時間を増やすしかない

年末なので内省的になった*1結果できたエントリです。生暖かい視点でご覧ください。

正味作業とは、作業全体のうち「価値を付与することに貢献した部分」のことである。
これはトヨタ生産方式に含まれる諸概念の内の一つだ。

これは「ボールペンに対しキャップをはめる」という作業を例に、どこが正味作業でどこが正味作業では無いものかを説明した図です。

f:id:Shinya_131:20151225231935p:plain

※ 引用: http://www.chusanren.or.jp/jms/pdf/jms_combook_sample6.pdf

1978年に出版された書籍: トヨタ生産方式では、次のように説明されていた。

  • これからは低成長の時代である。
  • だから原価を減らさねば利益は出ない。
  • そのためには正味作業以外のものをとことん無くしていく必要がある。

そのためのシステムが、「在庫量*2を制約するカンバン」であり、「意思決定を自動化する自働化」であり、「非ピークタイム時の"待ち"が発生しないようにする平準化」である。

この総稼働時間に占める正味作業時間の割合を増やそうとするというアプローチは、製造現場において大変有効であることが分かり、爆発的に普及し、 製造現場を超えてさまざまな領域に適用された。たとえばソフトウェア開発手法であるアジャイルを形作る源流の一つとなった。

なるほど、チームの人数が増えるにしたがってコミュニケーションパスが指数関数的に増え、規模の拡大=リスクとも言えるソフトウェア開発において、この考え方は有効だろう。規模の拡大に強い制約がある状態で産み出せる価値の量を増やす事ができるアプローチだからだ。*3

「規模(総稼働時間)の拡大に強い制約があるケース」についてどんな実例があるか考えていたところ、その一つに 人生 があげられるのでは無いだろうか。というアイディアが浮かんだ。

寿命はアンコントローラブルである。2倍、3倍に伸ばすことなど出来ない。
人生においてコントローラブルなのはその内容だけである。
人生を改善する方法は、その正味作業が占める割合を増やすことしか無いのではないか。

このエントリを書いている時間は人生の正味作業なのか。あの人と会う時間は人生の正味作業時間なのか。会議をしている時間はどうか。あのホットコーヒーを飲んでる時間はどうか。あの本を読んでいる時間はどうか。

そういう視点で自分の行動を点検して無駄を省いていくという事が、今の自分には徹底して不足していると気づいた。

また、何が正味作業なのかを定義するためには何が価値なのかを定義しなければいけない。自分にとって人生の価値とはなんなのか。という問いが発生した。

(以上です。オチはありません。)

www.amazon.co.jp

*1:そもそも年末だけ内省的というのが平準化の観点から見てダメ

*2:在庫は正味でない作業をたくさん発生させる

*3:また、ソフトウェア開発においては、「誰にも使われない機能の開発に工数を割いてしまう」といった過ちが起きやすいという面からもこのアプローチが有効なのだと思われるが略。

エンジニアからデータ分析になって3ヶ月が経った

これは【その1】ドリコム Advent Calendar 2015の21日目の記事です。 前日は、奈良阪さんの研修で新規ゲームアプリをモデルとビューに分けて作ったり色々したら捗った話です。【その2】ドリコム Advent Calendar 2015もよろしくお願いします。


私は、2015年10月から、あるネイティブゲームでデータ分析を担当しています。
2015年10月までは、同じネイティブゲームでエンジニアを担当していました。

本記事は、私がエンジニアからデータ分析へと役割を変えた事によって得た経験を元に、データ分析が何を目的としてどんな事をする役割なのか自分なりに考えた事を説明するものです。

現在エンジニアをしていて「データ分析をやってみたい」と思っている人や、「データ分析って何をやる仕事なの」と思っている人にとって、一つの事例として参考にしてもらえれば幸いです。

なお今回の記事では、弊社内での具体的な分析の事例は触れておりません。 また、ここに書いた内容は、分析チームに所属してまだまだ日が浅い私個人の考えであり、組織の考え方を代表したものでは全くありません。

データ分析はどのような形でチームに貢献できるか?

最初に、データ分析はどのような形でチームに貢献できるのか? という事について私が考えた事を説明したいと思います。

前提

私たちの商品は何か?

ネイティブゲームの開発チームが、お客様に提供している「商品」とは一体なのでしょうか?
私はお客様が得る体感だと考えています。

  • 「敵を、ギリギリのところまで追い詰めながら、あと1歩のところで負けてしまったあの悔しさ
  • 「どうしても欲しかったあの一枚を、ついにガチャから引き当てたあの興奮

こういった「体感」こそが商品であり、ゲームはそれを届けるための媒介です。 本当の商品はゲームをプレイしたお客様の頭の中で生まれていると私は考えています。

データとは何なのか?

「私たちが提供している商品は体感である」という前提に立った時、 データ、またデータ分析はどのような意味を持つでしょうか?

なお、ここで言っているデータとは、日々お客様の行動から生まれるトランザクションデータ(ユーザーデータ)の事を指しています。

データはお客様の仕草

データとはお客様が示す"仕草"であると私は考えています。

とてもざっくりした例ですが、「ゲームからの離脱」という行動を起こしたお客様は、おそらく「良い体感を得ていなかった」のでしょう。

もっと細かく行動を観察すれば、より精緻にお客様がどんな体感を得たのか推測する事ができます。

「お客様が感じた事を推測できる具体的な現象の記録」がデータです。 これはお客様の仕草と言い換えることも出来ると思います。

データはお客様の影

ネイティブゲームは時に膨大な数のお客様に遊んで頂けます。数百万、あるいはもっと沢山のダウンロードを記録しているアプリも中にはあります。

このような膨大な数のお客様が、ゲーム内で毎秒毎秒、様々な行動を取ります。 この全てを把握する事は、人間の認識能力の限界を超えています。

そこでデータが役に立ちます。 例えば、ソーシャルゲームのKPIとして特に有名であるDAU*1であれば、「ゲームにアクセスする」という仕草を示したお客様の数が分かります。

KPIは、特定の視点のみを残し、その他の情報が削ぎ落とされた情報ですが、全体を俯瞰しています。 これは、と言い換える事ができると思います。

別の言い方をすると、把握しきれない全体像に対して、ある関数を適用して次元を落とした写像がデータだと言えるかも知れません。

役割

さて、前述の前提にたったとき、データ分析がチームでどのような役割を果たしうるのかについて考えを述べたいと思います。

作りたかった物が作れたのか知る

本記事ではネイティブゲーム開発チームの商品は体感だという前提を置きました。 体感はお客様の頭の中で発生します。

私たちが何らかの施策を実施した時、作りたかった体感が作れたかどうか? はゲームだけを見ても分かりません。お客様の仕草を観察し、体感を推測し、はじめて推測する事ができます。そのような時にデータ分析は役立ちます。

問題を発見する

もし何のKPIも無ければ、膨大な数のお客様に対してその全員の動向を把握する事は出来ません。

全体像を俯瞰するある視点であるKPIを設定し、それを定常的に観察する事で、全体のどこかに異常が起きた時に気づく事が出来ます。

問題をより解きやすい形に変換する

記事の本論とずれてしまう形の引用であり恐縮ですが、この記事に掲載されていたデータ分析の事例がとても良かったので引用させていただきます。

careerhack.en-japan.com

「直近3ヶ月の売り上げが下がっている」という問題意識は、出発点として望ましいですが、 「直近3ヶ月の売り上げが下がっている。どうしたら良いか?」という問題設定のままでは漠然としていて解くのが困難です。この問にそのまま答えようとすれば「皆で頑張る」と言った漠然とした解しか得られないでしょう。

この事例では、問題の原因となっている事象を発見する事で、以下のように問題を変換していると解釈しました。

  • 変換前:「直近3ヶ月の売り上げが下がっている。どうしたら良いか?」
  • 変換後: 「4ヶ月前オープンした焼き鳥店を中心に競合が増え、1次会の利用が減っているため、直近3ヶ月の売り上げが下がっている。どうしたら良いか?」

変換後の問題設定の方がずっと具体的で有効な解を導けると思います。

アンコントローラブルな変数に対して間接的に介入できる、コントローラブルな変数を見つける」と言い換えることが出来るかも知れません。

得られた知見を貫通させる

「データ分析」という役割は、ある意味でとてもか弱いです。
データ分析で得られた知見は、理解し、活用され、お客様の元に届かない限り価値が無いからです。

成果が出るかどうかが、「 プランナー 、エンジニア、デザイナーなど他の専門家に理解して貰えるかどうか、信頼して貰えるかどうか」に強く依存した役割であると言えます。

そこで、それら他の専門家の方々に、データ分析について良く理解していただける下地を作る事が必要だと考えています。

そのために、データ分析についてチームメンバー全員により詳しくなって貰えるような活動を行ったりすることで、そのような下地の形成に繋がると考えています。

成果は組織の外にしかありません。価値を組織の外まで貫通させなければなりません。

データ分析の道具

よく使われている言語

データ分析ではどのようプログラミング言語が使われているでしょうか?

R,Python,SQL, AWK...色々あると思いますが、

  • SQLtableや、Rのdata.frameのような表に近い形式のデータ構造を扱えて、

  • SQLそのものや、Rのdplyrのようなデータに対してクエリを発効できる機能を持った、

言語が使われるケースが多いように感じます。

また、Rのggolot2のようにデータをグラフとしてプロットする機能が使えると、出来る事の種類がぐっと増えます。

キャッチアップ

プログラミング言語の習得方法として、何か手頃なサイズのプログラムを組んで見る。という方法があります。データ分析についても何か手頃な分析をしてみると未知の言語の使い方が効率的に学習できると思います。kaggleのチュートリアル課題などがお勧めです。

shinya131-note.hatenablog.jp

お勧めの書籍

最後に、データ分析を行ってみたいと考えている方にお勧めの書籍を紹介します。

www.amazon.co.jp

この本は、データ分析の初学者に対して、データ分析についてとても広い視野で解説してくれる本です。

分析の目的をどのように設定すべきか分析の結果をどのように製品に反映するかという前後の工程も含めて解説してくれているとともに、分析その物についての考え方も解説してくれる本で大変参考になりました。

まとめ

  • ネイティブアプリ開発チームが作っているのは、体感という商品です。
  • 体感はお客様の頭の中で発生していて直接知ったり操作したりする事は出来ません。
  • データはお客様の仕草でありお客様の影です。
  • データを分析することで、お客様の体感を推測したり、問題をより解きやすい形に変換したりする事が出来ます。
  • データ分析を通して得られた知見は、使われなければ何の価値も生みません。
  • kaggleはデータ分析のためのプログラミング言語習得の練習として適しています。
  • 「データ解析の実務プロセス入門」おすすめです。

以上です。何かの参考になれば幸いです。


【その1】ドリコム Advent Calendar 2015の22日目はFuyaさんの記事です。

*1:Daily Active Users: ある一日の内にアクティブになったお客様の数。なにをもってアクティブになったと考えるかにはいくつかの考え方がありますが、ここでは単にゲームを起動してくださった方の人数としました