思いついたのでメモ
データ分析基盤を立ち上げるとほぼ間違いなく今までスプレッドシートで計算していた指標の計算をデータ分析基盤に引っ越すタスクが発生します。 これを実施すること自体は妥当でやるべきだとおもいます。 一方で、これは思っている10倍くらいは時間がかかるし場合によってはゼロから作り直したほうが早いくらいには大変な仕事になります。 なぜこのような問題が起きるのでしょうか? これは一般的な社内システムの開発と非常に似た問題を抱えています。
このタスクの目標は今までスプレッドシートなどでやっていた指標の計算を新しくできたデータ分析基盤上で計算することです。 シートの計算をSQLに置き換えるような作業だとおもってください。 指標はたとえば売上やアクティブユーザ数、広告の各種指標、プロダクトの指標といったものです。 あくまでも今まで計算されていたものであり今も定期的に更新して使っている指標です。
実際にスプレッドシートからデータ分析基盤へ引っ越しをしようとすると思わぬところでとにかく時間がかかります。 その問題は一言でいってしまえば仕様がわからないから迅速に実装できないという問題に尽きます。
詳細な仕様がわからない、といわれるとそんなバカなと思う人が多いのではないでしょうか。 実際にシートで計算されているならば計算を見ればいいですし、データを使っている人がいるならば仕様を把握しているはずです。 しかし、実際に実装に着手すると驚くほど仕様がわかりません。
なぜ仕様がわからないのでしょうか? これは全体を正確に把握している人がいないことが大きな原因の1つです。 指標を使っている人は大まかな仕様は理解していますが具体的に細かい部分を把握していないことがあります。 理由はさまざまですが「シートの計算を作ったのは昔だから忘れてしまった」「前任者から引き継いだので詳しくは知らない」あたりはよくあるケースです。
細かい部分について担当者が理解していないのであれば実装を見るしかないので当然時間がかかるようになります。 ただでさえ、実装者は計算の内容を理解していないので時間がかかってしまうのですがそれに加えて「そもそもシートが見やすいものになっていない」「計算が見やすいように書かれていない」「関係ない計算が紛れ込んでいる」…といった問題によってシートから処理の内容を読み取ることは簡単ではありません。 読み解くのは思っているよりもかなり時間がかかります。
ほかにも「データ抽出部分はエンジニアに任せたからわからない」というケースは頻発します。 この場合はそのデータ抽出を実装した人を探して仕様を確認する必要がでてきます。 似たようなケースとして「他のシートの数値をコピペしているからわからない」という場合もあります。 こうなると他のシートの仕様を理解する必要があり数珠繫ぎのように仕様が膨れ上がっていきます。
シートをまたいだ計算や前処理としてシートにはないスクリプトで計算しているような場合は処理があちこちに分散されるため処理の内容を把握することが困難になっていきます。 シートの計算をたどっていくと、いきなり計算ではなく数値がベタっと貼られた箇所が現れたりします。 つまり、どこかで計算した値をコピペしているのです。 こうなると、どこからきた数字なのか担当者に聞くしかありません。 1つのシートに集約されていない場合はどこからきたデータなのか担当者しか知ることができませんので、そこにぶつかるたびに担当者に問い合わせて確認する必要がでてきます。
単純な話ですが、関係者が増えれば増えるほど情報を整理する難易度と手間は増加します。 1つの指標の計算と言いながら何人にも確認しなければ仕様がわからないようであれば、そしてそれがいくつもあれば仕様の確認だけで莫大な時間を費やしてしまうことは想像できるでしょう。
また、担当者の理解を正しく実装者に伝えることも簡単ではありません。 仕様を100%伝えることは一般に難しい問題です。 だいたいで考慮や伝える内容に漏れが生まれます。 シートの計算と担当者の認識がズレることも起きます。 そうなると仕様通りに計算しているのに計算が合わずに原因追求し、考慮漏れであることを発見し修正する手間が発生します。
「すでに存在するシートの計算を移植するだけなのになぜこんなに時間がかかるのか?」と不思議に思うかもしれません。 実際はこのようにして小さなコミュニケーションコストが何重にも積み重なることで全体として引っ越しの工数が膨らんでしまいがちなのです。