BLE通信とコンカレントに利用可能な簡易ファイルシステム

Nordic nRF5ライブラリにFDS(Flash Data Storage)という簡易なファイルシステムライブラリがあるのでそれの紹介です。

サンプルコード

https://github.com/ksksue/fds-example

githubのコードでは以下の操作を行うサンプルを用意しています。

  1. 3ファイル書込
  2. 3ファイル検索
  3. 3ファイル削除
  4. 3ファイル検索(NOT FOUND期待)

実行結果

write file_id:0001 rec_key:0001, data:00001234
write file_id:0002 rec_key:0002, data:00005678
write file_id:0003 rec_key:0003, data:00009ABC
found file_id:0001 rec_key:0001, data:00001234 length:1
found file_id:0002 rec_key:0002, data:00005678 length:1
found file_id:0003 rec_key:0003, data:00009ABC length:1
delete file_id:0001 rec_key:0001
delete file_id:0002 rec_key:0002
delete file_id:0003 rec_key:0003
ERROR drv_fds_find(171)  : ErrNo. 10  // 削除した後、検索してもNotFoundエラーとなる
ERROR drv_fds_find(171)  : ErrNo. 10
ERROR drv_fds_find(171)  : ErrNo. 10

FDSを使う背景

IoT製品においてThings側(マイコン)にデータを保存したくなるケースがあります。 ログ情報、ID情報をマイコン側でキャッシュすることでユーザー体感レイテンシを下げ、UXを上げるといったテクニックがありますが、 それを実現するためにはマイコンでしっかりとデータ保存する仕組みを構築しなければなりません。

f:id:photosynth-inc:20170711123448j:plain

そこで立ちはだかる問題としては、まずマイコンにはサーバーやPCのような使いやすいストレージがあるわけではないので256kBほどの容量の少ないFlashを利用することになります。 またBLE通信をベースとすると、BLE通信もFlashアクセスもCPU占有時間が長いため排他処理方法を考慮しなければなりません。 そして、やっかいなのはFlashの書込/イレース10,000回上限がある点です。仮に1日10回ほど同じ箇所に上書き更新するだけで1.5年ほどで寿命がきてしまうという点です。

FDSは、以下の3つの特長をそろえつつ、小さい容量で実装できる優れたファイルシステムライブラリです。

  1. ほどよい検索:データに2種類の数値キー情報を付与することができます。そのキーで検索することができます。組込みにおいてはこれくらいのカンタンな検索性で十分です。

  2. BLE通信とコンカレントに利用可能:nRF5シリーズはBLE通信ができるのが最大の特長ですが、そのBLE通信とFDSはコンカレントに利用可能です。 Flashの書込/イレースは時間のかかる処理のため同時に処理するとFlashアクセス/BLE通信のいずれかを止めることになりますが、 FDSではタスクをペリフェラルに委譲するといった処理を内部でしているため開発者はそこを意識する必要はありません。

  3. ウェアレベリング:書込/イレース回数にかぎりのあるFlashにおいては重要な仕様です。 FDSでは削除しても実際にイレースするわけではなくフラグを立て、ガベージコレクトするときに実際にイレースするといった方法を取っています。

また、ハード的な制約としては2つありますので留意しておきましょう。

  • Nordicのチップにのみ対応(他社のマイコンでは使えません)
  • 内部Flashのみ対応(外部Flash対応にはポーティングが必要)

FDSの仕様

FDSの関数にはいわゆるCRUD(Create/Read/Update/Delete)が用意されていて FDSではwrite/find/update/deleteという名前が付いています。 以下、writeとfind, deleteについて見ていきます。

write

writeでは、データ情報の他に、後で検索するためのfile_idとrec_keyの数値を付与します。

writeのコード例

uint16_t file_id = 1;
uint16_t rec_key = 1;
uint32_t data = 0x1234;
FDS_DPRINTF("write file_id:%04x rec_key:%04x, data:%08x\n", file_id, rec_key, data);
ret = drv_fds_write(file_id, rec_key, &data, 1);
CHECK_ERR(ret);

実行結果

write file_id:0001 rec_key:0001, data:00001234

※ drv_fds_writeはこちらで用意したFDSのラッパーですが、FDSを使うには十分な引数を備えています。

