DittoについてCEDEC2024で話をします
2024年08月19日 月曜日
CONTENTS
まさかCEDEC2024で僕が発表できるとは思っていませんでしたw
僕はStarlink以外にも普段は新しいサービスやシステムの調査・評価・サービス化検討などをするチームで活動しています。
Dittoは以前にチームに持ち込まれてきたもので、その概要や事例などをみた時に「ネットワークゲームで利用できたら面白んじゃないかな?」と感じていました。検討が割と進んだのが今年の5月ぐらいで、8月のCEDEC(日本国内最大のゲーム開発者向け技術交流会)でアピールしたら面白いのでは?と提案しました。
日本のゲーム技術者にとってCEDECの重要性はとても感じていたので、ここで認知を広げる事はDittoにとっても嬉しい事だと感じたからです。
そしたら今回、CEDEC2024にスポンサードセッションの形でなぜか僕も発表する事になりました、言い出しっぺの法則というヤツですね。
一応ゲーム業界にも関わらせていただいた経験があるのでそのような視点でDittoを紹介できたらなと考えています。
Dittoって何?
DittoLive Incorporated (Ditto)は、2018年創業のスタートアップ企業でインターネット接続の有無に関わらずデバイス間でデータを同期できるSDKを提供している会社です。
企業や米軍などでの採用実績がいくつも出てきており、サービスで実際に使われている技術になります。
アプリにSDKを組み込み、BluetoothやWi-Fiを利用してデバイス間で直接通信する事でデータを同期できます。
インターネット接続があっても無くてもデータをリアルタイムで同期・分析する事ができるようになります。
またデータの同期だけでなくこの直接通信する技術を使ってVPNのような事もできます。
Dittoを使ったアプリについて
Dittoの理解を深めるには、実例を知るのが手っ取り早いかと思います。
Dittoの技術は、航空業界などで広く採用されています。例えば、日本国内だと日本航空(JAL)や全日本空輸(ANA)の客室乗務員が携帯する業務アプリでDittoの技術を採用しています。
飛行機が上空を移動中でインターネットにつながっていなくても、お客様から商品の注文を受ける事などができます。同じ機内にいる他の乗務員とのコミュニケーションもこのアプリを通じてできます。機内では乗務員が使っているデバイス間で直接同期されているので機内でのコミュニケーションはリアルタイムでできます。
地上におりて外のネットワークに繋がれば、自動的にデータが同期していくので、注文、乗務員と乗客のやり取り、コミュニケーションといったデータが必要なところに流れて業務が遂行されていきます。
このように地上でも上空でもどこにいても同じアプリ、同じ使い勝手で業務ができるわけです。
CRDT(Conflict-free replicated data type)というデータ構造について
ここまで聞いてどうやってデータの整合をとっているの?取れないのでは?と不思議に思うかもしれません。DittoではCRDTと呼ばれるデータ構造を扱えるようにすることで解決しています。CRDTは2011年に発表されたMarc Shapiro, Nuno Preguiça, Carlos Baquero, Marek Zawirskiさん達の論文が最初のようです。
正しく理解しているか怪しいです(笑)が、操作した内容(増やしたとか減らしたとか)を同期していく事で、いろいろなデバイスからバラバラと操作情報が到着しても全部反映していけば最終的に全てのデバイスが正しい結果を持つ事ができるよね?という楽観的な同期の仕組みだと理解しました。
CRDTはDittoだけではなく色々な所で使われていて、例えばGoogle Docsで複数のユーザが同時に編集できたりするのもこのような技術が使われているのです。
CRDTの情報はここにまとめられていますので興味がある方は覗いてみてください。
Dittoの通信技術について
Dittoでは同じアプリを搭載したデバイス同士でデータを同期していくためのネットワークを動的に自動構成していきます。
通信路としてはデバイスが搭載しているBluetooth Low Energy, Peer-to-Peer Wi-Fi, Local Area Network, WebSocketsといった複数の通信機能をつかうのでレインボーコネクションと呼んでいます。
アプリでは図のようにデバイス内にSmall Peerと呼ばれるモジュールが存在し、アプリはSmall Peerとデータをやり取りをすれば同期はDittoが適切に行なってくれます。
Small Peerの中身はこんなシステムで構成されているようです。
Ditto全体の仕組みを理解するなら、公式ドキュメント が参考になりますので是非覗いてみてください。
Dittoを使いたいと思ったら
アプリのプログラム開発に慣れている方でしたら、 EARLY PREVIEW をつかって実際にアプリに組み込んでみるのが手っ取り早いかと思います。
ただ、Ditto Accountを作る必要があったり、利用規約もありますので、よく確認して利用上の懸念などを払拭されてから利用してください。
Dittoとゲーム
たくさんのモバイルゲームが1箇所に集まると回線の混雑に気を使わなければなりませんが、Dittoがあると沢山集まった方が、直接通信機能を活かして快適に通信できるんじゃないかとも思います。
またSIMを搭載していないデバイスでも問題なく参加して通信するようにもできます。ゲームを面白くするデバイスにDittoを組み込んで、多数のスマホ、多数のデバイスが同時参加してゲームをするとか?そんな妄想は浮かびます。
面白いゲームの体験がDittoで生み出されたら紹介した甲斐があったなと思います。
最後に
Ditto Live Incorporated Product Engineer の近藤さんのブログがあります。
こちらも参照すると理解が進むと思いますので是非ご覧ください。