量子コンピューターのための新高水準プログラミング言語Silq

量子コンピューティングのためのハードウェアは、あと数年で現実の使用事例が見られる段階にまで開発が進んでいる(Volkswagenリリース)。それにともない、当然のことながら量子コンピューターの力を最大限に活かせるプログラム方法の研究も着実に増えている。その分野の研究のひとつにSilq(シルク)がある。スイス連邦工科大学(ETH)チューリッヒ校の量子コンピューティング用高水準プログラミング言語だ。

ここで重視すべきは、「高水準プログラミング言語」であるという点だ。この言語の開発に携わる研究者たちによれば、現在、量子コンピューターのプログラマーたちは、まだ抽象度の低い低水準言語で必要以上に苦労しているという。

「このプロジェクトの歴史は、量子コンピューターの中核的な問題を解決したいというところから始まっています」とETHコンピューター科学准教授であるMartin Vechev(マーティン・ベシェフ)氏は私に話してくれた。「しかし量子コンピューティングの中核的問題を解決するためには、例えば量子プログラムの解析や推論をするには、それらの問題が記述されている言語が必要です。それは既存の言語です。私たちは量子コンピューティングのさまざまな問題を見てきましたが、基本的にはその言語を見て、問題がどのように記述されているかを確認するという作業が主体になります。しかしお察しのとおり、これは理想的とはいえず、最適な方法でありません」。

そこで彼らは、実際に使われている別の言語も調べてみることにした。Microsoft(マイクロソフト)のQ#や、IBMのQiskitなどのSDKだ。

「当初は、新しい言語を開発する必要性などまったく感じていませんでした」とベシェフ氏の博士課程大学院生であるBenjamin Bichsel(ベンジャミン・ビクセル)氏は話す。「そこをそもそものスタート地点として検討するなど、考えてもみませんでした。量子コンピューターで、もっと高度な問題を解決したいと思ったときに、よしそれじゃあ適当に言語をひとつ選んで、それでやろうというのが私たちの考え方でした。しかし気がついたのです。私たちが推論したいと関心を持つような高度なプロパティーには、既存の言語はまったく不適格でした」

今週のPLDI 2020で発表を予定しているSilqの論文
共著した1人は、あまりにも面倒なので既存の言語は一切使わなかったとさえ話している。この論文の執筆には、ビクセル氏とベシェフ氏の他、Timon Gehr(ティモン・ゲール)氏とMaximilian Baader(マクシミリアン・バーダー)氏も参加している。

では、既存の言語のどこが悪いのだろうか?「それを理解するための入口として最適なのが、従来の言語には存在しなかった量子コンピューティングならではの基本的な難題、つまり『非計算』に注目することです」とベシェフ氏は話す。実際、非計算はSilqの中核的なアプローチであり、ネイティブに組み込まれている。非計算には古典対応があるものの、だからといってその概念が直感的にわかるというものではない。

「古典的な言語で『AまたはBまたはC』を計算させようとすると、先に『AまたはB』を計算してから、『(その結果)またはC』が計算されますが、その間に計算された一時変数は忘れ去られてしまいます」とビクセル氏。「これを量子で行うと、予期せぬ副作用が発生します【略】結論として、こうなると予測されたことが、ここでは起こりません。そのためなんとかこれに対処しなければならないのです。これが意味するものは、現在あるすべての量子言語では、本質的に抽象度が大変に低いところでの作業を強いられるということです。そこでは、すべての一時変数を考慮しなければなりません。基本的にこれが、高水準な思考を妨げているのです」。

つまり、整数を可算するなど比較的些細なことをしようと思っても、量子コンピューターでは、処理の過程で発生したあらゆる一時変数を考慮して、明示的に扱わなければならないということだ。

「量子コンピューティングでは、廃棄すべき一時変数などのガーベッジに常に対処しなければならないため、常に対応が強いられます。それが、これらの言語を使う上で大変な手間になるのです」とビクセル氏。現在の量子言語はその回避を試みているが、その方法はやや難解だ。それに対してSilqは、安全な自動非計算が最初から使えるようになっている。

