こんにちは。最近は量子コンピュータや量子アニーラとスマホアプリをつなげることを進めています。今回はスマホウェブアプリなどを実行するときの設計のヒントをいくつか紹介します。実際に作ってみて、色々気づいたところがありましたので、事前知識として必要かなと思います。
定式化は結構重たい
定式化と言って、量子計算機に問題を投げる際には、式を送りますが、これが結構重たいです。近年ではマシンのサイズもだんだん大きくなってきていますので、実際にはこの定式化の問題を送るところはかなり帯域が必要になります。
自分もこの定式化をスマホのフロントエンドに担当させて、それをサーバーに送るという手順で進めていましたが、実際には定式化はサーバーサイドのblueqat SDKで実行した方が良さそうです。
スマホのフロントエンドは最低限のインターフェイス処理が良さそう
javascriptでもある程度のことはできますし、近年は速度も速いので結構な処理もできますし、定式化もできます。しかし、作成した後の式をサーバーに送る際には相当工夫をしないと、結構なデータ量になってしまいます。
スマホを活用する際に通信量はそのまま利用者の負担になりますので、あまり重たいサイトや処理は敬遠される傾向があります。インターフェイス側では入力値をもらったら、それをなるべく軽量にサーバーに送り、サーバー内で定式化と処理を行い、またインターフェイスには軽量な計算結果だけを送るという方法が理想的です。
理想の手順
ということで、理想的な手順は、
1、スマホ側で入力を受け付ける
2、入力を元にサーバーに送るデータを選ぶ
3、サーバー側で受け取りそれを元に定式化などの重たい処理を行い、定式化の係数を量子マシンに送る
4、戻ってきた計算結果をサーバー側で処理してスマホに戻す
5、スマホで表示する
定式化の係数は結構なサイズになりましたので、実質的にはできるだけ量子マシンに近いところで行い、エッジ側のスマホなどでは処理をしないのがいいと思います。
UXはいいかどうかは微妙
正直マシンへの投入の速度を考えると簡単な問題であってもUXは低めです。小さな問題夜中くらいのサイズの問題でも既存は結構計算結果が戻るまでは時間がかかります。今後はマシンで解かれる速度を短くするなどの工夫を進めたいです。
まとめ
量子コンピュータを活用したアプリケーションは今後もどんどん出てくるでしょう。その際には、インターフェイスとサーバーサイドの連携がかなり重要になりますので、便利なツールをどんどん作れるよう日々新しい技術を開発していきましょう。