ポケットチェンジのサービス開発秘話

青山新 氏(以下、青山):ポケットチェンジの青山です。今日は「IoT技術を利用したサービス開発の裏側」ということで、ポケットチェンジのこのサービスをどう作ってきたかということをお話しさせていただきます。ここに「美大卒のWebエンジニア」と書いてあるんですけど僕は美大を出ています。

今日はIoTでみなさんけっこうスタイリッシュなInternet of Thingsをやっていましたが、Ioの部分があまりなくてTばかりの発表になっているという感じですがよろしくお願いします。

今日の目的としては「もともとWebエンジニアだったメンバーが、どうやってハードウェアの世界に挑戦して現実世界とつながるプロダクトを生み出していったのか」というところを話していきます。みなさんも言った通り意外と泥臭いということをわかってほしいなということと、自分にもできそうだと思ってもらいたいなと思いまして、あまり難しいことは書かないでゆるい感じでいきます。

「意外と泥臭いのは我々だけ?」とか「自分にできそうと思っている人を採用したいな」という目的があります。

僕は東京芸大の油絵を出ていまして、そのあと「絵はもう無理」みたいになってメディアアートに転向してしまいました。「アーティストになりたいな」とも少し思っていたんですけど、「エンジニアのほうが楽しそう」ということでエンジニアになっています。最近では主にハードウェアやファームウェアまわりなど、この会社のことをほとんど1人でやっているので、これを見ておもしろかったらヘルプに来てほしいなと思っております。あとは代表取締役をやっています。

ポケットチェンジというサービスを知っている人がいるかわかりませんが、いますでしょうか?

(会場挙手)

ありがとうございます。

これは旅行で余った外貨を電子マネーに交換できる端末で、全国の空港駅に50台ぐらい設置してあります。余ったいろんな外貨や日本円も入りますが、ジャラジャラ入れていただくとSuicaやAmazonギフト券に交換できます。

ちょっと映像が古いんですが、イメージを掴むためにこういう感じのものですというものをお見せします。

(動画が流れる)

何でもいいんですが、こうやって機械に小銭をジャラジャラと入れますと、いろんな複数通貨が混じっているのですが、自動的に計算をして、この映像の場合は楽天Edyにチャージして終了、というサービスです。

筐体の構成なんですが、この筐体はだいたい社内で板金で作っています。プリンタだったりここがコインメックですね。コインをカウントする部分です。ここがビルバリで、紙幣をカウントするところです。これは既製品を使っています。ここがコインエスクロというコインを一時保管して返却するのか金庫に落とすのかを選べるデバイスですが、これは自社で作っています。

システム構成なんですが、ほぼWeb技術でできています。まず筐体の中でNUCというPCが動いており、それにChromeが動いてまして、ChromeとNode.JSがWebソケットで通信してNode.JSはUSBでシリアル通信で基板とやり取りをしてデバイスを動かして、Node.JSが同時にREST APIでAWSのほうに行っています。

AWSのほうでポイント交換をしたり決算をしたりしています。使っているのはSORACOMですね。今日はSORACOMさんがいらしていますが、SORACOMさんのネットワークを使っています。

作ったきっかけ

どうやって作っていったのかということなんですが、3年、4年前ぐらいに前の会社が一旦バイアウトして仕事が落ち着いて、「もう1個新しい会社をやりましょう」ということでいろいろ考えていたんですが、いつも旅行でコインが余るので空港でいらないコインを集めて電子マネーに交換したら儲かるじゃないかというアイディアがありました。

普通に窓口でやったら儲かりませんが、キオスク端末だったら運用費が掛からないから利益が薄くても儲けられるんじゃないかと。「運用費が掛からないと思ってた」というやつですが、そういうゆるい考えで始めました。

調べてみると、まずコインを仕分ける部分はそう簡単に作れないでしょうと。そこに行ってしまうとエンジニアとしてはおもしろいかもしれないけど、最初からいくと大変なので、海外のコインを扱える機械を探したんですが、コンラックスという会社の機械なんですが、こういった機械を使うと仕分けられるらしいというのを知って、営業の人を呼んで聞いたところ「これは3通貨しか対応していないです」「こっちは2通貨しか対応していないです」と言われました。

我々は5通貨ぐらい対応しないとマズいよねということで、つないだら5通貨対応になるんじゃないかと。

普通はつながないんですが「つないでもいけるかも」みたいなゆるい考えで始めました。

動作テストからプロトタイプづくりまで

最初に、どういうふうに動くかというテストだけをしています。

