降下火山灰シミュレーション入門 - 55tephraへの導入 -
2017年1月3日連載開始
火山が噴火した時に火山灰がどこにどのくらい降ってくるかをシミュレーションするソフトウエア55tephraの入門記事です。
世界的に有名なTephra2というソフトを佐伯がProcessingという言語で改造移植したものをシリーズで公開します。
本家よりもずっと簡単に使えます。また、Tephra2のコードとできる限り同じ変数名やロジック構造を使いながらも
簡略化できる部分は整理してありますので、Tephra2のCソースコードを理解したい方がまず練習で読むのにも最適です。
このサイトでは、55tephraを実行するための準備と、ソースコードを読むための知識を段階的に説明していきます。
<Processingを使う>
2017年1月3日公開
Processing言語とは
55tephraを使うためには、Processing言語を実行できるようにしておく必要があります。
Processing(プロセッシング)は、キャセイ・レアスとベンジャミン・フライが開発し無料公開しているプログラミング言語です。
電子アートやビジュアルデザインのアイデアをあっというまに実現できるプログラミング言語で、プログラミング初心者に使いやすく、
上級者にとっても情報可視化の便利なツールとなります。
私は指導学生には最初のプログラミング言語として、まずProcessingを推奨しています。(研究によってはR言語が先のこともあります。)
それは以下の素晴らしい特徴があるからです。
(1)Windows,Mac,LinuxどのOSでも無料で利用できる。
(2)アイデアを高速でプログラムにできる。
(3)Processingが書けるようになれば、JAVAやC言語等に簡単に移行できる。
(4)オブジェクト指向など高度なプログラミング技法も学ぶことができる。
(5)Arduinoというワンボードマイコンのプログラミング環境にも採用されているので、電子工作への入り口にもなる。
また、すぐれた入門書があることもオススメの理由です。
以下の2冊の本がオススメです。
1冊目は、「Processingをはじめよう」Casey Reas, Ben Fry 著、オライリージャパン
アマゾンのサイトはこちら
Processing言語の生みの親が書いた本です。
生みの親が書いた本は、専門的になる傾向があるかと思いますが、この入門書は本当に初心者向けでフレンドリーな内容です。
2冊目は、「Nature of Code -Processingではじめる自然現象のシミュレーション」Daniel Shiffman著、ボーンデジタル
アマゾンのサイトはこちら
こちらは、すべての理系学生におすすめしたい、物理シミュレーションの入門書です。
一見難しそうな物理シミュレーションがシンプルなコードでどんどん実現していくので、とても楽しくシミュレーションやプログラミングのコツを学ぶことができます。
英語版は、以下のサイトで全文が公開されています。
Nature of Code のサイト
実際にプログラムが動作している様子が見られるので、本を購入した人もぜひ見てみてください。
高校生以上のみなさんは、英語の勉強も兼ねて、こちらを読んでみてはいかがでしょう。
Processingのインストール方法
こちらのサイトの[DownloadProcessing]というところをクリックします。
Processingの本家のサイト
すると、[Donate & Download] というウィンドウが開きます。
Donateとは寄付のことですが、寄付をしなくても問題なくダウンロードできます。
まずは、[No Donation(寄付なし)]のボタンをチェックして[Download]を選んでください。
すると、様々なOSの名前が出てきますので、自分のパソコンのOSを選んでクリックします。
ダウンロードされたファイルはProcessingの本体なので、適当な場所にコピーして起動してください。
これだけで、使い始めることができます。
わからないことがあったら、ネットで検索するとたくさんの情報が手に入ります。
ただ、processingというのは一般的な単語なので、processing言語と関係ないこともたくさん検索に引っかかります。
検索のコツは、proce55ingと、真ん中のss(エスエス)の部分を55(数字のごじゅうご)に変えた単語で検索することです。
伝統的にこのproce55ingという単語がprocessingの代わりとして活用されています。
55tephraの準備
Processing言語の威力がよくわかり、55tephraの理解の準備にもなるサンプルソフトを一つ載せておきます。
55tephraの一つの工夫は、地形データを内蔵していることですが、この地形データは、なんと単なる画像です。
地形データの作り方に関する解説は、次回にまわすとして、富士山付近の地図データと、標高を表示するサンプルソフトを
掲載します。
サンプルソフトのソースコードはこちら。
void setup() {
size(250, 220);
textSize(16);
PImage img;
img = loadImage("map.png");
image(img,0,0,250,200);
}
void draw(){
int elevation;
color c = get(mouseX, mouseY);
elevation = (int)(green(c)*16+blue(c));
fill(0, 0, 255);
rect(0,200,250,220);
fill(255,255,255);
text("Elevation="+elevation+"m", 20, 200, 200, 220);
}
実行結果は以下のようになります。ウェブ上で動作を簡単にデモできるのもProcessingの便利なところです。
緑の画像は1ピクセル250mメッシュの標高地図で、明るいところが標高の高い所です。中央付近の明るい所は富士山です。
表示されているデジタル標高地図の上にマウスカーソルを持っていくと、その地点の標高値が表示されます。
ブラウザによっては正しく動作していないかもしれませんので、変だったら別のブラウザで開いてみてください。
20行にも満たない簡単なコードで、こんなユーザーが操作できるツールができてしまいます。
ブラウズが非対応だった時のために、実行結果の静止画像も以下に貼り付けておきます。
下に表示されているのは、ただの画像なので、マウスカーソルをのせても何も起きませんよ。
上のソースコードをご自身のパソコンにインストールしたprocessingで実行したい方は、
富士山付近の数値標高データ画像を、以下からダウンロードしてください。
画像データ map.png
次回は日本全国の数値標高画像を使えるようにします。
では、みなさん、Processingを楽しんでくださいね!次回はまた近いうちに。