QURI Partsとは?QunaSysが開発する量子計算ライブラリの使い方と実装

QURI Parts(キューリーパーツ)は、量子アルゴリズムを部品として組み立て、シミュレータでも実機でも同じコードのまま実行できるオープンソースの量子計算ライブラリです。開発元は日本の量子ソフトウェア企業株式会社QunaSysで、富士通やIBMの製品ではありません。名称の「QURI」は「Quantum Universal Research Interface」の頭文字で、読み方は「キューリー」、由来は物事の道理を究める「究理」です。本記事は最新版0.26.2(2026年6月時点)を前提に、開発元と読み方の整理から、インストール、量子回路の構築、期待値の推定、変分量子アルゴリズム(VQE)の実装、QiskitやCirqとの使い分けまでを、実コード付きで解説します。量子コンピュータそのものの前提知識は量子コンピュータとは?仕組み・方式・実用化の現在地を実装目線で解説する技術ガイドで補えます。

まとめ:QURI Partsの要点

  • 開発元はQunaSys(東京の量子ソフトウェア企業)。富士通製という説明は誤りで、高速シミュレータQulacsも同社の開発。
  • 読み方は「キューリー」。QURI=Quantum Universal Research Interface、由来は「究理」。
  • 設計思想は3つ:部品の差し替えが効くモジュール性、数行の変更で実行先を切り替えられるプラットフォーム非依存、シミュレータ性能の重視。
  • 導入はpip install quri-parts。使うバックエンドをextrasで足す(例:quri-parts[qulacs])。Python 3.9.8〜3.11、Apache-2.0。
  • QURI Partsは「QURI SDK」の一部。回路・演算子・実行を担い、アルゴリズム群のQURI Algo、リソース見積りのQURI VMと組み合わせて使う。

以下、開発元と名称の整理から順に、インストールとコードで具体化します。

QURI Partsとは何か:QunaSysが開発するモジュール型の量子計算ライブラリ

QURI Partsは、量子回路と演算子(オブザーバブル)を扱う抽象化レイヤを中心に、ノイズモデル・推定量(estimator)・サンプラー・トランスパイラを備えた量子計算ライブラリです。特定の量子ハードウェアやシミュレータに縛られず、アルゴリズム本体のコードを書き換えずに実行先を差し替えられる点が核になっています。用途に応じて必要なパッケージだけを入れられるため、依存関係が肥大化しにくいのも特徴です。

開発元QunaSysと「QURI」の名称・読み方

QURI Partsを開発・保守しているのは株式会社QunaSys(QunaSys Inc.)で、量子コンピューティングのソフトウェアとアルゴリズムを手がける日本企業です。旧来の解説記事にある「富士通が開発した」という記述は事実に反します。混同の背景には、国産の量子シミュレータQulacs(キュラックス)の開発にQunaSysが関わっている点や、国内各社が量子分野に参入している状況があると考えられますが、QURI Parts自体の権利者・保守主体はQunaSysです。名称「QURI」は Quantum Universal Research Interface の略で、発音は英語の「cue-ree(キューリー)」。物事の理を究めるという意味の「究理」に由来します。ライセンスはApache License 2.0のオープンソースで、GitHubとPyPIで公開されています。

モジュール型設計とパッケージ構成

QURI Partsは機能ごとに独立したパッケージへ分割され、標準化されたインターフェースに沿って部品を差し替えられます。中核となるのは回路を扱うquri-parts-circuitと、演算子・状態・推定量・サンプラーを扱うquri-parts-coreです。この上に、アンサッツや最適化器・誤り軽減を提供するquri-parts-algo、量子化学向けのquri-parts-chemquri-parts-openfermion、OpenQASM 3.0対応のquri-parts-openqasmが載ります。性能が要る部分はRust実装のquri-parts-rustが担います。必要な機能だけを選んで入れられるため、量子計算に不慣れな開発者でも構成を小さく保てます。

QURI Partsのインストールと動作環境

導入はpipで完結します。既定パッケージを入れたうえで、実際に計算を走らせるバックエンドをextras(角括弧)で追加するのが基本の流れです。

pip install quri-parts

# Qulacsシミュレータを使う場合
pip install "quri-parts[qulacs]"

# 量子化学(OpenFermion連携)も併用する場合
pip install "quri-parts[qulacs,openfermion]"

指定できる主なextrasは qulacs / braket / qiskit / cirq / openfermion / stim / itensor / openqasm です。対応Pythonは3.9.8以上3.12未満で、2026年6月18日公開の0.26.2が最新版です。バージョンや対応範囲は更新が速いため、実際に固定する版はPyPIの公式ページで確認してください。

