qiskit について
このスキルは、現行のQiskit 2.x APIを使った量子回路の構築と、ローカルまたはIBM QPUでの実行を案内します。V2プリミティブ、ハードウェア互換回路、再現可能な実行を重視します。
主な機能
- 01量子回路の構築
- 02ローカル状態ベクトルのサンプリングと推定
- 03Qiskit Aerシミュレーション
- 04V2プリミティブによるIBM QPU実行
- 05ハードウェア対応ISAトランスパイル
- 06回路と結果の分析
活用シーン
- 01ローカルプリミティブでの回路テスト
- 02IBM QPUでのサンプリングや推定
- 03バックエンド制約に合わせた回路準備
- 04Qiskit 2.x APIへのコード移行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill qiskitインストール後、Claude Code で/qiskitを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/algorithms.mdbackends.mdcircuits.mdmigration.mdpatterns.mdprimitives.mdsetup.mdsources.mdtesting.mdtranspilation.mdvisualization.mdscripts/check_environment.pyinspect_runtime.pyrun_local_primitives.py詳細
Qiskit
最新の Qiskit 2.x API を使用して回路を構築し、ハードウェア互換の命令セットアーキテクチャ(ISA)回路を準備して、V2 プリミティブを通じて実行します。
このスキルは、PyPI のリリース qiskit==2.5.0、qiskit-ibm-runtime==0.48.0、qiskit-aer==0.17.2 を対象に、2026-07-23 に検証されました。ピン留めを変更したり、新しくリリースされた動作を記載したりする前に、references/sources.md を確認してください。
適切な方法を選ぶ
| 目的 | 推奨インターフェース |
|---|---|
| ローカルでの厳密なサンプリング | qiskit.primitives.StatevectorSampler |
| ローカルでの厳密な期待値計算 | qiskit.primitives.StatevectorEstimator |
| 高性能シミュレーションまたはノイズありシミュレーション | Qiskit Aer |
| IBM QPU のサンプリング | qiskit_ibm_runtime.SamplerV2 |
| IBM QPU の期待値計算と緩和 | qiskit_ibm_runtime.EstimatorV2 |
| ネイティブプリミティブのないバックエンド | BackendSamplerV2 または BackendEstimatorV2 |
| 開放系またはマスター方程式のダイナミクス | QuTiP を推奨 |
| 微分可能な量子機械学習 | Qiskit との統合が必要でない限り、PennyLane を推奨 |
インストール
分離された環境を作成し、必要なコンポーネントのみをインストールします。
uv venv --python 3.13
source .venv/bin/activate
# Core SDK plus plotting support
uv pip install "qiskit[visualization]==2.5.0"
# Add only when needed
uv pip install "qiskit-ibm-runtime==0.48.0"
uv pip install "qiskit-aer==0.17.2"
qiskit-terra は qiskit ディストリビューションに置き換えられているため、インストールしないでください。Qiskit Runtime、Aer、Nature、Machine Learning、Optimization、Algorithms はそれぞれ別のディストリビューションです。
IBM アカウントのセットアップ、CI で安全な認証情報の取り扱い、オプションパッケージ、環境の修復については、references/setup.md をお読みください。
基本的なワークフロー
ハードウェアを対象とするすべてのワークロードで、次の手順に従ってください。
- マッピング:問題を回路に変換し、Estimator の場合は1つ以上のオブザーバブルに変換します。
- 最適化:選択したバックエンドに合わせて、パラメーター化された回路を一度だけ最適化します。
- レイアウトの適用:すべてのオブザーバブルにレイアウトを適用します。
- 実行:プリミティブ統合ブロック(PUB)を使用し、V2 プリミティブを通じて ISA 回路を実行します。
- 分析:レジスターを考慮した結果、メタデータ、不確かさ、リソース使用量を分析します。
オプティマイザーの反復ごとに、パラメーターを設定して回路を再トランスパイルしないでください。パラメーター化された回路は一度だけトランスパイルし、その後、PUB でパラメーター配列を渡してください。
ローカルでの簡単なサンプリング
from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
circuit.measure_all() # creates the classical register named "meas"
sampler = StatevectorSampler(seed=7)
pub_result = sampler.run([circuit], shots=1024).result()[0]
counts = pub_result.data.meas.get_counts()
print(counts)
Sampler V2 はショット数と古典レジスターの構造を保持します。レジスターには実際の名前でアクセスしてください。measure_all() は meas を使用します。
ローカルでの簡単な推定
import numpy as np
from qiskit import QuantumCircuit
from qiskit.circuit import Parameter
from qiskit.primitives import StatevectorEstimator
from qiskit.quantum_info import SparsePauliOp
theta = Parameter("theta")
circuit = QuantumCircuit(2)
circuit.ry(theta, 0)
circuit.cx(0, 1)
observable = SparsePauliOp.from_list([("ZZ", 1.0), ("XX", 0.5)])
parameter_values = [[0.0], [np.pi / 4], [np.pi / 2]]
estimator = StatevectorEstimator(seed=7)
pub = (circuit, observable, parameter_values)
pub_result = estimator.run([pub]).result()[0]
print(pub_result.data.evs)
Estimator の回路に最終測定を含めないでください。PUB 配列はブロードキャストされます。大規模なスイープを構築する前に、回路のパラメーター順序を確認してください。
IBM QPU のサンプリング
この例では、references/setup.md の説明に従って、認証情報が安全に保存されていることを前提としています。API キーを埋め込んだり、出力したりすることはありません。
from qiskit import QuantumCircuit
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
service = QiskitRuntimeService()
backend = service.least_busy(
operational=True,
simulator=False,
min_num_qubits=2,
)
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
circuit.measure_all()
pass_manager = generate_preset_pass_manager(
backend=backend,
optimization_level=1,
seed_transpiler=7,
)
isa_circuit = pass_manager.run(circuit)
sampler = Sampler(mode=backend)
job = sampler.run([isa_circuit], shots=1024)
print("job_id:", job.job_id())
counts = job.result()[0].data.meas.get_counts()
後からジョブを取得できるよう、結果を待つ前にジョブ ID を保存してください。
IBM QPU の推定
Runtime Estimator では、ISA 回路と、トランスパイラーのレイアウトを通じてマッピングされたオブザーバブルの両方が必要です。
from qiskit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import EstimatorV2 as Estimator
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
observable = SparsePauliOp.from_list([("ZZ", 1.0)])
pass_manager = generate_preset_pass_manager(
backend=backend,
optimization_level=1,
seed_transpiler=7,
)
isa_circuit = pass_manager.run(circuit)
isa_observable = observable.apply_layout(isa_circuit.layout)
estimator = Estimator(
mode=backend,
options={"resilience_level": 1},
)
pub_result = estimator.run(
[(isa_circuit, isa_observable)],
precision=0.02,
).result()[0]
print(pub_result.data.evs, pub_result.data.stds)
誤差緩和によってすべてのワークロードが改善するとは限らず、コストも増加します。オプションと結果のメタデータをすべて記録してください。
譲れない Qiskit 2.x のルール
- V2 プリミティブインターフェースと PUB 入力を使用します。新たに V1 の
Sampler、Estimator、QuantumInstanceのコードを書かないでください。 - Runtime プリミティブは ISA 回路を受け取り、レイアウト、ルーティング、基底変換は行いません。
- Estimator のオブザーバブルには、トランスパイラーのレイアウトを
observable.apply_layout(isa_circuit.layout)で適用します。 - Runtime プリミティブでは
mode=backend、mode=session、またはmode=batchを使用します。 - レジリエンスレベルと期待値のエラー緩和には
EstimatorV2を使用します。Sampler には異なるノイズ管理オプションがあり、Estimator のようなレジリエンスレベルはありません。 - ハードウェア制約の情報源として、
BackendV2.target、backend.operation_names、backend.coupling_map、およびバックエンドの直接属性を参照します。backend.configuration()やBackendPropertiesは使用しないでください。 - Sampler の出力はクラシックレジスター名で読み取ります。ビット列は最上位ビットが先に表示され、Qiskit の量子ビット 0 は慣例的に最下位ビットです。
- コンパイル設定を比較する場合は、固定の
seed_transpilerを使用します。シミュレーターのシードを設定しても QPU の結果は決定的になりません。 qiskit.pulseは Qiskit 2.0 で削除されました。IBM ハードウェアではサポートされている分数ゲートを使用し、パルスモデルの研究では Qiskit Dynamics を使用してください。- QPY は Qiskit ネイティブの回路シリアライズ形式です。信頼できない回路アーティファクトには Python pickle を使用しないでください。
旧 API から現行 API への詳しい対応表は、references/migration.md を参照してください。
実行モード
ワークロードの形態とアカウントプランに応じて選択します。
- ジョブモード:単発の処理に使用します。プリミティブを
mode=backendでインスタンス化します。 - バッチモード:独立したジョブをまとめて送信します。Open Plan で利用できます。
- セッションモード:優先的な後続実行が有効な反復ジョブに使用します。Open Plan では利用できません。
from qiskit_ibm_runtime import Batch, SamplerV2 as Sampler
with Batch(backend=backend, max_time="10m") as batch:
sampler = Sampler(mode=batch)
jobs = [sampler.run([circuit], shots=1024) for circuit in isa_circuits]
results = [job.result() for job in jobs]
送信後にセッションとバッチを終了します。コンテキストを抜けると新しい送信は停止しますが、受け付け済みのジョブはサービスの制限に従って完了します。
リファレンス一覧
現在のタスクに必要なファイルのみを読みます。
| トピック | リファレンス |
|---|---|
| バージョン、インストール、認証、CI | references/setup.md |
| 回路、パラメーター、制御フロー、QPY | references/circuits.md |
| V2 PUB、ブロードキャスト、ローカル結果と Runtime の結果 | references/primitives.md |
| ターゲット、ISA 回路、レイアウト、パスマネージャー | references/transpilation.md |
| IBM バックエンド、モード、ジョブ、Aer、エラー緩和 | references/backends.md |
| マップ/最適化/実行/分析の一連のパターン | references/patterns.md |
| アルゴリズム、アドオン、Nature、ML、Optimization | references/algorithms.md |
| 回路、結果、状態、バックエンドのプロット | references/visualization.md |
| Qiskit 0.x/1.x と Runtime の移行 | references/migration.md |
| テスト、再現性、トラブルシューティング | references/testing.md |
| 上流ドキュメント、リリースノート、バージョンの基準 | references/sources.md |
同梱スクリプト
スキルのディレクトリから実行します。
# Installed-package and legacy-environment checks; no network or credential reads
python scripts/check_environment.py
# Runnable V2 local Sampler and Estimator example
python scripts/run_local_primitives.py --shots 1024 --seed 7
# Read-only IBM backend capability inspection; uses saved credentials
python scripts/inspect_runtime.py --min-qubits 5
Runtime の検査スクリプトはバックエンドを選択または検査しますが、量子ジョブは送信しません。
最終チェックリスト
Qiskit のコードを返す前に、以下を確認します。
- パッケージのバージョンと Python との互換性を確認します。
- statevector プリミティブまたは Aer を使ってローカルで実行します。
- パラメーターの順序、オブザーバブルの量子ビット数、クラシックレジスター名を確認します。
- 正確な
BackendV2ターゲットに対してトランスパイルし、回路の深さと二量子ビット演算を確認します。 - すべてのオブザーバブルに最終レイアウトを適用します。
- QPU のコストを見積もり、ジョブ、バッチ、セッションの各モードから選択します。
- ジョブ ID、パッケージのバージョン、シード、バックエンド名、プリミティブのオプション、結果のメタデータを保存します。
- ソース、ログ、ノートブック、バージョン管理に API キーを決して公開しないでください。
関連スキル
cirq:Google の量子コンピューティングフレームワークです。pennylane:自動微分機能を備えた、ハードウェアに依存しない量子機械学習フレームワークです。pi-agent:最小限のターミナル向けコーディングハーネスである Pi を構築し、使用します。