ハッカーへの第一歩にPythonを
「もしコンピュータ言語をひとつも知らないのなら、まずPythonを学ぶことを勧める」。これは『How to become a hacker』(Eric S. Raymond著)の一節です。なぜ、Pythonを勧めるのか、それには様々な理由がありますが、筆者の経験や、世の中の動向を踏まえて説明してみます。
幅広い職種で必要とされるプログラミング
プログラミングは、様々な職種で必要となるスキルです。ハッカー(hacker)と呼ばれる、インターネットの発展を支えてきた凄腕のプログラマーだけに必要なスキルではありません。統計学を駆使する社会学者も、理学系の研究者も、工学系のエンジニアも、データサイエンティストも、新薬を開発する研究者も、みなプログラミングのスキルを駆使することで、他人には簡単に真似できない仕事を成し遂げています。プログラミングによって、コンピュータをあなたの脳の一部に変えることができる、と言っても良いでしょう。
メーカーのエンジニアの場合
工学系のエンジニアにとっても、プログラミングのスキルは設計作業に必要不可欠です。筆者もメーカーに勤務するエンジニアですが、入社以来様々な言語を使ってきました。シェルスクリプト、sed、Perl、C言語、C++、MATLAB/Simulink、Octave、Scilab、Mathematicaなど、作業内容に応じて使い分けています。テキストデータの整形をsedで行ったのち、C言語のプログラムから読み込んで処理し、その結果をMATLABで解析・可視化する、といった具合です。
ただし、有償のライセンスを購入することが必要なMATLABのような言語の場合、利用したい時にライセンスを確保できずに、無償で利用できるOctaveやScilabを代わりに使うこともあります。
このような状況を変えつつあるのがPythonです。Pythonは、テキストデータの整形も、数値計算とその結果の可視化も得意です。すべての作業でPythonを使えば事足りる、という場面が多いのです。そのため、Pythonを使って設計をする機会が、日増しに増えています。
また、エンジニアにとって大切なことは、自分の設計内容や検討内容を完全に把握しておくことです。その点、MATLABのような有償のソフトを使うと、ライブラリのソースコードが公開されていないことが問題になる場合があります。Pythonと、Pythonの主要なライブラリの場合は、ほとんどがオープンソースプロジェクトです。そのため、すべてを自分のコントロール下に置いて、開発を進めることが可能です。
Pythonを選択するわけ
具体的にPytonを選択する理由を挙げてみます。
無償で使える
Pythonは、無償で利用できる言語です。学生も、民間企業のエンジニアも、決められたライセンス条項に従う限り、無償で自由に利用できます。
充実したエコシステム
Pythonは、多くの標準ライブラリと共に配布されており、それだけでも様々な処理を実現できる機能を備えています。そして、それだけでなく、様々な拡張機能を提供するサードパーティライブラリが、充実したエコシステムを形成しています。もちろん、それらの主要なものは、ほとんどが無償で利用できるオープンソースプロジェクトです。
初学者が学びやすい
Pythonは、文法がシンプルで可読性が高く、初学者にとって学びやすい言語です。標準的なスタイルガイドが定められており、それが広く認知されているため、比較的誰が書いても差が出ないのがPythonの特徴です。
他言語との接続性が良い
C/C++のライブラリなどを、Pythonプログラムから読み込んで利用することも可能です。Pythonは、グルー言語(glue language)、つまり糊(のり)の役割を果たす言語であると言われるように、他の言語との接続性が良いのが特徴です。そのため使い勝手が良く、過去の設計資産なども活用できます。
ディープ・ラーニングとビッグデータ解析での活用
次に、Pythonが実際に活用されている場面を見ていきます。
AlphaGoの快挙を支えたPython
2016年3月に、Google DeepMind社が開発した人工知能「AlphaGo」が、囲碁のトップ棋士であるイ・セドル氏との5番勝負で、4勝1敗という好成績を収めました。このAlphaGoは、Pythonを使って開発されました。Googleが開発した、人工知能開発のフレームワークであるTensorFlow(オープンソースソフトウェア)を用いて開発されたのです。
囲碁の世界では、トップ棋士に人工知能が勝利することは、当面無理である考えられていました。ディープ・ラーニングの大いなる可能性が認識された後でも、難しいと考えられていたのです。
この快挙を成し遂げるには、複雑な処理を見通し良く行えることや、高速に計算を実行する仕組みなどが必要であったと思われます。Pythonが、そのための言語として選択されたという事実は、Pythonの有用性と可能性を示唆するものだと言って良いでしょう。
ぶつからない車もPython!?
トヨタ自動車の「ぶつからない車」の開発にも、Pythonは活用されています。ぶつからないことを学習するために、Chainerと呼ばれるPythonのライブラリ(Preferred Networks社が開発したオープンソースソフトウェア)が使われているのです。
Chainerは、GPU(Graphics Processing Unit)の利用を可能にするAPI(Application Programming Interface)を備えており、学習プロセスを高速化します。今後、自動運転にかかわる人工知能開発に、Chainerがどれだけ広く活用されていくのかはまだ未知数ですが、Pythonが重要な役割を果たす言語のひとつであることは間違いなさそうです。
ビッグデータ解析でもPython
データサイエンティストが選択する言語と言えば、RとPythonが人気です。これまでは、Rの方が少し優勢だったかもしれません。しかし、Rはプログラミング言語としては少々特殊であり、とっつきにくい言語だと言われています。一方、Pythonは分かりやすく汎用的です。ビッグデータ解析に世の中の関心が多く向けられるようになるにつれ、RよりもPythonの方が、人気が高まっているようです。
科学技術計算でも大人気
Pythonの活躍の場は、科学技術計算の分野にも広がっています。
土台としてのNumPy
数値計算を高速に行う仕組みと、基礎的な科学技術計算用関数を提供するNumPy(ナンパイ)と呼ばれるライブラリが、特にその土台となっています。
NumPyは、線形代数演算などの高速化ライブラリ(Intel Math Kernel Libraryなど)にリンクして動作するため、「Pythonは、数値計算の処理速度が遅い」という迷信を、完全に覆す結果を示してくれることも少なくありません。また、NumPyよりもさらに処理を高速化させる、Cython(サイソン)、Numba(ナンバ)、Numexpr(ニューメックス)などのライブラリが存在することも見逃せません。少ない努力で、C言語などにも匹敵する(あるいはそれを上回る)計算速度を実現可能な言語がPythonなのです。
科学技術計算を支えるライブラリ群
NumPyを利用する様々なライブラリが、充実したプログラミング環境を形成していることも見逃せません。例えば、科学技術計算の各種アルゴリズムを提供するSciPy(サイパイ)、データ解析フレームワークのpandas(パンダズ)、データプロットツールのMatplotlib(マットプロットリブ)などが良い例です。これらのエコシステムが、あらゆる処理を可能にし、Pythonの利便性を高めています。
不動の地位を確立しつつある
IEEE Spectrumが発表した2016年の人気プログラミング言語ランキング(2016年7月)では、C言語、Javaに続いて、Pythonは3番目の人気を誇っています。Pythonの普及度は、着実に上昇しており、科学技術計算の分野でも不動の地位を確立しつつあると言って良いでしょう。
利用しやすくなったPython
Pythonと言えば、かつてはインストールに苦労するイメージがありました。様々なライブラリの依存関係を解決しつつ、C/C++のコンパイラを使うインストール作業が必要になるためです。しかし今では、簡単にインストールを完了できるディストリビューションパッケージが充実しており、OS(Windows、Linux、OS Xの32bit/64bit版など)に依らず、簡単にインストールができるようになりました。
Pythonのインストールで、特に筆者がお勧めするのが、Continuum Analytics社が無償で提供しているAnacondaです。Anacondaは、Python 2系とPython 3系の両方について、すべてのプラットフォーム(前述のOS)に対応したインストーラを提供しています。インストール作業は、短時間に完了し、データサイエンスや科学技術計算において使用頻度が高いライブラリの多くを含んだ実行環境が構築できます。その環境をベースとして、さらに必要となるライブラリを追加すれば、欲しい環境が簡単に手に入るようになりました。
さあ、Pythonを始めてみよう!
ここまで説明してきたように、Pythonは初学者にも優しく、非常に幅広い作業を可能にしてくれるとても便利な言語です。エコシステム(様々なライブラリ)の充実と共に、人気度においても不動の地位を確立しつつあります。Pythonの利用環境のインストールも容易になり、これからPythonを学び始める方にとっては絶好のタイミングと言って良いでしょう。さあ、あなたもPythonを始めてみませんか?