トランスパイルとルーティング
トランスパイルは量子回路をチップが実際にサポートするネイティブゲート集合へ書き換える処理であり、ルーティングは限られた接続性の下で論理量子ビットを物理量子ビットに割り当て、直接接続のない箇所にSWAPゲートを挿入する処理です。
どういう意味か
HやCXといった馴染みのあるゲートで書いた回路は、通常そのままハードウェアで実行できません。各チップはネイティブゲート集合だけをサポートしますが、この集合はチップの固定的な物性ではなく、キャリブレーション(校正)によって決まります。そのため同じチップでも日によってサポートするゲートが変わり、量子ビットごとに異なることさえあります。トランスパイルは同じ抽象レベルの言語間の翻訳であり(TypeScript→JavaScriptのように)、より低いレベルへ下りるコンパイル(Java→バイトコード)とは異なります。実際のチップは接続性が非常に限られており、接続されていない2つの量子ビット間の2量子ビットゲートは物理的に不可能です。ルーターはSWAPゲートを挿入して状態をチップ上で移動させますが、SWAPひとつごとに追加の2量子ビットゲート・時間・誤りが積み上がるため、ルーターは迂回を最小化します。最適化器は冗長なゲートを相殺して削除し(隣接する2つのHは消える)、バリアは数学的演算ではなくスケジューラへの指示として、その線を越えた並べ替えを禁止します。優れたトランスパイラーはキャリブレーション認識型です — マッピングを選ぶ際に当日の量子ビットごとのコヒーレンス時間と接続ごとの誤り率を読み、測定結果を元の論理量子ビットへ戻すためにそのマッピングを記憶します。日常のたとえ
よくある誤解
- すべての量子ビットは同等ではありません — コヒーレンス時間と誤り率は量子ビットごと・接続ごとに異なり(2量子ビットゲートの忠実度もペアごとに違う)、これらの値は毎日変動します。だからトランスパイラーは均一なチップを仮定せず、当日のキャリブレーションデータを読む必要があります。
- 「論理量子ビット」には2つの意味があります — プログラム中の回路レベルの量子ビットと、多数の物理量子ビットから構成される誤り訂正量子ビットです。トランスパイルの文脈では前者、つまりハードウェアへのマッピング前の回路中の1量子ビットを指します。
- バリアは数学的演算ではありません — マルチスレッドコードで並べ替えを防ぐmutexのような、スケジューラへの指示です。量子状態ではなく、最適化器に許される操作を変えます。
要点
- ネイティブゲート集合はチップの固定物性ではなくキャリブレーションで決まります — 同じチップが日ごとに、量子ビットごとに異なるゲートをサポートし得ます。
- SWAPひとつごとに追加の2量子ビットゲートが入り、時間と誤りが増えます — ルーターの存在意義はSWAP数の最小化です。
- Qiskitは最適化レベル0〜3を提供します。ゲート相殺(隣接する2つのHの削除)が典型的な最適化で、バリアがその適用範囲を制御します。
- 2026年現在、Qiskitは世界の量子開発者の約70%が使用し、累計4兆個以上の回路が実行されました — トランスパイラーの品質は活発な研究の主戦場です。
理解度チェック
物理量子ビットQ0とQ1が直接接続されていないチップで、cx(0,1)はなぜ直接実行できず、トランスパイラーはどう対処しますか?
- A.CXゲートは万能ではないため、単一量子ビットゲートに置き換える必要があるから
- B.2量子ビットゲートは接続されたペアを結ぶカプラーに作用するため、ルーターがSWAPゲートを挿入して状態を接続された量子ビットへ移動させる
- C.Q0とQ1は常に周波数が異なり、いかなる相互作用も永遠に不可能だから
- D.トランスパイラーが両方の量子ビットを測定し、接続された量子ビット上に状態を再構成する
答えを見る
答え: B. 2量子ビットゲートは接続されたペアを結ぶカプラーに作用するため、ルーターがSWAPゲートを挿入して状態を接続された量子ビットへ移動させる
理由: 2量子ビットゲートは物理的に接続された量子ビット間のカプラーに作用します。直接接続がない場合、ルーターがSWAPゲートを挿入して状態を接続されたペアまで運びます — SWAPごとに追加の2量子ビットゲート・時間・誤りのコストがかかるため、ルーターはこれを最小化します。
量子回路におけるバリア(barrier)とは何ですか?
- A.量子状態の時間発展を止めるユニタリゲート
- B.回路の2つの段階を区切る測定
- C.最適化器がその線を越えてゲートを並べ替えたり相殺したりすることを禁じるスケジューラ指示
- D.量子ビットをクロストークから隔離するハードウェア部品
答えを見る
答え: C. 最適化器がその線を越えてゲートを並べ替えたり相殺したりすることを禁じるスケジューラ指示
理由: バリアは数学的演算ではありません。マルチスレッドコードのmutexのように、トランスパイラーの最適化器へ「この線を越えて演算を並べ替え・相殺するな」と指示します — 例えば、放っておけば削除される隣接した2つのHを保存するために使います。
前提となる概念
Core concept is standard practice, but native gate sets, vendor tooling and ecosystem stats (Qiskit adoption, optimization levels) evolve; graded timebound as of source date. Qiskit ~70% / 4T-circuit stats re-verified 2026-07-10 against IBM Newsroom (2026-06-02); the 70% figure originates from the Unitary Fund 2023 OSS survey (self-selected sample).