file_idとrec_keyは、範囲が - file_id 0x0000 - 0xBFFF - rec_key 0x0001 - 0xBFFF という以外は制約はありません。重複もOKです。 これら情報は検索のキーとして使われます

dataはワードアライメントのデータ、その長さをワード長で指定します。

find

findのコード例

file_id = 1;
rec_key = 1;
ret = drv_fds_find(file_id, rec_key, &data, &length);
CHECK_ERR(ret);
FDS_DPRINTF("found file_id:%04x rec_key:%04x, data:%08x length:%d\n", file_id, rec_key, data, length);

先程のwriteを実行した後、このコードを実行すると以下の結果になります。

実行結果

found file_id:0001 rec_key:0001, data:00001234 length:1

もし該当するfile_id&rec_keyのファイルが見つからなかった場合は、ret に FDS_ERR_NOT_FOUND ( = 10 )が返ってきます。

delete

file_idとrec_keyを指定して削除します。

file_id = 1;
rec_key = 1;
FDS_DPRINTF("delete file_id:%04x rec_key:%04x\n", file_id, rec_key);
ret = drv_fds_delete(file_id, rec_key);
CHECK_ERR(ret);

実行結果

delete file_id:0001 rec_key:0001

ガベージコレクト

ガベージコレクトを走らせることでFlashから物理的にデータをイレースすることができます。

FDSでは、deleteをしたときにファイルの削除フラグを立てることで論理的に削除しますが実際にFlashをイレースするわけではありません。 つまり、何度もwrite/deleteし続けるとFlash容量がオーバーすることになります。 そうならないよう、定期的にガベージコレクトを実行する必要があります。

サンプルコード内では最後に実行しています。

ret = drv_fds_gc();
CHECK_ERR(ret);

利用する際の注意点

自身のプロジェクトでFDSを使うには以下の点に気をつける必要があります。

softdeviceのsys_evt_dispatchでfs_sys_event_handlerを呼ぶ

fds内で使われているfstorageでsoftdeviceからのコールバックを受け取る処理があります。 fstorageではsoftdeviceに対してflashのwrite/eraseを要求し、その結果がコールバックとして返ってきます。 そのコールバックはsys_evt_dispatchに飛んでくるためfs_sys_event_handlerでそれをキャッチするという仕組みです。

コード上ではsoftdeviceに対してsys_evt_dispatchを登録します。

    err_code = softdevice_sys_evt_handler_set((sys_evt_handler_t)sys_evt_dispatch);
    APP_ERROR_CHECK(err_code);

そのsys_evt_dispatchコールバック内でfs_sys_event_handlerを呼びます。

void sys_evt_dispatch(uint32_t sys_evt)
{
    fs_sys_event_handler(sys_evt);
}

SDK 12以上のFDSを使う

本記事では都合でSDK11のFDSを使っていますが、SDK12にてfds_gcにクリティカルな修正が入っています。 SDK12以上を使うか、SDK11にSDK12のfdsをポーティングすることをオススメします。

まとめ

FDSを使うことでnRF5 BLEマイコン上で簡易なファイルシステムを構築することができます。 FDSはNordicのnRF5シリーズ限定のライブラリではありますがIoT開発において非常に強力なツールになるでしょう。

告知

フォトシンスでは採用を強化しています。 IoT製品に興味のある方はぜひご検討ください。 www.wantedly.com

フォトシンスで社会人インターンが終わりました

前回に引き続いて
株式会社フォトシンスで社会人インターン?をしている(id:kazupyong)です。
本日でフォトシンスでの社会人インターンが終わります。

前回はインターンの経緯を書いたのですが、
今回は実際にインターンで何をやっているのかというのを書こうと思います。

Akerunのアーキテクチャー説明

まずはCTOの(id:kazuph1986)から
Akerunの歴史とAkerun Pro、Remote、ドアセンサー、NFCリーダーなどなど
Akerun本体のハードウェアの仕組みとWebやアプリで使ってるアーキテクチャーの説明と、
実際に鍵が空くまでのフローをレクチャーしてもらいました。

Redashのセットアップ

redash.io

公式だとAMIから起動するのが主流のようですが、
AMIのベースとなっっているのがUbuntuDebian系なので、
管理コスト的に社内のサーバーをAmazon Linux系に統一している関係で
Amazon LinuxにRedashを各種設定して設置することになりました。

