手を上げるキュビットくんゆるふわ量子コンピュータ
計算中のキュビットくん

Cirq入門|Googleの量子計算フレームワークで回路を書く

2026-10-28 ・ 実践

#Cirq#Python#量子回路#実践

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

インストールが終わったら、バージョンを確認しておきましょう。

Python
import cirq
print(cirq.__version__)
1.7.0

最初の量子回路を書く

Cirqでは、量子ビットを最初に変数として作ってから、それをゲートに渡していきます。もっとも手軽な量子ビットの作り方がcirq.LineQubit(1列に並んだ量子ビット)です。

Python
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()すると、ゲートが時間軸に沿ってテキストで描かれるのも特徴です。

シミュレータで実行して、測定結果を確認します。

Python
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経由で実機にアクセス
VS
🔲

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が時間軸を明示的に扱う設計であることを示す特徴の一つ。

Python
print("モーメント数:", len(circuit))
モーメント数: 3

パラメータ付きの回路を扱う

パラメータシフト則をQiskitで実装した記事と同じように、Cirqでも回転ゲートの角度をあとから差し込めるパラメータ付き回路が書けます。QiskitのParameterに対応するのが、Pythonの数式処理ライブラリsympyのSymbolです。

Python
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()を使います。

Python
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。

次に読むなら

参考資料・出典

  • quantumlib/Cirq | GitHubCirqの公式リポジトリ。概要説明、ライセンス(Apache 2.0)、サポートするPythonバージョン、最新リリース情報を確認
  • cirq | PyPICirqの配布パッケージページ。pip installでのインストール方法を確認

ゆるふわポータルでは、一次情報・公的資料にもとづき、専門用語をできるだけやさしく翻訳することを心がけています。内容に誤りや古い情報がある場合は、お問い合わせからご連絡ください。

執筆:ゆるふわ量子編集部 最終更新日:2026年10月28日

Footnotes

  1. quantumlib/Cirq | GitHub(https://github.com/quantumlib/Cirq)。Cirqの概要説明(NISQ回路向けPythonフレームワーク)、Apache 2.0ライセンス、「公式にサポートされたGoogle製品ではない」との明記、Python 3.11以降のサポート、最新リリースv1.7.0の情報を確認。 ↩ ↩2 ↩3 ↩4 ↩5

この記事をシェア:𝕏 で共有LINEで送る

🔥 この分野の最新トレンドをチェック →

あわせて読みたい