【便利】研究へのPython活用例【非情報系専攻向け】

こんにちは、unogram管理人のうのちゅ〜です。

今回は、情報系専攻じゃない学生でもできる、研究へのPython活用例を紹介していきます。

私自身、学生時代は研究の様々な場面でPythonを活用してきました。まだPythonを活用したことが無い方は、これをきっかけに多様な場面で活用できるPythonの素晴らしさを知って、実際に使ってみてほしいと思います。

前半は「そもそもPythonはなぜ研究において便利なのか?」、後半で「非情報系の研究へのPython活用例」をお伝えしていきます。

それでは見ていきましょう!

そもそもPythonはなぜ「研究において」便利なのか?

機械学習向けの外部ライブラリが豊富であり、近年はPythonの名前を頻繁に聞くことでしょう。Pythonが多くの人に使われている理由として、ここでは「(非情報系でも)研究において、便利・使いやすい」という観点に絞ってピックアップします。

Pythonが便利・使いやすい理由
  • コーディングまでの環境構築がラク
  • 構文がシンプル
  • データを可視化しやすい
  • 科学技術計算ライブラリが充実している

コーディングまでの環境構築がラク

Pythonを始めるファーストステップは、Anacondaをインストールすることです。Anacondaは科学技術計算向けに必要なツールやソフトウェアがひとまとめになったプラットフォームです。Pythonを用いた数値計算には必須のNumpyやScipyといったライブラリも含まれており、これさえインストールすればすぐにPythonを使い始めることができます。

特に、Anacondaのパッケージに含まれるJupyter Notebookは、ブラウザ上で手軽にコーディング・実行・可視化ができるスグレモノです。これさえあれば、テキストエディタやコンパイラ、他の統合開発環境は一切不要です。プログラミングを始める際には厄介な環境構築作業がすぐに済んでしまうのはPythonの大きな魅力です。

構文がシンプル

理系学生であれば、教養の講義などでC言語を学んだ方も多いのではないでしょうか?ポインタやら、ポインタのポインタ、メモリの確保…ちょっとした計算や簡単なプログラムを組むのにも手間がかかり、「プログラミングは面倒…嫌い…」という印象をもった方も少なくないのではないかと思います。

Pythonでは、基本的にポインタやらメモリの確保やらを明示的に行うことはありません。比較的、頭に思い浮かんだ手順を直感的にプログラムに落とし込むことができる言語です。

どれくらい簡単なの?と思う方は、ぜひPythonカテゴリの記事をご覧ください。



データを可視化しやすい

さきほど紹介したJupyter Notebookでは、ブラウザ上でのコーディングが可能で、実行すると、その一連のコード直下に実行結果が表示されます

研究においては、数値計算結果やグラフを表示したい場面が多々ありますが、これらも1つの画面上に表示することができます。パラメータを変えてすぐに再計算!ということも手軽に行えます。

また、外部ライブラリであるmatplotlibは、グラフ描画に特化しています。折れ線グラフや散布図はもちろんのこと、3D描画やヒートマップなど、描画できるグラフの種類は膨大です。どんなグラフが表示できるのか、自分の用途にあったグラフも対応しているのか、ぜひ一度見てみてください。

他にもOpenCVPILといった画像を扱うライブラリも充実しており、研究における可視化用途に関して、できないことはないと言ってもよいほどPythonは不自由のない言語になっています。

科学技術計算ライブラリが充実している

研究におけるプログラミング言語の主な用途は、科学技術計算です。単なる四則演算や簡単な関数だけでなく、自分で記述するには複雑な関数や、フィルタ処理、フーリエ変換などの基本的な数学的処理が簡単に実行できることが求められます。

Pythonは、NumpyScipyといった科学技術計算ライブラリが充実しています。

Numpyは、Pythonの標準ライブラリだけでは難しい数値計算をサポートするために必須のライブラリです。特に、ベクトルや行列を表現する多次元配列を扱う計算では欠かすことができません。PythonはC言語等と比較して計算速度が遅いことが欠点として挙げられることがありますが、Numpyは内部的にC言語が使用されているため、高速な演算が可能であるというメリットもあります。

Scipyは、高度な計算を行う際に必要なライブラリで、基本的にはNumpyとセットで使用します。積分や三角関係、指数関数、対数関数…といった、数値計算になくてはならない関数が揃っています。



「非情報系」の研究へのPython活用例

ここからは、私が実際に行った研究へのPython活用例を紹介していきます。

測定データの計算処理・可視化

実験したデータをそのまま何の処理もせずに学会発表や論文に載せることはできません。必要な加工や可視化を行う必要があるからです。