設定方法などは公式の以下を参考にしつつ

github.com

ただメンテナンスされていないようなので、
試行錯誤しながらAmazon Linuxでの設定方法をフォトシンス社内Githubにドキュメント化しました。

Redashでデータ吸い出しSQL作成

DB構造をRailsのモデルやER図とか確認しながら1から把握して
社内のプロダクトの人と相談しながらいろいろな抽出したいデータをSQLゴリゴリ書きました。

今後エンジニアやデータアナリストがSQLをForkしてカスタマイズしやすいように
複数のサンプルSQLを書いておいておきました。

f:id:photosynth-inc:20170629151746p:plain

RedashとスプレッドシートとSlackの連携

Redashで作ったSQLデータをAPI経由でスプレッドシートのIMPORTDATA関数で読み取り、
それを定期的にSlackのチャンネルにPOSTするサンプル作りました。
今後KPIとかデータ抽出簡易化と情報共有をカスタマイズしやすいように書いておきました。

カスタマーサクセスチーム用の管理お問い合わせツール作成

カスタマーサクセスチームの電話サポートで
組織名検索→組織に設置されているAkerunの一覧+ログ閲覧など
Redashフォームを活用して最新のDBの値とかエラーログをダッシュボードで一覧表示できるようにしてみました。
まだ運用には乗ってないのですが、今後カスタマイズしつつ使いやすい形で作っておきました。

f:id:photosynth-inc:20170629152144j:plain

リリース前のQAお手伝い

今までWeb系やアプリしか経験なかったのですが、
IoT企業ということもあり実際のデバイスを含めた動作検証は新鮮でした。

Webの管理画面を操作して、アプリから実機を設定して、
実際のデバイスをアプリやNFCカードやボタンなどで操作して
実機動作とサーバーのログを確認するという机いっぱい使いながらの検証でした。

f:id:photosynth-inc:20170629152251j:plain

2週間のインターンを経て

IoTの企業での社会人インターンで、
ハードウェア系を初めてのことばかりの電光石火のような日々でした。

社内の色々な人とコミュニケーションを取ったり、 カフェスペースでランチを一緒に食べたり、自宅で使ってるラズベリーパイの雑談したりと
色々と無理を言った中で暖かく受け入れていただきましてフォトシンスの皆様には感謝です!

おまけ

フォトシンスにはPN制度という超素敵な制度があります。
正社員はもちろん、業務委託でもアルバイトでも社会人インターンでも
フォトシンスメンバー同士での飲み会や食事会の費用を1人あたり1回2000円
月5回まで会社が負担してくれる制度があります。

今週の水曜にその制度を使ってうしごろに焼肉食べに行ってきました!
通常5000円のコースがPN制度で一人3000円で美味しいお肉食べられました。

f:id:photosynth-inc:20170629152322j:plain

フォトシンスでは採用を強化しています!
興味ある人は以下のリンクからどうぞー

www.wantedly.com

フォトシンスで社会人インターンしています

どうもはじめまして 株式会社フォトシンスで社会人インターン?中の(id:kazupyong)です。

民泊やっている会社で働いていたのですが、色々とあり7月いっぱいで辞めることになりまして、
少し時間ができたのでCTOの(id:kazuph)に無理言って国内最大のスマートロックであるAkerunを作っている
フォトシンスにて2週間インターンさせてもらうことになりました。

インターンすることになった経緯

もともと前職のガイアックスで一緒だったという縁もあり 5月某日赤坂での焼肉を食べてたときの会話。

 ハードウェア系って経験ないですけど興味あるんですよー

 うち来ますか?

 次転職する前にフォトシンスでインターンしてみたいです!

 いいですよ!明日からどうですか?

 あざます!また連絡しますねーw

という話を冗談半分でしていたら、
まさかの6月頭に7月いっぱいで会社をやめることが急遽決まって、
エンジニアとプロダクトの方との面接を経て
6/19から6/30までの2週間インターンすることが正式に決まりました。

社内の雰囲気

ロジックボードを10台並べて性能チェックしてる人もいたり、
カスタマーサクセスチームも近く日々お客様の声を間近で聞くことができたり、
鍵というセキュアな物をデジタル化するためにセキュリティーをどう担保するかとか
非常に濃い日々を過ごしています。(もう4日も経ってしまった!)

