RAKSUL TechBlog

ラクスルグループのエンジニアが技術トピックを発信するブログです

ColaboratoryでMVPを作る

RAKSUL Advent Calendar 2021の22日目を担当する五百井(いおい)です。

ノバセル事業本部でデータサイエンティストをやっています。

本日は業務での経験から、ColaboratoryによるMVPの作成について書きます。データサイエンスとビジネスを結びつける内容であり、ColaboratoryやMVPといった用語を知らない方にも楽しんでもらえると思います。

Colaboratoryとは

ColaboratoryとはブラウザからPythonを記述、実行できるGoogleのサービスです。

Pythonに限らず、プログラミング言語を書いてプログラムを開発するにはローカルPCやサーバに開発環境を構築しなければなりません。構築には時間がかかることや、ITエンジニアでなければ難しい作業が発生することがあります。また、異なるPCやサーバで構築された開発環境は、たとえ同じ言語に関するものであっても、OSやソフトウェアのバージョンなどに微妙な違いがあり、ある環境で開発したプログラムが別の環境で動かないこともあります。

Colaboratoryを使えば、環境構築をする必要がなくなり、Googleが統一的に管理しているので開発者によって環境に差異が生まれることもありません。しかもGoogleのアカウントさえ持っていれば無料で使えます。また、Pythonはデータサイエンス分野でよく使われる言語ですが、NumPy、pandas、scikit-learnといった定番のデータサイエンス関連パッケージはインストール済みですし、必要に応じてパッケージを追加することももちろん可能です。

なお、ブラウザでプログラムを実行して結果が即座にブラウザに返ってくるUIをノートブックと言います。実験ノートのように実行結果を記録しておいたりメモを添えたりできるためこのように呼ばれます。ColaboratoryのUIは有名なノートブックのJupyter Notebookとほぼ同じです。環境構築なしで使えるJupyter Notebookといってもよいでしょう。

MVPとは

事業開発におけるMVPとはMinimum Viable Productの略で、必要最小限の機能を備えたプロダクトのことです。とくにスタートアップにおける事業立ち上げでよく使われる概念です。

たとえば、自動車をゼロから開発するとします。エンジン、ブレーキ、車体、車輪、ハンドル、センサなど、数多くの部品とそれらを組み立てる技術が自動車の開発には必要であり、完成には長い時間を要します。当然、完成するまで自動車に乗って移動することはできません。

一方、事業における自動車開発の目的が移動手段の提供だとすると、イラストのように簡易な移動手段をまず作れば顧客にすぐに使ってもらえます。また、早い段階で顧客から得たフィードバックを自動車に反映できます。ここでの簡易な移動手段がMVPであり、アイデアを思いついてからすぐにサービスを提供できる、完成品が顧客のニーズからかけ離れたものにならないといった利点があります。

※イラストは「Making sense of MVP」(https://blog.crisp.se/2016/01/25/henrikkniberg/making-sense-of-mvp) より引用

なぜColaboratoryでMVPを作るのか

データサイエンティストやAIエンジニアと呼ばれる職種の人は、人間には複雑すぎてできない問題を解いたり、人間がやるとものすごく時間がかかる作業を一瞬で完了したりする数理モデルやアルゴリズム、いわゆるAIを開発します。我々ノバセルが属するTVCM業界だと、たとえば広告主の要望を入力すると出稿すべき番組の最適な組み合わせを出してくれるウェブサービスがあれば便利でしょう。数理モデルやアルゴリズムの開発には試行錯誤がつきものなので、インタラクティブなプログラミングができるノートブックでの開発が好まれます。

一方、数理モデルやアルゴリズムが完成してもすぐにウェブサービスとして使ってもらえるわけではなく、実装をしなければなりません。既存の機能に影響を与えることなく、数理モデルやアルゴリズムによる新機能をサービス上に載せるには、データサイエンスとはまったく異なるエンジニアリングの技術が求められ、相応の時間がかかります。

ここで新機能の提供を素早く開始するのにColaboratoryでMVPを作ることが考えられます。前述の例に倣うと、広告主がブラウザへの入力だけで番組の組み合わせを得られるサービスが完成品だとすると、広告主がメールやSlackで要望を送信すると担当者から番組の組み合わせが返ってくるサービスがMVPとして考えられます。Colaboratoryごとプログラムを渡し、簡単な操作マニュアルをつければ、プログラミング経験がない担当者でもプログラムを実行してサービスを提供できます。データサイエンティストは開発に使ったColaboratoryを特別に書き換える必要がありません。

ちなみに、MVPを提供する際に最終的に自動化したい処理を人間が済ますことを「オズの魔法使い」と言います。

気をつけるべき点とおわりに

ただし、Colaboratoryはプログラミングを知らない人が動かすことを想定したものではなく、書かれたプログラムが書き換えられないように保護することもできません。操作ミスなどでプログラムが動かなくなってしまう危険性があります。また、Colaboratoryを動かすだけでサービス提供できるとはいえ、広告主の依頼を受領してからアウトプットを送信するまでのオペレーションコストがかかっているので、速やかに正式なウェブサービスへ移行することが期待されます。

最後に個人的な実感に基づく話なのですが、データサイエンティストはプロダクトをガリガリ開発するようなエンジニアでもなければ、営業をはじめとするビジネス職でもなく、ともすれば組織で中途半端な立ち位置に陥ってバリューを発揮できなくなる不安定な存在だと思います。両者のギャップを乗り越えてデータを活用しビジネスに貢献するには、組織編成からコミュニケーションスキルにいたるまでさまざまな観点からの方法がありますが、本日のお話もその一助になれば幸いです。

参考