新規事業のIoTプロダクト開発に必要なこと【連載:クックパッドマート開発の裏側 vol.5】

クックパッド 買物事業部の篠原 @shanonim です。社内の新規事業「クックパッドマート」でエンジニアをやっています。

このエントリは、連載シリーズ【連載:クックパッドマート開発の裏側】の第5回目です。本日が最終回となります。 以前のエントリはこちらからご参照ください。

今回はクックパッドマートのIoTプロダクト開発について、開発の概要、これまでの歴史、そしてプロダクトのこれからについてご紹介したいと思います。

このエントリに書いてあること

  • クックパッドマートについて
  • IoTプロダクトの開発経緯
  • 開発の歴史
  • 開発を通して得た学び

このエントリで紹介しないこと

  • IoTプロダクトを構成する個々のデバイスに関する詳しい説明

クックパッドマートの仕組み

クックパッドマートは、生鮮食品に特化したECサービスです。 商品を自宅に直接届けるのではなく、マートステーションと呼ばれる生鮮宅配ロッカー(冷蔵庫)に商品を配送します。
マートステーションは街の様々な場所に設置されており、ユーザーは自分の注文した商品を自分で取りに行くことができます。

f:id:shanonim:20190412174027j:plain
クックパッドマートの仕組み

クックパッドマートのIoTプロダクト

現在、クックパッドマートには大きく2つのIoTプロダクトがあります。

一つは、上図「② 商品の準備」に必要なラベルプリンターです。 こちらについては、2019/4/10に投稿された @imashin_ の記事に詳しい説明があります。

techlife.cookpad.com

もう一つは、上図「④ 商品の受け取り」に関連するスマートロックです。 クックパッドマートのアプリからマートステーションの鍵を操作することで、商品を受け取るユーザーだけがマートステーションにアクセスできる仕組みを作っています。

f:id:shanonim:20190412174146j:plain:w400

このエントリでは、スマートロック開発についてご紹介します。

スマートロックの必要性

マートステーションには大きく、

  • 有人ステーション
  • 無人ステーション

の2つの形式があります。
前者は、街なかのドラッグストアや酒店・カラオケ店など、有人店舗の店内に設置されています。現在オープンしているマートステーションはすべて有人ステーションです。

これに加えて、よりユーザーにとって便利な選択肢を増やすために計画しているのが無人ステーションです。

  • 例えば、駅の構内に無人ステーションがあれば、帰宅途中に最寄り駅で生鮮食品をピックアップすることができます。
  • 例えば、マンションの共用部に無人ステーションがあれば、建物の外に出なくても食品を受け取ることができます。

無人ステーションが解決しなければいけない問題の一つに、セキュリティ問題があります。 有人監視のない無人ステーションの場合、悪意ある第三者による商品へのいたずらや盗難といったリスクを否定できません。「特定の人だけがマートステーションにアクセスできる」仕組みが必要です。

そこで、無人ステーションの本格的展開に先駆けて、マートステーション向けのスマートロックを開発することになりました。

開発の方向性

初めからスマートロック付きの冷蔵庫を買ってきて導入できれば話は早いのですが、私たちのニーズにマッチした商品はなかなか見つかりませんでした。 そこで、既存の冷蔵庫を改修してスマートロックを開発することにしました。

f:id:shanonim:20190412174328j:plain
スマートロック実装前のマートステーション

改修と言っても勝手に冷蔵庫を分解して改造することはできません。
今回の開発は冷蔵庫を分解・改造せずに、スマートロックの機構だけを外付け実装するという条件で進めています。

スマートロックの仕組み

鍵の仕組みと一言で言っても、世の中には様々な方法が存在します。物理鍵を鍵穴に差し込んで回すもの、ダイヤル式の番号を合わせるもの、カードをかざして開け閉めするもの...
マートステーションに必要な鍵の条件は、次の2つでした。

  • 遠隔で操作できる仕組みが作れること
  • 物理的な施錠能力が高いこと

条件に合う仕組みを探した結果、電磁錠に辿り着きました。