スマートロックを作ってる会社ということもあってドアのサンプルが複数あったり

f:id:photosynth-inc:20170623143649j:plain

会社内もカフェスペースという広いゆっくりとした空間があり、
ランチやちょっとした社内ミーティングなどコミュニケーション取ることができます。
たまたま昨日は3ヶ月に1度のご飯会というイベントがありまして、飛び入り参加しました。

f:id:photosynth-inc:20170623145325j:plain

あとはお決まりのスタンディングデスクスペースがあったりしてすごい素敵なオフィスです。

f:id:photosynth-inc:20170623143730j:plain

具体的にインターンで何やっているかは次回書きたいと思います!

ちなみにフォトシンスでは採用を強化しているようです。
興味ある人は以下のリンクからどうぞー

www.wantedly.com

Akerun API Hackathon を開催しました

2017/03/04 co-baさんとAkerun API を使ったハッカソンを開催しました。 f:id:photosynth-inc:20170417090142j:plain

コミュニティとテクノロジーを掛け合わせるとどんなことができるだろう?を考えようというハッカソン

co-baさん主催、第一回目のハッカソンにAkerun Pro / Akerun APIを使ってもらいました。

とてもステキなco-ba shibuyaさんのコミュニティスペースでディスカッションがはかどります。

f:id:photosynth-inc:20170417095119j:plain

Akerun Pro を実際触りながら、チームで意見交換しアイデアを練ってもらいました。

f:id:photosynth-inc:20170417094743j:plain

発表会ではAkerun Proの利用履歴APIを使って

  • コワーキングスペース内の混雑状況を遠隔確認
  • 入室中のユーザー一覧を表示。趣味、興味を共有しコミュニケーションのきっかけに。
  • beaconと組み合わせて、在席位置情報と連携

といったおもしろいアイデアがたくさんでてきました。

f:id:photosynth-inc:20170417091951j:plain

Akerunとco-baについて1日真剣に考えた後は懇親会。

f:id:photosynth-inc:20170417091956j:plain

みなさんと未来の働き方など意見交換ができたことがとても刺激になりました。

ありがとうございました!


ロボスタさんに、詳しいレポートを書いていただきました! robotstart.info


Akerunをつくっている株式会社フォトシンスでは、次のをIoTを一緒につくってくれる、エンジニアを募集しています! www.wantedly.com

Akerun Developersサイトもやってます。Akerun APIについては、こちらをご覧ください。 photosynth-inc.github.io

Akerun Proのご購入はこちらからどうぞ! akerun.com

指輪型NFCをスマートロックAkerunの認証に使って気づいたこと

フォトシンス 組み込みエンジニアの @ishturk です。

今日は AkerunPro の認証に NFC ring を運用してみて2ヶ月くらい経ったので、使用感等レビューしてみます。

動機

AkerunPro開発後、スマフォ、SuicaSuica on iPhone7 と運用していました。どれも便利なのですが、得手・不得手がありますね。

そこで僕の脳内に、「ウェアラブルが最強なのでは?」という考えが膨らみ、気がついたら Indiegogoでポチってました。

使ったのはこちら

JAKCOM R3 Instruction

f:id:photosynth-inc:20170129130913j:plain

このリングには、チップが3つ乗っています。 今回はそのうちの、「NFC Module」を使います。 (余談ですが、他の2つもNFCとして使えるみたいですね?)

http://www.jakcom.com/ins/R3/JAKCOM_R3.files/image003.jpg

使ってみる

こんな感じでかざします

f:id:photosynth-inc:20170129132035j:plain

使用感

基本最高です!

pros

  • 身につけているので持ち歩き不要。僕のようなうっかり人間には良いです。
  • 手をかざすので、ポケットから取り出すなどのワンアクションが省ける。ここが特に体験的に気持ちいいです。
  • (おまけ) 手をかざして開けると、後ろの人が おおおおっ とリアクションしてくれる。みんなSF大好きです。

cons

  • 両腕がふさがっている(持ち上げられない)と詰む。NFCカードでも同じですが。スマフォであれば荷物持ちながらも、手元で操作することができました。
  • 指輪が回転してしまうと読み取れません orz。 ここは指輪のデザインで解決したいところですね。ストーンがはいってたりすれば素敵。

