Kalessin Action ― The Never Ending Endeavour ―

地震・火山専門の研究開発員のブログ。あららぎハカセ(理学)。つくばで高いところに行くモノ🛰の中身を作ってます。

留学することの意義。新しい開発手法。

図らずも博士もとらないままいくつも研究機関を渡り歩くことになりましたが、その間、ラボの研究手法とか結構違っていて、勉強になりましたし、自分の研究の効率化も図れたように思います。私が最初に所属していた研究室はシュミレーションはやっていましたが出来合いのものでやる人が大部分で、Cなんかをつかって計算している人は比較的希でした。そんな状況なので、出力結果の描画も結構まちまちで、計算したはいいがそこからの手回しが今から考えると絶望的に悪かった記憶があります。そういえば当時はWindowsを使っていましたが、今の主力はMacですね。りんごです。


最初の留学先ではMatlab主体で研究をやっていました。分野ががらっと変わったのもありますが、計算ソフトと描画システムが一体化しているこの解析システムで、解析から考察までの流れが大変良くなったことが印象的でした。今の滞在先ではボスはmatlabで、私もMatlabはまだまだ使っていますが、私とサポートスタッフの方はもっぱらpythonFortranでシステムを組み上げています。

pythonは商用ソフトのmatlabに比べると若干癖がある部分や、機能が基本的な部分だけであるケースもありますが、研究に必要な各種数値演算ライブラリはほぼ完全に揃っている上、統合開発環境もつかえ、プロットも綺麗なものがすんなりできるので大活躍しています。ざっとメリットを上げるとこんな感じです。


1)行列や数値計算の扱いが簡単。車輪の再発明の必要がない。

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

SciPyとNumPyがあれば大抵のMatlabライクな処理はできてしまいます。


2)windows, mac間でパスの記述が変わってもカバーしてくれる関数がある。ほぼクロスプラットフォーム


3)cpython等、高速化や並列化が比較的簡単にできる。数値演算ライブラリもC/C++なので比較的速い。

High Performance Python: Practical Performant Programming for Humans

High Performance Python: Practical Performant Programming for Humans


4)地震学なら波形処理専門のライブラリがあり、各種データフォーマットに対応している。極端な話、データフォーマットだけが変わってもコードを書き換える必要がないこともある(クロスデータフォーマット?)。

地震波形処理ライブラリ"obspy" 割と速いです。


5)web上での情報が豊富。こんなのとか、チュートリアルとか、分厚い旧版の仕様書もPDFで落とせたりとかします。数値演算ライブラリ(Scipy, Numpy)のマニュアルとかも。

初めてのPython 第3版

初めてのPython 第3版

これ、分厚すぎるので、多分電子書籍がいいです。なくてもプログラミングはできる感じです。


6) タダ! IDEも、タダ! しかも選べる!私はEclipseを使っています。デバッグしながら描画とかも(Matlabよりも若干面倒ですが)OKなので便利です。



こんなスライドもあります。私はwindowsも持っていますが、予算がないのでofficeもopen officeのみです。一応以前地熱の科学計算のFortranコードをもらって動かせていますが、Macと違って研究にはあまり使っていない感じで、勿体ないなーと思っていました。

が、pythonを使いだして事情が一変します。今大量のデータを扱うプロジェクトをやっているのですが、たまにmacのシェルだけずーっと動かしっぱなしというシーンがあります。どうしても手持無沙汰になるのですが、そんな時でもpythonならほぼ完全にクロスプラットフォームで開発ができてしまうので研究の手を止めずに済みます*1。正直こんな役立つ日が来るとは思っていませんでした。ちなみに私はAnacondaというパッケージをダウンロードして科学関連のライブラリなんかもまとめて入れてしまっています。

ご冗談でしょう、ファインマンさん〈上〉 (岩波現代文庫)

ご冗談でしょう、ファインマンさん〈上〉 (岩波現代文庫)

ご冗談でしょう、ファインマンさん〈下〉 (岩波現代文庫)

ご冗談でしょう、ファインマンさん〈下〉 (岩波現代文庫)

私の学部時代のバイブル


御冗談でしょうファインマンさんでは大学ごとに類似のテーマ、類似の機器でもアプローチが大きく異なっていて、それが研究の刺激になったような話がかかれていましたが、日本の研究レベルが欧米にまったく引けをとらなくなった現在でも一度外に出て早い段階で色々経験するのはメリットが大きいと思います。日本だと若い助教₋准教授クラスの人が器用に管理していることでも場所によっては完全にサポートスタッフに任せて、自分はコアな部分に時間を集中…というトップサイエンティストの例は私は実は既に2度ほど見ています。どうしても最新の技術その他で最適なシステムを運用するには時間がかかるので、専門の人を配置してしまったほうが圧倒的に有利なのです。私の場合は今ここでみているようなやり方とマネジメントを将来のプロジェクトに活用することになります。今のボスもそれを期待しています。


大学院で大学を変わることに眉をひそめる人もいますが(私の周囲にはいません)、学部で学ぶことと大学院でやることではギャップもあるし、研究をはじめないとどうしても見えてこないこともあります。また、人が固定してしまうとどうしても空気が澱んでしまうし、違う人が手掛けると思わぬ応用も出てきやすいので、大学院で人をある程度以上入れ替えるのはプラスだと私は思っています。

*1:論文を読んでおくという手もありますが、あまり手を止めたくないシチュエーションって、やっぱりあるんですよ