mcpField
A
alterlab-qiskit

alterlab-qiskit

github.com/alterlab-ieu開発7866 回インストール5 週間前に更新
リポジトリ

alterlab-qiskit について

alterlab-qiskitは、量子計算開発者向けのQiskit活用スキルです。量子回路の構築、最適化、実行、結果分析を扱い、Qiskit 2.x向けの例と実践上の注意点をまとめています。

主な機能

  1. 01量子回路の構築と合成
  2. 02回路のトランスパイルと最適化
  3. 03シミュレーターと実機での実行
  4. 04SamplerとEstimatorの利用
  5. 05量子アルゴリズムの実装と結果分析

活用シーン

  1. 01実機実行向けの回路準備
  2. 02ローカルシミュレーターでの回路テスト
  3. 03VQEやQAOAによる問題への取り組み

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-qiskit

インストール後、Claude Code で/alterlab-qiskitを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
evals.json
references/
algorithms.md
backends.md
circuits.md
patterns.md
primitives.md
setup.md
transpilation.md
visualization.md

詳細

Qiskit

概要

Qiskit はオープンソースの量子コンピューティングフレームワークです。量子回路を構築し、ハードウェア向けに最適化し、シミュレーターまたは実際の量子コンピューターで実行して、結果を分析できます。IBM Quantum(100 量子ビットを超える Heron および Nighthawk システム)、IonQ、Amazon Braket、その他のプロバイダーに対応しています。

バージョンに関する注意: 例は Qiskit SDK 2.x(qiskit>=2,<3、Python 3.10 以降。2026-09 時点の最新バージョンは 2.5.x)および qiskit-ibm-runtime ≥ 0.40(最新バージョンは 0.49)を対象としています。古いチュートリアルはこれらの変更により動作しないため、参考にするコードは必ず次の変更点を確認してください。

  • Qiskit 1.0 では execute()、BasicAer、qiskit.tools(tools.jupyter、job_monitor などを含む)、および bind_parameters が削除されました。プリミティブ、qiskit.providers.basic_provider.BasicSimulator、assign_parameters を使用してください。
  • Qiskit 2.0 では qiskit.pulse、BackendV1、V1 参照プリミティブ(qiskit.primitives.Sampler/Estimator)、および Instruction.c_if が削除されました(with qc.if_test(...) を使用してください)。
  • Qiskit 2.1 では ライブラリー回路のクラス形式(RealAmplitudes、EfficientSU2、TwoLocal、ZZFeatureMap、QFT など)が非推奨になりました(3.0 で削除予定)。real_amplitudes()、efficient_su2()、n_local()、zz_feature_map()、QFTGate を使用してください。
  • Runtime V2 プリミティブでは mode=(バックエンド、Session、または Batch)を指定します。従来の session=/backend= キーワードを使うと TypeError が発生します。Options クラスと channel="ibm_quantum" は廃止されました。現在のプラットフォームは quantum.cloud.ibm.com です(API キーとインスタンス CRN を使用し、チャンネルは "ibm_quantum_platform")。

このスキルを使用する場面

ユーザーが次のことを希望する場合に、このスキルを使用してください。

  • IBM Quantum ハードウェアまたはローカルシミュレーターで、ゲートモデル回路を構築、トランスパイル、実行する
  • ジョブ、バッチ、セッションモードで Qiskit Runtime プリミティブ(SamplerV2/EstimatorV2)を使用する
  • エラー抑制/緩和(トワーリング、動的デカップリング、TREX、ZNE)を適用する
  • Qiskit エコシステム(Nature、Machine Learning、Optimization)を使って、変分アルゴリズムや教科書的なアルゴリズム(VQE、QAOA、Grover、QPE)を実行する
対象外
シナリオ代わりに使用
Google Quantum AI プロセッサー、Cirq ネイティブ回路、または Cirq での XEB/RB 特性評価alterlab-cirq
PyTorch/JAX の自動微分で勾配を学習するハイブリッド量子古典モデルalterlab-pennylane
開放系のダイナミクス — Lindblad マスター方程式、デコヒーレンス、空洞 QEDalterlab-qutip
量子回路を使わない古典的な量子化学(DFT、配座、pKa)alterlab-rowan

主な機能:

  • 複数の最適化レベルを備えた、設定可能なトランスパイル
  • 2 量子ビットゲート数を削減する回路最適化
  • バックエンドに依存しない実行(ローカルシミュレーターまたはクラウドハードウェア)
  • 最適化、化学、ML 向けの包括的なアルゴリズムライブラリー

