VisualBaseはJavaで書かれたカスタマイズ可能な可視化ソフトウェアです.
カテゴリ「Javaプログラミング」で,Javaプログラミングの基礎となるものを紹介しようと思います.
私自身,Javaを本格的に使い始めたのは,6年前にJavaプログラミングの講義を担当してからです.今回,7回目の講義を始めるにあたり,過去の配付資料等を整理したところ,これだけはわかってほしいプログラムというものがみえてきました.コメントを利用して,プログラム自身を示していきます.
第20回数値流体力学シンポジウム
<2006年12月18日(月)~20日(水) @名古屋大学>
にて,小紫@日大さんと「物体周りの流れ」というOSを企画しました.
http://www.nagare.or.jp/cfd/cfd20/
可視化も重要なテーマです.是非スケジュールに加えてください.
計算格子というOSもあるのですが,物体周りの流れ場を解くための工夫と,その結果といった,格子生成法+流れ場の解析のようなものも,OS「物体周りの流れ」の方への投稿も考えていただけるとうれしいです.
このOSに関するご意見等ありましたら,コメントに書いていただけると助かります.
なお,スパム対策のため,すぐに反映されない場合もありますがご容赦ください.
さて,大規模性に起因する問題や,協調的な処理を,情報工学や知識工学からみたときの現状を一言でいえば,「未来に託す」という言葉が思い浮かびます.消極的な意味ではなく,積極的にです.
とにかく,使えそうなデータは,できるだけきれいな形で残そう,という気運があります.きれいな形(主として機械処理し易いということ)で残すこと,これが意外と難しく,かつ面白いのです.
書籍・知的可視化の中では,データ→情報→知識への変換ということを述べたのですが,これには注意が必要です.データの中には,思いも寄らぬ知識になる種が含まれているということです.
例えば,データを可視化ソフトに受け渡し,可視化ソフトの機能を使い,可視化を行ったとします.いくら自動化が進んでいるとはいえ,何も考えずにやることはないと思います.また,仮に何も考えずに可視化したとします.出てきた可視化結果の評価はどうか(どうだったのか),判定は単純ではないと思います.データ処理の裏側,可視化結果の判断等に,可視化対象となるデータ以外のデータ・情報・知識が存在するということです.
そういったものを,どうやって取得し,どうやって残すのか? 可視化対象となるデータが存在する分野(領域)の知見が必要になるでしょう.可視化研究の種の一つがここにあります.
http://blog.goo.ne.jp/visualbase/e/e5932ad593fb6cdec10ecb27812fb878に書いた「可視化を介在して,大量のデータの中から必要なデータを効率的に抽出し,情報化し,さらに知識に高める,それを大勢でやる」という,データの大規模性(多様性もある)と,協調的な処理に関連した研究は,可視化に限らず,多くの分野で行われています.90年代の後半から盛んになった,xxx情報学(xxx Informatics)の背景にも,データの大規模性に起因する問題や協調的処理による解決ということがあり,主要なテーマになっています.
一般的な話は,データマイニング(ビジュアルデータマイニング)に押し込めることができるのですが,方法や方法論は確立していて,さらには有効なのか?と問われると,私自身は,答えに窮してしまいます.適用する分野(領域)の壁があるというのが一つの理由です.一方,そのような壁を利用した,ドメインモデル(当該分野・領域に属する個々の人間の力を借りるというもの)が導入され,光が差し込んでいるという意見もあります.ただ,用いられる一般的なマイニング技術は,チューニング程度でドメインに対しても有効になるのか?と問われれば,それはわからないと答えてしまいそうです.
可視化に対してはどうでしょう.日本には,可視化情報学会というものがあるので(http://blog.goo.ne.jp/visualbase/e/f5f7c4c3563de4e620fda31d4fe0b1dc),早いうちから,可視化に情報という視点が持ち込まれています.しかし,大規模性や協調性について語られ始めるのは最近のことです.その現状は,一般論としての,並列・分散処理,マイニング技術,協調的な可視化環境の構築といったところに足の置き場があるようです.それらは必要不可欠なテーマではあるのですが.もう一歩踏み込みたいというのが私自身の考えです.(また,つづく).
商売柄?,ご研究は,とよく聞かれます.
ここ数年は,いくつかのことを平行して進めているので,正直に言うと「これこれです」と答えられないのです.それで,TPOということになります(^^;).しかし,思い返すと,研究としては可視化が一番長いので,「可視化(ビジュアリゼーション)です」と言うことが多いようです.
しかし,可視化という言葉自体が拡がり,認知されているせいか,あるいは以前書いた(データをどうやって取得する?(1))ように,エクセルなどから簡単にグラフが作られるようになったからか,可視化って研究になるんですか?と切り替えされることが多くなりました(^^;).
例えば,数値をグラフ化すれば分かり易い,さらにグラフでも色を付ければ分かり易い,分かり易いが実際にグラフ化したり,グラフに限らず対象に色を付けるのが難しかった,それが簡単に(意識せずに)できるようになったというような背景があるようです.技術計算からのものであろうが,情報の可視化で扱われるようなものであろうが,データ(数字)があれば,それを視覚的にみるということは自然,かつ視覚情報化(可視化)するのに苦労しなくなったということですね(意識的にそのようなことをやっているという自覚がないというか).
そこで,原点(私のですが)に帰って説明することにしました.まずは,「可視化研究の一番の目的は,みえないものを見えるようにすることです」,と再定義です.例えば,空気の流れです.人間は,雲の動き,煙のたなびく様子,枯れ葉・花びらが落ちる様をみて,流れを見てきました.意識すれば,現象を分析していることに相当するでしょう.また,ある場面までをみて,次がどうなるか,大体の予測もできますよね.
しかし,積極的に(意識的に)その背後にあるものが何であるのか,それを詳しく見ようとすると工夫が必要になると思います.「煙を利用すれば」と思いついても,どんな煙でもいいのか,とか,どの部分から流せばよいのか,さらには,煙が流れることによって,空気の流れ自体を変えてしまわないかということを考慮する必要がある.そもそも,本当に流れを見ているのかも考えないといけない.なかなか難しいんですよ,で第一幕終了.
次に,自分自身の経験を述べます.私自身は,空気の流れを,CFDという方法でコンピュータの中に再現して,コンピュータの中で煙をながして流れを見るというようなことをやってきました,と切り出します.
コンピュータの中の煙は色だけで,空気の流れには影響を与えませんし,思ったところから流すことができます.そのようにして見えない流れ(もの)を見えるようにしているのです.見えたものが本当に流れを表しているのかどうかも,多種多様な見方ができるので調べることができます.
一般の人に説明する場合は,これ以上言うことは,経験上,逆効果なようで,ここで幕を下ろします.ただ,コンピュータの中に流れを再現するということを更に説明する必要はあります.しかし,コンピュータの中に現実を再現するということ自体は,SF映画の効果で(流れに関しては数値予報が知られるようになったこともあり),理解してもらえるようです.それこそ,仮想の空間をコンピュータの中に作って,と煙に巻いてしまえるわけです(寒いですね・・・).ちょっと前に,そのような説明の後,話がはずみ,コンピュータの中で可視化した煙を現実の世界でも表現できますね!,と言われたことがありました.頭をよぎったのは,VR,MR,ARの研究者の方々です.発想,あるいは概念(思想)自体は自然なことで,それを実現するのが難しいんですよ,と言いかけましたが,「そうですよね」とだけ答えました.技術が身近になれば研究の必要性を説明することが難しくなる,というのは,どの分野でも同じことなんだろうなあ,と思いながら.
さて,研究者に,「コンピュータの中の煙は色だけで,空気の流れには影響を与えませんし,思ったところから流すことができます.そのようにして見えない流れ(もの)を見えるようにしているのです.見えたものが本当に流れを表しているのかどうかも,多種多様な見方ができるので調べることができます.」と説明しても,そんなの済んだ研究じゃない,と一喝されてしまいます.じゃどうするか? 最も簡単なキーワードは,データの大規模性と,協調的な可視化です.可視化を介在して,大量のデータの中から必要なデータを効率的に抽出し,情報化し,さらに知識に高める,それを大勢でやるという話です.大規模であるほど,琴線に触れることは確かなようで,ほっと胸を撫で下ろしたりするのですが,一抹の寂しさも感じるので,私自身は,領域(分野)の話に持ち込みます. 長くなりそうなので,次回につづく.
前回の続きではないのですが,以前作った流体解析用のソルバーを紹介しておきます.
http://www.nakl.t.u-tokyo.ac.jp/~sirayama/index_tb.htm
MPIを用いた並列計算機用のプログラムもあります.利用してください.
第20回数値流体力学シンポジウム
<2006年12月18日(月)~20日(水) @名古屋大学>
にて,小紫@日大さんと「物体周りの流れ」というOSを企画しました.
http://www.nagare.or.jp/cfd/cfd20/
可視化も重要なテーマです.是非スケジュールに加えてください.
どうにも夏には弱く,滞ってしまっているのですが,気にはしていますので,もう少しお待ちください.
一般的に,可視化は後処理に位置付けられ,直前の処理は,計算であったり,実験や観測だったりします.与えられたデータを料理する手段の一つが可視化で,場合によっては新たなデータを集める必要もあります.データには,それを生み出した過程におけるいくつもの性質が内在していて,良い可視化はその性質をうまく利用して行われるからです.テキストでは,その辺りを強調しました.
しかし,可視化を全体のプロセスから分離して語ると,「素材である,データは用意されているもの」という前提をもつ人が多いようです.もし,前段階の過程が何であるかを隠して,かつヘッダーなどの情報も隠して,データだけを渡したら,渡された人はどうするのか?
以前,学生に対して,2列で表現した数値データ(時系列データ:時系列であることは伝えず)をテキストファイルで渡し,このデータから何かを見つけて,とだけ言って,どうするのかを観察したことがあります.幾人かの学生は,なんとかエクセルに読み込んで,グラフ化したのです.(想定内ではありましたが,心の中では便利な世の中になったものだと感心しました.)
今,法政大学でビジュアリゼーションという講義をもっています.教え始めてみたものの反応がよくないのです.可視化するデータがどういうものであるのかというイメージを持っていないことが原因である,とわかりました.
実は,データをどうやって取得するの?というのは,学生から出た質問でもあります.以前の経験から,時系列のデータを与えれば,エクセルで処理するだろうということは予想できます.だったら,(x,y)や(x,y,z)の座標列を与えたらどうするだろう.まだ,試みてはいません.講義では,数値シミュレーションの基礎を数回教え,その後,可視化に戻りました.反応はよくなったと思います.
では,データを直接与え,可視化のエッセンスもわかってもらうためにはどうするか? つづきは,いずれまた.
現状については,本書に書きました.世界と比べるとどうなの?,時々聞かれます.
二つの見方があります.一つは,コンピュータグラフィックスの研究者が技術計算の可視化を扱う場合です.この場合は,研究者の数が違うので,日本は不利です.例えば,IEEEのVisualizationという会議では,日本からの発表はほとんどありません.例えば,2005年の会議:http://vis.computer.org/vis2005/
この会議が最高峰であるとは思えませんが,大規模データに対する並列,あるいは分散可視化の方法や方法論などで,日本の,ある会議で最新の成果として発表されるようなものが,数年前のプロシーディングスに載っていたりします.
という意味でも,かなり押され気味ですね.とはいえ,この会議で報告されている流れの可視化などでは,CGに偏りすぎて本質をとらえていないようなものも多々見受けられます.このあたりは,分業制の影響なのではないかと考えています※.そして,この部分(CG)のみを追いかける日本の研究者が増えているように感じます.ちょっと残念ですね.
もう一つは,計算する側(あるいは結果を解釈する側)が可視化を行い,可視化をメインとして発表するものです.内容がともなわず,可視化を組み合わせただけという場合は,CGという点で見劣りがします(内容をごまかしているケースも見受けられるので,これも残念です).
しかし,計算,というよりは結果の解釈に対しても優れた人間が可視化を行う場合は違いますね.見た目の派手さよりも内容勝負になります.用いた可視化の方法・方法論にその内容を加味して,比較すると,日本のレベルは低くはないと思います.むしろ,分業制が進んでいる米国などと比べると,質の高い研究が多いと思います.実験に対しての流れの可視化のような,可視化対象とする流れ場によっては,世界をリードしてきた(いる)分野もあります.
※例えば,CGの可視化の立場で流体現象を扱っている研究者の幾人かが,CFDの大家といわれる方々のお弟子さんで,CFDの研究をしていたと思っていたら,いつの間にかCG系可視化専業になっています.
システムの話についても,聞かれることがあります.
例えば,技術計算という範疇で,効率の良い可視化システムを真面目に作ろうとすると,前処理,計算,後処理を統一的に扱うフレームワークの中で,システムを構築するのがよいと思っています.
本書の参照文献に,URL付きで示しましたが,
白山 晋,太田高志: クラスライブラリによる並列化実時間可視化システムの構築, 日本計算工学会論文集第1巻, 19990002, May, 1999, pp.35-41.
太田高志,白山 晋: オブジェクト指向フレームワークによる流体計算統合環境, 日本計算工学会論文集第1巻, 19990001, May, 1999, pp.27-33.
にそのあたりの方向性を述べました.
オブジェクト指向をベースにしたクラス中心の考えです.8,9年前の研究をまとめたものですが,現時点でも,古くはなっていないと思っています(最近でも,同じようなアイデアを書いた論文をみることがあります).
この二つの論文を発表した頃,欧米においても同じような動きがありました.しかし,細々と続いているが,大々的には拡がらなかったというのが正直な感想です.理由は,このような仕組みには標準化が不可欠で,そのためには「標準仕様を策定する組織が必要である」,しかし影響力のある組織を形成できなかった,ということだと考えています.
筋は悪くはない,技術的な問題も少ない(後はやるだけ)が,実現が難しいというカテゴリに属する類のもので,何かしらのプロジェクトの研究開発項目としては,おいしいものです(^^;).実際,いくつかの大型プロジェクトでは,プラグインやミドルウェアというような扱いで,生き残っているようです.残念なことは,プロジェクト内だけの話で済まされてしまい,別のプロジェクトが始まれば,同じようなものが名前を変えて出てくるということです.どこかの学会が主導する形が望ましいのですが,なかなか難しいようです・・・
書店に並ぶようになって数週間.買ってくれる人が増えているようで,励まし,いや叱咤激励の言葉をいただくようになりました.ありがとうございます.
・お金がかかっているね.(でも,高いね.)
・データをどうやって取得するのかを書いてほしかった.
・前半は,データ処理の基礎を教えるのに使える.
・教科書という意味では,院生向けかなあ.(部分的には,教養の講義にも使えるのだが)
・データ構造のようなところがもっと知りたい.
・知識処理の具体例ってもっとないの?
・盛り沢山.(でも勉強にはなる.)
・前半と後半のつながりが・・・
・可視化って,基礎となる学問体系がないと思っていたのだが,あるんだね.
などなど,です※.
確かに,高い.こればかりは・・・
その他は,その場では,私自身の考えを伝えているのですが,ここでも,答えていこうと考えています.
※一番うれしかったのは,恩師から白山君でないと書けない本だね,と言われたことです.
また,可視化の研究者ではない方から,可視化以外に利用できる研究ネタがつまっていると言われたこともうれしかった.
VisualBaseに関するドキュメントやデータは,諸般の事情があり,異なる場所においてあります.
VisualBaseは,
VisualBase
にあります.簡単な質問に答える必要があります.申し訳ないことですが,それらに答えて入手してください.ドキュメントとサンプルデータは,
Documents&SampleData
にあります.