1.3. プログラミング言語#
1.3.1. シェル#
ユーティリティ(utilities)やシェル(shell)は、一般的に OS に標準で含まれているソフトウェアで、主に CUI を通じて利用されます。ユーティリティとは、ファイルのコピーや検索、ディレクトリの作成といった、コンピューターに対して具体的な操作を行う小さなプログラム群のことです。ユーザーは、これらのユーティリティをコマンド(command)として直接実行することができます。シェルは、こうしたコマンドを受け取り、解釈してカーネルに処理を依頼するためのインターフェースです。単なる中継役にとどまらず、多くのシェルには、条件分岐や繰り返し処理といったプログラミング言語のような機能も備わっています。代表的なシェルには bash や zsh などがあります。
一つの処理を複数のコマンドで組み合わせて行う場合、シェルでは独自の構文を使ってスクリプト(script)を記述できます。以下は、複数の CSV ファイルから「キャベツ」と「収穫量」を含む行を検索し、結果を一つのファイルにまとめる処理の例です。
for f in `ls *.csv`; do
cat ${f} | grep "キャベツ" | grep "収穫量" >> キャベツ-収穫量.csv
done
このスクリプトでは、ls
、cat
、grep
がユーティリティであり、ユーザーがコマンドとして直接実行できます。一方、for
、do
、done
はシェルの構文要素で、繰り返し処理を行うために使われます。シェルスクリプトでは、こうしたコマンドと制御構文を組み合わせて処理を記述できるのが特徴です。
シェルは、簡単なファイル操作や小規模なデータ処理、定型作業の自動化に非常に便利なツールです。しかし、統計解析や機械学習のような高度で複雑な処理を行うには、シェルの機能では限界があります。こうした処理には、Python や R、C++ といった汎用的なプログラミング言語を用いることで、より柔軟かつ効率的に実装を行うことが可能になります。
言ってみれば、シェルやコマンドは頼もしいお掃除ロボットのようなものです。命令すれば床をきれいにしてくれます。しかし、「床の汚れが増えたのは生活パターンの変化によるものか」なんて分析はできません。そんな分析をさせたら、ロボットはきっと黙って部屋の隅に戻ってしまいます。Segmentation fault (core dumped)。
1.3.2. プログラミング言語#
コンピューターを使ってデータを解析するには、データをコンピューターが理解できる形で格納し、さらに解析の手順をコンピューターに理解できる形で指示する必要があります。そのために用いられるのが、プログラミング言語(programming languages)です。たとえば Python を使う場合には、Python が定めた文法や構文ルールに従って、データの構造や処理の手順を記述します。記述が正しければ、コンピューターはその手順に従って処理を実行します。ほかのプログラミング言語でも同様に、それぞれの言語が定めるルールに従って記述する必要があります。
プログラミング言語は大きく分けて、汎用プログラミング言語(general-purpose programming languages)と、ドメイン特化型言語(domain-specific languages)の 2 つのタイプに分類されます。
汎用プログラミング言語は、用途を限定せず幅広い分野で利用できる言語です。C/C++、C#、Java などがその代表で、OS やアプリケーションの開発、ウェブサービス、ゲーム、金融システム、人工知能、データ解析など、さまざまな分野で活用されています。
一方、ドメイン特化型言語は、特定の用途に特化した設計がなされている言語です。たとえば、R や MATLAB は統計解析や数値計算のために設計されており、学術研究や工学、科学技術計算の分野で広く使われています。また、Ruby、PHP や JavaScript はウェブサイトやウェブアプリケーションの開発を主な目的としています。
このような分類方法において、Python は汎用プログラミング言語に分類されます。Python は 1991 年にオランダの開発者グイド・ヴァンロッサム(Guido van Rossum)によって開発されました。シンプルで読みやすく、学びやすい言語、を目指して開発されました。当初は小規模なスクリプトやツール開発に使われていましたが、2000 年代に入ると科学技術計算や統計解析の分野でも広く使われるようになりました。その後、Python はデータサイエンス、機械学習、人工知能といった先端分野でも主要な言語として採用されるようになり、現在ではプログラミング入門から高度な研究開発までカバーする、非常に汎用性の高い言語として知られています。
さらに、Python はオープンソースであり、活発な開発者コミュニティによって日々改良が加えられています。このオープンな環境は、初心者からプロフェッショナルまで多くのユーザーに支持されており、2020 年以降は複数のランキング(TIOBE、Stack Overflow、GitHub など)で最も人気のあるプログラミング言語として上位に名を連ねています。