レポート

Douglas Crockford氏「The Seif Project」~東京Node学園祭2016 基調講演

この記事を読むのに必要な時間:およそ 3.5 分

Part 2:Seif Protocol

Seif ProtocolはSecure JSON over TCPです。そしてEfficient sessionsをサポートしています。Self Protocolはメッセージを送るプロトコルであり,検索のためのプロトコルではありません。

Seif ProjectはECC 521の公開鍵を個人の認証に使用しています。そのため,パスワードは必要ありません。パスワードがないので,他人のパスワードを取得するといったことができず,パスワードを使用した場合より安全になります。

Seif ProjectではSymmetricとAsymmetricの2つの暗号の技術を使用します。これらは公開鍵暗号と呼ばれています。

画像

Seif HandshakeはSeif Projectの一部で,お互いを認証するためのものです。Seif HandshakeについてはSeif Projectサイトで詳しく解説されています。

画像

Self ProtocolはFull duplex protocolです。ユーザーはお互いにいつでもメッセージを送ることができ,相手のレスポンスが終わるのを待つ必要がありません。これはとても効率的なシステムで,requestやresponseのプロトコルを使う場合は複雑になってしまうような,個人間のコミュニケーションシステムを開発するのにも使えます。

Self Protocolは基本的にはSelf Projectのために作られました。しかし,ユーザー全員を繋げるようなアプリケーションを作成したい場合には便利で一般的に使えるようなものになっています。

Part 3:Self Resource Management

私達がリソースにアクセスする際には,リソースのハッシュを使っています。

ハッシュでリソースにアクセスすると,それが途中で傍受され変化させられていないことを保証できるので安全面でとても良いものになっています。また,パフォーマンスもとても良いです。なぜなら,どこからそのリソースを取得するかを問題としないからです。

バージョニングシステムも入っているため,ハッシュでリソースにアクセスすることは名前でアクセスするより良い,つまり問題も起きにくいだろうと考えられています。

Part 4:Seif Apps

Seif Appsはデスクトップやモバイルの端末にWebのアプリケーションを渡す新しい方法です。HTMLではなくJSベースのアプリケーションデリバリシステムとなっています。これらはNode.jsとQtで開発されます。

Qtとはノルウェーで作られた,デスクトップとモバイル端末のためのアプリケーションフレームワークです。もともとはノキアが開発していましたが,今はオープンソース化されました。Qtはアプリケーションを開発するのにとても良い方法です。完全にGPUをサポートしています。

Seif Appの中では,NodeとQtは同じファネルで別々のプロセス上で動きます。

画像

そのため,アプリケーションを2つの部分に分けることができます。1つはビジネスロジックを含む層で,LocalStrageやネットワークへの接続を行います。もう1つは表示の部分で,Qtで開発します。画面の描画や,UIを担当します。

それらを繋ぐのはJSONのチャンネルです。その2つのイベントループを同時に使用することになり,イベントループが1つの場合よりパフォーマンスがよくなっています。

これによって,アプリケーションのアーキテクチャはとても綺麗になります。なぜなら,ロジックと描画の部分が完全に別れているからです。これはとてもいいデザインです。

さらに複数の部分に分かれるアプリケーションもサポートしています。

画像

同じアプリケーション内で,関心の分離を行うことができます。それらはお互いに破壊することはできないようになっています。また,JSONでデータをやりとりします。それらはユーザーの利便性のため,同時に動きます。

人間は521bitの鍵を覚えることはできません。そのため,Trust Management Systemも提供します。Trust Management SystemではPetnameを使ってユーザーの認証を行います。すべての情報や関係やエンティティはクラウドに保存されるので,ユーザーはどの端末からでもアクセスできます。

Part 5:Seif Helper App

Seif Projectでは,ブラウザの中ですべてのSeifのアプリケーションを動かします。これには,ブラウザに実装されているHelper Appインターフェイスを使用します。

Seifのアプリケーションを使用するためには,ブラウザの中のSeifアプリケーションに動作の許可をしなければなりません。私達のようなエンジニアはその設定ができるので,Seifフレームワークのテストの許可を行うことができます。

Seif Projectの目的はセキュアで効率的なリレーションのマネジメントをWeb上で提供することです。Webはドキュメントを検索のためにはとても良いものですが,セキュアなリレーションをマネジメントするのは得意分野ではありません。

著者プロフィール

高田孝平(たかたこうへい)

React.jsの基礎を学べるCLIツールであるlearnyoureactを作成。フロントエンド,バックエンド問わずJavaScript全般に興味がある。Node.jsを始めとするJavaScriptのOSSに積極的にコミットしている。

Twitter:@kohei_takata
GitHub:kohei-takata