部屋を見渡すと、ここに
「はじめにお読みください」という説明書があるので
これを先に読むべきですね。これを閉じて、
どうやってプレイするかお見せしましょう。
では始めます。
こんにちは。Coding with Qiskitへようこそ。
私はエイブです。
今日のエピソードはゲームについてです。
ゲームは、どんなタイプの技術でも
最初のアプリケーションになることが多いです。
例えば、ブロックチェーンで開発されたゲーム、
CryptoKittiesがあり、
人工知能の分野ではAlphaGoのような
競争力のあるゲームがあります。
量子の分野でも同じです。
量子の分野で良いことは、
この分野が始まったばかりで
あなたがゲームを開発するのに
とてもよい機会だということです。
ゲームの構築には2つの方法があって、
まずOpenQASMコードを使って、
回路から一連のコードを取り出し
シミュレーションで実行させる方法です。
別の方法では、ゲーム全体をQiskitをベースに
Pythonを使って
回路を生成します。OpenQASMの代わりに。
シミュレーションの方がすぐに使えるので
ゲームに取り込みやすいです。
このエピソードでは、
QiskitBlocksというゲームを紹介します。
このゲームは、素晴らしいデベロッパー・
アドボケートの一人である
ジェームス・ウィーバーによって開発されました。
QiskitBlocksはオープンソースのボックス型
ゲームエンジンのMinetestを使っています。
Minetestは、基本的にマインクラフトのオープンソースのようなもので
ボックスを使ったタイプのゲームを
プレイするのに使えます。
ボックスとここで言っているのは
Minetestにあるこの様なブロックの物体で
グラフィック情報を持ったユニットで
三次元空間に定義されます。
QiskitBlocksをインストールするには
QiskitBlocksのGithubリポジトリーの
Readmeに説明書があります。
ジェームス・ウィーバーのgithubページです。
Readmeを見て、
下にある説明のリンクからファイルを
見つけられますが、
まずは、Minetestをインストールして、
それからQiskitBlocksのワールドを
インストールします。
Minetestをダウンロードしてインストールするために、
minetest.netのウェブサイトに行き、
Minetestがインストールできたら、開きます。
私はすでにインストールしているので、
このように見えます。
ここでの最初の注文は、
QiskitBlocksのワールドをダウンロードすることです。
「コンテンツ」タブに行って、
「オンラインコンテンツを見る」をクリックし、
QiskitBlocksとタイプして、
「検索」をクリックすると、
QiskitBlocksが出てきます。
私はすでにインストールしているので、
「アンインストール」しか見えませんが、
あなたの場合には、
このページからインストールできます。
インストールが終わったら、
「メインメニューに戻る」をクリックして
ゲームを開始できるようになります。
QiskitBlocksのワールドにスイッチします。
このワールドのページに入ったら、
全てのオプションのチェックを外して、
「作成」をクリックして、新しいワールドを作ります。
ワールドの名前をタイプします。
αα_xxxなど
ここではabe_worldとします。
Seed値は0を入れます。
マップジェネレーターはflatを選択し
ゲームはQiskitBlocksを選択し、
「作成」ボタンをクリックします。
私の場合はすでに「coding_with_qiskit」という
ワールドが作ってあるので
このワールドをクリックして、
「ゲームプレイ」で開始します。
これでゲームが始められます。
ゲームの操作について知りたいと思った時は
いつでも、エスケープボタンを押すと
画面にキーボードのショートカットの
一覧が表示されます。
この最初の部屋では
このビデオシリーズで見てきたすべての
量子操作がそろっています。
それぞれについて、もっと学習したかったら、
ここの「？」マークを右クリックします。
より近くに寄るには、ナビゲーションボタンの
W、A、S、Dを使えるので
「W」キーを押して近くにより、
右クリックをして
個別のゲートについて学べます。
部屋を見渡すと、
「はじめにお読みください」という説明書があるので
これを先に読むべきですね。近くに寄って
このページでは、
どの様にゲームを進めるか書いてあるので
この説明書を読んで
このゲームの目的が何か、ゲームの構造を理解します。
では閉じて、実際にゲームをプレイするところを
お見せしましょう。
では始めます。
この部屋を歩き回って、
周りに何があるか見ます。
このワールドには3つのメインエリアがあって、
それは、
量子猫のサンドボックス、量子回路ガーデン
この建物のパズルルームです。
まだ建設中の量子回路のエリアも
いくつかあり、そこへアクセスできる
トロッコもあります。
パズルルームに行きましょう。後ろに戻って
隠された部屋があるようです。
ハシゴがあって、
下に降りて欲しいようなので
ハシゴに近づいて、「シフト」を押して降ります。
「シフト」をクリックして、1階に降りました。
ここには、
プレイするための一連のボックスと
量子回路のようなものがあるようです。
では、何をするのか見てみましょう。
ここにチェストがあり、
上に「？」のサインがあります。
1/16のサインから
これが1番目のパズルだと分かります。
「？」サインを右クリックして、読みます。
1つの配線でできたこの回路は
Xゲート、またはパウリX、NOT、
またはビットフリップ
と呼ばれるゲートを扱います。
では、回路を見てみましょう。
回路の目的は
0から1へ状態を移すことです。
そのために、すでに読んだようにXゲートを使います。
どこにXゲートはあるでしょうか。
Xゲートのためのツールは、
このチェストにあるので、チェストに近づいて
右クリックをして
ツールがもらえます。
Xをツールキットに追加して
回路の方に歩いて行って
そして
Xを置きます。
ワオ、いい音楽ですね。
何かいいことをしたという意味です。
ええと
球体のブロックが変化して
状態が上から下へ変化したのが
分かります。
OK。これが16個のミッションのうちの1個目です。
続いて次の部屋に行くと、
次の回路があります。
再び「？」マークが右にあって、
番号は2/16です。
「？」マークによると、この回路は、2つの配線で
1個または1個以上のXゲートを使って
古典的な状態を作ります。
どんな感じかというと
|10>の状態を作ります。
Qiskitの方式では、下が1で上が0の状態になるので、
Xゲートをここに置きます。
ツールを再び取り出しましょう。
右クリックをして、
Xツールをもらって
それを
ここのボックスに置きます。
ここでのポイントは
ここに青いボックスが見えますが、
この問題で求める解が
上の別の青いボックスにあります。
確率振幅、この回路の状態の確率振幅が
ここに青色で示され、
位相は矢印で表されます。
このボックスの見た目を
上にあるボックスのようにするのです。
では、Xゲートを
ここに置いて
ポイントは、
このボックスの見た目を
上のボックスと同じにするので
求めている10の状態を作ることができました。
ブロッホ球が見えますね。
0の状態から
下の1の状態に変化しました。
これが、16個のうちの2個目です。
先に進んで・・
 
