徒然草｜量子計算機編｜その１〉


こんにちは｜こんばんは。カエルのアイコンで活動しております @kyamaz です。
本稿は、[量子コンピュータ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/quantum)の17日目（2019年12月17日）のエントリ記事です。

## TL;DR

本稿の対象は「**量子コンピューターや量子プログラミングに興味がある方**」です。本稿は、私の独自の見解や意見が書かれた「*ポエム色の強い記事*」です。私が普段、量子コンピューターに関するコミュニティ活動をする中で、心に移りゆくよしなし事を、そこはかとなく書きつくってみました。各段は独立した内容になっております。興味の湧いたタイトルの段だけでもお読み頂けると嬉しいです。

[一、量子コンピューターの定義](#一、量子コンピューターの定義)
[二、量子超越性](#二、量子超越性)
[三、ベンチャーの起業](#三、ベンチャーの起業)
[四、生命科学分野にむけて](#四、生命科学分野にむけて)
[五、量子プログラミング言語とコンパイラ](#五、量子プログラミング言語とコンパイラ)
[六、関連記事を読むコツ](#六、関連記事を読むコツ)
[七、市民研究者](#七、市民研究者)
[八、グラフの演算？](八、グラフの演算？)
[九、量子カードゲーム](九、量子カードゲーム)

## 一、量子コンピューターの定義
巷では「量子コンピューター」という言葉が飛び交っております。おそらく「量子コンピューターとは○○ができる計算機です」もしくは「量子コンピューターとは○○をするための計算機です」という簡単な言葉で表現された定義らしきものを信じて、量子コンピューターというものが分かった、と言いたい人が増えてきたように思います。
私が運営に関わっているコミュニティ[^11]の勉強会にも、その定義を学びたくて、毎回新しい方々が参加してくださるようになり、色々な立場の方々に興味を持たれているのだと実感するようになりました。
そこで、私が「量子コンピューターの定義」について、おこがましくもお伝えしていることがあります。それは<font color="red">「量子コンピューターの定義は「○○の計算機です」といえる確固たる定義は決まっていません」</font>という拍子抜けな言葉です。2019年末の現時点では、それぞれのご研究や企業の立場を通じて「量子コンピューター」という言葉が使われているように思います。すなわち私も私の立場に応じた捉え方をしていて、私が表現する言葉も（それほど間違った解釈ではないと思っているものの）正しいとは限りません。
リチャード・ファインマンの「もしも量子力学を理解できたと思ったならば...それは量子力学を理解できていない証拠だ」という名言があるそうです。量子コンピューターにこの名言を当てはめると「もしもそれが量子コンピューターだと思ったら、それは量子コンピューターではないかもしれません。」となりそうです。こういった禅問答のような発想が許されてしまいそうな領域であるのが、この分野の魅力でもあると、私は感じています。
それでもこの分野で活動している私としては、なんらかの表現をしなければなりません。そこで、私がどのような計算機を量子コンピューターと呼んでいるのかを、あくまで個人的な見解としてご紹介します。

私が量子コンピューターと考えているのは、

|物理的な量子現象である‘量子状態’を、計算のための‘情報’として積極的に扱う計算機|
|---|

です。
抽象的な言葉を並べている感はありますが、ここに具体的なイメージを例示してしまうと、分かった気分になるだけに思います。国際標準化団体のIEEE[^1]では、用語の標準化の提案活動なども検討されてもいますが、積極的な活動は未だ聞こえてきません。今は本稿を読まれた皆さんが、それぞれの量子コンピューター像を作り上げていくしかないかもしれません。
新聞紙面をはじめ、多くのメディアにも取り上げられたお陰で「量子コンピューター」という言葉が、急速に一般に広がりました。専門外の人は、量子コンピューターを簡単な表現で理解したいものです。その心理から~~「今のスーパーコンピューターよりも凄い計算ができる計算機」~~（敢えて消し線で消します）という一見、簡便な言葉で取り上げられることが多い様ですが、現時点では皆さんが想起するような計算能力はありません。これから10年20年、もしくは30年後かに、皆さんの想像する能力を発揮する計算機になっていることを期待して、私もこの分野に関わっていこうと考えております。

## 二、量子超越性
１年前の状況は、去年2018年の私のアドベントカレンダー記事の冒頭「[わずか１年前の話し](https://qiita.com/kyamaz/items/a0e468d78547ee466318)」でも話題にしました。Google の John Martinis 氏の率いるチームは、2017年から量子超越性を示すために、粘り強く挑戦し続けており、今年2019年にめでたく公表できる成果まで達したとして、論文発表されました。
その後、計算量理論の立場から専門家の間でも、量子超越性を言うには足りるのかどうかという議論もあり、それはそれで面白い（？）論争[^3]がしばらくありました。研究者の生の議論が垣間見れるのも現代的でとても楽しいニュースでした。
しかし、この量子超越性が示されるであろう事は、２年前から Martinis 氏のチームも宣言しており、彼らのチームが目標としていた量子コンピューター・デバイスを作り上げたときには、「量子超越性の達成」とともに、その成果が示されることは、計画されていたイベントです。
CalTechで行われた John Martinis 氏のこの成果についての講演動画[^2]を見てみると、彼のチーム（Google）が 54量子ビット・チップ「Sycamore」（実機は1量子ビット欠損）を、実用に耐えられる程に、エラーを抑えたものに仕上げたこと。その事実こそが、凄いということだと感じられます。そして、この動画を詳しく見て頂くと分かりますが、チップ内の構造、ピンの配置やケーブリング等々、とても美しいです。この美しさ故に、安定して動作してくれそうな印象を、強く感じました。
つまり、量子超越性はその成果に華を添えるための、所謂、キャッチコピーでしか無さそうです。個人的には、私たちに有益で現実的な計算を、現在の最速の古典計算機より量子計算機が上回るのは未だ先のように思いますが、あるマイルストーンがクリアされたのは確かなようです。

## 三、ベンチャーの起業
突然ですが、いま日本国内で量子コンピューターに興味のある人たちはどれくらいの人数いるでしょうか？恐らくキチンとした調査機関でも調査されていると思いますが、私は Twitter のツイートからその人数を推測してみました。２年ほど前から、私は Twitter で量子コンピューター関連のツイートをした人をフォローすることを日課としていました。日々、関連ワードを検索しては、フォロイーを増やしてきました。そのフォロイー数や諸々のイベントの参加者数などから、おおよそ１０万人程がアーリーアダプタとして興味をもっている人数だと推測しています。ここ半年は、一般紙にも「量子コンピューター」のキーワードが登場し続けているために、言葉として知っている人が増えてしまい、その調査方法は最近は破綻してしまい、今は推測はできなくなりましたが、少なくとも半年前まではそれ位の人数だと見積もっております。
さて、この興味人口を前提として、ビジネス市場はどのような状況になるでしょうか。大学などの研究機関や大手企業の次世代の研究分野で研究やPoCの題材として取り扱う動きが少しずつ増えてきている印象です。政府の予算も増額傾向にありますが、その規模は５年で数百億円という規模。産業分野を推定すると、興味人口から推し量ると数百社がPoCなどは始めるでしょう。仮に、300社がここ５年間で各社1000万円を使うとすれば、産業界では５年総額30億円程度の市場ポテンシャルはあり得そうです。あとは、来るべき量子ネイティブ時代のための教育関連がターゲットになりそうです。
一方、日本国内による投資活動は（全く詳しくないのであくまで妄想レベルですが）10年で成果がでそうにない案件への投資は中々厳しいようです。
2019年が終わろうとしているこの時期に、国内の量子コンピューター・ベンチャーが相次いで数億円の資金調達を発表しました。その多くが研究・PoC市場に対するアルゴリズム開発、ソフトウェア開発、コンサルティングというビジネスを生業にするでしょうから、直近では人件費とその人件費に付随する費用で会社は維持されていくでことでしょう。優秀な人材を確保して、ソフトウェア資産や知財を獲得しつつ、数年後には、年間売上が数億円程度に伸ばして、収益がトントンのレベルにまで持って行くのが、投資家から求められる成果なのだと思います。
この状況の中では、量子計算の市場にアタックする活動は、企業の中で社内ベンチャーとして取り組むのがよいのではないかと、私は考えております。本業で利益を生みつつも、新しい分野に挑戦できる環境というのは、この分野への単独アプローチよりも現実的だと考えています。それでも量子計算を専業にできるかというとそうではいと思います。つまり、直近ではその計算能力がビジネスの現場では役に立たないことから、"量子計算"をセールス・トークとして最適化計算や数値計算の仕事を受託するようなビジネスになると思います。
そして、ソフトウェアだけでなく、量子コンピューターのハードウェアを開発するようなベンチャーは、日本からは排出されないような気がします。ハードウェア開発するには数百億円の資金調達が必要になります。現在ではそのような大型な案件は難しいのではないかと思います。ハードウェアを作り出すのは厳しいかもしれませんが、それでも国家戦略として、10年以内を目途に、量子技術をもとにしたベンチャー企業を10社以上創設する[^4]ともされており、期待される分野であるのは間違いないでしょう。

## 四、生命科学分野にむけて
Richard Y. Li らによる2018年の論文[^14]"Quantum annealing versus classical machine learning applied to a simplified computational biology problem"で、量子アニーラー「D-Wave」を生命科学分野の問題に適用した例が取り上げられています。アニーリング手法を用いた機械学習で、二値分類等の推論を行う研究例です。これ以外の研究でも「アニーリング手法を用いた機械学習」が研究されていますが、従来の機械学習の手法より、非常に良いとか速いということが示されているというよりは、ある特徴が示唆されています。
その特徴は、学習サンプル数がそれほど多くない場合でも、それなりの学習効果が得られそうということです。勿論、学習のためのサンプルデータ個数が十分であれば、従来の（古典的な）機械学習アルゴリズムは、非常によい推論ができます。しかし、十分な学習データがなければ、よい推論ができないケースが多いそうです。つまり、学習データの個数が十分に揃わないケースでは、量子機械学習アルゴリズムで推論すると、正解を得る確率が高くなる可能性もあるという示唆です。これには、科学的な根拠はありませんが、学習のためのサンプル数が取得しづらい場合には役に立ちそうです。
近年、バイオインフォマティクスでは、機械学習を取り入れた研究が盛んに行われています。しかし、生命科学分野では実験データとして十分な数を確保できないケースも多く、機械学習が有効に働かないケースも多いように思います。例えば、ある特定の病気に関する遺伝子データはそもそもサンプル数が少ないなどは十分なデータ数を取得できない例です。そのようなケースで量子機械学習を利用すると効果があるかもしれません。

生命科学分野の話題をもう１つ。私は過去に生物物理を専攻して勉強していて現在は量子計算に興味をもって活動をしております。そのきっかけとなったのが、2008年の"Environment-Assisted Quantum Walks in Photosynthetic Energy Transfer"という論文です。植物の光合成が、量子ウォークという量子計算と関連があるというものです。実は、この論文の共著者には、Seth Lloyd 氏と Al´an Aspuru-Guzik 氏というこの分野の先駆者であり、現在もこの分野を先頭で走っている研究者が名を連ねています。量子コンピューターが活躍している未来には、生命科学分野の研究に利用されている姿が、一つの夢かもしれません。

## 五、量子プログラミング言語とコンパイラ
量子コンピューター関連の言葉を調べるときに、Wikipedia の情報を鵜呑みにしない方がよいことが多いです。説明が書かれた時期が古く、その後新しい情報に書き換えられていない言葉が散見されます。また、英語の Wikipedia には掲載がある言葉でも、日本語に翻訳されていないことも多いです。「量子プログラミング言語」もその１つで、古い情報が説明のほとんどを占めており、最新の情報は１行で説明されている「Q#」ぐらいしかありません。現在では、言語処理系としては「Q#」が唯一、アクティビティのある量子プログラミング言語です。その言語のコンパイラ環境も含めて、Microsoft が提供しています。
私が選ぶ2019年の３大ニュース[^15]の１つがこの「Q#」のOSS化です。これまでも統合開発環境のVSCodeに、プラグインとして組み込める量子プログラミング言語として広く利用できるような状況ではありましたが、その中身は非公開でした。それが今年の夏、OSSとして公開され、誰でもその構造を知ることができ、コントリビュートもできるようになりました。今後、量子プログラミング言語やコンパイラの開発にも大いに刺激になる出来事でした。
そして私は、選択肢がこの界隈で１つというのも健全ではないと思い、仲間とともに gcc や llvm の従来のコンパイラの量子拡張[^12]に取り組んでいます。まず手始めに、RISC-V をターゲットアーキテクチャとして、シミュレーター実行環境を含めた開発を行なっており、今後、OpenQLのコミュニティ活動で育てていこうと考えております。

## 六、関連記事を読むコツ
量子コンピューターには大きく分けて２種類があります。

* 量子アニーリング方式の量子コンピューター
* 量子ゲート方式の量子コンピューター

量子コンピューターを取り上げているニュース記事を読むときには、この２つの方式のどちらの方式について言及しているのかを注意深く見る必要があります。
例えば、量子コンピューターの性能を表す１つの指標である「量子ビット数」だけをとっても、両方式で状況が異なります。「量子アニーリング方式」は2,048量子ビットのクラウドサービスがD-Wave社から提供されており、次のハードウェアは5,000量子ビットに届くであろうと言われています。一方で「量子ゲート方式」は54量子ビットがGoogleにより実現されており、IBM, Rigetti 等が、100量子ビット前後を次のターゲットにして研究開発を進めております。この量子計算の性能を表す「量子ビット」ですら、その方式に応じた指標があり、同じ意味では使えません。

もう１つニュースを読むときに注目したいのが、量子ビットや量子計算の精度についてです。量子コンピューターは、非常に制御が困難なため、現状は安定した計算が行える状況ではないと言われています。つまり、量子ビットの状態を安定的に保持したり、目的の演算に合った量子ビットを操作したりするための精度が課題になります。ニュース記事には、このような精度に関わる情報は細かく記載されていないことが多いです。そのような情報が不足している中で、読み手は計算能力について想像しなければならないのですが、ニュースの情報源（例えば、元となる論文）までたどって探してみると精度に関しての情報を見つけることができます。量子コンピューター関連のニュースには、伝達の途中で大切な情報が欠落することがあることを、想定しておきたいものです。

## 七、市民研究者
偉大な科学者も、その偉業を研究していたときの職業は研究者ではない著名人がいます。ピエール・ド・フェルマーは裁判官、ジャン＝アンリ・ファーブルは学校教師であり詩人、アルバート・アインシュタインは特許庁の審査官などなど。彼らは極端な例ですが、私たちにとって本業とは何でしょうか？近年はプロアマ問わず、宇宙の謎解きに貢献できる時代となりました。アメリカ・テキサス州在住のアマチュア天文家が2019年8月7日、木星の上層大気に隕石のようなものが衝突する珍しい映像を見事とらえたそうです[^5]。
自称ですが、私は量子情報・量子計算分野で「市民研究者」として活動しています。アマチュア研究が、あらゆる分野で研究活動として認知されるようになり、市民科学（シチズン・サイエンスや、クラウド・サイエンス）と呼ばれるようになっています。
内閣府の“第5期科学技術基本計画”[^6]にも、オープンサイエンスの推進が掲げられており、市民研究家が研究しやすい環境が整っています。例えば、一昔前までは最新論文を読むにも大学院の研究室に所属して学会で活動していなければなりませんでした。しかし、現代では arXiv で世界中の先端研究者が手にする情報とほぼ同じ情報（プレプリント）を、遅滞なく読むことができます。研究データも一般に公開されるケースが多くなってきました。
[量子零和ゲーム（令和改元記念）](https://qiita.com/kyamaz/items/1be495bc908be9458afb)でも取り上げた論文は、今から20年以上前の量子コンピューティングの第一次ブームと呼ばれる時代に提案された論文です。昨今、量子コンピューティングの第二次ブームと言われていますが、2000年前後の量子計算関連の論文には当時斬新だった理論がたくさんあります。今の最新研究の領域は、私のようなアマチュアには、最先端の研究には手を出せないことが多いですが、こういった過去の成果をいま掘り起こすことができるのも「市民研究者」ならではの役割のように感じています。

## 八、グラフの演算？
量子コンピューターの進展することで私が個人的に期待していることがあります。実は、私が量子コンピューターに興味をもったのが、グラフの演算というものを定義して、その計算ができないか？と考えたことがきっかけです。例えば、三角形と四角形を足したり、掛けたりする計算が定義できたら、その答えは何にすればよいでしょうか。△＋□は、家の形のような五角形でしょうか、それとも七角形でしょうか。星形引く三角形（☆-△）も考えてみたいところです。
それが量子計算と関係あるのか？というところですが、私には全くわかりません。ただ、感覚的に可能性を感じているだけです。この突拍子もない計算に、ある程度近しい概念を量子計算に見出せそうな予感があります。量子グラフ理論[^7]、量子ウォークや、Bob Coecke氏が提唱する ZX-calculus のような新しい概念を考えることができるのも、量子コンピューター界隈の楽しさでもあります。

## 九、量子カードゲーム
量子の特性を利用したゲームを量子ゲームと呼びましょう。量子ゲームでは、重ね合わせとエンタングルメントの特徴を活かさなければなりません。デジタルで表現することはできますが、実際にトランプやボードゲームのように実体のある形で遊べるゲームとして、実現するのが大変です。その中で、IBM製の｢[entanglion](https://entanglion.github.io/)｣は秀逸なボードゲームです。
私もそれに刺激されて、実体のあるカードゲームを考案してみましたので紹介します。名前は未だない[^13]です。考案したカードゲームは、単に量子ゲート方式の量子回路を組み立てていくゲームで、イメージとしては七並べに似たゲームです。カードは次のような「量子ゲート操作カード」や「量子ビット初期化カード」、測定基底による「測定カード」（合計45枚）を使います。

![gate_qard_simple_0_sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136950/3fa59932-225d-cfe1-421a-ee6023ec31f6.png)


参加人数は、４〜６名が適当です。カードをシャッフルして各人に同一の枚数が手札になるように配ります。手札をルールに沿って場に並べてゲームを進めます。
１）オレンジ色の「量子ビット初期化カード」を場に並べてスタートです。$\rvert 1 \rangle$のカードを出した人から、順に時計回りに場にカードを出していきます。
２）パスは３回までできます。カードが出せる状況でもパスはできます。ただし、４回パスすると、そのプレイヤーはゲームオーバーです。ゲームオーバーの時点で、手持ちのカードを全て開示して、得点を数えます。
３）順番がきたら手札から場にカードを並べて、量子状態を操作していきます。
　・「量子ゲート操作カード」は、量子状態を変えられます。
　・「制御カード」は上下２つの量子ビットに作用します。作用する位置が同じように操作が進んでいないと出せません。このあと次の順番以降のプレイヤーが被制御側に「量子ゲート操作カード」を置いて、そのカードと組み合わせて演算を完成させます。被制御側に制御カードを置けて、その時にはSWAP演算になります。
　・「ユニタリカード」は、このカードの上に量子ゲート操作カードを要求します。ただし、「Ｕ」の上に「Ｕ」を重ねることはできません。このカードを出したプレイヤーは、続けて任意のカードを出します。さらに、プレイ順が逆転（リバース）します。このカードを２枚もっているときには、「Ｕ」「Ｕ」と続けて出して、別の場所にもう１枚のカードを出して、順行（リバースのリバース）のままにすることも可能です。
　・「測定カード」は、その測定基底に従って確率振幅どおりに計算して、得点とします。（測定値は、０または１）測定基底が合わずに測定が確率的な場合は、「０」「１」のカードを引き、確率的に得点を決めます。（サイコロを使ってもよい。）
４）「誰かの手持ちカードが全てなくなったとき」または「全員がパスしたとき」のいずれかでゲームは終了です。手持ちのカードと、測定で得た得点を計算して、勝敗を判定します。
５）得点は次のように計算します。
　「測定による得点」・・・０点か１点です。測定は、全部で１０回行われます。（ゲーム全体では、最大１０点）
　「手持ちカード数による減点」・・・ゲーム終了時、またはパス４回でのゲームオーバー時に、手持ちのカードの枚数に応じて、得点が減点されます。
　・１量子ゲート操作カード「X」「Z」「H」「I」は１枚につき、−１ 点。
　・それ以外のカード(「U」や「制御カード」など)は１枚につき、 −５ 点。

カードのそれぞれの枚数など、このカードゲームの詳細はまたの機会に。


## 最後に
「あやしうこそものぐるほしけれ」の境地に至るほどに徒然なるままな記事にはできませんでしたが、本稿はここまでです。今回は「徒然草｜量子計算機編｜その１〉」と題しましたが、「その２」以降もいつか書きたいと思います。最後まで読んで頂きましてありがとうございました。[量子コンピュータ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/quantum)は、昨日は @SIProp_org さん、明日は @dave さんと、IPAの未踏ターゲット事業に採択[^12]された仲間とのリレーになりました。ほかの未踏ターゲットに採択された仲間もたくさん参加されていますし、オープンソース・コミュニティで共に活躍されている方々の参加も多くて、嬉しい限りです。

（●）（●）
/""　＿＿""＼ @kyamazは、オープンソース・コミュニティ[^11]を通じて、皆さんと共に新しい技術に挑戦していきたいと考えております。今後とも引き続き、どうぞ宜しくお願い致します。

May your Christmas wishes come true!
May happy Quantum Computer world has come!


[^1]: [P7130](https://standards.ieee.org/project/7130.html) - Standard for Quantum Technologies Definitions
[^2]: [Quantum supremacy using a programmable superconducting processor - J. Martinis - 11/1/2019](https://www.youtube.com/watch?v=FklMpRiTeTA)
[^3]: 森前氏が彼の議論をまとめたと[ツイート](https://twitter.com/TomoyukiMorimae/status/1192921555531190272)されています。
[^4]: [量子コンピューター 新国家戦略案 ベンチャー10社以上創設へ](https://www3.nhk.or.jp/news/html/20191127/k10012192471000.html)
[^5]: [Something Big Just Slammed Into Jupiter](https://www.gizmodo.jp/2019/08/smth-big-hit-jupiter.html)（GIZMODEより）
[^6]: [内閣府、科学技術基本計画](https://www8.cao.go.jp/cstp/kihonkeikaku/index5.html) 、[第5期科学技術基本計画　本文](https://www8.cao.go.jp/cstp/kihonkeikaku/5honbun.pdf)
[^7]: 「[量子力学的手法によるシステムと制御](https://www.amazon.co.jp/dp/4339033561)」の５章を参照ください。
[^11]: OpenQLプロジェクトは、量子コンピューターを扱うための様々なライブラリを開発するためのオープンソースプロジェクトです。量子情報、量子コンピューターに興味がある人たちが集うコミュニティを運営しております。詳しくは[connpassのサイト](https://openql.connpass.com/)をご覧ください。
[^12]: [2019年度未踏ターゲット事業公募結果について](https://www.ipa.go.jp/jinzai/target/2019/koubokekka_index.html)
[^13]: 某プロジェクトでも使われていますが、QarD(カードと読む)にしようか悩んでいます。
[^14]: [R. Li et al., npj Quantum Information 4,14, (2018) ](https://www.nature.com/articles/s41534-018-0060-8)
[^15]: 私が選ぶ今年(2019年）の量子計算分野の３大ニュースは、
  1. Google から54量子ビット・チップ「Sycamore」の成果の公表
  2. IonQをAmazon「Bracket」、Microsoft「Azure Quantum」から提供予定
  3. Microsoft「Q#」のOSS化
  です。