TENTOで学ぶプログラミング言語⑤Python
Pythonだからできること
Pythonはディープラーニング/機械学習の言語として注目されていることもあって、とても人気の高い言語になっています。プログラミング言語の人気ランキングでも、常に高順位をマークする言語です。
TENTOのエース・プログラマー、吉川綱希先生に話を聞きました。
先生には以前、C#についてうかがいましたね。今回はPythonについてお聞きしたいと思っています。習得はどっちが先だったのですか?
「C#ですね。Pythonはその後だったはずです」
当然、C#ではできない、あるいはできるけれども遠回りをしなければならない、というような事情があって学んだのだと思いますが。
「たぶんそうだと思います」
たぶん?
「どういう理由があってPythonを覚えようと思ったのか、何をつくりたかったのか、まるで覚えてないんですよ。Pythonには便利なライブラリがたくさんありますから、そのひとつを使いたかったんじゃないかと思うんですが」
「なんでもできる」からこそ陥りやすい罠
Pythonの特徴としては、どんなことがあげられるのでしょうか。
「汎用性が高いことですね。ライブラリが充実しているので、それこそ機械学習など、さまざまな場面で利用されます。……ただ、それっていいことばかりじゃないんですよ。『汎用性が高い』ということは『なんでもできる』ってことで、それは『突出した何かがない』『特技がない』ことの裏返しだったりするんです」
「言語とか環境は道具みたいなものです。なにか実現したいことがあって、それに応じて選ぶのがふつうです。大工さんだって、釘を打ちたいときにカンナを選ぶ人はいないでしょう? プログラミング言語も同じようなものです。すくなくとも僕にとって、Pythonはあまり優先順位の高い言語ではありませんでした。もっといい道具があるから、そっちを選ぶということが多かったように思います」
「Pythonでなければならない」ということはそれほど多くなかったのですね。
「TENTOの子だけでなく、大人のプログラマーの方でもよく見るのですが、ある程度Pythonを扱えるようになると、なんでもPythonでやろうとしてしまうんです。Pythonはなんでもできる言語ですから、たいがいの要求にはこたえられるんですよ。でも、それってかえって遠回りじゃないのかな、と思うことは多いです」
TENTOで「それはPythonじゃないほうがいいよ」とアドバイスすることはありますか。
「けっこうあります。たとえば、競技プログラミングに参加したい子には、Pythonは勧めません。なにかGUI(Graphical User Interface、マウスや指などで扱えるアプリなど)のツールをつくりたい子にも、そう言うことは多いですね」
おそろしいバージョンの壁
これからPythonを学ぶ人に伝えておきたいことはありますか。
「Pythonはアップグレードが頻繁で、バージョンアップすると古いツールが使えなくなることがある、ということは知っておいてほしいですね」
どういうことですか。
「以前お話ししたC#などは保守的で、バージョンアップしたからといって古いものが使えなくなることはまずありません。ところが、Pythonはそうじゃないんです。有名なのはver.2からver.3へのアップグレードですけど、多くのPythonプロダクトが使えなくなってしまいました。Python本体とライブラリが適合しなくなったり、さまざまな問題が起こりました」
「Python本体とライブラリはつくった人(設計者)がちがいます。Pythonが変わったらそれに合わせないといけないですから、自分でなんとかコードを書いてライブラリが動くようにするか、設計者が動いてくれるのを待つか、どっちかの方法をとらなければなりません。けっこうめんどくさいんです(笑)。しかも、その現象はver.2からver.3みたいな、メジャーアップデートのときばかりではありません。ver.3.XのXの部分が変わったことで起こることもあります。Pythonにはそういう性格があるということは知っておいてほしいです」
世界の広さを知ろう
TENTOの子に伝えたいことは。
「新しくなにかを覚えるって、恐怖があるのは当然だと思います。新しい世界に入るってことですから。でも、それを恐れていては世界が広がりません。新しい世界に入らないということは、なにかを得るたいせつな機会を失うってことなんだ、ということは知っていてほしいと思います」
「何度も言うようですが、プログラミング言語って道具なんです。道具は、目的があって、それを達成するために合ったものを選ぶのが正しい姿です。ところが、ともすれば自分がそれまでに覚えたものだけでなんとかしようとしてしまう。『道具を使う』ことが目的になっちゃうんです。それってすごくおかしなことだけど、よくあることなんですよ」
TENTOではPythonの基礎的な部分を学ぶための教材も用意しています。