×
最新の人気コンテンツ情報をまとめた
メールマガジンをお届けします

ページトップへ
Bluemixユーザー会(BMXUG)東京の横井 一仁です。

2016年4月23、24日にNASA主催のハッカソン、Space Apps Challengeが開催されました。このハッカソンは、NASAが提案した課題を解決するアプリケーションの開発コンテストです。
本記事では、私が開発したウェブアプリケーションの内容と、IBM Bluemixの特徴を活用した開発方法について紹介します。

宇宙乗換案内(提出作品名: Space Transit)

宇宙ステーションに関する部門で、「宇宙乗換案内」というウェブアプリケーションを開発しました。宇宙乗換案内は、電車の乗換案内に似たユーザーインターフェイスで、宇宙上の惑星を経由し、旅をする際の乗換案内を表示します(図1)。各惑星に表示されているInformation about HIPxxxをクリックすると惑星の写真などが紹介されているサイトに飛ぶこともできます。

図1: 宇宙乗換案内の検索結果


子供の頃、夜空に浮かぶシリウス星を見て宇宙旅行を夢見たことがある方は多いと思います。このウェブアプリケーションを用いて、「意外と18年で行けるんだ。早く行かなきゃ。」など、小さな頃に経験したワクワク感を感じて頂けると嬉しいと思っています。今後、本サービスのアイデアは、宇宙の専門知識も入れて、成田空港やJFK空港などのハブ空港の様に機能する”ハブ宇宙ステーション”を、どこに作ると宇宙旅行の物資供給等の観点で最適か探索できるようにしたいと考えています。

 宇宙乗換案内の操作方法

宇宙乗換の条件指定画面にてFrom欄へ出発する惑星、To欄へ行先の惑星を指定し、Travelをクリックします(図2)。すると、次に遷移したページで乗換案内の検索結果を表示します。本ウェブアプリケーションは1,000個の惑星に対応していますが、条件指定画面にはサンプルとして主要な10個の惑星をプルダウンメニューから選択できるようになっています。検索条件はデフォルトで2016年に出発し、2個の惑星を経由する条件になっています。

図2: 宇宙乗換の条件指定画面



使用した惑星データ

NASAが提供しているヒッパルコス星表という惑星1,000個分の実際の観測データを用いていました。このデータは地球から見た星の視差(距離に変換可能)、天体上の緯度経度を含んでいます。三角関数を用いて算出した各星同士の距離100万件(=1,000x1,000)のデータを作成し、DBで検索できるようにしました(図3)。検索結果は光速で飛行していることを前提に、上位からトータルの距離が短い順に表示されます。

図3: ヒッパルコス星表データの変換処理



Bluemixの特徴を活かした開発方法

開発には、Bluemixで提供されているdashDBと、Node-REDを用いました。今回の開発では、Bluemixの特徴を活かし、どの程度短時間で開発できるか検証するために、以下の2点にこだわってみました。

素早く開発するために行ったポイント
  • Bluemixが提供するブラウザ上の開発環境を用いることで、ローカルPCに開発環境を構築する作業を不要にする。
  • JavaやNode.js等のプログラミング言語を用いたコーディングを行わないことで、デバッグ作業を不要にする。

以降、これらの特徴について説明します。

ブラウザ上での開発

Bluemixでは、IBM DevOps ServiceやNode-REDを用いることで、ブラウザ上で開発作業を行うことができます。また、DBにおいても、dashDBを用いることで、ブラウザ上でデータをロードしたり、SQL文を作成できたりします(図4)。

図4: dashDBの管理画面上にてSQL文を作成


一般的な開発方法ですと、ローカルPCにEclipseやDBクライアントをインストールします。本作業は意外と時間がかかりますし、「Eclipseプラグインが上手く入らない」、「DBへ上手く接続できない」等の問題にはまると解決が必要となり、なかなか開発作業を開始できません。今回は、ブラウザ上で全ての開発作業を完結できるBluemixの特徴を用いて、すぐに開発を開始しました。

コーディング不要の開発

今回はコーディングをしないことにもこだわって開発しました。Javaの様に、class名を付け、関数を用意し、for文やif文を使い処理を書くことは再利用性も高く良いのですが、バグを生みデバッグ作業に時間が取られる原因となります。特に慣れていない開発言語であると、ドキュメントを見てメソッド名を調べる必要があるため、さらに作業に時間がかかる要因になります。
そこで、複雑な処理がカプセル化された”処理ノード”をGUIで繋ぐ操作で開発できるNode-REDを用いてこれを解決しました(図5)。

図5: Node-REDを用いて開発した処理フロー


使用したプログラミング言語らしいものは、SQLとHTMLのみです。SQLは直観的であるため、バグを作りこむことはまずありません。またHTMLは大半が文字列や画像のレイアウトのみであるため、コードの品質がプログラムの動作に影響しません。もちろん、この手法を用いたこととで、冗長な記述がある部分も出てきますが、ハッカソンは素早く開発することに価値があるプロトタイプですので、本手法にチャレンジしてみました。

最後に

今回の開発は、作業が後戻りすることや止まることはほぼなく、一通り動くものを作るのにかかった時間は、4時間ほどでした。そのため、残りの時間はデザインの調整や資料作りに使うことができました。今後の開発では、JavaやNode.jsを開発できるIBM DevOps Service、イベント駆動型実行環境OpenWhiskなど、Bluemix上で提供されている他のブラウザ上の開発環境も使いこなし、どれだけ開発効率に寄与するか検証してみようと思います(図6)。
Bluemixのフリートライアルは、こちらからすぐに登録できます。

図6: 今後ハッカソンで活用したい開発環境(上:IBM DevOps Service、下:OpenWhisk)