Personiumの紹介

まず手始めにPersoniumの簡単な紹介から。ペルソニアムと読みます。

http://personium.io
http://github.com/personium/io

このソフトウェアは2008年ごろ、自分が会社の研究所にいたときに「新たなITの形を考えてみよう」という話があったときに、思いついたアイディアから始まりました。今PDS(Personal Data Store)という名前がそこそこ広まって来ましたが、まさにそのアイディアです。そのアイディアを思いついたときは「わっ、すげーこと思いついた」と興奮したのを覚えています。でも、世の中「新たなことを思いついた」と思っても大抵は先人がすでに思いついているもので、これも例にもれずPDSという考え自体は2000年代初頭からあったようですね。

そんなことは露知らず「このアイディアを形にしたい」という想いでプロトタイプをつくり、PDSという言葉もBaaSという言葉もなかったので、このソフトウェアは何であるということを説明するのに苦労しながらも仕事として試作や実証などをさせてもらい、このソフトウェアを成長させることができました。

PDSなのかBaaSなのか

個人的にPDSPDSである前にBaaS(Backend as a Service)でなくてはならないという風に思っています。なぜならば、今、個人というものはスマホタブレット・PC・ゲーム機・センサなど様々な端末で、実に様々なアプリを操作しながら自分のデータというものを生成しつづけているからです。iOSやらAndroidやらWindowsやらと端末のプラットフォームを問わずにデータを入れてもらうためには、RESTという文化がフィットすると思ってます。HTTP(S)がしゃべれないプラットフォームはないですし、RESTという考え方はデータ指向のものだからです。

PDSという世界は、ともすれば既存のICTの在り方を根本から変えませんかという野心的な試みなので、今現在、なかなかそれ単体では「実用」になりづらい研究的な世界のものかと思っています。一方でBaaSというのはモバイル・タブレットアプリをつくるということならばすぐに役に立つ技術です。ですので、会社の仕事としてこれをやってきた関係上、BaaSとしての側面を重点的に磨いてきています。

ODataサポート

具体的にはMicrosoftさんが主導してOASIS標準にしたODataというRESTベースのプロトコルのサポートが一つの強みになっています。ODataはリレーショナルデータの操作を(SQLでなく)RESTでやるためのプロトコルで、すごくよくできた仕様だと思います。

http://www.odata.org/

personiumは、アプリケーションが扱うデータというものは「木構造ディレクトリ構造をもったファイルシステム的なもの」か「リレーショナルデータ的なもの」の2種類でほぼ事足りるかなぁという仮説に立っています。それで、personiumのアプリケーション毎のデータ空間はWebDAVの空間なのですが、そこにODataの空間が切れるようにして2種類のデータを扱えるようにしています。

実は2009年ごろにつくった初代のpersonium実装では、ODataに似た仕組みを自分で考案して実装していたのですが、機能が非常に貧弱で掲示板がやっと作れるかどうかというような代物でした。ちょうどそのころ、良いタイミングでMSさんがODataを発表されました。研究所の同僚がそれを見つけて教えてくれて、これはいいと思って見よう見まねで2010年ごろの実装で取り入れました。ODataは結構高機能で複雑な仕様なので、最初はエッセンスだけ取り入れる感じでしたが、2012ごろの改修時に比較的ちゃんとこの仕様を実装できました。

OASIS標準になったのはOData V4になったときですが、我々がOData実装を取り込んだのがV2の時点だったので現状のpersoniumはOData V2のサポートにとどまっています。OData V4ではV2では仕様化されていなかったSQLでいうところのsum()やらavg()に集約関数などが使えるようになっていたりするので、どこかでOData V4のサポートもできたらいいなと思っています。