このようなデータ処理にはエクセルのような表計算ソフトを使う人も多いと思います。しかし、簡単な平均化処理、グラフ表示程度なら良いものの、生データを複雑な関数や式に代入する必要がある場合は、Pythonの方が柔軟に対応できる場合が多いです。また、グラフの設定に関して、Pythonの方が柔軟かつ学術的に受け入れられやすいデザインに調整しやすいという点も魅力です。

GUIを使った直感的な操作の方が有効な単純な操作はエクセル、複雑な処理を含む場合はPythonのように使い分けるのも良いでしょう。

実験装置の操作

Pythonに必要なライブラリをインストールして、USBなどを介してPCを装置に接続すれば、適切なコマンドを送信して操作することも可能です。例えば、GPIB (General Purpose Interface Bus)のようなインターフェースを搭載した測定器であれば、gpibライブラリなどを使って操作することが可能です。

Pythonを介して実験装置を操作する利点は、以下の通りです。

Pythonを介して実験装置を操作するメリット
  • 複数の装置に対して一連の操作(スイッチを押す、レンジを切り替える等)を実行できる
  • 予め決まった操作を確実に実行できる(人的ミスが減らせる)
  • 測定結果の取得もできる
  • 人間が行うより早く、次々と実行できる

GPIBのようなインターフェースを介すると、通常は手動で行うスイッチ操作などは大抵コマンドで実行できます。これらを予めコードに記述しておけば、たくさんの装置を使用して行う実験でも、自分は椅子に座った状態でコードを実行するだけで、非常にラクです。

また、人間が操作すると、誤ったボタンを押したり、間違った値を入力してしまいかねません。一方で、予め記述したコードをしっかり点検しておけば、コードの実行時には確実に装置を操作することができます。このように、人的ミスによって不正確な実験データを得るリスクや、時間のロスを減らすことができるのです。

Pythonに記述したコマンドによる操作でできることは、スイッチを押すような入力作業だけではありません。現在の状態(設定値)を確認したり、測定後のデータを取得することも可能です。通常であれば、装置の画面に表示された数値を自分の目で読み取って、キーボードに打ち込んで…という手間が必要になりますが、コマンドを介して取得すれば、そのままコードの中の変数に代入するなどしてデータ処理にシームレスに以降することも可能です。



繰り返し作業の自動化

「測定データの計算処理・可視化」、「実験装置の操作」にも関連していますが、プログラムが得意でかつ人間がやるには効率的でない、「繰り返し作業の自動化」ができる点も魅力です。

研究においては、同じ作業の繰り返しや、パラメータを変更して再度実行という行為が頻繁に行われます。人間がやることももちろん可能ですが、決まった作業をただ行うだけというのは退屈ですし、もっと生産的な行為に時間を割きたいものです。

スイッチを押して画面の数値をキーボードで打ち込めばよいだけの作業を、わざわざコーディングする方が面倒だ!と思う方もいるかもしれません。どの作業をコーディングして自動化するかは見極める必要がありますが、「何度も繰り返す計算」「パラメータをいくつも振って行う実験」はPythonの出番だと考えて良いでしょう。このような退屈な作業・人間がやる必要のない作業は積極的に自動化しましょう。

ちなみにPythonによる自動化は非常に汎用的で、各種作業の自動化のためのライブラリも豊富です。「Pythonを使った自動化に興味があるけど、どのような作業ができるの?」という方は、次の書籍を一通り学習すると、「Pythonにできること」を網羅的に学習することができます。

非情報系のあなたも、Pythonを使ってみよう

今回は、Pythonが便利な理由と、情報系専攻じゃない学生でもできる研究へのPython活用例を紹介してきました。

なんとなくプログラミングへの苦手意識があってPythonを避けていたあなたも、ぜひ一度Pythonに触れてみてください。Pythonは非常に人気な言語なので、初心者向けの書籍やサイトも豊富です。書籍がありすぎて逆にわからない!という方は以下の書籍を参考にすることをおすすめします。

Amazonで☆4.1(2020.10.24現在)と上々のレビューで、出版元も多数のプログラミング関連書籍を刊行しているオライリー社です。Pythonの基本を網羅しており、これを一通り学べばPython初心者は卒業できるでしょう。ただ、少し難しい内容も含まれるので、適宜webを参照しながら勉強するのがおすすめです。

少し慣れてくれば紹介したような研究への活用も十分可能になります。人間がやらなくてもよい作業はPythonにやらせて、自分の時間は他の作業に当て、生産性を高めていきましょう!