クイックスタート

インストール
uv pip install "qiskit>=2,<3"
uv pip install "qiskit[visualization]" matplotlib   # circuit/result plotting
uv pip install qiskit-ibm-runtime                   # IBM hardware + Runtime primitives
最初の回路
from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler

# Create Bell state (entangled qubits)
qc = QuantumCircuit(2)
qc.h(0)           # Hadamard on qubit 0
qc.cx(0, 1)       # CNOT from qubit 0 to 1
qc.measure_all()  # Measure both qubits

# Run locally
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
print(counts)  # {'00': ~512, '11': ~512}
可視化
from qiskit.visualization import plot_histogram

qc.draw('mpl')           # Circuit diagram
plot_histogram(counts)   # Results histogram

主な機能

1. セットアップとインストール

インストール、認証、IBM Quantum アカウントの設定について詳しくは、次を参照してください。

  • references/setup.md を参照

取り上げる内容:

  • uv を使用したインストール
  • Python 環境のセットアップ
  • IBM Quantum アカウントと API トークンの設定
  • ローカル実行とクラウド実行
2. 量子回路の構築

ゲート、測定、合成を使った量子回路の構築については、次を参照してください。

  • references/circuits.md を参照

取り上げる内容:

  • QuantumCircuit を使った回路の作成
  • 1 量子ビットゲート(H、X、Y、Z、回転、位相ゲート)
  • 多量子ビットゲート(CNOT、SWAP、Toffoli)
  • 測定とバリア
  • 回路の合成とプロパティ
  • 変分アルゴリズム向けのパラメーター化回路
3. プリミティブ(Sampler と Estimator)

量子回路を実行し、結果を計算する方法については、次を参照してください。

  • references/primitives.md を参照

取り上げる内容:

  • Sampler:ビット列の測定値と確率分布を取得
  • Estimator:オブザーバブルの期待値を計算
  • V2 インターフェイス(StatevectorSampler、StatevectorEstimator)
  • ハードウェア向け IBM Quantum Runtime プリミティブ
  • セッションモードとバッチモード
  • パラメーターのバインド
4. トランスパイルと最適化

回路を最適化し、ハードウェアでの実行に備えるには:

  • references/transpilation.md を参照してください

取り上げるトピック:

  • トランスパイルが必要な理由
  • 最適化レベル(0~3)
  • トランスパイルの6つのステージ(初期化、レイアウト、ルーティング、変換、最適化、スケジューリング)
  • 高度な機能(仮想置換の省略、ゲートのキャンセル)
  • 主なパラメーター(initial_layout、approximation_degree、seed)
  • 効率的な回路を作るためのベストプラクティス
5. 可視化

回路、結果、量子状態を表示するには:

  • references/visualization.md を参照してください

取り上げるトピック:

  • 回路図(テキスト、matplotlib、LaTeX)
  • 結果のヒストグラム
  • 量子状態の可視化(ブロッホ球、State City、QSphere)
  • バックエンドのトポロジーとエラーマップ
  • カスタマイズとスタイル設定
  • 論文掲載に適した品質の図の保存
6. ハードウェアバックエンド

シミュレーターや実際の量子コンピューターで実行するには:

  • references/backends.md を参照してください

取り上げるトピック:

  • IBM Quantum のバックエンドと認証
  • バックエンドのプロパティとステータス
  • Runtime プリミティブを使った実機での実行
  • ジョブ管理とキューイング
  • セッションモード(反復アルゴリズム)
  • バッチモード(並列ジョブ)
  • ローカルシミュレーター(StatevectorSampler、Aer)
  • サードパーティープロバイダー(IonQ、Amazon Braket)
  • エラー緩和の手法
7. Qiskit Patterns ワークフロー

量子コンピューティングの4段階ワークフローを実装するには:

  • references/patterns.md を参照してください

取り上げるトピック:

  • マップ:問題を量子回路に変換する
  • 最適化:ハードウェア向けにトランスパイルする
  • 実行:プリミティブを使って実行する
  • 後処理:結果を抽出して分析する
  • VQE の完全な例
  • セッション実行とバッチ実行
  • 代表的なワークフローパターン
8. 量子アルゴリズムと応用

特定の量子アルゴリズムを実装するには:

  • references/algorithms.md を参照してください

