Dittoは何が凄くて、何が出来るのか
米国のソフトウェア企業 Ditto のプロダクトであるDittoの技術についてご紹介します。
関連記事
- Techcrunch: Dittoが$45Mを調達
- ウォールストリートジャーナル: Businesses Look Beyond the Cloud to Run Software
- 米国3位のチェーンのPOSシステムをDittoに刷新
Dittoとは
Dittoとは、 「インターネット非依存のデータ同期プラットフォーム」 です。
- ネット接続があっても無くても
- データを
- リアルタイムで同期・分析
する技術です。
Dittoは2018年に創業され、利用例も急速に増えてきています。
日本でも、JALのCAの全端末に導入されています。
JAL、全客室乗務員が利用するiPad端末にDittoの通信技術を導入へ
- 分散データベース
- エッジコンピューティング
- コンフリクトを起こさないデータタイプ(CRDT)
といった、これからの時流を捉えた技術を組み合わせています。
Dittoがなぜ特別なのか
・エッジ(スマホなど)まで含めた分散データベース
・CRDT(データを衝突させない仕組み)
・マルチホップ(データを中継)
などを組み合わせた唯一無二のソフトウェアです。
(詳細は後述)
これにより、インターネットが繋がりにくい場所を含めた分散データプラットフォームを構築できます。
今まで活用できていなかったデータを、分析可能な情報にすることができます。
Dittoはデータの監視・分析・不具合検知などの機能も提供します。
Dittoプラットフォーム全体像
「マルチプラットフォーム」
iOS, Android, Linux, Windows, Node.jsなど、
様々な環境がサポートされており、今後も追加予定です。
モバイルアプリ、Web、サーバー、組み込みなど、あらゆる環境で動作します。
「インターネット非依存」
- Bluetooth Low Energy
- Wi-Fiダイレクト (P2P Wi-Fi)
- LAN
- USB
- インターネット
- その他
などをDittoは自動的に切り替えながらデータを同期します。
Dittoの強力な「分散データベース + 通信」 技術によって、
かつて無かった「インターネットに依存しない」データのプラットフォームを構築することができます。
例えば 「Bluetoothのみ」 で現場でデータを同期できるなど、インターネットが無い状況でも業務を継続させることが出来ます。
「分散データベース」
通常のデータベース (中央集権型データベース) |
分散データベース | |
---|---|---|
データの格納方法 | 単一のコンピューターやサーバーにデータが集中して格納 | データが複数のコンピューターやサーバーに分割され、それらがネットワークを介して連携 |
信頼性 | 集中型のため、単一の障害点が存在し、故障のリスクが高い | 複数のコンピューターがデータを持っているため、一部の故障がシステム全体の停止につながることが少ない |
パフォーマンス | データへのアクセスが一箇所に集中するため、アクセスが増えるとパフォーマンスが低下する可能性がある | データへのアクセスが複数のコンピューターに分散されるため、読み書きが高速 |
柔軟性 | 拡張性が制限され、システム全体を変更する必要がある場合がある | 新しいコンピューターやサーバーを追加したり、既存のものを削除したりすることが容易 |
スケーラビリティ | データ量やアクセス数が増えると、システム全体のパフォーマンスが低下する可能性がある | データ量が増えても、システム全体のパフォーマンスを維持 |
Dittoでは、サーバー上だけでなく、スマートフォンやIoTなどありとあらゆる環境でデータを分散・同期させることができます。
Dittoの利用シーン
航空業界
<航空業界において幅広いニーズ>
- CA間コミュニケーション: Cabin Crew Collaboration
- 乗客デバイス食事注文: Passenger Meal Ordering
- メンテナンスなどログ記録: Maintenance and Log Books
- パイロットコミュニケーション: Electronic Flight Bag
サービス業界
<ファストフードチェーンのクラウド・店舗デバイスなど>
- POSシステム: Point of Sale
- レストラン注文: Restaurants
- イベント会場: Entertainment and Events
- メンテナンス: Maintenance Management
ミッションクリティカル
<障害時の対策としてあらかじめ導入>
- ミリタリー: Military
- 緊急事対策: Emergency Situations
- 消防: Firefighters
- 貿易・コンテナ: Ports and Border Protection
IoT
<センサーやロボットなど>
- 工場・倉庫: Factory And Warehouse
- セキュアなデータ転送: Secure Data Transfer
- ヘルスケア: Healthcare
- 農業: Agriculture
Dittoの通信技術
メッシュネットワーク
メッシュネットワークを構築し、複数の端末でデータをやり取りします。
マルチホップ
端から端へと、中間のデバイスを介し、データが中継されます。
飛行機の乗客のスマホを中継機として利用する場合などにはよりセキュアなAPIを利用することもでき、セキュアかつ効率の良い通信が可能です。
ブロードキャスト
通常、Bluetoothでの通信を実装しようとした場合、1対1での通信になると思います。
Dittoを使うと、簡単に複数の端末に送ることができます。
複合ネットワーク
以下を自動的に切り替えながら、常に最適な通信を行います。
- Bluetooth Low Energy
- Wi-Fiダイレクト (P2P Wi-Fi)
- LAN
- USB
- インターネット
- その他
詳細は以下をご覧ください
Dittoのデータベース技術
CRDT
CRDT(Conflict-free Replicated Data Type)は、分散システムでのデータの同期や競合を解決するために開発されたデータ構造です。
分散システムでは、複数のノード(コンピュータ)がそれぞれデータを持ち、同期を行いますが、ネットワークの遅延や切断が発生することがあります。このような状況で、異なるノードでデータが同時に更新されると、データの競合が起こることがあります。
CRDTは、この競合を解決するためのアルゴリズムやデータ構造で、以下のような特徴があります。
- 収束性: 各ノードが更新を繰り返しても、最終的には同じ状態に収束します。
任意の順序で更新が可能: 更新がどの順序で適用されても、最終的な状態は同じになります。 - 一貫性: 各ノードが同じ更新操作を行った場合、その結果は同じになります。
詳細は以下をご覧ください
レプリケーション(データの同期)
Dittoのレプリケーションは非同期で行われ、以下の特徴があります。
- 差分のみやり取りするため、通信量が少なくパフォーマンスに優れる
- ノードの追加が容易で、高いスケーラビリティがある
- ネットワークの遅延や切断に強い
Dittoを使った開発の流れ
- Ditto PortalからDittoアプリを作成する
- 技術ドキュメントに従って、アプリを作成する
よくある質問と回答
どのくらいの距離で通信ができる?
Bluetooth Low Energyの場合、端末間は最大約130mの距離で通信できます。
メッシュネットワークでマルチホップするため、複数台あれば無制限に距離を伸ばすことができます。
Bluetoothってことはペアリングが必要?
Bluetooth Low Energyは、Bluetooth Classicと違い、手動でのペアリングが不要です。
Dittoが端末間をセキュア(暗号化、アプリID、証明書)に接続します。
バックグラウンドでも通信できますか?
はい、通信できます。
アプリが起動されていない場合は通信できません。
デバイスの台数制限は?
ありません。
メッシュネットワークでマルチホップするため、台数が多い方が通信は安定します。
バッテリーの消耗は?
Bluetooth Low Energyや、差分のみやり取りすることにより、消耗はかなり抑えられます。
定期的にサーバーに通信をしてデータを取るわけではなく、データに変更があった場合に差分のみ送られます。
デモアプリをインストールしてお試しください。
セキュリティは?
公開鍵暗号方式 (TLS1.3, X.509)を採用しています。
証明書に各データの読み書きの権限の情報を付与し、強固なセキュリティを実現できます。
どんな端末が使える?
iOS, Android, Linux, Windows, Node.jsなど、様々な環境がサポートされており、今後も追加予定です。
要望に応じて開発されます。
LINEやGmailなどがオフラインで使えるようになりますか?
いいえ、アプリの中に組み込むSDKですので、他社のアプリが通信できるようになるわけではありません。
試しに通信してみたい
デモアプリをインストールしてみてください。
iOSアプリとAndroidアプリがあります。
試しに何かアプリを作ってみたい
技術ドキュメントをご覧ください。
(無料トライアルもできます)
Discussion