宇宙に浮かぶブラックホールの想像図

2015年9月に初めて人類が検知した重力波は、遠い宇宙での2つのブラックホールの衝突で出来たものでした。重力波で宇宙を見る「重力波天文学」の幕開けとなる物理学上の大きな成果ですが、そこでもコンピュータサイエンスとプログラミングが大きな役割を果たしていたのです。

2015年9月、人類が初めて重力波を検知しました。1916年にアインシュタインがその存在を予言してから100年。X線で宇宙を見る「X線天文学」やマイクロ波による「マイクロ派天文学」に加え、重力波で宇宙を見る「重力波天文学」の始まりとなった記念すべき年となりました。

このような「世紀の大発見」である重力波の検知。その物理学的な意義や成果を語る記事などは多いですが、そこでコンピュータサイエンスが果たした役割についてはあまり語られることがありません。今回は、重力波の検知においてコンピュータサイエンスとプログラミングがどのように活用されていたのかご紹介します。

「重力波」ってなんだろう

今回人類が検知した重力波は、約13億光年のかなたで起こった2つのブラックホールの衝突で生じたものでした。太陽の36倍と29倍という巨大な質量を持ったこれらの天体の衝突によって、時空が伸び縮みするほどのエネルギーが放出され、それによって出来た「重力の波」を我々が検知したというわけです。

重力波自体は日常的に地球にやってきているはずですが、それを検知するのに100年かかったのはなぜでしょうか?

それは、重力波による時空の伸び縮みがとても小さすぎて、なかなか検知できなかったからです。今回検知された重力波は、4km離れて設置された2つの鏡の間の距離が、陽子の直径の1万分の1程度変化するという、とても微小なもの。それを検知したのがLIGO(レーザー干渉計重力波天文台)という最先端の施設でした。

このあたりは以下の記事を参考にしました:

重力波検知方法とコンピュータサイエンス

つまり、重力波を検知するというのは、とても微小な時空の歪みするということ。数キロメートル離れた鏡の間の距離を計測し続けて、その歪みを検出するというものです。

これは人間が知覚できるようなレベルのものでは全くありませんので、然るべき計測機器をセットして、そこから出てくる計測データを分析して歪みが起こったのか起こっていないのかを検出する、という取り組みになります。膨大なデータに潜むパターンの発見、ここには当然コンピュータサイエンスが使われていることは容易に想像できるのではないでしょうか。

重力波検知にコンピュータが果たした役割

コンピュータがあまねく社会や日常生活に普及している現在、自然科学の現場においてもコンピュータ活用が浸透しています。どのような科学分野であってもコンピュータ活用は必須であって、「すべてのサイエンス(科学)はコンピュータサイエンスになった」と言われることもある所以です。

上記の言葉は、筆者が米国コロンビア大学コンピュータサイエンス学科を訪れた際に見た、学科説明の掲示物に記載されていたものです。2001年にニューヨークタイムズ紙の記事の言葉だそうです。

無し冒頭でも述べましたが、重力波検知の取り組みについては「物理学上の偉大な成果」として多くの報道がなされていますが、そこでどのようなコンピュータシステムが使われていたのかということはあまり語られません。しかし日本を代表するコンピュータ関連学会の一つである情報処理学会の雑誌「情報処理」に、そのあたりを解説する記事が出ていました。以下では、その記事から引用しつつ、重力波検知でコンピュータシステムが果たした役割を紹介します。

参考文献:

上掲記事の冒頭からしてドラマチックです。

「日本時間2015年9月14日18時50分45秒から46秒、[米国のaLIGO]がブラックホール…連星合体現象からの重力波信号…を記録した。高速解析パイプラインであるcoherent Wave Burst (cWB)が3分以内に信号を抽出、Wisconsin-Milwaukee大学にサーバがあるデータベースGravitational Wave Candidate Event Database (GraceDb)に登録した。」(強調は筆者、以下同様)

この冒頭の短い説明からして、「高速解析パイプライン」や「データベース」が登場しています。前者は、計測によって得られるデータを高速で解析するソフトウェア(つまりプログラムや「アプリ」)のことで、後者はそのデータの入れ物となるソフトウェアのことです。

コンピュータを良く知るに人には、上記のGraceDbは「MySQLを利用し、Webインターフェースを備える」という点にニヤリとするのではないでしょうか。つまり、コンピュータ業界でよく知られている標準的な技術で作られていて、さらにWebからデータにアクセスできるような「受け口」も持っている、ということです。これは簡単なことのように聞こえますがそうではありません。過去数十年の間に蓄積されてきたコンピュータサイエンスの成果を用いて構築されている、ということなのです。

重力波検知で使われている信号処理プログラム群

さて、物理学など自然科学は実験によって新たな知識を生成していきますが、自然というのはごちゃごちゃしたもの。実験での計測データには様々なノイズ(雑音など、大事なパターンを隠してしまうような情報)が混じっているのが常です。

そこで、計測データに含まれる有益な情報を抽出する必要がありますが、それは「フィルタ」と呼ばれる信号処理プログラム(解析パイプライン)が使われます。それでは、これらのプログラムは誰が作るのでしょうか?多くの場合、必要な物理学知識を持った研究者たちが自分でプログラミングする、ということになります。物理学をやるにも、プログラミングやコンピュータサイエンスの知識は必要なのです。