量子回路の構築と期待値の推定

QURI Partsの基本操作は、回路を組み立て、演算子を定義し、推定量で期待値を求める流れです。ここが理解できれば、後述のVQEなど変分アルゴリズムの土台になります。

QuantumCircuitで回路を組み立てる

回路はquri_parts.circuitQuantumCircuitに量子ビット数を渡して作り、add_H_gateadd_CNOT_gateなどのメソッドでゲートを順に加えます。回転ゲートは角度を引数に取ります。

from quri_parts.circuit import QuantumCircuit
from math import pi

circuit = QuantumCircuit(2)
circuit.add_H_gate(0)
circuit.add_RX_gate(1, pi / 3)
circuit.add_CNOT_gate(0, 1)

print(circuit.qubit_count)  # 2
print(circuit.depth)        # 回路の深さ

回路は「状態を作る手順」であり、ゲート数や深さといった指標にそのままアクセスできます。深さやゲート数は実機での実行コストに直結するため、後の最適化・トランスパイル対象になります。

演算子の定義と推定量による期待値計算

測定したいオブザーバブル(ハミルトニアンなど)はquri_parts.core.operatorOperatorで、パウリ項をキーにした辞書として定義します。期待値の計算はバックエンドごとの推定量(estimator)が担い、Qulacsを使う場合はcreate_qulacs_vector_estimatorで厳密な状態ベクトル計算の推定量を生成します。

from quri_parts.core.operator import Operator, pauli_label, PAULI_IDENTITY
from quri_parts.core.state import quantum_state
from quri_parts.qulacs.estimator import create_qulacs_vector_estimator

# ハミルトニアン H = 0.5*Z0 + 0.3*Z0Z1 + 0.2*I
hamiltonian = Operator({
    pauli_label("Z0"): 0.5,
    pauli_label("Z0 Z1"): 0.3,
    PAULI_IDENTITY: 0.2,
})

state = quantum_state(2, circuit=circuit)
estimator = create_qulacs_vector_estimator()
estimate = estimator(hamiltonian, state)
print(estimate.value)  # 期待値 ⟨ψ|H|ψ⟩

状態ベクトル推定量は純粋状態の期待値を厳密に計算します。ショット数に依存する実機・サンプリングの挙動を再現したいときは、代わりにサンプラー(例:create_qulacs_vector_concurrent_sampler)を組み合わせたサンプリング推定量へ差し替えます。アルゴリズム本体のコードは変えずに、この推定量やサンプラーの生成部分だけを入れ替えられるのがQURI Partsの設計上の利点です。

変分量子アルゴリズム(VQE)の実装

QURI Partsが実務で使われる代表例が、NISQ(ノイズあり中規模)デバイスでも動く変分量子固有値解法(VQE)です。VQEは、パラメータ付き回路(アンサッツ)で試行状態を作り、その期待値(エネルギー)を古典側の最適化器で最小化する量子・古典ハイブリッド手法です。分子の基底状態エネルギー推定などに使われます。

QURI Partsでは、パラメータ付き回路と推定量から「パラメータ→エネルギー」というコスト関数を作り、quri_parts.algo.optimizerの最適化器で回します。勾配法を使う場合はAdamなどが利用でき、勾配は数値微分の推定量(create_numerical_gradient_estimator)やパラメトリック推定量(create_qulacs_vector_concurrent_parametric_estimator)で与えます。次のコードは反復部分の骨子で、init_params(初期パラメータ)・cost_fn(コスト関数)・grad_fn(勾配関数)は解く問題ごとに用意します。

from quri_parts.algo.optimizer import Adam, OptimizerStatus

optimizer = Adam()
state = optimizer.get_init_state(init_params)  # init_params=初期パラメータ

# コスト関数=エネルギー期待値、勾配関数と合わせてstepで更新を繰り返す
while state.status == OptimizerStatus.SUCCESS:
    state = optimizer.step(state, cost_fn, grad_fn)

print(state.cost)  # 収束後のエネルギー

実際の反復条件やコスト関数の組み立ては解く問題に依存しますが、要点は「量子側で期待値を測り、古典側でパラメータを更新する」ループをQURI Partsの部品で構築できる点です。量子化学ではquri-parts-openfermion経由でOpenFermionやPySCFが生成した分子ハミルトニアンを取り込み、そのままVQEに渡せます。

対応バックエンドと外部SDK連携

QURI Partsはプラットフォーム非依存を掲げ、実行先はサブパッケージで定義されたバックエンドを通じて選びます。主な対応先を整理します。

