mcpField
Q
qiskit

qiskit

github.com/crazymsn開発2335 回インストール22 週間前に更新
リポジトリ

qiskit について

量子回路や量子アルゴリズムを開発する人向けの、オープンソース量子計算フレームワークQiskitのスキルガイドです。回路最適化、シミュレーター、ハードウェア実行、可視化、エンドツーエンドの手順を扱います。

主な機能

  1. 01量子回路の構築と合成
  2. 02SamplerとEstimatorによる実行
  3. 03トランスパイルと回路最適化
  4. 04シミュレーターとハードウェアバックエンド
  5. 05回路と結果の可視化
  6. 06量子アルゴリズムライブラリ

活用シーン

  1. 01量子回路の構築と実行
  2. 02ハードウェア実行向けの回路最適化
  3. 03最適化または化学アルゴリズムの実装

インストール

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

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

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

同梱ファイル

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

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

詳細

Qiskit

概要

Qiskitは、1,300万回以上のダウンロード数を誇る、世界で最も人気のあるオープンソース量子コンピューティングフレームワークです。量子回路を構築し、ハードウェア向けに最適化して、シミュレーターや実機の量子コンピューターで実行し、結果を分析できます。IBM Quantum(100量子ビット以上のシステム)、IonQ、Amazon Braketなど、他のプロバイダーもサポートしています。

主な機能:

  • 競合製品と比べて83倍速いトランスパイル
  • 最適化された回路で2量子ビットゲートが29%削減
  • バックエンドに依存しない実行(ローカルシミュレーターまたはクラウド上のハードウェア)
  • 最適化、化学、機械学習向けの包括的なアルゴリズムライブラリ

クイックスタート

インストール
uv pip install qiskit
uv pip install "qiskit[visualization]" matplotlib
最初の回路
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つのトランスパイルステージ(init、layout、routing、translation、optimization、scheduling)
  • 高度な機能(仮想置換の除去、ゲートのキャンセル)
  • 共通パラメーター(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 を参照

対象トピック:

  • Map: 問題を量子回路に変換する
  • Optimize: ハードウェア向けにトランスパイルする
  • Execute: プリミティブで実行する
  • Post-process: 結果を抽出して分析する
  • 完全な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. 実行モードを選択する:

    • Session: 反復アルゴリズム(VQE、QAOA)
    • Batch: 独立した並列ジョブ
    • Single job: 単発の実験
パフォーマンス最適化
  • 本番環境では optimization_level=3 を使用する
  • 2 量子ビットゲートを最小限に抑える(主要な誤りの原因)
  • ハードウェアを使用する前にノイズありシミュレーターでテストする
  • トランスパイル済みの回路を保存して再利用する
  • 変分アルゴリズムでは収束を監視する
ハードウェア実行
  • 送信前にバックエンドのステータスを確認する
  • テストには least_busy() を使用する
  • 後で取得できるようにジョブ ID を保存する
  • エラー緩和(resilience_level)を適用する
  • ショット数は少なめに始め、最終実行で増やす

よくあるパターン

パターン 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 import transpile

service = QiskitRuntimeService()
backend = service.backend("ibm_brisbane")

qc_optimized = transpile(qc, backend=backend, optimization_level=3)

sampler = Sampler(backend)
job = sampler.run([qc_optimized], shots=1024)
result = job.result()
パターン 3: 変分アルゴリズム(VQE)
from qiskit_ibm_runtime import Session, EstimatorV2 as Estimator
from scipy.optimize import minimize

with Session(backend=backend) as session:
    estimator = Estimator(session=session)

    def cost_function(params):
        bound_qc = ansatz.assign_parameters(params)
        qc_isa = transpile(bound_qc, backend=backend)
        result = estimator.run([(qc_isa, hamiltonian)]).result()
        return result[0].data.evs

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

追加リソース

コメント