その他

  • 一般的なリングに比べて大きいので、手を洗うときなど、ちょっと気になります(リングは防滴です)。
  • 1サイズ大きいものを買ってしまったのでたまにすっぽ抜けて焦ります。サイズ重要。

最後に

今回のお話は

  • 入室しようとしている人が本人であるか

を確認するメソッドのひとつとしてNFCリングをつかってみました。

認証するために何かを持ち歩くという行為は、結局物理鍵を持ち歩く行為に近いので、超えられない体験の壁が一枚ある気がしています。 一方で、指紋などの生体認証は、交換が効かないので、漏洩や損傷時のリスクが大きいです。治安が悪いところでは、認証情報を盗むために指を奪われる、なんていう映画の世界だった事件が現実になるかもしれませんね。

そういった事情から、「とりあえず」個人的には、ウェアラブルが丁度いいとおもっています。

何がベストかは時代を引っ張って追求していきたいですね。

Bluetooth Mesh 仕様まとめ

これまでPoint-to-Pointの接続が主だったBLEですが、そこにMeshネットワークの仕様が加わりつつあります。
ざっくりとですが調べてまとめました。

Bluetooth Meshの特徴

  • 1対1,1対多のメッセージ送信可
  • 他のノードを介してリレー状にメッセージ送信
  • セキュアなメッセージ送信。以下の攻撃に対してセキュア
  • 現行のBLEデバイスでも使える
  • いくつかデバイスを動かしたり動作ストップさせても動作継続
  • 今後のバージョンでも下位互換性を保つ

ネットワーク部分はフラッド型Meshと呼ばれる仕組みで実現されます。

フラッド型Meshとは?

Bluetooth Meshではフラッド型(洪水型)メッシュと呼ばれるネットワークを組みます。

フラッド型メッシュはその名前の通り洪水を起こすがごとくメッセージを伝えます。
仕組みはカンタンで

  1. あるノードがブロードキャストメッセージを投げる
  2. ブロードキャストメッセージを受け取った別のノードがさらにそのメッセージをブロードキャストする

という単純な方法でメッセージを伝達していきます。

例えば、ソースをA、ディスティネーションをNとしたとき以下のようにメッセージが伝達されます。

Aがメッセージをブロードキャストする
Bがメッセージを受け取りブロードキャストする
Cがメッセージを受け取りブロードキャストする
...
Nがメッセージを受け取る

このとき、合わせ鏡のようにB→C→B→C... と反復しないように 同じブロードキャストメッセージを複数回受けた場合には無視します。 すなわち、各ノードは一度受けたメッセージをキャッシュしておき、重複メッセージはブロードキャストしません。

また、データの氾濫を抑えるためにTTL(Time To Live)という仕組みでホップ回数に制限をかけています。

フラッド型Meshの特長

一般的には以下のような特長があるようです

  • カンタン設置:メッシュネットワーク内に設置するだけ
  • ロバスト:あるデバイスがNGでも別デバイスがネットワーク補完
  • スケーラブル:ネットワーク拡大が容易
  • 低消費電力:実装が単純かつ間欠動作で実現可能

Bluetooth Mesh その他機能

サブネット

Meshネットワークはサブネットという仕組みでグルーピングすることができます。
例えば、ホテルの部屋、ホテルロビーを別々のサブネットにする、など。

また、1ノードが複数のサブネットに属することができます。
サブネットにはプロビジョナと呼ばれる認証ノードがいます。
野良ノードはプロビジョナの認証がないとそのサブネットに入ることができません。

セキュア認証

セキュア認証をすることができます。認証はプロビジョナが請け負います。
基本的に各ノードはネットワークキー/アプリケーションキーを持ちます。
複数サブネットに所属する場合は、そのサブネットの数だけキーを持つことになります。

現行品との接続

現行品にはMeshの概念がないのでプロビジョナへ認証依頼するなどはできません。 なので、現行BLEとの間にFriendshipという役割のノードを置きメッセージを仲介させます。

また、Meshの通信方式にはアドバタイズ方式とGATTベース方式の2種類の方式があり アドバタイズ方式は通常Mesh、GATTベース方式は現行品通信に使われます。

その他Meshについて気になる点

以上でざっくりとですがMeshの仕様についてまとめました。
以下はMeshに関して気になるポイントまとめ

Bluetooth Mesh の仕様は Bluetooth 5 仕様公開と同時に発表されている?

