Qiskit

Qiskitは、量子コンピュータ用のオープンソースのフレームワークである。量子回路を作成し、プロトタイプの量子デバイスやシミュレーション上で実行するためのツールを提供する。量子チューリングマシン（英語版）の量子回路に対応しており、これに従う量子ハードウェアに使用することができる。 Qiskitは、クラウド量子コンピューター（英語版）サービスのソフトウェア開発を実現するためにIBM Researchによって作成された。学術機関等の外部の支援者からもコントリビューションが行われている。 Qiskitの正式バージョンではPythonプログラミング言語を利用する。SwiftとJavaScript で記述することも可能。これらは、OpenQASM（英語版）表記に基づいて量子プログラムを記述することになる。 量子コンピューターに使用されるサンプルとして、さまざまなJupyter notebooksが提供されている。 Qiskitは、OpenQASMの機械語水準と、量子コンピューターの専門知識を持たないエンドユーザーに適した抽象水準の両方で量子ソフトウェアを開発する機能を提供する。これらの機能は下記のコンポーネントによって提供されている。 Qiskit Terraは、量子機械語水準か、それに近い量子回路を作成するツールを提供する。量子ハードウェアで実行される量子ゲートを明示的に構築することができる。また、特定のデバイス用に量子回路を最適化するツール、ジョブの管理、リモートの量子デバイスにアクセスしシミュレートするツールが含まれる。 Qiskit Terraの例は次のようになる。ベル状態を作成するために必要な量子ゲートを含む、2つの量子ビットを作成する量子回路である。量子回路は各量子ビットからビットを抽出する量子測定を行って終了する。 from qiskit import QuantumRegister, ClassicalRegister from qiskit import QuantumCircuit, Aer, execute q = QuantumRegister(2) c = ClassicalRegister(2) qc = QuantumCircuit(q, c) qc.h(q[0]) qc.cx(q[0], q[1]) qc.measure(q, c) 作成した量子回路は、バックエンド（量子ハードウェアまたはシミュレター）で実行できる。次の例ではローカルのシミュレーターを使用する。 backend = Aer.get_backend('qasm_simulator') job_sim = execute(qc, backend) sim_result = job_sim.result() print(sim_result.get_counts(qc)) 最後のPrint関数がバックエンドの返した結果を表示する。結果は、量子回路の複数の実行結果から取得したビット文字列を表示するPythonの辞書型となっている。今回使用した量子回路では、ビット列'00'と'11'が唯一の結果であり、同じ確率で発生するはずだ。したがって、通常の結果は {'00':519, '11':505} などの2つのサンプルがほぼ等しく分割される。 Qiskit Terraを利用する量子ハードウェアで行われた実験は、量子誤り訂正、エンタングルメントの生成、均衡とは程遠いダイナミクスのシミュレーションといった分野の多くの研究論文で使用される。 Qiskit Aquaは、ユーザー自身が量子プログラミングを行うことなく使用できるツールを提供する。現在、化学、AI、最適化、金融の分野がサポートされる。ユーザーが問題を与え、その分野で標準的な（化学用ツールPySCFなど）を使用して定義された結果を受け取ることができる。対応する量子アルゴリズムがQiskit Aquaには実装されている。 短期的に見て、量子ソフトウェアの開発は小さい量子デバイスのシミュレーションに使用される。Qiskitでは、これをAerコンポーネントが提供する。ユーザーのデバイスでローカルに実行されるシミュレーターと、クラウドを通じて利用可能なHPCが提供される。また、ノイズの影響を再現することもできる。 Ignisは、短期的なデバイスのノイズ特性のツールを含むコンポーネントであり、ノイズ影響下での計算を可能にする。これには、デバイスのベンチマーク、エラーの軽減、エラー修正のためのツールが含まれる。 ^ Jay M. Gambetta (2018年3月27日). “Looking back on a year of Qiskit”. Medium. 2019年9月24日閲覧。 ^ “Releases – Qiskit Terra”. 2019年11月1日閲覧。 ^ Magee, Tamlim (2018年8月24日). “What is Qiskit, IBM's open source quantum computing framework”. Computerworld UK. 2018年12月11日閲覧。 ^ Hemsoth, Nicole (2018年8月7日). “QISKit Developments Key to IBM Quantum Engagement”. The Next Platform. 2018年12月11日閲覧。 ^ “Qiskit website”. 2019年11月1日閲覧。 ^ “Qiskit in swift”. GitHub. 2019年9月24日閲覧。 ^ “Qiskit (Quantum Information Science Kit) for JavaScript”. GitHub. 2019年9月24日閲覧。 ^ “A collection of Jupyter notebooks showing how to use Qiskit that is synced with the IBM Q Experience”. GitHub. 2019年9月24日閲覧。 ^ Javadi-Abhari, Ali (2018年7月13日). “Qiskit and its Fundamental Elements”. Medium. 2019年1月10日閲覧。 ^ “Qiskit Terra”. Qiskit. 2019年9月24日閲覧。 ^ Wootton, James R.; Loss, Daniel (2018). “Repetition code of 15 qubits”. Physical Review A 97 (5). arXiv:1709.00990. doi:10.1103/PhysRevA.97.052313. ISSN 2469-9926.  ^ Roffe, Joschka; Headley, David; Chancellor, Nicholas; Horsman, Dominic; Kendon, Viv (2018). “Protecting quantum memories using coherent parity check codes”. Quantum Science and Technology 3 (3): 035010. arXiv:1709.01866. doi:10.1088/2058-9565/aac64e. ISSN 2058-9565.  ^ Wang, Yuanhao; Li, Ying; Yin, Zhang-qi; Zeng, Bei (2018). “16-qubit IBM universal quantum computer can be fully entangled”. npj Quantum Information 4 (1). doi:10.1038/s41534-018-0095-x. ISSN 2056-6387.  ^ Zhukov, A. A.; Remizov, S. V.; Pogosov, W. V.; Lozovik, Yu. E. (2018). “Algorithmic simulation of far-from-equilibrium dynamics using quantum computer”. Quantum Information Processing 17 (9). arXiv:1807.10149. doi:10.1007/s11128-018-2002-y. ISSN 1570-0755.  ^ “Community papers”. IBM Q Experience. 2019年11月1日閲覧。 ^ “Qiskit Aqua website”. 2019年11月1日閲覧。 ^ Wood, Christopher J. (2018年12月19日). “Introducing Qiskit Aer: A high performance simulator framework for quantum circuits”. Medium. 2019年9月24日閲覧。 ^ “Ignis provides tools for quantum hardware verification, noise characterization, and error correction.”. GitHub. 2019年9月24日閲覧。