ALMAキューブデータ閲覧用ウェブビューアの開発
○江⼝ 智⼠
、川崎 渉、⽩崎 裕治、⼩宮 悠、大⽯ 雅寿、⽔本 好彦、⼩杉 城治
Abstract
ALMA望遠鏡は、チリに建設された世界最大の電波望遠鏡である。ALMAによってもたらされる⾼空間分解能・⾼周波
数分解能のデータにより、新たな天⽂学的知⾒が得られることが期待されるいっぽう、そのデータサイズは巨大であ
り、標準較正済みのものでも2 TBを超えると⾒積もられている。そこで国⽴天⽂台では、バーチャル天⽂台の技術を
活用し、Japanese Virtual Observatoryのポータルサイト上で動作するウェブアプリケーション(ALMAWebQL)で巨大
なデータキューブの中から⼀部を動的に切り出し、それをデスクトップビューア(Vissage)でより詳細に解析すること
で、限りあるネットワークおよび計算機資源を有効利用するアプローチをとっている(川崎他参照)。本ポスターでは、
ALMAWebQLの設計等、技術的側⾯について解説する。
1. Introduction
世界の天⽂データアーカイブ(⽣データ)の 容量は、「1年半で約2倍」という猛烈な勢 いで増え続けている。世界最大の電波望遠 鏡であるALMAの場合、 年間PBもの⽣デー タが⽣成される⾒込みである。実際にはこ こからパイプラインを通過したもの我々は 使用することになるが、それでも1天体につ き2 TBものデータサイズになるみこみであ る。
インターネット回線の世界平均の速度は 2.6 Mbpsなので、仮に2 TBのデータをイン ターネット経由で取得しようとすると約75 ⽇もかかる計算になる。つまり、これまで のように「FTPで自分のローカルの環境にデータを持ってきて、その中だけで すべての解析を⾏う」ことは事実上不可能である。
Channel Binning (1/p)
Spatial & Channel Binning (1/p/q2)
Spatial Binning(1/q2)
RA
D
ec
Channel
Original Data Cube
Cut out and download interested region only
Data Cube
そこで我々国⽴天⽂台の Japanese Virtual Observato-ry (JVO)チームとALMAチー ムがタッグを組んで、JVOの ポータルサイトからデータを 配信する仕組みを開発した。 ポイントは1) 巨大データを空 間⽅向・波⻑⽅向に予めビニ ングによりデータを⼩さくし ておき、ユーザはウェブ・ブ ラウザから適切なビニング・ パラメータのデータ・キュー ブを選ぶ、2) さらにそのデー タ・キューブの中の本当に必 要な部分だけを切り出す、と いう2点である。この「ウェ ブ・ブラウザでデータ・キ ューブを選択し、切り出すア プリケーションが、私の開発 しているALMAWebQLであ る。
2. Architecture
これだけの複雑な処理をウェブ・ブラウザ単体で実現するのは不可能である。 しかし、「Ajax(エイジャックス)」と呼ばれる「ブラウザに搭載されている
JavaScriptとそこから外部サーバとの通信を⾏う技術」を組み合わせることで、 これまでデスクトップ・アプリケーションでしか出来なかったような複雑な処理 を、ウェブ・ブラウザ経由で⾏えるようになった。ただし、⼀般的なAjaxアプリ ケーションでは、ブラウザ側の処理はJavaScriptで記述し、サーバ側はJava等で 記述せねばならず、しかもお互いが協調して動作するため、プログラマに⾼度な 技術スキルを要求する。
そこで近年ではAjaxプログラミングの敷居を下げるために様々なライブラリが 登場している。その中で我々は「GWT(グイット・旧Google Web Toolkit)」を使 用することにした。GWTはウェブ・ブラウザ側のコードをJava⾔語で記述して、 それをコンパイラがJavaScriptへ変換する仕組みになっている。VOの世界では Java⾔語が共通の開発⾔語となっているので、GWTはVOと非常に親和性が⾼
い。しかし、天⽂に必要な座標計算用のライブラリなどは当然GWTには用意され ていないので、まずはこれらを実装するところから開発を始めた。また、最新の HTML5のサポートも限定的なため、⼀部GUIコンポーネントはゴリゴリと自⼒実 装することにした。
JavaScript
HTML5
GWT
Extended Classes (Math + GUI)
3. Data Transfer
Application Server
(Java) Cache Disk
(for FITS Files)
VO Server FITS File Server
1. User Action
Access URL to each FITS File 2. Data Search
(ADQL)
3. Results (VOTable)
4.1. Parse VOTable 4.2. Request
FITS File 5. FITS File
6.1. Parse FITS Header
6.2. Convert FITS Image to PNG 6.3. Pack the Data into a JSON 6.4. Send Back the JSON
User Client (JavaScript)
ALMAWebQLは、3台のサーバで 構成される。⼀台はGWTで書かれた アプリケーションを実⾏するアプリ ケーション・サーバ、もう⼀台は JVOのポータルサイトの⼀部でどの ようなファイルを持っているか、す なわちメタデータを保持するVOサー バ、そして実際にFITSファイルが置 いてあるファイル・サーバである。 ユーザの操作によりFITSファイル へのアクセスが必要になると(1)、 Remote Procedure Call (RPC)とい う仕組みにより、アプリケーショ ン・サーバのFITS処理メソッドをウ ェブ・ブラウザが呼び出す。これを トリガーにしてアプリケーション・ サーバはVOサーバに対してファイル の置き場所を問い合わせる(2)。VO サーバは検索結果をVO Tableの形で アプリケーション・サーバに返す (3)。アプリケーション・サーバは VO Tableを解析してファイル・サー バ上でのFITSファイルの置き場所を 探し出し(4.1)、ファイル・サーバに 対しそのファイルを送ってくれるよ う依頼する(4.2)。
ファイル・サーバからファイルの送信が開始されると、アプリケーション・サーバはその内 容を備え付けのキャッシュ用ディスクに書き込む(5)。FITSファイルの転送が終了すると、ア プリケーション・サーバはそのFITSファイルのヘッダの内容を解析し(6.1)、イメージHDUの 中からユーザの操作で指定された部分を取り出して、イメージやスペクトルを画像ファイル (PNG)に変換する(6.2)。FITSヘッダと⽣成したPNGファイルをひと組のJavaScript Object Notation (JSON)に変換し(6.3)、それをウェブ・ブラウザへ送り返す(6.4)。
4. Just-in-Timeエンディアン変換法
2.5 3 3.5 4 4.5
1 2 3 4 5 6 7 8
Ti
m
e
(sec)
Number of Threads On Ahead Just-in-Time
Original CFITSIO b) Machine B
0 0.2 0.4 0.6 0.8 1
1 2 3 4 5 6 7 8
Ti
m
e
(sec)
Number of Threads On Ahead Just-in-Time
b) Machine B
16進数で0x12345678という値があったと する。
・リトルエンディアン : 78 56 34 12
・ビッグエンディアン : 12 23 46 78
今では大半のコンピュータがリトルエンデ
ィアンを採用しているが、FITS形式はビッグ
エンディアンを採用している。したがって、
FITSファイルを読み書きするときには必ずエ ンディアンを変換する必要がある。処理の大 半はCPUとメモリの間のデータアクセスなの で、正直にエンディアン変換を⾏うとCPUを 遊ばせることになる。
そこで、出来る限りCPUを遊ばせないアル ゴリズム「Just-in-Timeエンディアン変換法」 を開発した。このアルゴリズムは並列化とも 相性が良く、相乗効果によって最大40%もエ ンディアン変換を⾼速化できる。しかし、
JVM (Javaの仮想マシン)はエンディアン変換を 苦⼿としており、このアルゴリズムをJavaで 実装しても意味がない。そのため、C++でラ イブラリとして実装し、 Javaからネイティ ブ・コードを呼び出す仕組みJava Native
Interface (JNI)を介して利用するようにした。