CTC 教育サービス
[IT研修]注目キーワード OpenStack OpenFlow/SDN 情報セキュリティ Python システムトラブルシュート
この7月、IEEE spectrumというプログラミングの人気をランキングするサイトで、Pythonが1位になりました。IT系のニュースサイトなどでも取り上げられ、その界隈ではちょっとした話題になりました。このようなランキングサイトは、有名なものだけに限ってもいくつか種類があります。ただ、私の知っている限り、Pythonが1位になったのを見るのは始めてなので、遂にここまで来たかと少し感慨深い思いもありました。もちろん、すべてのサイトで1位になっている訳ではありません。例えば、PYPL(PopularitY of Programming Language)というサイトでは、Javaに次いで2位となっています。ただ、このランキングサイトでは、現在のTop3(Java, Python, PHP)について、10年以上の期間にわたり、その支持率の変遷をグラフにしてくれています。これを見ると、Pythonがまさに鰻登りなので、このサイトでも近い将来Javaを抜いて1位になるかもしれません。
なんでもかんでも1番になりたがるというのは、私個人の考えとはあまり相容れませんが、Pythonが支持を集めるのは嬉しいことなので、今回はその要因について考えてみたいと思います。
すぐに思いつくのは、昨今の人工知能(AI)や機械学習ブームです。Pythonには、データ解析や科学技術計算に便利なライブラリが多数揃っています。具体的な名前を出すとキリがありませんが、scipy, numpy, pandas, matplotlib, scikit-learnなどは、それぞれに非常に強力な機能を備えているので、データ解析に関する分野を支える中心的な役割を果たしています。私自身も、大学での研究に10年以上前からPythonを使っていますが、昔はExcelやRなど、その他のツールも併用していましたが、これらライブラリの進化に助けられ、最近はほとんどPythonだけで事足りるようになりました。ちなみに、これらのライブラリを一度にインストール出来るパッケージ、Anacondaは大変便利です。米国Continuum Analytics社が配布していますが、無料で利用できますので、Python環境の構築にお役立て下さい。
Anacondaにも同梱されていますが、Webブラウザ上でコードの実行ができ、結果をそのまま保存できるJupyter notebookは、革命的と言っても過言ではありません。もし、利用したことがなかったら、是非使って見て下さい。Jupyterは、私自身の生活にも無くてはならない存在ですが、このような強力なライブラリ群の存在が、Python人気を押し上げて、支えているということが出来ると思います。
外部ライブラリの充実は、鶏とタマゴの話に似ているところがあって、ライブラリが充実したからPythonが流行ったのか、Pythonが流行ったから周辺が盛り上がったのか、正確なことは誰にも分からないというのが真実かもしれません。もちろん、世界が今の形になっているのは、どんな分野でも偶然が支配するところが大きいので、Pythonではない別の言語が、機械学習ブームを支える言語になっていた可能性はあります。
ただ、言語の設計思想には、それぞれ違いがあるのも事実です。Pythonのインタラクティブシェルで、「import this」とすると、"The Zen of Python"というPythonの言語としての哲学が、19個の文章として出てきます。その中には、"Simple is better than complex." のように、ストレートにPythonの哲学を表現したものもありますが、私が個人的に気に入っているのは、次の1文です。
There should be one-- and preferably only one --obvious way to do it.
何かを実行するときに、出来るだけその方法が1つになったほうがイイというこの思想は、Pythonの魅力の源泉ではないかと思っています。もちろん、プログラミングという作業自体、複雑なものですし、様々な外部ライブラリがあると、解決方法が1つになることは難しいこともありますが、基本的な文法をみると、この哲学が納得出来ます。
例えば、Pythonには、繰り返しを制御する構文として、forとwhileがあり、条件を制御する構文としてif文があります。Rubyでは、これらに加えて10.timesという書き方で、回数を指定したループを実行したり、unlessというキーワードでif文の逆、つまり条件が成立しないときに、引き続くコードを実行するという書き方が出来ます。Rubyには、プログラマに書き方をゆだねることを言語の設計思想にしている面もあるようですので、この点ではPythonと全く逆です。同じように、Pythonでは、ifやfor文の内部で、インデント(字下げ)を強要します。JavaやCでは波括弧を使いますし、Rubyではendキーワードがあるので、インデントの強要はされず、自由にコードを書けます。実際、この強制的なインデントを毛嫌いする知人のプログラマを、私は何人か知っています。これは言語の思想の違いに起因するものですし、多様性がある方が世界は楽しいですが、このようなシンプルさはPythonの大きな特徴と言えると思います。
プログラミング言語に、いろいろな種類があるとは言っても、どれをとっても、英語と日本語ほどの差はありません。ですから、1つの言語を習得すると、他のプログラミング言語を学ぶのに必要な労力は、格段に小さくなります。時代の流れが変われば、流行する言語も変わります。かく言う私も、20代半ば(もう20年弱前のことですが・・・)に、C++からJavaに乗り換えた時は、「Javaってなんて便利な言語なんだ!」と思った記憶があります。
今は、コンピュータが身近にあり、インターネットも普及しているので、言語を選択したり、乗り換えたりするのは簡単です。ただ、最初は何か1つ、言語を習得する必要があります。最初から、しなくてもいい苦労をする必要はありませんので、Pythonのようなシンプルな言語を選ぶのが良いでしょう。しかも、今のPythonは飛ぶ鳥を落とす勢いですでの、沢山のライブラリが存在しています。これらを利用すれば、データ解析でも、Webアプリ開発でも、なにかやりたいと思ったことを短時間で実現できます。
2020年を目処に、日本でも学校教育におけるプログラミング言語の必修化が予定されているようですが、先行するイギリスでの事例などを参考にしつつ、是非Pythonを採用するのが良いのではないかと思います。
筆者書籍紹介 いちばんやさしいパイソンの本 Python スタートブック ――Pythonの基本をしっかりマスター まったくのゼロからでも大丈夫 辻真吾 著 B5変形判/320ページ 定価(本体2,480円+税) ISBN 978-4-7741-4229-6 詳しくはこちら(出版社WEBサイト) |
[IT研修]注目キーワード OpenStack OpenFlow/SDN 情報セキュリティ Python システムトラブルシュート