ベシェフ氏はまた、低水準プログラムの記述ではエラーが発生しやすく、アルゴリズムが実際に何をしているのかを理解しづらいと話している。それに対してSilqの型チェッカーには、プログラマーが犯しやすい一般的なミスを低減してくれる機能がある。また研究チームは、古典的な言語の最新の技術(オーナーシップタイプやリニアタイプのシステム)に注目し、量子コンピューシングのコンテキストに実装しているが、これもSilqが初めてだ。

ここまで知れば、Silqで書かれたプログラムは、Q#やQuipperなどと比べてずっと短く、量子プリミティブの数もずっと少なくなる(Silqリリース)ことを研究チームが発見したと聞いても、ビックリはしないだろう。

しばらくの間、Silqはまだ研究プロジェクトの段階であり、既存のいずれの量子ハードウェアプラットフォームでも走らせる予定はない。だが彼らは、独自で量子エミュレーターを作成して前提の検証を行っている。「我々の場合、大変に高水準な言語のため、コンパイルは2段階処理で行うことを考えています。まずは高水準な目的を表現する。するとそれを受けてコンパイラーが使用されるアーキテクチャーを特定し、それに対してどのように最適化するかを判断します」とビクセル氏。

Silqの詳細を深く知りたいという方は、こちらで論文が読める

画像クレジット:ALFRED PASIEKA / SCIENCE PHOTO LIBRARY / Getty Images
[原文へ]
(翻訳:金井哲夫)

エラストマー素材で作られた自立動作する虫形ロボットはハエ叩きにも負けない

自然はロボティクスのインスピレーションの源となることが多い。しかし実際のプロダクトに結実する例は非常に稀だ。それでも我々は少しずつ自然に近づいている。ここで紹介する小さな虫形ロボットはソフト素材で作られており、1gくらいしかない。それでも素早く動くことができ、ある程度の知能を備えており、なんとハエ叩きで叩かれても生き延びる。

マイクロロボットは妥協の産物だ。素早く動けるが外部動力が必要、知能を備えているが遠隔操縦が必要、消費エネルギーが極小だが素早く動けず、知能も低いなどだ。

誘電エラストマー・アクチュエータ(Dielectric Elastomer Actuators)の頭文字をとってDEAnsectと呼ばれるこの虫形ロボットは運動能力、知能、省エネを同時に達成しようという野心的な試みだ。もちろんそれぞれの能力は極小サイズによって限定されている。

ロボットは小さな3本の脚を動かして運動する。脚に流れる電流がエラストマー素材を変形させることでロボットを前に引きずるかたちになる。1回の動きはごく小さいが毎秒何回も繰り返されるため、我々の目にはロボットはかなりのスピードで前進するように見える。速度は毎秒体長の30%ほどで、これはキッチンに出没するアブラムシやクモほどの素早さではないが、ほかのミニロボットに比べれば十分に速い。

しかし最も重要なのは誘電エラストマーの採用によりエネルギー効率と堅牢さが飛躍的に上昇した点だろう。DEAnsectは19mgの本体の5倍の重さになるバッテリーと電子回路を内蔵できる。電子回路はごく簡単なものだが、それでも初歩的な自立動作が可能だ。 例えば、極小の光学センサーからの情報で白地の上に引かれた黒い線をたどって移動するなどが可能だ。

堅牢さでいえば、トップのGIF画像でご覧のとおり家庭用のハエ叩きで叩かれても作動を続ける。もちろんぺちゃんこになった後はその場所から剥がさねばならないが、その後はまた問題なく作動を続ける。

極小のサイズと能力からして、このロボットが実行できる実用性あるタスクはいまのところ見つかっていない。しかしソフト素材によるロボティクスの分野に大きな可能性を感じさせる成果といっていいだろう。

DEAnsectはXiaobin Ji(シャオビン・ジ)氏とMatthias Imboden(マティアス・インボーデン)氏のチームがEPFL(スイス連邦工科大学)Soft Transducers Lab(ソフト・トランスデューサ・ラボ)で開発した。本日12月18日、詳細がScience Roboticsに発表された。

【Japan編集部追記】上記Scince Roboticsのリンク先にはビデオが3本公開されており、ロボットが8の字の線をたどる、誘電エラストマーの伸縮、ハエ叩きで叩かれた前後がそれぞれ撮影されている。ロボットはハエ叩きで叩かれると変形して動けなくなるが、その場から持ち上げられるとまた動き出している。

原文へ

(翻訳:滑川海彦@Facebook