量子コンピュータを学べるレシピ紹介

# はじめに
AxrossRecipeを運営している松田です。
今回は、新しい時代のコンピュータとして幅広い分野への応用が期待されている**量子コンピュータ**について解説し、**量子コンピュータをプログラミング通して学べるレシピ**を紹介します。

# 量子コンピュータの理解
## 量子コンピュータとは
量子コンピュータ（quantum computer）は、**物理学の理論をベースとした量子力学の現象を情報処理技術に適用することで、現在のコンピュータでは解くことができない複雑な問題を解くことが期待されている新しいコンピュータ**のことです。

現在私たちが使っているコンピュータは、時間や規模の限界により解くことができない問題が多くあります。また、複数のコンピュータを並列させて処理能力を増やしても、莫大な電力量がかかり現実的ではありません。

量子コンピュータは、現在のコンピュータでは解けない現実社会が抱えている複雑な問題でも、**劇的に小さな消費電力で現実的な時間内に解ける可能性**をもっているため、世界で注目され、国家レベルで研究開発が進められています。最近では、GoogleやIBMなど大手IT企業によって商用サービス化されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/fce08406-ef5f-ed3c-89f2-b24b920ac63a.png)
超電導型量子コンピューター「IBM Q」　SCIENCE PHOTO LIBRARY/AFLO

## 量子コンピュータの特長
量子コンピュータは、量子ビット（Qubit）を使って計算することで桁違いの処理能力を発揮し、現在のコンピュータでは成し得ないレベルの計算を実現できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/e138f78d-7dd4-a19f-a351-f31b27629dcc.png)
#### 量子ビットによる処理の高速化
現在のコンピューターの情報単位は「ビット」ですが、量子コンピューターの情報単位は「量子ビット」です。

通常の「ビット」では、「0」「1」の状態の「どちらか」しか取ることはできません。一方で、「量子ビット」では量子力学の「重ね合わせの原理」を利用することで「0」「1」の「どちらも」取りながら計算を行うことができます。「量子ビット」をn個集積させると2n通りの数字を「同時に」表すことができ、しかもそれを1回の計算ステップで扱うことができます。

つまり、現在のコンピューターの「ビット」では膨大な計算ステップが必要な処理を、量子コンピューターでは1回の計算ステップで処理できるため計算に要する時間を劇的に減らすことが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/4daf9d69-8faf-027f-1c04-22effd20695f.png)