「gstlal、pycbcといった解析パイプラインは、…[ブラックホール]の質量、自転、到来方向などの情報をさらに正確に決定できる」

「gstlalではそのフィルタ数は約25万にもなる」

「gstlalを含む…コードの多くはC/C++、Python、Matlab、Root等で書かれ、GNU Public Licenseなどのもと、一般に公開されている」

解析パイプラインの役割や、その処理内容(約25万のフィルタを実装!)、そして使用されているプログラミング言語についての部分を抜粋しました。IT業界でよく使われるプログラミング言語だったりもしていて、ここでも物理学へのコンピュータサイエンスの浸透具合が見て取れますね。これらを作るためのコンピュータサイエンス知識を持った人が関与しなければ、重力波検知もできなかったということです。

重力波検知でのコンピュータシステム

上掲記事はさらに、計測データの共有や分析のための大規模なコンピュータシステムの概要も紹介してくれています。

「gstlalはカリフォルニア工科大学(Caltech)の計算機クラスタのうち1,000コアを利用している」

ジョブ管理システムとしてはHT-Condor/DAGManが多くの場合採用されている」

コアというのは、コンピュータの頭脳部分で処理を行うプロセッサのこと。最近のPCでも2つや4つなど複数のコアを搭載していることが多いですが、なんと解析パイプラインgstlalは1000コアという巨大な計算力を駆使しているということは驚きですね。

そして、データ分析というのは要するにとても複雑な計算問題。そこには様々なステップがありますので、どのステップの次にどのステップを実行するのか、どこまで完了していてどれがまだなのか、もし途中で中断してしまったらどこで復旧するのか、など、処理の段取りを管理する役割を持ったソフトウェアのことをジョブ管理システムと呼んでいます。私自身は上記のシステム名は知らないのですが、こういうところにもコンピュータサイエンスが顔を出しています。

「重力波データといくつかの重要なデータは低遅延解析を行う世界各地に高速に転送される一方、20万を超える検出器診断チャネルのデータはCaltechにいったん集められ(データ量は10MB/s超)、5PBのテープストレージに保管される」

計測によって得られた大事なデータですが、入れ物に入れているだけでは価値がありません。分析されてこそ意味が出てくるのです。が、科学研究では研究者たちは世界中に散らばっています。なので、重要データは速やかに(低遅延で)世界各地に高速で転送するのです。これは、世界の研究拠点がネットワークでつながっているからこそできること。ネットワークがなければ、テープやディスクなどの記憶媒体を郵送するしかありませんからね。

そしてデータをカリフォルニア工科大学(Caltech)に集めるのもネットワークがあるおかげ。そこでのデータの伝送速度は1秒間に10MBとのこと。集まったデータは膨大なので、ディスクではなく磁気テープに書き込んで保管する、ということです。磁気テープ、覚えていますか?CDが普及する以前に音楽の録音と再生に使っていたのも磁気テープでしたね。音楽を聴くうえではもうとっくに姿を消していますが、データ保管ではまだまだ現役なのです。

ちなみにPBとは「ペタバイト」のことで、1PBは1024テラバイト。これは約1125兆バイトという膨大なものですが、センサーの普及などでこのような大規模なデータもざらに見るようになってきていますね。

「データ転送前後でファイルおよび時系列データのチェックサムを確認・記録し、さらに誰がどのファイルを転送し、受領したかを記録している」

データを送るのはいいですが、ちゃんと無事に届いているかを確認するのはデータを扱う上での鉄則。電子的なデータは、宇宙から降り続けている宇宙線などの影響で、0と1が逆に変わってしまうなどのエラーがひっきりなしに生じるからです。

「チェックサム」というのはそのようなエラーへの対策の一つ。「検算」のことです。送る前に計算した検算結果を一緒に送っておいて、受信側でも受信データを使って検算します。結果が同じならOKですが、もし結果が食い違っていたら途中でエラーが生じたということ。誤り訂正や再送信などの対策が必要になります。

こういったところでは、情報理論や誤り訂正符号など、情報を扱うための基本的な理論が使われます。これらもコンピュータサイエンスの一分野からの成果なのです。

「すべてのサイエンスはコンピュータサイエンス」

今回は、重力波検知においてコンピュータサイエンスが果たした役割を紹介しました。最先端の物理学研究においても、プログラミングやコンピュータシステムの知識が役に立っていることがわかったかと思います。

この見出しはちょっと挑戦的かもしれませんが、全てのサイエンスにコンピュータサイエンスが必須、というのは事実。なのに、コンピュータサイエンスは「一部の技術オタクのもの」や「単なるプログラミング」など誤解されている面があるのも事実です。

この記事は、科学が好きなすべての方に、「コンピュータサイエンスを知ると、科学ももっと面白いですよ!」とお伝えするために書きました。多くの方が、コンピュータサイエンスの楽しさに触れ、それを通して人生をさらに豊かにすることができればと願っています。

ホーム画面に戻るにはこのリンク

関連記事:

(かながわグローバルIT研究所 森岡剛)