調べたらPythonで動くらしいので、まずはGitHubからコードを持ってきてテストをしました。「いけそうかな?」というところですかね。

最初でいけそうということで夢が広がって「こういうのを作っちゃおうぜ!」ということで絵を書いたところです。

ホワイトボードに絵を描いて、実際にCADで3DCGまで作ってやる気満々な感じでいろいろ考えていきました。

これはアルミフレームです。とにかく最初はテストをしないと無理でしょうということで、アルミフレームにいろいろな部品をくっつけて、実際に動くのかどうかテストをテストしました。こういうアルミフレームを一番最初に計画しました。

これなら簡単に寸法を取れるので、アルミフレームで始めようとやっていたのが最初です。

作ったのはこんな感じですね。途中でやる気がなくなって上とかがなくなってますけど。

(会場笑)

「これでテストできるからいいじゃん」ということでアルミフレームにパソコンをくっつけて、ちょっと写真だとよく見えませんが、ここに2つのコインカウントの機械がくっついています。

基盤づくりのあれこれ

次のイメージは何を作らないといけないだろうと考えたときに、まずはここを作らないとコンピュータにデバイスがつながりません。

コンピュータについているのはUSBぐらいしかないのでまずはここを作らないといけないなということでいろいろ調べました。

秋月というお店に行ったらUSBをシリアルに変換できるやつがあるらしいぞということで、いっぱい買ってきて手でユニバーサル基板にくっつけて、会場にも持ってきていますが、機械を作りました。そのあと、もうちょっと良くしようということで、今度はこういう機械を作りました。

これはArduinoというチップで動いています。

ここからは初めての経験で完全に素人だったんですが、基板CADというものをいじったらちゃんとしたものが作れるらしいということを聞いて、基板CADを勉強しようということでいろいろ探したんですが、みんな100万円くらいしました。これは無理かなと思っていたんですが、実はオープンソースでけっこう良いCADが出ていまして、「これを覚えればなんでもできるじゃん」ということで、オープンソースのKiCadというものがオススメです。

みなさんも勉強してみると、こういったものがすぐに作れるようになると思います。

こちらは最近の基板ですね。

基板はずっとKiCadで書いているんですが、これは中国で製造したときの製造チェックシートです。こういった感じでまぁまぁまとまったかたちになってきています。チップはARMのSTM32を使っています。

コインをジャラっと入れるための工夫

では、工夫したところを順番に喋っていきます。旅行の最後にいろいろなコインが手元にあると思いますが、一枚一枚入るか入らないかを考えながら入れていたら疲れてしまうので、いらないコインは全部ジャラっと入れて、あとは忘れたいですよね。

ということで、コインをジャラっと入れるような口を作りたいなということで、いろいろ既製品を探したんですがそんなものはありませんでした。

この部分をどうやって作ったかという話です。

最初は引き出しみたいなやつでコインを中でボロボロ入れて引き出しを閉めてたら中のペリカンの機械に流れるという機構が作れれば、これでもうできたじゃんということでこうしようと思っていたんですが、実際やってみるとボロボロ落ちてしまいます。これは板金業者に作ってもらいました。ただ、手で閉めるんですが……ちょっと開いてるとかですね。

(会場笑)

これではだめです。

次はこちらですね。こちらの機械を板金業者の人と調整しまして、勝手に開いてきてコインを入れると中にコインが落ちる機構にしようということで、これならギリギリサービスできるでしょうということでOKというかたちになりました。

サービスを初めてみたんですが、お客さんは急いでいるのでコインがこういう引き出し型だとジャラと入れ過ぎてしまいます。

大きな瓶を持ってきてギュウギュウまで詰めて思いきり閉めてしまうとすぐにコインが詰まることがあるので、こういうシールを貼って苦し紛れにやっていたんですが、これはちょっと無理そうだということになりました。

現在の姿は駅の自販機みたいになっていまして、この小さいスリットがここでソレノイドで開閉するようになっていて、中にコインをボロボロ投入して、こちらから入り込まれていくというものを作りました。これも全部3Dプリンタでできています。弊社のデバイスは筐体が50台ぐらいしかないので全部3Dプリンタでこういった部分を出力して作っています。

キャンセルの際にコインを返却する仕組み

次にコインの一時受け機です。

これは何なのかと言いますと、コインをジャラジャラ入れた後にいっぱい溜まるんですが、レートが良くなかったりした場合に「キャンセルしたいから返して」ということがあると思います。そのときに大量に入れたことにより一気に返却しないといけない。もしくは金庫に落とさないといけない。

