@yuichirominato 2017.12.05更新 42views

量子コンピュータ開発環境やSDK、その他のトレンドについて

SDK 量子コンピュータ

はじめに

量子コンピュータ関連のアプリケーションやソフトウェア、開発方法に関して興味を持つソフトウェアエンジニアが増えてきました。しかし、情報が不足しているためにどこから手をつけていいのかわからない、また量子コンピュータは物理学がわからないと手をつけづらいなど、興味はあるけど取り掛かりづらいという状況をよくみるようになりました。

ここでは、客観的に現状の世界のトレンドや開発方法を実際の開発者の立場から簡便にまとめて見たいと思います。

量子コンピュータアプリケーションを開発するのに物理学の知識は必要か

簡単にいうとあまり必要ありません。もちろんあったほうがいいですが、数学の合理的な知識やプログラミングの知識があれば、量子コンピュータアプリケーションの開発はできます。

量子コンピュータで物理学が必要なのはどの層の開発者なのか

ハードウェアの開発には物理学の知識が必要になります。物理学の挙動をシミュレートしながら開発をします。また、その上に乗るフレームワークやミドルウェアの開発にも物理学の知識が必要になります。それらを知らないとハードウェアの最適化や特性に合わせたチューニングが難しくなります。

アプリケーションの開発になぜ物理学の知識が不要か

それは、量子ゲートモデル、量子アニーリングモデル共にミドルウェアで明確に線引きがされており、インターフェイスに明確な仕様が策定されつつあるからです。量子ゲートモデルでは主にQASMと呼ばれるような量子アセンブリの仕組みがあり、QASMのハードウェア寄りでは、QASMで書かれた論理回路を実際のハードウェアに適用するための変換がミドルウェア単位で行われます。しかし、QASMのソフトウェア寄りではそれらの変換を知ることなく、QASMのルールに従ってゲートを配置するだけでアプリケーションを制作することができます。同様に量子アニーリングにおいてもQUBOと呼ばれる仕組みがあり、QUBOのハードウェア寄りではQUBOをハードウェア変換するためのミドルウェアはハードウェア単位で実装されますので、アプリケーション開発者はそれを意識する必要がありません。逆にQUBOのソフトウェア寄りでは2量子ビット間の相互作用を考えてグラフ構造を作ることで問題を設定できます。

提供される言語は

主にSDKで使用される言語はpythonです。マイクロソフトはF#ベースの言語で出すようですが、windows開発者とlinux開発者で別れるとすると、linux開発者はpythonで書いていくことになります。主にはpipでインストールするのが主流になりつつあります。量子コンピュータ専用の言語というわけでもありませんが、今後合理的な言語が開発されるのかもしれませんが、現状はpythonで十分事足りると思います。

ミドルウェアやサーバーサイドの開発は?

クラウドサービスやAPIの提供をしている企業も多いですが、それはそれぞれの企業の得意な言語や環境によって変わります。通常のウェブサービスと同じであると思います。ハード寄りのミドルウェアはpythonをよく聞きます。もちろん低級言語も使用されていると思います。

ドキュメント類の整備

米国やカナダの企業ではドキュメント類はsphinxを使っている企業が多いようです。
カナダの1QBitや米国カリフォルニアのRigettiはsphinxを使っていました。
http://pyquil.readthedocs.io/en/latest/

フレームワークやサービスの開発に必要なスキル

サービス開発者側は多くの知識を必要とします。内部では多くのヒューリスティクスアルゴリズムが動いていたり、処理が高速のため大量のデータが流れてきますので、合理的なデータ処理の方法をアイデアを出して処理する必要があります。また、最近ではゲートモデル、アニーリングモデル両方の知識を必要としたり、上記の米国のスタンダードなトレンドをきちんと把握する必要があります。特に物理学者と計算機科学者、ビジネスサイドの多くの人が同時に見るかつ見るポイントが違うので、バランスをとりながらシステムを構築する必要があります。あと、現状では量子アルゴリズムは相当大きな計算機でないと精度が出ないのでスパコンなどの実装知識なども必要とします。

トレンド

海外ではゲートモデルでIBMとRigettiがなかなか使いやすいSDKやAPIを提供しています。

IBM Q
https://www.research.ibm.com/ibm-q/

Rigetti
https://www.rigetti.com/

あとは、マイクロソフトもシミュレータ登録を公開しています。
https://www.microsoft.com/en-us/quantum/

今後の展望

多くのツールが出てくる予定なので、ディープラーニングのようにコモディティ化して開発しやすくなると思います。すでにgoogleなどからOpenfermionなどの量子コンピュータ向け量子化学計算用のフレームワークなども登場しています。逆にシステム側の開発は主に物理学系の人は実装の経験がない理論の方が多いので物理学の理論を理解しながらシステムに実装するには常に人が足りていない状態なので、そういった人材は貴重になるかもしれません。

あわせて読みたい

SERVICE

汎用量子コンピュータ向けアプリケーション開発SDK

詳しく見る Githubで入手する(無料)

汎用量子コンピュータ向け高速シミュレータ

詳しく見る

量子コンピュータ向けクラウドサービス(準備中)

詳しく見る

イジングマシン向けアプリケーション開発SDK

詳しく見る Githubで入手する(無料)

COMMUNITY

量子コンピュータのことを学びたい、仕事としたいなどの情報交換の場を設け、コミュニティの形成を進めています。オフラインの勉強会と、オンラインのチャットコミュニティの2種類あります。オフラインのConnpassは1400名、オンラインのSlackは880名を超える参加があります。どちらも無料ですのでお気軽にご参加ください。

CONNPASS SLACK

CONTACT

弊社あての連絡はinfo@mdrft.comより用件を明記の上、メールで連絡を頂けますと幸いです。

ブログトップへ Wikiへ移動

量子コンピュータ一般

量子ゲートアルゴリズム

量子アニーリング一般

量子アニーリングアルゴリズム

BlueqatSDKの使い方