Cirq(サーク)とは、Googleの量子AIチームが開発する、Pythonで量子回路を組んでシミュレータや実機で実行するためのオープンソースフレームワークです。QiskitがIBM製であるのに対し、CirqはGoogleのSycamoreなど実機を直接の対象に設計されています。この記事では、インストールから量子ビットの定義、回路の組み立て、シミュレータでの実行までを、実際に動かしながら確認します。
この記事で分かること
- Cirqは、Google Quantum AIチームが開発するPython製の量子計算フレームワーク(Apache 2.0ライセンスのオープンソース)で、GoogleがGitHub上のquantumlib組織で公開しているが、『公式にサポートされたGoogle製品ではない』と明記されていること
- `cirq.LineQubit`や`cirq.GridQubit`で量子ビットを定義し、`cirq.Circuit`にゲート操作を積んでいく書き方で、Qiskitの`QuantumCircuit`とは量子ビットの指定方法や回路の表示形式が異なること
- 回路は内部で`Moment`(同じ時刻に実行される操作のまとまり)という単位に自動で分割されており、この『時間軸を明示的に扱う』設計がCirqの大きな特徴であること
対象読者:Qiskitなどで量子回路の基本を触ったことがあり、Googleが開発するCirqも試してみたいエンジニアの方
執筆:ゆるふわ量子編集部 最終更新日:2026年10月28日
準備するもの
- Python 3.11以降(Cirqの公式ドキュメントが要求するバージョン)
- 量子コンピュータの実機は不要(まずは手元のシミュレータだけで完結します)
pip install cirqインストールが終わったら、バージョンを確認しておきましょう。
import cirq
print(cirq.__version__)1.7.0最初の量子回路を書く
Cirqでは、量子ビットを最初に変数として作ってから、それをゲートに渡していきます。もっとも手軽な量子ビットの作り方がcirq.LineQubit(1列に並んだ量子ビット)です。
import cirq
q0, q1 = cirq.LineQubit.range(2) # 1列に並んだ2つの量子ビット
circuit = cirq.Circuit(
cirq.H(q0), # q0にアダマールゲート
cirq.CNOT(q0, q1), # q0を制御、q1を標的にCNOT
cirq.measure(q0, q1, key="result"),
)
print(circuit)0: ───H───@───M('result')───
│ │
1: ───────X───M─────────────Qiskit入門のQuantumCircuit(2, 2)のように量子ビット数を数字で指定するのではなく、Cirqではq0・q1という量子ビットそのものをゲートの引数に渡します。回路をprint()すると、ゲートが時間軸に沿ってテキストで描かれるのも特徴です。
シミュレータで実行して、測定結果を確認します。
sim = cirq.Simulator()
result = sim.run(circuit, repetitions=1000)
print(result.histogram(key="result"))Counter({3: 505, 0: 495})00(10進数で0)と11(10進数で3)がほぼ半々で出ており、GHZ状態の記事やQiskitの入門記事で見た「もつれ」が、Cirqでも同じように確認できました。
CirqとQiskitは何が違うのか
どちらもPythonで量子回路を書けるオープンソースのSDKですが、量子ビットの指定方法や想定する実機、コミュニティの中心が異なります。
Qiskit
- IBMが開発。実機はIBMの量子コンピュータが中心
- QuantumCircuit(2, 2)のように量子ビット数を指定
- Qiskit Runtime経由で実機にアクセス
Cirq
- Google Quantum AIチームが開発。実機はGoogleのSycamoreなどが中心
- LineQubit・GridQubitなど量子ビットを変数として作って渡す
- cirq_google経由でGoogleのQuantum Engineにアクセス(権限が必要)
Moment(モーメント)
Cirqの回路(Circuit)を構成する基本単位。「同じ時刻に実行される操作のまとまり」を表す。上の2量子ビットの回路は、H→CNOT→測定の3つのMomentに自動で分割される(len(circuit)で確認できる)。QiskitのQuantumCircuitにはこの概念が表に出てこず、Cirqが時間軸を明示的に扱う設計であることを示す特徴の一つ。
print("モーメント数:", len(circuit))モーメント数: 3パラメータ付きの回路を扱う
パラメータシフト則をQiskitで実装した記事と同じように、Cirqでも回転ゲートの角度をあとから差し込めるパラメータ付き回路が書けます。QiskitのParameterに対応するのが、Pythonの数式処理ライブラリsympyのSymbolです。
import sympy
q = cirq.LineQubit(0)
theta = sympy.Symbol("theta")
param_circuit = cirq.Circuit(
cirq.ry(theta).on(q),
cirq.measure(q, key="m"),
)
print(param_circuit)0: ───Ry(theta)───M('m')───thetaに具体的な値を入れるにはcirq.resolve_parameters()を使います。
resolved = cirq.resolve_parameters(param_circuit, {"theta": 3.1416})
result = sim.run(resolved, repetitions=1000)
print(result.histogram(key="m"))Counter({1: 1000})Ry(π)相当の回転を加えたので、測定結果は1にほぼ揺らぎなく確定します。VQEやQAOAのような「パラメータを少しずつ変えて最適化する」アルゴリズムを実装する際には、PennyLane入門の自動微分と組み合わせる方法もありますが、Cirq単体でもresolve_parametersを使った総当たり的な探索やスキャンが書けます。
実機(Googleのハードウェア)を使うには
cirq_googleというサブパッケージ経由でGoogleのQuantum Engineにアクセスできますが、これはGoogle Cloudの承認済みプロジェクトが必要な制限付きのサービスです。この記事で扱ったのは、誰でも無料で使えるローカルシミュレータ(cirq.Simulator)だけです。
まとめ
- Cirqは、Google Quantum AIチームが開発するPython製のオープンソース量子計算フレームワーク
cirq.LineQubitで量子ビットを作り、cirq.Circuitにゲート操作を積んで、cirq.Simulatorで実行する- 回路は
Momentという時間軸の単位に分割される。この時間軸を明示的に扱う設計がQiskitとの大きな違いの一つ - パラメータ付き回路は
sympy.Symbolとcirq.resolve_parameters()で扱える - 実機(Googleのハードウェア)へのアクセスは
cirq_google経由だが、承認済みのGoogle Cloudプロジェクトが必要
よくある質問
Q. CirqとQiskit、どちらを最初に学ぶべき?
A. どちらから始めても量子回路の基本(重ね合わせ・もつれ・測定)は同じように学べます。IBMの実機やQiskit Runtimeに興味があればQiskit、Googleの研究やTensorFlow Quantumと組み合わせたい場合はCirqが向いています。
Q. CirqからQiskitの回路に変換できる?
A. CirqとQiskitは別々に開発されているSDKのため、回路オブジェクトを直接変換する公式な機能はありません。同じアルゴリズムを両方のSDKで書き直す、またはOpenQASMなど共通の中間形式を経由する方法があります。
Q. Cirqで実機(Googleの量子コンピュータ)を無料で使える?
A. 2026年10月時点では、cirq_google経由のGoogle Quantum Engineへのアクセスは制限付きで、承認済みのGoogle Cloudプロジェクトが必要です。この記事で紹介したcirq.Simulatorによるローカル実行は誰でも無料で試せます。
📚 もう少し詳しく(背景)気になる人向け・タップで開く
Cirqは、GoogleのQuantum AIチームが開発を主導し、GitHub上のquantumlib組織でApache 2.0ライセンスのオープンソースとして公開されているフレームワークです1。README・ドキュメントのフッターには、現在のNISQ(ノイズあり中規模量子)時代の回路を作成・編集・実行するためのPythonフレームワークだと説明されています1。
一方で同じページには「これは公式にサポートされたGoogle製品ではない(This is not an officially supported Google product)」と明記されており、Google社内の公式プロダクトというより、Quantum AIチームが主導するオープンソースプロジェクトという位置づけです1。
現在の最新版は1.7.0系で、Python 3.11以降がサポート対象です1。Googleの実機(Sycamoreなど)へのアクセスは別パッケージのcirq_googleを通じて提供されていますが、利用には承認済みのGoogle Cloudプロジェクトが必要になります1。
次に読むなら
- Qiskit入門|量子回路をPythonで書いて動かしてみる — 同じく量子回路をPythonで書くQiskitの基本を知りたい方に
- PennyLane入門|量子回路を自動微分して最適化する — パラメータ付き回路を自動微分で最適化する、Cirqとも連携できるライブラリを知りたい方に
- クラウド量子コンピュータの比較 — IBM・Google以外のクラウド量子コンピュータサービスも含めて比較したい方に
- GHZ状態をQiskitで作る — 今回Cirqで確認したもつれ状態を、Qiskitで3量子ビット以上に拡張した例を見たい方に
参考資料・出典
- quantumlib/Cirq | GitHubCirqの公式リポジトリ。概要説明、ライセンス(Apache 2.0)、サポートするPythonバージョン、最新リリース情報を確認
- cirq | PyPICirqの配布パッケージページ。pip installでのインストール方法を確認
ゆるふわポータルでは、一次情報・公的資料にもとづき、専門用語をできるだけやさしく翻訳することを心がけています。内容に誤りや古い情報がある場合は、お問い合わせからご連絡ください。
執筆:ゆるふわ量子編集部 最終更新日:2026年10月28日