いろんな自販機のデバイスを探したんですが、これほど大量のコインを一気に出したり一気に金庫に入れたりするようなデバイスはどこも売っていませんでした。なので我々が作るしかないという話になりまして、ちょっと考えました。

最初はこれですね。これはカップになっていまして、ここにコインを入れてこっちに回したりこっちに回したりすればできるよねということで、最初に考えました。

次がこれです。

もう少し横側にモーターを移せばサービスができるだろうと。これで実際に少しサービスをやっていました。

最後のやつがこういった筒形にしてコインをこっちに落とすかこっちに落とすかという機械を作れればもっといいんじゃないかということで作ってみました。

次にこの機械を作りまして、これは全部TechShopという場所でアクリルを自分たちで切ってきて、僕たちが作りました。こういった感じでこういったものが実際に機械に入ってしばらく1年ぐらいのスパンで動いていました。

これが現在の姿なんですが、スライドレールのようにしてコインを前後に移せればいいだけじゃんということに気付き、板金業者の人と協力をしながらこういった形のものを作りました。今はちゃんと安定して動くようになりました。

今は国内の空港や駅中や街中に50台ぐらい設置されて運用しています。

オリジナル電子マネーが作れる「ポケペイ」

ちょっと時間があまりないのでサクッといきますが、次に日本円だけのコインを扱うようなサービスも作れるんじゃないかということで、「ポケペイ」というオリジナル電子マネーを作れるようなサービスも作っています。

この筐体技術を使って、スーパーだったりいろんな場所で使えるハウスマネーを簡単に発行できるプラットフォームを作るサービスをやっています。

こういったかたちで決済をできるデバイスを作って、決済ができるような仕組みを作りました。

最初は社内市場みたいな感じでここにQRコードを貼って携帯の決済ができるようにして遊んでいたんですが、やっぱりレジデバイスを作ろうということになりました。

どうしても紙QRコードだと拒否反応があると。「お店が持てる決済機があるといいんじゃない?」という話がありました。「非常に安くできればいいんじゃない?」とか、あとは「田舎のおばあちゃんのお店でも使えるようなネットワークがなくても動いたりしたらいいんじゃないか」、といった案が出て考えていたんですが、さすがに決済機を作るのは無理です。

さすがにそんな簡単じゃないということで一旦諦めていたんですが、弊社の深町というエンジニアが「え? なんで作らないんですか?」みたいなことを言ってきて「じゃあ作るしかない」ということで、仕方なくハードウェア屋さんに見積もりを出したんですが「最低でも3,500万円ですよ」と言われてしまいました。

(会場笑)

無理ですねということで、自分で作りましょうということになりました。

(会場笑)

安く決済機を作る

最初はサポートしたい機能がこういったもので、先ほどクックパッドさんでJWTが出てきて「あ、すごい。同じだ」と思ったんですが、我々もJWTでQRコードを作るようなかたちで、ネットワークなしで動くQR生成機を作っています。このESP32というものを使って先ほどの実装をしていました。

KiCadがけっこう上手になってきたのでサクッとこういうのを出せて、CADもまぁまぁうまくなってきたのでカバーも作って、テストデバイスを作りました。

最近ではもうちょっと良くなってきています。金額を入力するとQRコードが出てきまして決済するとやります。これはNFCのカードエミュレーションに対応していまして、タッチすると決済できます。

ちょっと後ろが見えないんですが、「ありがとうございました」と表示されるので、お店の人も決済があったということがわかるようなデバイスです。このデバイスは非常に安く作れるんですが、そういったものを作りました。

最近では次期バージョンも開発しています。

IoT冷蔵庫やコインの画像認証も

他にもいろいろやっていまして、ちょっとこれは遊びなんですが、「IoT冷蔵庫?」と言ってIoTでもなんでもないんですが、QRコードが出てきてアプリで決済すると先ほどの小さいレジの構造と一緒なんですが、鍵がパコっと開きます。

鍵が開くのでリポビタンDが取り出せます、というおもちゃですね。営業の人に「売れないですか?」と聞いているんですがまだ売れてないです。

(会場笑)

先ほどコインの識別の部分を最初からやったら大変だろうということだったんですが、いい加減そろそろそこもやったらどうだと思って、こういったコインの画像認識と金属認識で分離するような機械を今作っています。こういうものもデバイスにできたらおもしろいなと思って作っているところです。

ちょっと長くなりましたが、ポケットチェンジではこのように泥臭くサービスをつくりたい、何でも作れる「かもしれない」とちょっと勘違いをしているちょっと無謀な人を募集しています! おもしろそうだと思ったらぜひいらしてください。

以上です。ありがとうございました。

(会場拍手)