滑らかな動きが信条の画面転送方式
さて、Luiのような“リモートデスクトップ”機能を実現するAndroidアプリにはいくつかの種類がある。代表的なものとして「TeamViwer」や「PocketCloud」などがあるが、これらの製品にはないLuiの優位性は何だろうか?
ひとつは「画面転送方式」の採用により、スマホ/タブレット側の処理に負担をかけずにアプリを動作させられるという点がある。画面転送方式というのは、パソコンの画面を一定間隔でキャプチャして圧縮。Android端末はその画像をデコードして表示するだけの方式だ。対になる概念としては「コマンド転送方式」があり、こちらはパソコンから描画コマンドが飛んできて、Android端末側で画面を作っていくので若干の負荷が発生する。
コマンド転送方式には、帯域の狭いネットワークで利用できる点がメリットで、テキストエディターの操作など動きの少ない画面を描画する際には、数十~数百Kbpsの速度があれば十分だ。ただし、動画再生など画面全体が大きく動く場合には、逆に数十~数百MBの帯域が必要になってしまう。さらに端末の性能が低ければ、処理が追い付かずコマ落ちやレスポンスの低下が発生する。
画面転送方式
- パソコン(サーバー)の表示画面をキャプチャーして、クライアント(スマホ/タブレット)に送信。
- 動きのある画面も滑らかに表示できるが、動きの少ない画面でも一定のネットワーク帯域が必要、
- ネットワーク転送速度が低いと、画質が粗くなる。
コマンド転送方式
- パソコン(サーバー)の描画コマンドを転送し、クライアント(スマホ/タブレット)側が描画する。
- 動きのある画面では画面転送方式より高い回線速度が必要。逆に動きの少ない画面であれば、ネットワーク帯域が低くても済む。
- クライアント側の描画性能が低いと、コマ落ちが生じやすい。
一方、画面転送方式を採用したLuiでは、動きのある画面でも10Mbps程度の速度で転送が可能になる。負荷に関しても画面を表示するだけなので、それほど高くはない。テキスト中心の場合でも数百K~数Mbps程度の速度が必要で、帯域が狭い場合には、画像の圧縮率を高める必要がある(=画像が粗くなる)が、無線LAN環境での利用や、LTE回線など一定以上の帯域が得られる場合にはメリットがあるだろう。
Lui for Androidの特徴
また方式の違いとは別に、NEC独自の取り組みもなされている。ひとつは、画像圧縮の負荷を低減する独自コーデックの採用。処理時間が短くなれば当然レスポンスが速くなる。また、画面全体ではなく、画面内の更新された部分だけを送る“モーションベクター検出処理”という仕組みも利用している。
デスクトップ上で、ウィンドウなどを動かした際、画面上で変化するのは背景の一部分だけだ。元々ウィンドウがあった場所と、移動後の場所以外は情報に変化がない。また、ウィンドウ内部に表示されている情報も一定だ。この動きを判断し、変化した部分だけをキャプチャして送ればデータ量を大きく減らせ、あまった帯域を応答性や、画質の向上に利用できる。その検出をする技術と考えればいい。
以上はパソコン同士の接続でも用いられるLuiの特徴。Lui for Androidでは、スマートフォンで利用する点を考慮した最適化もなされている。
パソコンの画面は小さいものでも10インチ以上、大きいものでは20インチ以上ある。画面の小さなスマホで操作する場合には、当然一部分を拡大して操作することになるだろう。逆に言えば、表示されない部分に関しては、画質や更新頻度を極端に落としても(場合によってはデータを送らない)実用上は問題ない。
Lui for Androidでは、スマホの画面内で表示している領域は最大で毎秒15コマ程度の滑らかな動きを実現するが、それ以外の部分は毎秒0.1コマ程度まで更新頻度を落としてデータ量を抑制する。拡大領域を移動させる際には、バッファーして置いた非表示の領域を利用。移動が済んだ後に更新頻度を上げていくようにしている。
こうした最適化によって、レスポンスや画質を維持しているのがLuiの特徴である。