No。2017/01/22 現在はBluetooth Meshの仕様は発表されていません。 Bluetooth 5の仕様としてMeshが含まれていると思っていたのですがそうではないようです。

これはBluetooth SIGの仕様策定方法が関係しています。 Bluetooth SIGでは仕様策定の進行をWorking Group単位で区切り進めており
Bluetooth 5 Core Spec.とMeshは独立したWorking Groupで仕様策定が進んでいます。

ちなみに、Meshの仕様策定は「Smart Mesh Working Group」が進めています。

Bluetooth Mesh 1.0.0 はいつ策定されるの?

Bluetooth Meshの仕様はいつ策定されるのかという点が気になりますが、 スケジュールはすでに決められていて、2017/5/31 にAdoptedになるようです。
(2017/01/22 現在 は PS(Prototyping Specification)状態)

ちなみに Mesh Working Group のSub-ChairはBluetooth Low Energy Handbookを書かれたRobin Heydon氏です。
Robin氏の現所属はCSRCSRCSR Meshという独自のMesh技術を持っています。
CSR Meshの技術は追えてないのですが、CSR Mesh ≒ Bluetooth Meshという感じなのでしょうか。

Bluetooth Mesh のドラフトはどこでみれる?

要ログイン
https://specworkspace.bluetooth.com/SitePages/Home.aspx?_ga=1.122059976.2116076828.1479956916#/spec/doc/flat

参考

Bluetooth 5 仕様書
https://www.bluetooth.com/specifications/adopted-specifications

告知

Akerunをつくっている株式会社フォトシンスでは、Railsエンジニアを募集しています! www.wantedly.com

Akerun Developersサイトもやってます。Akerun APIについては、こちらをご覧ください。 photosynth-inc.github.io

そして次のIoTが始まるのです / Akerun Advent Calendar 最終日

この記事はAkerun Advent Calendar 最終日の記事です!

最後の担当はフォトシンスCTOであるkazuphが担当します。

IoTやりたいなぁって漠然と考えている人たちに読んでもらえたらいいなぁと思います。

IoTってなんだよ?からIoTが普通の世の中になってきた

僕達がAkerunというものをつくり始めたとき、まだ世の中ではIoTという言葉は全然浸透してませんでした。

2014年の9月に起業したのですが、そのときくらいに前職の同僚から「もののインターネットだね」と言われて「なにそれ?」って思ったのがきっかけで、調べたら自分たちのようなハードウェアをインターネットにつなげるようなそういう製品のこととIoTと呼んでいるようでした。

そのあと各社が「いやIoTじゃなくて◯◯◯だ」といくつかの似たような言葉が生まれたのですが、今は全然聞かないのと、自分たちと話をしてくれる大手の会社の人たちや周りのベンチャーとかでも特にIoT以外の単語を使ってないし、IoTという言葉自体に対するバズワードだとバカにしたようなニュアンスももう全然ありません。

最近話を聞く人からも「IoTやりたいんですよねぇ」って感じなので、こういうインターネットにつながるハードって意味だと、今現在最もふさわしい呼び方はIoTなのかなと。

あくまで自分の観測範囲だけかもですが、IoTという言葉は一般化したと言っていいかなと思います。

IoTって言葉がある前からあるIoT製品達

「IoTって言葉が流行っているけど、それならうちは10年前からIoTやっていたよ」 みたいな話はよく聞きます。いわゆるユビキタス方面からのものもありますが、 昔から稼働している業務システムなんかでもそうです。

それの代表がプリンターのインクがなくなると勝手に交換してくれるやつ。 管理目線だとすごく便利ですよね?

あと、コンビニにあるネットプリントも僕が就活しているときにはすでにあったので、 5年以上は前の技術ですよね。

これってれっきとしたIoTですが、当時はできて当たり前みたいな感じもありました。 パソコンがネットにつながるのはもっと前から当たり前ですが、プリンターもその延長と見られていたのかもしれませんね。

僕から見ればものすごい大先輩です。

インターネットに間接的につながることも含めてのIoT

Akerunをつくり始めた当初、

「Akerun自体がインターネットにつながるわけではないから、AkerunはIoTではないのでは?」

みたいな話が良くメンバーから上がりました。

「確かに」という思いと、「間接的でもインターネットにつながっているわけだからIoTでいいのでは?」みたいな意見も持っていました。