取り上げるトピック:

  • 最適化:VQE、QAOA、Grover のアルゴリズム
  • 化学:分子の基底状態、励起状態、ハミルトニアン
  • 機械学習:量子カーネル、VQC、QNN
  • アルゴリズムライブラリ:Qiskit Nature、Qiskit ML、Qiskit Optimization
  • 物理シミュレーションとベンチマーク

ワークフロー選択ガイド

必要な作業に応じて、以下を参照してください:

  • Qiskit をインストールする、または IBM Quantum アカウントを設定する → references/setup.md
  • 新しい量子回路を構築する → references/circuits.md
  • ゲートと回路操作について理解する → references/circuits.md
  • 回路を実行して測定値を取得する → references/primitives.md
  • 期待値を計算する → references/primitives.md
  • ハードウェア向けに回路を最適化する → references/transpilation.md
  • 回路や結果を可視化する → references/visualization.md
  • IBM Quantum ハードウェアで実行する → references/backends.md
  • サードパーティープロバイダーに接続する → references/backends.md
  • エンドツーエンドの量子ワークフローを実装する → references/patterns.md
  • 特定のアルゴリズム(VQE、QAOA など)を構築する → references/algorithms.md
  • 化学または最適化の問題を解く → references/algorithms.md

ベストプラクティス

開発ワークフロー
  1. まずシミュレーターを使う:ハードウェアを使う前にローカルでテストします

    from qiskit.primitives import StatevectorSampler
    sampler = StatevectorSampler()
    
  2. 必ずトランスパイルする:実行前に回路を最適化します

    from qiskit import transpile
    qc_optimized = transpile(qc, backend=backend, optimization_level=3)
    
  3. 適切なプリミティブを使う:

    • ビット列には Sampler(最適化アルゴリズム)
    • 期待値には Estimator(化学、物理)
  4. 実行モードを選ぶ:

    • セッション:反復アルゴリズム(VQE、QAOA)
    • バッチ:独立した並列ジョブ
    • 単一ジョブ:単発の実験
パフォーマンスの最適化
  • 本番環境では optimization_level=3 を使います
  • 2量子ビットゲート(主なエラー源)を最小限に抑えます
  • ハードウェアを使う前にノイズありシミュレーターでテストします
  • トランスパイル済みの回路を保存して再利用します
  • 変分アルゴリズムの収束を監視します
ハードウェアでの実行
  • 送信する前にバックエンドのステータスを確認します
  • QPU 名をハードコードするのではなく、least_busy() を使用するか、service.backends() の一覧を確認します。QPU は時間の経過とともに廃止されます(例:すべての 127 量子ビットの Eagle システム(ibm_brisbane など)は廃止されています)
  • セッションモードには有料プランが必要です。Open Plan ユーザーはジョブモードまたはバッチモードで実行します
  • 後で取得できるようにジョブ ID を保存します
  • エラー緩和を適用します。Estimator では resilience_level を使用します(Sampler に resilience_level はありません。twirling / dynamical_decoupling を使用します)
  • ショット数を少なくして開始し、最終実行では増やします

一般的なパターン

パターン 1:シンプルな回路の実行
from qiskit import QuantumCircuit, transpile
from qiskit.primitives import StatevectorSampler

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
パターン 2:トランスパイルを使用したハードウェアでの実行
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
from qiskit.transpiler import generate_preset_pass_manager

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

# Hardware only accepts ISA circuits (native gates + connectivity)
pm = generate_preset_pass_manager(backend=backend, optimization_level=3)
qc_isa = pm.run(qc)

sampler = Sampler(mode=backend)          # job mode; pass a Session/Batch for other modes
job = sampler.run([qc_isa], shots=1024)
counts = job.result()[0].data.meas.get_counts()
パターン 3:変分アルゴリズム(VQE)
from qiskit_ibm_runtime import Session, EstimatorV2 as Estimator
from scipy.optimize import minimize

# Transpile once, then lay the observable out on the same physical qubits —
# an un-mapped observable does not match the ISA circuit's width.
ansatz_isa = pm.run(ansatz)
hamiltonian_isa = hamiltonian.apply_layout(ansatz_isa.layout)

with Session(backend=backend) as session:      # paid plans; use Batch on the Open Plan
    estimator = Estimator(mode=session)

    def cost_function(params):
        # parameter values travel in the PUB — no re-transpiling per iteration
        result = estimator.run([(ansatz_isa, hamiltonian_isa, params)]).result()
        return float(result[0].data.evs)

    result = minimize(cost_function, initial_params, method='COBYLA')

追加リソース

AlterLab Academic Skills スイートの一部です。

コメント