量子コンピューターとは何か、ただのエンジニアが解説してみる

quantum-computerエンジニアコラム

 本記事ではただのエンジニアである私が量子コンピュータに興味を持ったので、学んだことを解説していく記事となっております。一部間違いなどを含む可能性がありますので、見つけましたらコメント頂けると幸いです。

量子コンピューターとは

 量子コンピューターとはそもそも何でしょうか。従来のコンピュータと一体何が違うのでしょうか。まずはここから解説してみたいと思います。
 従来のコンピューターはビット(bit)という0と1の世界(2進数)で作られており、2進数同士を計算することで演算を行っています。一方量子コンピューターでは量子ビットという単位が用いられており、0と1と重ね合わせという状態を持っています。この重ね合わせという状態を利用することで従来のコンピュータでは出来なかった特定の問題に対しての複雑な問いを解くことが期待されています。
 これまで従来のコンピューターでは数十年に渡り飛躍的に性能向上が図られており、ムーアの法則と呼ばれる「半導体の集積率が18ヶ月で2倍になること」従って伸びてきました。一方ビッグデータ処理や機械学習が流行っていく中で計算領域の限界に来ていることも事実であり、スパコンでも数千年かかると言われる計算を量子コンピューターで解くことが期待されています。

量子とは

 そもそも量子とは何でしょうか。Wikipediaを見てみましょう。

量子(りょうし、quantum)は、物理学において用いられる、様々な物理現象における物理量の最小単位である。主に巨視的な物理を取り扱う古典力学では、物理量は実数で表される連続量だが、量子力学では、量子を数え上げたものとして扱われる。たとえば電気量は、電気素量の整数倍の値となる。

量子 – Wikipedia

 少し小難しい言葉が並んでいますが、覚えるポイントは物理現象における物理量の最小単位である、ということです。量子(光子や粒子)と通常の物質で何が違うのでしょうか。それは量子の場合は観測時によって状態が変わるということです。これは二重スリット実験という有名な実験で証明されたもので、、、説明が難しいので分かりやすいYoutubeを載せておきます笑

量子コンピューターの計算方法

 量子コンピューターでは0と1と重ね合わせという量子ビットを利用することと、量子の性質が分かったところ、実際にどうやって問題を解いていくか学んでみます。
 今回はGroverのアルゴリズムという方法を用いて4桁のパスワードを解くことを例に考えてみましょう。一般的なコンピューターでは4桁のパスワードを解くときに0000から9999までを1つ1つ入力することで当てるため、最大10000回の試行回数(平均10000/2 = 5000回)が必要になります。一方量子コンピューターでGroverのアルゴリズムを利用するとおよそ100回の試行回数で当てることが可能になるようです。
 ※アルゴリズムについては勉強中なので別の記事で詳しく解説してみます…

ゲート型とアニーリング型

 量子コンピューターにはゲート型とアニーリング型という2つに別れています。
 ゲート型は前述で説明したような量子ビットを用いた計算機であり、1994年にショアのアルゴリズムが発明されると注目を浴びました。しかし実現には様々な課題があり、現在は因数分解程度の問題しか解くことができず実用化にはまだまだ掛かると言われています。最近ではIBM社がIBMQと呼ばれるゲート型量子コンピューターを川崎市に設置したようです。
 一方アニーリング型焼きなましという方法が用いられ、元々は熱処理の方法であったものを量子コンピュータに応用した技術になります。ゲート型より実用化面で注目されており、カナダのD-Wave社は2011年に「D-Wave One」(128量子ビット)の発表から始まり、2020年には「D-Wave Advantage」(5000量子ビット)が発表されています。

量子コンピューターを動かすには

 量子コンピューターを直接動かすには、設備を保持している施設に直接出向くか(といっても見学程度かな?)、クラウド上で展開されているサービスを利用するのが良いでしょう。最近だとAWS BracketAzule Quantumが利用可能なので金額に気をつけて利用してみてください。気づかぬうちに高額請求になることは避けましょう。
 またシミュレーターなども色々出ているみたいですので、私も今後試してみようと思いますが、みなさんもぜひ試してみてください。IBM Quantum Simulatorsqsim

将来の期待

 ここまで量子コンピューターとは何か、どんなメリットが有るのかなどを簡単に説明しましたが、続いて実際にどのような事に役立つのかを解説してみます。
 現在有力視されているのが、化学・金融・EC・広告・物流など分野において従来のコンピューターやスパコンで解くことに時間がかかってしまうような問題を解くことが想定されています。例えば渋滞を回避するための最適化問題だと一つの区画を絞っても数千台という車が走行しており、これらの車に最適な経路を示すには膨大な計算が必要なことは想像で分かると思います。こうした問題を量子コンピューターで早い時間で解ければ、日常生活がより便利になるでしょうか。
 また、ECサイトなどでレコメンデーションをユーザーに表示するアルゴリズムがあるとすると、ユーザーの趣向を表す状態は購入履歴、閲覧履歴、性別、居住地、年齢など条件を加えれば加えるほど、計算処理に時間がかかることが想定されます。こうした問題を解決し、より既存ECサイトの売上が上がるようになるでしょうか。

エンジニアとして

 最後に、私は普段はAndroidアプリの開発、バックエンド、AWSなどのクラウドを中心に開発をしているただのエンジニアですが、今後量子コンピューターの領域を学んでいくべきかを考えてみます。

 現在の量子コンピューターはまだまだ実用化段階で、すぐにビジネスに直結できるものではなくPoCが主流になっているという感覚です。一方実用化の兆しも見えてきており、実用化された際には従来のコンピューターが主流にはなりつつも、多くの日常生活の問題は量子コンピューターを利用して解決されるようになるでしょう。そうした場合現代のエンジニアが将来求められることは、こうした複雑な問題を解きビジネスの価値を上げることであると考えています。
 また、現代のように設計をしてプログラムを書いてサービスを作る、お客様に納品する、運用するといった作業は最終的にはNoCodeツールや人工知能で置き換わることも想定されます。

 そういった中で、今後10年、20年を見据えると、今流行りのDARQと呼ばれるブロックチェーン、AR/VR、機械学習、量子コンピュータのいずれかの技術スタックが求められる予想ができますので、エンジニアとして何かしらの専門性を作っていく上で、量子コンピューターを少しずつ学んでいくのは将来の投資になるのではないかと思います。(私自身も今後どこまで学ぶかは悩み中…笑)

以上です。

コメント