スマート家電やIoT系技術が乱立している昨今、落ち着いてアプリ開発に取り組むのは意外に難しいことです。現在ですらたくさん存在するデバイス、それらを動かすためのAPIの勉強で手いっぱいになってしまいます。これからもっといろんなものが出てくると容易に予想できるのに、それら全部学ばないといけないんでしょうか。そんなことをやっていたら、僕の過去5年のように、肝心のアプリのアイデア出しに費やす時間が無くなってしまいます。
また、スマートハウス応用のキーテクノロジーの一つが人工知能ですが、データをたくさん持っているもの勝ちの様相を呈しており、そんじょそこらの大企業でもGoogleに勝てる気が全くしません。
しかも、家電やセンサーログをよく見ると、かなりプライバシー的にやばそうな情報が含まれているんです。それなのに、今はそういったデータに対する規制はほとんどなく、ユーザーから見たら個人情報取られ放題の状態になっているのです。こういった情報は、吸い上げた企業がビジネスに使います。Googleで言えば、ユーザーのプロファイリングを行ったうえでピンポイントに広告枠を提供してお金に換えます。プライベートな情報がわかればわかるほどビジネスになるといっていいと思います。
もちろん僕らは規約に同意しているので、各社に文句を言えた義理ではないのですが、漠然とした不安は残ります。結局は相手を信頼するかどうかです。僕はGoogleを一応信頼していますが、自分の情報がどう扱われているのかわからない、まるで名医ではあるが、詳細は説明してくれない先生の手術を受けているような気持ちになります。
今はまだ命にかかわるような深刻な問題が起こっていないので規制が後手に回っている面もあると思いますが、もしライフログデータの危険性が明らかになるような事故が起こったら、規制もどんどん厳しくなる可能性もあります。
オープンソースへの期待
こういった状況を打開する一つの手段がオープンソースだと思います。
オープンソースは、公開の場で開発されるソフトウェアです。ソフトウェアの設計図たるソースコードが公開されているので、誰もが成果物(=ソフトウェア)が何をするものなのかを理解する自由があり、またそのソフトの恩恵を被る人が多ければ多いほど、問題解決もコミュニティの力によって協力的になされる可能性があります。
また、増え続けるデバイスへの対応も、基本的にはニーズがあるところに自発的コミットメントが生まれることを前提にしているため(常に機能するわけではありませんが)、作ってはみたものの使われないということが起こりにくいと言えるでしょう。
なにも企業は開発に加わってはいけないというわけではありません。それどころか、企業がオープンソースソフトウェアを開発してもよいのです。クローズな開発に比べて、コミュニティからのフィードバックが適切に機能しているオープンソースの安心度は格段に高くなります。
生活情報に触れるようなデリケートな、かつ公共性の高い部分のソフトウェアは、可能な限りオープンソースである必要があると思います。
オープンソースとして公開しているもの
これらの理由から、私はいくつかのオープンソースプロジェクトを実施しています。
まず、2017年4月より神奈川工科大学より、PicoGWというホームゲートウェイを公開しています。このゲートウェイはローレベルなデバイスとの通信をWeb技術と融合させるためのWebサーバとして機能します。Node.jsのみで動作し、軽量であることが特徴です(公開時のソースコードは500kb程度です。ただし実行時には他のライブラリを利用するためもっと大きくなります)。
現在はECHONET Liteにしか対応していませんが必要に応じて対応機器を増やしていきたいと思います。
https://github.com/KAIT-HEMS/PicoGW
Kadecot(カデコ)もPicoGWと同じ目的のものですが、2011年からSonyCSLで長年開発を続けてきたもので、REST系APIを持っていたAndroid版の第一世代、WAMPを全面的に使用したAndroid版の第二世代、WAMPを使用しつつNode.js+Linuxに移行した第三世代(Kadecot|JS)と変遷をたどってきています。こちらもオープンソースになっています。
https://github.com/SonyCSL/Kadecot-JS
また、このKadecot互換ゲートウェイもコアーズ株式会社から「μKadecot」という名前でオープンソースで出していただいています。こちらはGR-SAKURAで動作するμITRONベースのホームゲートウェイです。
https://dev.toppers.jp/trac_user/contrib/wiki/uKadecot
さらに、我々はECHONET Liteのオープンな仕様と相互接続性の訴求に賛同しており、Java/C++用のECHONET Liteドライバ(ミドルウェア)もオープンソースで公開しています。
OpenECHO for Java/Processing
OpenECHO-cpp
ECHONET Liteのエミュレータもオープンソース公開しており、時々利用していただいているのを見かけます。
https://github.com/SonyCSL/MoekadenRoom
オープンソースにしていないもの
他方、オープンソースによって担保されたデータや知見をどう生かすかというフロントエンドやアプリケーションの部分は、個別の目的に応じて作りこまれるべきもので、多様性に富んでいる分より公共性が低い領域だと思います。また、開発スパンもインフラ的なバックエンドよりも短くなるのが普通でしょう。
こちらは競争原理に基づいてそれぞれにサービス開発を行ったほうが、質が高いものができるのではないでしょうか。
オープンデータ
家庭内IoTで最も重要な部分がデータであり、その解析技術です。ホームサーバーと同様公共性が高く、オープンデータとして社会的に納得感のあるマネージメントが必要です。この部分に関するオープンなアプローチは本プロジェクトではまだ開始していませんが、プライバシーを担保しながらオープン性を確保する方法について、オープンな場で議論したいと思っています。
まとめ
まとめると次の図のようになります。
左側のほうがローレベルな技術であり、オープンな環境での開発が望まれます。下方に出ているクラウドデータベースが情報の格納部分です。実際にはクラウドとローカルとのせめぎあいが存在します。
右側のほうはフロントエンドであり、問題別に個別対応が必要な部分です。こちらは多様性と競争原理が必要で、ビジネス化すべき領域だと考えています。
現在は、左端のホームサーバー部分のみオープンソースとして公開されています。
クラウド部分は開発中ですが、特定のサービスに依存した部分が多いため、うまく切り分けの上、可能な限りオープンソースにしていきたいと思っています。
フロントエンド部分は上記の理解に基づき、コラボ企業とともに、あるいは内製での開発を進めています。