f:id:shanonim:20190412174434j:plain

電磁錠は、電磁石の特性を利用した鍵です。金属と電磁石を重ねて設置して通電すると、磁石の力でロックされます。 (通電時施錠型と通電時解錠型がありますが、マートステーションでは前者を使用しています。) 通電状態を遠隔でコントロールできれば、施錠状態をコントロールすることができそうです。
また、物理的な施錠能力も非常に高く、大人が思いっきりドアを引っ張ってもビクともしないくらいの強度があります。

スマートロックは、この電磁錠を中心として開発が進められています。

開発の歴史

現在進行中の開発も加え、これまで5つのプロトタイプを製作してきました。それぞれの世代にはコードネームとして貝の名前がつけられています。(貝の甲羅が開いたり閉じたりする様子が鍵の開け閉めを連想するという @_litmon_ のアイディアです。)

第一世代: シジミ

f:id:shanonim:20190412174717j:plain f:id:shanonim:20190412174642j:plain

鍵の制御用デバイス 鍵の切り替え用デバイス
電磁錠(通電時施錠型) M5Stack Grove - Dry-Reed Relay

冷蔵庫の上部に電磁ロックを取り付けています。アプリからインターネットを介して制御装置(M5Stack)に解錠コマンドを送ると、冷蔵庫の扉を開けることができます。

課題

  • 熱問題: 電磁錠を連続可動させると、本体が熱を持ってしまう問題がありました。機器が壊れるほどの温度ではありませんが、連続稼働に不安があります。
  • 耐久性: 鍵自体の耐久性に問題がありました。鍵がかかっていることを知らずに冷蔵庫の扉を開けたユーザーが鍵を壊してしまう事件がありました。

第二世代: アサリ

f:id:shanonim:20190412174743j:plain f:id:shanonim:20190412174801j:plain

部品構成は第一世代と同じですが、電磁錠の設置場所を冷蔵庫上部から冷蔵庫内部に変更しています。 これにより、前世代の熱問題を解決することができました。

課題

  • 耐久性: 冷蔵庫内部に固定した電磁錠が時折ずれてしまい、うまく鍵が閉まらない事象が頻発しました。

第三世代: ハマグリ

f:id:shanonim:20190412174830j:plain

第三世代では、電磁錠の設置場所が冷蔵庫下部に変更されています。 冷蔵庫の製造メーカーに設置方法を相談したり、スマートロックの先行事例を研究したり、様々な試行錯誤の末にようやく落ち着いた仕様でした。

第四世代: ホタテ

f:id:shanonim:20190412174903j:plain:w400

現在マートステーションの一部で稼働しているスマートロックは、この第四世代です。 この世代では、物理鍵以外のデバイスを刷新しました。

鍵の制御用デバイス 鍵の切り替え用デバイス
電磁錠(通電時ロック型) Androidタブレット スマートプラグ

鍵の制御用デバイスの刷新

これまで鍵の制御に使っていたマイコン(M5Stack)には2つの課題がありました。

  • 安定性: 長時間の連続稼働が難しく、物理的な故障リスクが高い。
  • 視認性: 前面のディスプレイが小さく、鍵がかかっているのかいないのか分かりにくい。

これらを解決するために、マイコンをAndroidタブレットに変更しました。

鍵の切り替え用デバイスの刷新

これまで、物理鍵の制御(電流の制御)は自分で手作りしたデバイスを使っていました。動作的には問題ないのですが、一般的に市販されているデバイスと比べてみると、安全性や耐久性にやや不安が残ります。

f:id:shanonim:20190412174931j:plain:w600
手作りしていた鍵の切り替え用デバイス

そのため、このデバイスを市販のスマートプラグに変更しました。

第五世代: サザエ

第五世代は、現在開発中の次世代プロダクトです。 デバイスの耐久性をより強固にしたり、プロダクトの状態を外部から常時監視できる仕組みを作りたいと思っています。

新規事業のIoTプロダクトの開発に必要なこと

アイディアを片っ端から試す