区分 対応先 用途
シミュレータ Qulacs / Stim / ITensor 状態ベクトル・スタビライザ・テンソルネットワーク
クラウド実機 Amazon Braket / Quantinuum / IONQ 実デバイス実行
他SDK連携 Qiskit / Cirq 回路変換・相互運用
量子化学 OpenFermion / PySCF ハミルトニアン生成
中間表現 OpenQASM 3.0 回路の入出力

シミュレータのなかでもQulacsは変換オーバーヘッドを抑える専用モジュールが用意され、性能面で優先的に最適化されています。CirqやQiskitは回路の相互変換を中心とした連携で、Qiskitで組んだ回路をQURI Partsへ持ち込み、別の最適化やバックエンドで検証するといった使い方ができます。

QiskitやCirqとの違いと使い分け

QURI Partsを検討する人が最も迷うのが、IBMのQiskitやGoogleのCirqとの違いです。結論から言えば、両者はそれぞれの自社ハードウェアに寄った包括的プラットフォームで、QURI Partsはハードウェア非依存で部品を差し替える設計に振り切っています。Qiskitの入門はQiskit(キスキット)とは?使い方・インストールから量子回路の基礎まで入門解説にまとめています。

QURI Partsが向くのは、複数のシミュレータや実機で同じアルゴリズムを比較したい場合、依存を最小化して特定機能だけを組み込みたい場合、Qulacsの速度を活かして変分アルゴリズムの試行錯誤を高速に回したい場合です。逆に、IBMの実機やパルスレベル制御・エラー訂正まで一体で使いたいならQiskit、Google系デバイス前提の低レベル制御ならCirqが素直です。「オールインワンの環境を1つで完結させたい」ニーズにはQURI Partsは合わず、むしろ他SDKと組み合わせる中間層として使うのが実態に近い選択になります。

QURI SDKにおけるQURI Partsの位置づけ

QURI Partsは単体ライブラリであると同時に、QunaSysが提供する「QURI SDK」を構成する中核パッケージでもあります。QURI SDKは、回路・演算子・実行を担うQURI Partsに、アルゴリズム群と仮想マシンを加えた3層で構成されます。

コンポーネント 役割
QURI Parts 量子回路・演算子・推定量・バックエンド実行
QURI Algo FTQC/early-FTQC向けアルゴリズム・時間発展回路・コスト関数の抽象化
QURI VM リソース見積りとデバイス対応シミュレーション(Clifford+T・STARアーキテクチャ等)

QURI Algoのアルゴリズムは抽象インターフェースを介してQURI VMと連携し、現在のNISQデバイスと将来の誤り耐性(FTQC)アーキテクチャの双方で性能評価ができます。つまりQURI Partsで回路とアルゴリズムを組み、QURI VMで「その回路が実機でどれだけの資源を要するか」まで見積もる、という一連の開発をQunaSysの同一エコシステム内で完結できる設計です。量子機械学習のように演算子設計が問われる応用では、カーネル法とは?仕組み・カーネル関数の種類・応用をわかりやすく解説のような古典側の理解も前提になります。

よくある質問

QURIとは何ですか。読み方は?

QURIは「Quantum Universal Research Interface」の略で、QunaSysの量子計算ソフトウェア群を指す名称です。読み方は「キューリー(cue-ree)」で、物事の道理を究める「究理」に由来します。ライブラリ本体はQURI Parts、それを含む開発基盤全体がQURI SDKです。

QURI Partsは富士通が開発したのですか?

いいえ。QURI Partsを開発・保守しているのは株式会社QunaSysです。富士通やIBMの製品ではありません。国産の高速シミュレータQulacsもQunaSysが関わって開発しており、両者は同じエコシステムに属します。

「quri ai」で調べると出てきますが、AI用のツールですか?

QURI Partsは量子計算のためのライブラリで、汎用のAIチャットツールではありません。ただし量子機械学習や、古典AIによる回路パラメータ最適化といった量子×AIの研究にも使われます。同名の別サービスと混同しないよう、文脈が量子コンピューティングかを確認してください。

無料で使えますか。商用利用は可能ですか?

QURI PartsはApache License 2.0のオープンソースで、無料で利用でき、条件を満たせば商用利用も可能です。ライセンス全文はGitHubのリポジトリで確認できます。

QiskitやCirqから乗り換える必要はありますか?

必ずしも乗り換える必要はありません。QURI Partsは回路の相互変換でQiskit・Cirqと連携できるため、既存資産を活かしつつ、複数バックエンドでの比較やQulacsによる高速検証といった用途で併用するのが現実的です。

関連記事

資料請求

RELATED POSTS 関連記事