研究者のPython活用で必要な8つのポイント
はじめに
「プログラミングって難しそう…?」
そう思っている化学者研究者の皆さん、ちょっと待ってください!
化学者研究者がPythonを使いこなすために押さえておくべきポイントは8つだけです。
本記事では、8つの基本要素をベースにして、全体像を掴むことを目的に「ざっくり」とご紹介します。
「これだけなら、なんだか自分にもできそう!」と感じてもらえるはずです。
先に全体像を把握しておくことで学習も効率的になります。
なお、各ポイントの詳細な解説は別記事でまとめる予定です。
基礎文法の全体像
8つのポイントの図解
8つのポイントを図解しました。
研究者のPython活用では、これらを押さえておけばプログラムの読み書きには困りません。
別記事で紹介している業務自動化のサンプルプログラムも、この8つのポイントを理解できていれば難なく読めます。
PythonによるExcel業務の自動化を体感 はじめに 本記事では、複数のスペクトル生データ(csvファイル)を集約し、エクセルに書き出して、さらにグラフを描画するまでの作業を自動化したプログラムを解説します。 そのまま使えるサ[…]
以降でそれぞれについて簡単なコードを交えて説明していきますが、その前に読み進めるのに必要な超基本ルールを紹介しておきます。
変数、print関数、コメントアウト
変数
Pythonでは以下のように自由に変数を定義できます。
a = 1
b = "Hello Chemist!"
「a」「b」という勝手につけた名前の変数に、「1」「Hello Chemist!」という値を定義しました。
例えば、「Hello Chemist!」という文字をプログラム中で繰り返し使用したいときや、これを全部大文字に変える処理をしたいときなど、変数で定義していおいたほうがコードを書くのが楽だし、可読性も上がるというメリットがあります。
print関数
次にprint関数ですが、これは以下コードのようにカッコの中に入れたものを出力する機能です。
print(a)
# 先ほど定義した「1」が出力
print(b)
# 先ほど定義した「Hello Chemist」が出力
print関数は主に変数の中身を確認するために使用します。
上述したように、プログラムでは自分で定義した変数に何らかの処理を加えたりするので、その処理が思い通りにいっているかを確認するために使うことが多いです。
コメントアウト
コードの中にメモ書きを残したい時、#を使います。
print('これは出力される')
# print('これは出力されない')
#の後の記述はコードと認識されず、実行もされないし、エラーとして検出もされません。
以下では具体的なコードを交えて解説していきますが、コメントアウトでコードや出力結果を記述しています。
データ型
まずはPythonの「データ型」について見ていきましょう。
Pythonではデータに応じた「型」があり、それぞれに特徴があり、施せる処理も異なります。
初心者のうちは、数値、文字列、そして複数のデータをまとめて扱うコンテナ型の3つを押さえるだけで十分です。
「どんなデータなのか」を意識することで、書けるコードの幅がぐんと広がっていきます。
数値計算
数字を扱う型です。基本のキです。
すんなり理解できると思います。
「int型」という整数と、「float型」という小数の2つの型があります。
整数を意味する”integer”、浮動小数点数を意味する”float”という英単語が元です。
これらの「数値型」は以下コードのように四則演算が可能です。
c = 1 + 2
print(c)
# 3(int型)と出力
d = 8
e = 3
f = 8 / 3
print(f)
# 2.666666...(float型)と出力
さらに詳しい解説は以下の記事を読んでください。
Pythonでの数値計算 はじめに 化学研究者のPython活用には数値計算技術は必須です。 本記事では、基本となる数値型や四則演算、より大規模な計算処理や行列演算が可能なライブラリ「NumPy」について解説します。 この記[…]
文字列
文字を扱う「str型」と呼ばれる型です。
文字を意味する”string”という英単語が元です。
文字列は以下コードのようにシングルクオーテーションやダブルクォーテーションで囲うことで定義できます。
g = '文字列です'
print(g)
# 「文字列です」と出力
h = "125"
print(h)
# 125と出力されるが、これはstr型
以下のコードはエラーになります。
このように「どうすればエラーになるのか」が分かることで理解が進みます。
i = 文字列です
# クォーテーションで囲っていない
j = h + 2
# hは先ほど定義したstr型なので足し算ができない
さらに詳しい解説は別記事にまとめる予定です。
コンテナ
複数のデータを扱うための型です。
研究者のPython活用において、実験データは必ず複数個存在しますよね。
その複数のデータを解析したり、分析することで次のアクションを判断すると思います。
つまり、複数データを扱うためのコンテナ型は確実に抑える必要があります。
リスト型、辞書型、タプル型、集合型と主に4つの型が存在しますが、リスト型が最も使用頻度が高いので、本記事ではこちらを簡単に解説します。
以下コードのようにリストでは、[ ]で囲って、カンマで区切ることで複数のデータを収納できます。
収納されている個々のデータを要素と呼んだりします。
lst = [1, 2, 3, "list", 5, "container"]
# 数値型と文字列型が混在しても大丈夫
print(lst)
# [1, 2, 3, 'list', 5, 'container']とリスト全体が出力
さらに詳しい解説は別記事にまとめる予定です。
処理
「同じことを何度もする」「条件によって振る舞いを変える」といったことは、Pythonでよく使う基本中の基本。
この2つを使いこなせると、ただの計算機から「考えるプログラム」へと一歩進むことができます。
非常に複雑そうなプログラムでも、大抵はこの2つの処理をベースに成り立っています。
逆に言うと、この2つを使いこなせれば大抵のプログラムを作ることができます。
繰り返し処理
同じ処理を繰り返し行う処理方法です。ループ処理と言われたりします。
面倒な定型作業には、コピペやグラフ作成など同じ動作の繰り返しが含まれることがほとんどです。
これを高速で処理できるようになります。
- for文:リストなどの繰り返し可能な型(イテラブル)の各要素に対して処理を繰り返す。
— - while文:設定した条件が真である間、処理を繰り返す。
—
具体的なコードを交えたさらに詳しい解説は別記事にまとめる予定です。
条件分岐
条件式に応じて異なる処理を実行するための仕組みです。
このときはこうする、あのときはああする、というようにプログラムを作ることで汎用的なものを作ることができます。
以下コードのように、ifで条件分岐が始まり、条件が複数ある場合はelifでつながり、最後はelse、という形になります。
自分でxの値を適当に変えてみて、出力結果が変わることを確認してください。
x = 10
# xの値によって処理を変える条件分岐
if x < 10: # xが10未満の場合
print('xは10以下です')
elif x == 10: # x=10の場合
print('xは10です')
else: # それ以外、つまりxが10より大きい場合
print('xは10以上です')
# このコードでは「xは10です」が出力
さらに詳しい解説は別記事にまとめる予定です。
抽象化と設計
ここからの内容は初心者がつまづきやすいところです。
本記事では概念だけ理解していただき、詳しい内容は別記事を参照ください。
基本のキから一歩先に行くために、「まとめる」「再利用する」「仕組みをつくる」といった考え方が必要になってきます。
よく使う処理をまとめる「関数」、それらの関数や変数をファイル単位で整理する「モジュール」、そしてデータと処理をひとまとめにした「クラス」を紹介します。
これらは、コードを読みやすくしたり、大きなプログラムを効率よく作るための「設計の基本」です。
それぞれの役割や使いどころを、具体的な例えを交えて見ていきましょう。
関数
関数は、プログラムの中でよく使う「処理」を一つにまとめた部品のようなものです。
基本的にプログラムは部品を組み立てて構成されています。
たとえば「2つの数を足す」「文字を整える」といった処理を部品にしておけば、何度でもその部品を呼び出して使うことができます。
上の例では処理が非常に単純なので部品化する必要性は高くないですが、複雑な処理をプログラム中で何度も実行したいときに、いちいち長いコードを書くことはミスにつながります。
一度部品(=関数)にしてしまえば、関数を呼び出すだけでその処理が実行できるため、コードがすっきりし、ミスも減らせます。
また、途中で処理の修正が必要になったときにも関数化のメリットがあります。
関数化していれば、関数の修正だけで済みます。
関数化していないと、その処理が出てくる箇所をすべて修正しなければならないので、これもミスにつながります。
具体的なコードを交えた、さらに詳しい解説は別記事にまとめる予定です。
モジュール
関数などの部品をたくさん作っていくと、それらを整理したくなります。
モジュールは、こうした部品をツールボックスのようにファイル単位でまとめる仕組みです。
たとえば、「計算用の関数をまとめたファイル」「文字列を扱う関数をまとめたファイル」など、目的ごとに整理できます。
Pythonにはあらかじめ用意されたモジュールもたくさんあり、それらを使うことでゼロから部品を作らなくても済む場面が多くあります。
よく耳にする「ライブラリ」は複数のモジュールをまとめた“道具セット”のようなものです。
本ブログでは過去の記事でライブラリを”パワーアップアイテム”と例えたりしていますが、同じようなイメージです。
一括インストールから用途別に徹底解説 はじめに 化学研究や実験データ解析、さらには自動化や機械学習による開発加速が求められる中、Pythonはこうした業務を大幅に効率化するための強力なツールです。 本記事では、化学[…]
モジュールやライブラリの使い方は別記事にまとめる予定です。
クラス
初学者が最もつまづくポイントです。
ここではそんなものがあるのか、という程度の理解で大丈夫です。
クラスは、「役割や職業」を持った存在をプログラムの中で表現する仕組みです。
たとえば「医者」や「大工」という職業には、それぞれ特有のスキルや行動がありますよね。
クラスでは、そのような「属性(名前や資格)」と「メソッド(診察する、家を建てる)」をひとまとめにして表現できます。
同じ職業の人たちは、共通のふるまいを持ちつつ、それぞれ個性がある(=別のデータを持てる)というのがポイントです。
この仕組みによって、「まとめて扱いたいけど、個別の違いも必要」といった複雑な状態をスマートに表現できます。
具体的なコードを交えた、さらに詳しい解説は別記事にまとめる予定です。
おわりに
今回紹介した8つのポイントは、Pythonのほんの入口にすぎません。
でも、この入り口を通ったあなたには、データ解析、自動化、機械学習など、新しい可能性の扉がいくつも開かれています。
ぜひ次の記事も読みながら、自分のペースでその世界を探検していってください。
基礎文法の詳説記事一覧
Pythonでの数値計算 はじめに 化学研究者のPython活用には数値計算技術は必須です。 本記事では、基本となる数値型や四則演算、より大規模な計算処理や行列演算が可能なライブラリ「NumPy」について解説します。 この記[…]