今回のスマートロック開発では、プロトタイピングのために必要な資材を買って、試して、ダメなら壊す、を高速で繰り返してきました。 日々手探りの連続ですが、思いついたアイディアを片っ端から試していくことが大切です。
思いついた時点では微妙だなーと思うアイディアも、実際に作ってみると案外悪くなかったり、逆にこれでいける!!と思ったアイディアも作ってみるとダメだったりします。
初期の開発においては「雑でもいい、まだプロトタイプなんだから」と割り切ってとにかく手を動かして学びを得ていくのが一番の近道だと思います。

実際に使ってもらう

実際にプロトタイプが形になったら、とにかくいろんな人に使ってもらうことをおすすめします。 これはソフトウェアのサービス開発におけるユーザーインタビューと同じ概念かもしれません。

マートステーションはクックパッド社内にも設置しており、スマートロック開発の際はここを物理ステージング環境として使いました。

f:id:shanonim:20190412175017j:plain

今もユーザー(クックパッド社員)に意見をもらいながら、日々改善を繰り返しています。

まとめ

マートステーションのスマートロック開発を通して得た「IoTプロダクト開発に必要なこと」をご紹介しました。 最初から完璧なIoTプロダクトを作ることはほぼ不可能です。仕様の検討や実装に時間がかかってしまうため、現実的ではありません。
必要なのは、「次世代版までの時間を稼ぐ現世代版を開発する繰り返し」だと思っています。

  • まずは1~10個世代を作る
  • その世代での学びを、次の10~100個世代の開発に活かす
  • さらにその先の運用に耐える100~1000個世代世代を開発する

現在のマートステーションもまだ完成形ではありません。これからも着実かつ高速に、この繰り返しを続けていきたいと思っています。

cookpad mart Meetup

このエントリでお伝えしきれなかった技術的な話やもっと深い話を、4/24に開催されるミートアップでご紹介する予定です。 cookpad.connpass.com

ご興味のある方はぜひご応募ください!

/* */ @import "/css/theme/report/report.css"; /* */ /* */ body{ background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527163350.png'); background-repeat: repeat-x; background-color:transparent; background-attachment: scroll; background-position: left top;} /* */ body{ border-top: 3px solid orange; color: #3c3c3c; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; line-height: 1.8; font-size: 16px; } a { text-decoration: underline; color: #693e1c; } a:hover { color: #80400e; text-decoration: underline; } .entry-title a{ color: rgb(176, 108, 28); cursor: auto; display: inline; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; font-size: 30px; font-weight: bold; height: auto; line-height: 40.5px; text-decoration: underline solid rgb(176, 108, 28); width: auto; line-height: 1.35; } .date a { color: #9b8b6c; font-size: 14px; text-decoration: none; font-weight: normal; } .urllist-title-link { font-size: 14px; } /* Recent Entries */ .recent-entries a{ color: #693e1c; } .recent-entries a:visited { color: #4d2200; text-decoration: none; } .hatena-module-recent-entries li { padding-bottom: 8px; border-bottom-width: 0px; } /*Widget*/ .hatena-module-body li { list-style-type: circle; } .hatena-module-body a{ text-decoration: none; } .hatena-module-body a:hover{ text-decoration: underline; } /* Widget name */ .hatena-module-title, .hatena-module-title a{ color: #b06c1c; margin-top: 20px; margin-bottom: 7px; } /* work frame*/ #container { width: 970px; text-align: center; margin: 0 auto; background: transparent; padding: 0 30px; } #wrapper { float: left; overflow: hidden; width: 660px; } #box2 { width: 240px; float: right; font-size: 14px; word-wrap: break-word; } /*#blog-title-inner{*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-position: left 0px;*/ /*}*/ /*.header-image-only #blog-title-inner {*/ /*background-repeat: no-repeat;*/ /*position: relative;*/ /*height: 200px;*/ /*display: none;*/ /*}*/ /*#blog-title {*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527172848.png');*/ /*background-repeat: no-repeat;*/ /*background-position: left 0px;*/ /*}*/