Java Bridge を利用した他言語による データロード & プロットデモ 担当 : 阿部 ( 九大 ICSWSE) 2013/08/21 2013 年度データ解析講習会 @NIPR 1
Outline 1. Java bridgeとは 2. JUDASとは 3. Java bridgeを使う Purpose Java bridge とその仕組みを知る 他の言語から Java クラスを呼び出して IUGONET 機関の取り扱うデータをプロットできるようになる 2013/08/21 2013 年度データ解析講習会 @NIPR 2
Java bridge とは ソフトウェア開発者が 2 つのプログラミング言語を統合するために これらを ( 相互に ) 使用できる構造を提供するコンポーネントがある このコンポーネントを bridge と呼ぶ われわれが作成しているデータ読み出し 解析 描画用 bridge は Java で書かれているため 特に Java bridge と呼んでいる なぜ Java で提供するのか 特定のプラットフォームに依存しなくなる プログラムの保守が容易になる 他言語のコード資産との接続が容易になる 2013/08/21 2013 年度データ解析講習会 @NIPR 3
2013 年 8 月 19 日 IUGONET 解析ソフトウェア報告より JUDAS(Java-based UDAS) とは? Java 言語で書かれたライブラリ群 観測データのダウンロード プロット 解析が可能 単独のダウンロードツールとしても利用可能 他言語 (e.g., Jython, JRuby, MATLAB, IDL( 確認中 )) から呼び出すことが可能 Java Web Start を用いた簡単インストール & 更新 CUI(Jython, JRuby) も GUI も準備中 Metadata DB の QuickLook への利用 ( 既に DstIndex は QuickLook 組み込み済み ) 2013/08/21 2013 年度データ解析講習会 @NIPR 4
2013 年 8 月 19 日 IUGONET 解析ソフトウェア報告より JUDAS のサンプル Jython から JUDAS を呼び出して Dst Index をプロットするサンプル 一見長いが 殆どラッピング出来るので 3 行程に収まる 縦軸がオートスケールなので Dst Index らしく見えない 現在は メタデータに記載されているRendering Hintを機械的に解釈し 適切な縦軸を設定するように 変更している メタデータの有機的な利用! 2013/08/21 2013 年度データ解析講習会 @NIPR 5
Judas を入手しよう 推奨手順は 1. Scientific Linux6 64bit 環境 (VM でも良い ) を準備する 2. 作業アカウント iugonet を作成する 3. Github から Judas をダウンロードして展開する 4. Ant をインストールする 5. Judas 付属の build.xml を実行して環境を構築する ( 開発環境 eclipse のインストールを含む ) 6. Eclipse 上でファイルを書き直し パッケージを作成する なのですが 今回は時間がないので上記そのままの実習は割愛 3. Github からのファイル取得をやってみましょう Eclipse:IBM によって開発された統合開発環境 Java で記述され オープンソースで公開 Java のみならず多くのプログラミング言語に対応 IUGONET のメタデータ記述推奨環境でもある 2013/08/21 2013 年度データ解析講習会 @NIPR 6
IUGONET 開発プロダクトのほとんどは GitHub 上で公開されています! Judas を入手しよう https://github.com/iugonet/ ここをクリック 2013/08/21 2013 年度データ解析講習会 @NIPR 7
Judas を入手しよう https://github.com/iugonet/ スクロール ここをクリック 2013/08/21 2013 年度データ解析講習会 @NIPR 8
Judas を入手しよう https://github.com/iugonet/ Git 環境がある人は この URL で git clone でも良し スクロール ここをクリックすると zip がダウンロードできる 2013/08/21 2013 年度データ解析講習会 @NIPR 9
Judas を入手しよう https://github.com/iugonet/ ダウンロードしたアーカイブを Judas ディレクトリに展開すると Judas/workspace/Plugins/bridges に各言語への java bridge が準備されている 2013/08/21 2013 年度データ解析講習会 @NIPR 10
Judas を入手しよう 1. 本実習用のビルド済 jar ファイルを以下からダウンロードする http://magdas2.serc.kyushu-u.ac.jp/bridges-demo.zip 2. 適当な場所に展開すると bridges-demo というディレクトリができる Lib の中身は plugins の中身は 2013/08/21 2013 年度データ解析講習会 @NIPR 11
Jython: プログラミング言語 Python を Java で実装したもの あらゆる Java クラスをシームレスにインポートできるのが特徴のひとつ サンプル実行用に他言語 ( ここでは Jython) をインストールする Linux の場合 : 各ディストリビューションに付属のパッケージマネージャを使うと楽 ( 例えば SL では # yum install jython) また Judas 内の build.xml を実行すればインストールできる Mac/Win の場合 (Linux でも OK): 1.http://www.jython.org/ にアクセス ここをクリック 2013/08/21 2013 年度データ解析講習会 @NIPR 12
サンプル用に他言語 ( ここでは Jython) をインストールする 2.Download から Download Jython 2.5.3 をクリック ここをクリック 3.Central Repository から jython-installer の jar をクリック ここをクリック 2013/08/21 2013 年度データ解析講習会 @NIPR 13
サンプル用に他言語 ( ここでは Jython) をインストールする 4. ダウンロードした jar ファイルを実行する ダウンロードしたファイルをダブルクリックする または コマンドライン ( ターミナル ) 上で # java jar jython-installer-2.5.3.jar を実行 あとはインストーラーの指示に従う 2013/08/21 2013 年度データ解析講習会 @NIPR 14
サンプル用に他言語 ( ここでは Jython) をインストールする 5.Jython を実行する Windows: コマンドプロンプト上で >C: jython2.5.3 bin jython または C: jython2.5.3 bin jython.bat をダブルクリックでもよい Linux: $ jython などで起動する 2013/08/21 2013 年度データ解析講習会 @NIPR 15
Jython で実際にデータ読み込み 図を描いてみる 1.Bridges から plotdstindex2.py を bridges-demo ディレクトリの中にコピーする 2.plotDstIndex2.py を書き直す #!/usr/bin/env jython import sys Jython の場所を指定 # Add jar path sys.path.append("/home/iugonet/judas/lib/tplot.jar") sys.path.append("/home/iugonet/judas/lib/aplot.jar") sys.path.append("/home/iugonet/judas/lib/external/jcommon-1.0.17.jar") sys.path.append("/home/iugonet/judas/lib/external/jfreechart-1.0.14.jar") sys.path.append("/home/iugonet/judas/plugins/dstindex.jar") データ読み込み 描画に必要なライブラリの位置を指定 ライブラリ名にも注意! Windows でもディレクトリの区切りは / を使う timeseriescollection=dstindex.loaddata(strurl) loaddata->load に変更 2013/08/21 2013 年度データ解析講習会 @NIPR 16
Jython で実際にデータ読み込み 図を描いてみる 3. 書き直したファイルを実行する Win 上での例 : コマンドプロンプトで > c: jython2.5.3 jython plotdstindex2.py 2013/08/21 2013 年度データ解析講習会 @NIPR 17
プログラムの構成を理解して 他言語での bridge 作成に挑戦しよう #!/usr/bin/env jython import sys # Add jar path sys.path.append("/home/iugonet/judas/lib/tplot.jar") sys.path.append("/home/iugonet/judas/lib/aplot.jar") sys.path.append("/home/iugonet/judas/lib/external/jcommon-1.0.17.jar") sys.path.append("/home/iugonet/judas/lib/external/jfreechart-1.0.14.jar") sys.path.append("/home/iugonet/judas/plugins/dstindex.jar") 初期化部 : Jar ファイルへのパス設定やクラスのインポートなどをおこなう from org import jfree from org.iugonet.www import Aplot from org.iugonet.www import Tplot from org.iugonet.www import DstIndex from java import lang strurl="http://wdc-data.iugonet.org/data/hour/index/dst/1984/dst8410" dstindex=dstindex() timeseriescollection=dstindex.load(strurl) データ読み込み部 : 指定された URL からデータを読み込む chart=jfree.chart.chartfactory.createtimeserieschart(lang.string("dst Index"),lang.String("Time"),lang.String("Dst Index [nt]"),timeseriescollection,lang.boolean("false"),lang.boolean("false"),lang.boolean("true")) frame=jfree.chart.chartframe(lang.string("simple TimeSeries Chart"),chart) frame.pack() frame.setvisible(lang.boolean("true")) データ解析 描画部 : データ解析や描画をおこなう ここを別言語に置換することも可能 (Java bridgeで読み込んでmatlabに描かせる など ) 2013/08/21 2013 年度データ解析講習会 @NIPR 18
MATLAB/Java ブリッジ 利用のポイント MATLAB が使う Java と jar ファイルをコンパイルした Java のバージョンを合わせるどちらかで対応できる 1.Jar 作成の Javac を MATLAB が使う Java のバージョンにする 2. 環境変数 MATLAB_JAVA で MATLAB が使う Java を jar の Java バージョンにする 2013/08/21 2013 年度データ解析講習会 @NIPR 19
Appendix 1 JDK7 を入れる http://www.oracle.com/technetwork/java/javase/downloads/jdk7- downloads-1880260.html 1.Accept を選ぶ 2. 適切なプロダクトをクリック 1 Win/Linux の場合 JRE でも良い (Mac の JRE が提供されていないので 本 Appendix は JDK とした ) 2 Linux の場合 各ディストリビューション提供の OpenJava7 でも良い 2013/08/21 2013 年度データ解析講習会 @NIPR 20