自分のアタマを使わずに、データに頼ることなかれ


ATOMOSでは、製品の開発および技術設計も手がけています。進行中のプロジェクトにおいて、コアな要素の性能が十分でないという課題に悩まされていました。結果的に解消することに成功したのですが、その過程では技術課題へのアプローチについて考えさせられるところがありました。

開発の中で経験したこと

ビッグデータがバズワードになって久しく、データ収集とその分析が様々な問題解決の銀の弾丸として期待されています。今回のような、システム開発の性能上の課題というのは、いかにもデータによるアプローチが有効に思え、実際に様々なデータを集めました。

しかし、得られた結果は、事前の仮説を支持はするものの、特にそれ以上の知見を与えてはくれませんでした。しかも開発中のシステムは多数のコンポーネントから成る複雑なもので、一つの現象を分析するにも多数のポイントでのデータを収集する必要があるということになりました。

僕は、ここで異論を述べました。データを収集しても、「問題がある」とわかるだけだ。それに、システムで性能問題を起こす可能性のあるコンポーネントは一つしかない。だからそこに絞って考えるべきだと。

実はそのような問題が起きそうなポイントも事前に明らかになっており、対策を取っているはずでした。しかし、実際のシステムの挙動にはその対策が反映されているようには見えませんでした。どう考えても対策が機能していないとしか思えない。であれば、考えられる可能性は二つ--使っているコンポーネントにバグがあるか、自分たちの実装にバグがあるか、です。そう考えポイントを絞って調査を行ったところ、原因がわかりました。自分たちのバグでした。その一つのバグを直しただけで、システムは技術的制約条件の中で最高の性能を発揮するようになりました。

データを活用するには、実際に触れてメカニズムを知れ

複雑化する今の世界で、経験や勘だけに頼って仕事をするのは完全なナンセンスです。デザインやサービス運用のような仕事でも、データの分析に基づくエビデンスなしにコミュニケーションや意思決定をすることはもはやありえません。先ほどの例でも、データは問題がそこにあることを確かめる上では有効でした。

一方で、ただやみくもにデータを収集していても、答えにたどり着くことは難しかったでしょう。特定の技術およびそのコンポーネントの特性について理解することで、可能性はゼロではないがほぼあり得ない仮説を先に排除し、必要なポイントに絞って調査することで迅速に対応をとることができました。

データとアルゴリズムに頼るのは、ある意味ではラクなことです。自分のアタマを使わなくても、意思決定の方針が与えられるとしたら。しかし、当たり前のことではありますが、集めるデータや行う分析を決めるのは、簡単な判断ではありません。特に複雑な対象を扱うほど、その対象がどうやってできていて、どのように振る舞うか、というメカニズムの理解がなければ、どう分析すればいいか途方に暮れてしまうことでしょう。

対象に対する情報を集め、対象に触れて動かすことで、はじめて対象のメカニズムを体で理解することができ、結果的にデータも生かすことができる。そんなことを思わされる経験でした。