この辺はもう誰がIoTという言葉を管理しているのか?みたいな感じになってくるのですが、 IoTという言葉が普及できたのも、Akerunというハードウェアがインターネットにつながることになったのも 全部Bluetooth Low Energy(BLE)という技術が登場して、スマホゲートウェイバイスとつながることで、インターネットに間接的につながることが可能になったからでした。

BLEは今でもうちの基盤技術ですし、今後もウォッチしていくべき対象です。

それは、電池駆動のハードウェアをつくる場合において絶対的に無視できない存在だからです。

少なくともBLEの存在がIoT加速させたことは間違いないと思います。

IoTの次を担う通信技術

ただそろそろLow Power Wide Area(LPWA)という新しい規格も市場に出てこようとしています。 安価で小型なWi-Fiや3G/LTEモジュールが出てきている一方、省電力化の解決までには至っていませんでした。 LPWAは省電力かつ超広範囲(数キロレベル)でインターネットに接続できる通信技術です。

LPWAの一つであればsigfoxという基地局に直接つながる規格もありますので、これがあれば省電力駆動だけど、直接インターネットに繋がれるものすごい小型なデバイスも作成可能です(ただし本当に少量のデータ通信のみカバー)。

なので、今後はBLEのウォッチはするがLPWAも合わせて見る必要があるかなと思っています。

IoTの始めやすさ

IoTをするための技術が一般のエンジニアの手の届く範囲になったということが、 一番大きな変化だったと思っています。

  • 安価で柔軟にハードウェアの試作ができる3Dプリンターの存在と、3Dプリンター自体が安価になったこと
  • 省電力で長時間駆動できる無線通信技術(BLEなど)が数百円のチップとして登場し開発ボードも千円〜1万程度と安価、開発環境もだいぶモダンになったこと(Arduino, mbed, Raspberry Pi、Nordic)
  • スタートアップのためにラインを分けてくれる元大手企業請負の工場の存在(うちはここで困らなかったのが大きい)
  • 3G/LTEなどの通信量の価格の低下、IoT用の料金プランなどの新設
  • 大手の社員流出
  • IoTに投資をしたいVCの急増
  • 量産資金を獲得できるクラウドファウンディングの存在

安く始められる技術と資金がある。やっと普通のITベンチャーくらいの規模でスタートできるようになりました(とはいえ量産は…)。

IoTは万能、ではない

IoTをやろう!から発想すると、全然おもしろいことが思いつきません。

やはり課題が重要です。それを解決する方法としてIoTがマッチするならそのとき始めてIoTをやりましょう。

課題型じゃないならよほどVRやドローンの方が発想が広がると思います(娯楽コンテンツの方で発想の拡大が利くので!!)。

IoTは難しい

普通のIT系の製品よりも格段につくるのが難しくなります。

ハードウェアもソフトウェアもというのもあるし、会社として在庫を抱えたり、資金が先に出たり、 必然的にエンジニアの数が多くなったり、、、

またビジネスも既存のモデルにないものなので、攻め方が難しくなります(ITだと月額だけだが、ハードがある分初期費用がほしいが、それだとコンバージョン減りそう、だけどバランスがわからんみたいな・・・)。

それでもIoTは楽しい!

今までやってきたソフトだけ、ハードだけの製品よりも圧倒的に楽しいがIoTです。

何が楽しいかというと「今までなかったものをつっている!」という部分です。

誰しも似たようなものをつくのことに対してはモチベーションが上がらないと思います。

IoTなら全く新しものをつくれる可能性があります。

今までやったことのない新しい領域に飛び込むのならIoTが一番楽しいと思います。

ビジネスもエンジニアリングも。

今後のフォトシンス

フォトシンスという社名にあるように、うちはスマートロックAkerunだけを見据えて会社ではありません。 プラットフォームになることがあるかはわかりませんが、今後も自分たちの解決したい問題をIoTで解決していればと思います。

そして、次のIoTが始まるのです。


Akerunをつくっている株式会社フォトシンスでは、次のをIoTを一緒につくってくれる、エンジニアを募集しています! www.wantedly.com

Akerun Developersサイトもやってます。Akerun APIについては、こちらをご覧ください。 photosynth-inc.github.io

Akerun Proのご購入はこちらからどうぞ! akerun.com