ここでヒントを
この部屋から出て戻り、
お知らせしたいのは、
ここまで急いで歩いてきましたが、
飛行モードを使うことができます。
飛行モードを有効・無効の切り替えは
「K」のキーをクリックすることで可能です。
私が有効にしたり無効にしたりするのを
お見せします。
無効にすると、ゆっくり歩くことができます。
スピードアップしましょう。
レベル１に飛行モードで戻ります。
 
 
最初にいた部屋から外に出ます。
あたなをお連れするのは、
量子テレポーテーション回路を
QiskitBlocksでプレイできるところです。
この黄色のボックスをたどっていくと
テレポーテーションがこの下に隠されています。
フェンスが見える所に
歩いていきます。
近寄ると
回路の一連のボックスが見えます。
「シフト」をクリックして、降りて
回路に近づくために地面に降ります。
OK。少し後ろに下がるとよく見えます。
この回路は量子テレポーテーションのビデオで
見たのでよく知っていますね。
テレポーテーションの回路を示しています。
2つの量子ビットにエンタングルメントを作り、
この量子ビットの状態を
この3つ目の量子ビットにテレポートします。
この回路を完成するには、
ここにブロックを入れて、Z測定があります。
Z測定を上側のここで行い、
二つの量子ビットの測定結果によって、
ZゲートまたはXゲートを適用します。
これがおなじみのテレポーテーションの回路で
以前のビデオにあったのを覚えていると思いますが、
2つの量子ビットをエンタングルさせて
この量子ビットから
3個目の量子ビットにテレポートさせます。
この回路を解く説明書は
ここにあります。
再び右クリックで開き
回路が量子テレポーテーションになって
いることがわかります。
量子テレポーテーション回路を完成するために
古典制御のIfブロックを使います。
その仕掛けは、
ここの空のボックスがあり、
古典の測定結果の条件よって
Zゲートを適用する必要があるようになっています。
古典ブロックをあそこから探し、
適切な場所にそれを置きます。
ですので、チェストに戻り、
右クリックをして、一連のツールがありますね。
ここで特別な古典制御を
使いたいので、
取り出して、
コントロールツールも取り出します。
先に進んで、
そして
古典制御ツールをここに置きます。
ここにインディケーターがあって、
そのラインは、どの量子ビットに対応しているか
示しています。
Xゲートに関しては、
2個目のラインが有効になっていて
2個目の量子ビットの状態が1の時、
Xゲートが適用されます。
このZゲートは1個目の量子ビット用
なのは正しいですが、
条件はその値が0の時のみとなっています。
再び、右クリックで
if=1にしたら、
このパズルが解けます。
OK。面白いですね。
さて、ここで、すごいことをお見せします。
いま学んだこのゲームが実際にどう動くかです。
Qの文字の絵がここに見えますね。
近くによって
右クリックすると
QASMコードが表示されます。
この回路から生成されたものです。
これが実行されたCASMコードで
正しいコードか確認できます。
実際にこのQASMコードを
クリップボードにコピーして、ウィンドウを閉じて
Minetestのフルスクリーンモードから抜けて
ブラウザーを開いて、
quantum-computing.ibm.comと入れて、
Composer画面に行って、
New circuitをクリックして、ここに
Minetestの回路のQASMコードをペーストすると、
確かに
生成された回路はMinetestにあったものと
まったく同じです。
ここにあなたが入れた制御ゲートがあります。
これが古典ビットをコントロールするところです。
このビットは
このビットを測定した結果です。
これでゲームの回答が正しかったかどうか
確認できます。
たぶん、初めてOpenQASMコードを
ご覧になったと思いますが、
OpenQASMはシンプルなテキストベースの言語で
量子回路を記述するものと思ってください。
QASMは、Quantum Assembly Languageの略です。
Open Quantum Assembly Languageの全体について説明した論文があります。
量子回路の詳細な書き方や
別のコンポーネントの記述のアィデイアが
このように載っています。
QiskitBlocksがどう動いているか見てみましょう。
githubのQiskitBlocksのページに戻ります。
QiskitBlocksのフォルダーに行って
「mods」に行って
「q_command」フォルダーを探します。
「init.lua」というファイルを見ます。
ここの説明書きに
置かれたブロックから量子回路を構築する
説明があります。
このコードがQASMと
どのようにインタラクトするか分かります。
「compute_circuit」をこのページで検索すると
これが回路を計算する機能の様に見えます。
回路のパラメーターを入れて、
qasm_strを生成し、
最初はこのラインから始まり
回路から別のコンポーネントを加えて構築されます。
最終的にこのQASMコードが
IBM Qのシミュレーターで実行されます。
今日やったことをリマインドしましょう。
Minetestをダウンロードして
QiskitBlocksのワールドを入れて、
ゲームをプレイしました。ゲームの中で
様々な量子回路のパズルを解くことを学び、
OpenQASMの機能で
どうやってゲームが動くか学びました。
生成されたOpenQASMコードは
IBM Quantum Experienceにコピペできて
構築された回路が
シミュレーションで実行され、
あなたの解いたパズルの解と同じに
なったことが分かりました。
あなたのOpenQASMを基にしたゲームの
アイディア作成に
役立つと嬉しいです。
このほかにもQiskitやOpenQASMを使ったゲームが
下のリンクにあるのでぜひ見てください。
これがYoutube、Coding with Qiskitの
9個目で最後のエピソードです。
ですが、良いニュースは、
私たちは今始めたばかりだということです。
新しいビデオの作成を予定しています。
ぜひこの動画を「高く評価」するをクリックして、
チャンネル登録をして
新しい動画を見忘れないように。
動画をご覧になってくださった皆様、
また改善のためのコメントをくださった皆様に
心から感謝いたします。
次のビデオを楽しみにしていてください。
エイブより。また見てください。