### 量子ゲート方式と量子アニーリング方式
量子コンピュータは問題を解く方法の違いにより、量子ゲート方式と量子アニーリング方式の大きく2つに分類されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/6d3bba91-2077-b662-aff1-f28b2982a2af.png)
参照：[DATA INSIGHT](https://www.nttdata.com/jp/ja/data-insight/2018/0918)

**＜量子ゲート方式＞**
量子状態にある素子の振る舞いや組み合わせで計算回路を作り、問題を解いていきます。超電導やイオントラップ、トポロジカルなど様々な実現手法が提案されています。従来型のコンピュータの上位互換として期待が高く、グーグルやIBMなどの大手ITベンダー、またリゲッティ・コンピューティングやIonQなどのスタートアップがハードウェアの開発を進めています。

**＜量子アニーリング方式＞**
組み合わせ最適化問題を解くことくに特化しています。高温にした金属をゆっくり冷やすと構造が安定する「焼きなまし」の手法を応用して問題の解を求めていきます。商用化で先行する[**D-Wave Systems**](https://www.dwavesys.com/learn/featured-applications/)のハードウェアでは、格子状に並べられた素子に相互作用を設定し、横磁場という信号をかけて、素子全体のエネルギーが最も低くなる状態を探し出していきます。日本ではNECが2023年までの実用化を発表しています。

### 研究開発が加速
**＜量子ゲート方式＞**
IBMが2016年に5量子ビットの量子コンピューターを発表。そして、2017年に16量子ビットの量子コンピューターをクラウドで公開しています。

**＜量子アニーリング方式＞**
2011年の「D-Wave One」の第1世代が128量子ビット、2013年にNASAとGoogleが共同購入した第2世代が512量子ビット、2015年の第3世代「D-Wave 2X」が1152量子ビット、2017年1月の第4世代「D-Wave 2000Q」が2000量子ビットという状況です。

量子ゲート方式と量子アニーリング方式とでは、実現されている量子ビットの数が違い過ぎ、並べて語ることが難しいが、いずれにしても超伝導量子ビットがハードウェアとしては最も進んでいます。
主な研究拠点は、カリフォルニア大学サンタバーバラ校/グーグル（注3）、IBM、イエール大学、Rigetti、デルフ工科大学（オランダ）、日本では東大、理研、NECなどが挙げられます。
参照：[野村総合研究所(NRI)](https://www.nri.com/jp/knowledge/glossary/lst/ra/quantum_computer#:~:text=%E9%87%8F%E5%AD%90%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%A8%E3%81%AF%E3%80%81%E3%80%8C%E9%87%8F%E5%AD%90,%E3%81%8C%E6%9C%9F%E5%BE%85%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82)

## 量子コンピュータの活用事例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/bdee3a46-3bf2-ffa5-82aa-3e0b44f73d8c.png)
### モビリティーサービス
- 北京市街と北京空港の間の渋滞を解消する移動ルートの計算
- 実際の渋滞を考慮しながらシャトルバスの適切な間隔での運行
- 工場内を走る自動搬送車の渋滞軽減
- 国際配送ルートやサプライチェーン（供給網）の調整

### 金融
- 市場・ポートフォリオ予測
- モンテカルロシミュレーションの高速化

### 医療
- 化学反応のシュミレーション
- ゲノム解析
- たんぱく質の構造解析

### サイバーセキュリティ
- ブロックチェーンと仮想通貨などの暗号資産の解読
- セキュリティキーの解読

### 製造業・農業
- 材料科学や制御プロセスの先端分析
- リスクモデルの構築
- 肥料の製造の効率化

# 量子コンピュータのレシピ紹介
Axrossで学べる**量子コンピュータのレシピ** をご紹介します。
### [01_砕けた表現で理解するQiskitにおける量子コンピュータ入門](https://axross-recipe.com/recipes/78)
投稿者：[@りくぼん](https://axross-recipe.com/users/482)さん

古典回路を用いた回路を量子ビットで再現する方法を学ぶことができます。
量子コンピュータにおける専門用語の紹介も行っているため量子コンピュータに少しでも興味を抱いている方は必見です。

実務では、加算装置の実装に活用できます。

https://axross-recipe.com/recipes/78
### [02_難しい数学を使わず理解する量子コンピュータ入門レシピ（Blueqat + Gloverアルゴリズム）](https://axross-recipe.com/recipes/84)
投稿者：[@りくぼん](https://axross-recipe.com/users/482)さん

量子コンピュータのシミュレータ用ライブラリのBlueqatを用いて量子ゲートの基礎について学ぶことができます。実践編としてGloverのアルゴリズムという探索系のアルゴリズム(2qubit）を実装していきます。最後に、全ビット対応の加算器を実装していきます。

実務では、全ビット対応の加算機などの量子コンピュータの実装に活用できます。

https://axross-recipe.com/recipes/84


# 最後に
プログラミングは「**習うより慣れろ、繰り返し演習すること**」が重要です。

AxrossRecipeのレシピを通して、プログラムの意味を考えながら写経（コードを実際に書き写す行為）し、実際に動くものをつくりながら学ぶことで、新たな知識の習得やスキルアップの一助になれれば幸いです。
![アクロス広告最新版.jfif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/7267aabd-66db-0b48-45c1-376cb4909998.jpeg)

![アクロス広告最新版.jfif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/4e24c0d5-1b4f-fac1-e0b8-ec87fd90672f.jpeg)