qiskit について
量子回路や量子アルゴリズムを開発する人向けの、オープンソース量子計算フレームワークQiskitのスキルガイドです。回路最適化、シミュレーター、ハードウェア実行、可視化、エンドツーエンドの手順を扱います。
主な機能
- 01量子回路の構築と合成
- 02SamplerとEstimatorによる実行
- 03トランスパイルと回路最適化
- 04シミュレーターとハードウェアバックエンド
- 05回路と結果の可視化
- 06量子アルゴリズムライブラリ
活用シーン
- 01量子回路の構築と実行
- 02ハードウェア実行向けの回路最適化
- 03最適化または化学アルゴリズムの実装
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ crazymsn/ academic-skills --skill qiskitインストール後、Claude Code で/qiskitを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/algorithms.mdbackends.mdcircuits.mdpatterns.mdprimitives.mdsetup.mdtranspilation.mdvisualization.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
ベストプラクティス
開発ワークフロー
-
まずシミュレーターから始める: ハードウェアを使用する前にローカルでテストします
from qiskit.primitives import StatevectorSampler sampler = StatevectorSampler() -
必ずトランスパイルする: 実行前に回路を最適化します
from qiskit import transpile qc_optimized = transpile(qc, backend=backend, optimization_level=3) -
適切なプリミティブを使用する:
- ビット列には Sampler を使用(最適化アルゴリズム)
- 期待値には Estimator を使用(化学、物理)
-
実行モードを選択する:
- 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')
追加リソース
- 公式ドキュメント: https://quantum.ibm.com/docs
- Qiskit Textbook: https://qiskit.org/learn
- API リファレンス: https://docs.quantum.ibm.com/api/qiskit
- パターンガイド: https://quantum.cloud.ibm.com/docs/en/guides/intro-to-patterns