重力波検出を支える先端テクノロジーにHaskellを混ぜたのは一体誰だ！？

（この記事は「技術的ポエム Advent Calendar 2018」の23日目です）

[fukuoka.ex](https://fukuokaex.connpass.com/)代表のpiacereです
ご覧いただいて、ありがとうございます :bow:

今年のAdvent Calendarは、宇宙ネタをぶっ込めるカレンダーが見当たらなかったので、「技術的ポエム」として、ここにぶっ込ませていただきます :stuck_out_tongue_winking_eye:

ネタ的には、昨年、人気を博した宇宙コラム、[重力プログラミング入門「第2回：Pythonで重力波を解析する」](https://qiita.com/piacere_ex/items/8a91b8a1843513da75b6)に纏わる、先端テクノロジーの紹介です
![image.png](https://qiita-image-store.s3.amazonaws.com/0/155423/720cd124-009c-271a-8dff-520a7a935671.png)

# 重力波を測定するハードウェア

「重力波」が、どの位の規模で発生するのか、[重力プログラミング入門「第2回：Pythonで重力波を解析する」](https://qiita.com/piacere_ex/items/8a91b8a1843513da75b6)の解説から引用します

---
重力波の規模は、「10のマイナス21乗」とかなり小さく、これは「地球から太陽の距離で、水素原子1つ分が歪む」程度の微小な変化でしかありません

100年間、重力波を観測できなかったのは、このような微小な変化を捉えるための技術が無かったことが、主な要因だと考えられています :persevere:
～
この100年で、デジタルコンピュータは飛躍的な進歩を遂げ、科学技術もその恩恵で大きく発展し、非常に精密な装置の開発も可能となりました

その結果、「地球から太陽の距離で、水素原子1つ分が歪む」程度の微小な変化も検出できるようになったのですが、具体的にどんな技術が使われているのでしょう？ :thinking:

---

この微小変化は、人間には絶対に感知できない現象なので、テクノロジーの恩恵無には検出できず、それを検出できるだけの技術が確立できたのは、ホンのつい最近だと言うことです

そして、この技術を実装したハードウェアが、「LIGOレーザー干渉計重力波天文台」でした（こちらも以下に引用します）

---
今回、初めて重力波を検出したのは、LIGO（Laser Interferometer Gravitational-Wave Observatory：レーザー干渉計重力波観測所）と呼ばれる、ワシントン州ハンフォード（アメリカ東海岸側）と、ルイジアナ州リビングストン（アメリカ西海岸側）の2ヵ所にある施設です

パイプ1本の長さが4Kmもある、巨大な観測施設によって、初めて観測可能となった訳です :flushed:

ワシントン州ハンフォード観測所
![image.png](https://qiita-image-store.s3.amazonaws.com/0/155423/6890e4b7-a5a3-9c70-9ed3-2a605d4c437f.png)

ルイジアナ州リビングストン観測所
![image.png](https://qiita-image-store.s3.amazonaws.com/0/155423/7c6803a6-4321-c494-7290-e102c08ff17b.png)

---

では、ソフトウェア面は、どんな感じだったのでしょうか？

# 重力波を測定するソフトウェア

「そもそも、そんな情報、公開されてるの？」って思われるかもですが、ナント、普通にネットで拾えます

「情報処理学会」に掲載されている、コチラの解説コラムです
<b>[重力波の初検出と情報処理技術 -LIGOとKAGRAで活用されている情報処理技術-](https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=158474&item_no=1&page_id=13&block_id=8)</b>
→「IPSJ-MGN570504.pdf」を探して、ダウンロードしてください

この内容を、頭からお尻まで解説していっても、それはそれで楽しいのですが、内容が、とても熱くて、読んでいてワクワクするものなので、そのテイストを知っていただきたいから、ご自身で直接読んで欲しいです

一応、私の趣味／琴線に触れるものだけ、以下に参考程度として、挙げておきます

# 重力波データ解析ツール「GstLAL」

「GStreamer」という、オープンソースのマルチメディアアプリケーション開発用フレームワークは、信号処理パイプラインを構築できますが、これを使った重力波データ解析ツールが、「GstLAL」です

GStreamer自体は、「動画のストリーミング配信」や「複数の動画合成」等に使えます

GStreamer というマルチメディアフレームワーク
https://qiita.com/tetsukuz/items/e67be5f3bf5b6ca6b625

gstlal
https://lscsoft.docs.ligo.org/gstlal/

# 分散コンピューティングプラットフォーム「BOINC」

BOINCは、「Berkeley Open Infrastructure for Network Computing」の略で、20年前に、スクリーンセーバで宇宙データ分析をさせていた「SETI@home」での実績をベースに作られています

HTTPをベースプロトコルとしているので、比較的、容易に導入できることが特徴で、LIGOとは、「Einstein@home」という実装で接続・解析を行っています

重力波以外では、宇宙マイクロ波背景放射向けの「Cosmology@home」や、地球近傍小惑星の軌道をモニタリングする「Orbit@home」、天の川銀河の進化モデルを構築する「MilkyWay@home」等、幾つもBOINCをベースとする実装があります

オープンソースとして、GitHubにも公開されています
https://github.com/BOINC/boinc

# 世界各地にデータ転送するグリッド「LSC DataGrid」

LIGOの研究者達（LSC：LIGO Scientific Collaborationと呼ばれます）と、LIGOと一緒に共同研究を行っている、欧州のVirgo重力波検出器の研究者など、世界各地の共同研究者へ、データを誤りや見落とし無く、重力波データを各地へ転送するのに使われているデータグリッドです

LSC DataGrid
https://www.lsc-group.phys.uwm.edu/lscdatagrid/

# オマケ：Haskell（LIGOでは無くKAGRA）

けっこう面白いことが書かれているし、関数型言語の特性についても触れられているので、ぜひコラムを読んでみてください :kissing_smiling_eyes:

# p.s.「いいね」よろしくお願いします

ページ左上の ![image.png](https://qiita-image-store.s3.amazonaws.com/0/155423/4d515047-cc48-382e-c2b1-3ad0cc50dbbf.png) や ![image.png](https://qiita-image-store.s3.amazonaws.com/0/155423/a4e3da58-70a3-4197-95a2-6a6906650d01.png) のクリックを、どうぞよろしくお願いします:bow:
ここの数字が増えると、書き手としては「ウケている」という感覚が得られ、連載を更に進化させていくモチベーションになりますので、もっとElixirネタを見たいというあなた、私達と一緒に盛り上げてください！:tada: