難易度、就職に有利…それ以外にも「最初にPythonを学ぶべき」理由がある!

よく「未経験者が最初に学ぶプログラミング言語は、どれがいいですか?」という質問に対し、「どれでもかまいません」「未経験者でも学びやすいのは○○」「就職がしやすいのは○○」という回答が返されることが多い。

どれもそれぞれ理にかなっている。現在のプログラミング言語は、特殊なものを除けば、文法的には似通っている。せいぜい英語とドイツ語程度の違いしかないため、どれかひとつをマスターしてしまえば、別のプログラミング言語は簡単に身につけることができる。だったら、難易度の低いものがいい、いや、現実を考えて就職に有利になるものがいいというのも当然の考え方だ。

しかし、ここでは、まったく別の角度から「最初にPythonを学ぶべき」とお勧めしておきたい。

理由1.機械学習などの人工知能系のプログラミングに多く用いられる

Pythonを最初に学ぶべき理由の第1は、機械学習などの人工知能系のプログラミングに多く用いられることだ。

人工知能はもはやエンジニアだけのものではなくなっている。ビジネスや生活のあらゆるシーンで使われていくことになる(初歩的な機械学習は、気づいていないだけで多くのところで使われている)。エンジニアにとっては、無限の可能性が広がっている。

理由2.ライブラリが群を抜いて充実している

そして、より重要なのが、ライブラリが群を抜いて充実をしているため、プログラミングの意味合いが完全に変わったことだ。極端に言えば、従来のプログラミング言語は、1から10までエンジニアがアルゴリズムを考え、コーディングをしていかなければならないものだった。それは特別な修練を積んだ専門家にしかできないことだった。一方で、Pythonはライブラリを組み合わせるような感覚でプログラミングができる。従来のプログラミング手法が彫刻のようなものだとすれば、Pythonプログラミングプラモデルを作るような感覚だ。

Python以前のプログラミングが職人や芸術家のようなスキルが要求されるのに対し、Pythonプログラミンで要求されるのはデザイナーや建築家のようなスキルだ。目的を明確にし、それに適したパーツを探してきて、それを組み立てていく。そんな感覚が求められるようになっている。

(Python Package Indexでは、膨大なPythonのライブラリの検索ができる。180万以上のライブラリが公開されている。このような膨大なライブラリから、目的に見合ったライブラリを探し出し、実装する力が、エンジニアには求められるようになっている)

理由3.ライブラリが機械学習関連だけではなく多方面に

Pythonが人気になったのは、機械学習関連のライブラリが充実をしているため、人工知能プログラミングがしやすいことがあった。しかし、Pythonのライブラリは機械学習だけでなく、多方面に渡り、現在でも多くのライブラリが公開され、守備範囲を広げている。

例えば、行列計算など複雑で重い計算をさせたい時、従来のプログラミング言語では、自分で行列計算の仕組みを理解し、コードを書かなければならなかった。しかし、Pythonではライブラリを呼び出して、引数を渡すだけ。先人が作ってくれた努力の結晶を利用させていただくことができる。

さらに、意外に面倒でエラーの原因になりやすい日付計算、時間計算、さらには統計処理、画像処理などもライブラリが充実している。

当然、ウェブ系のライブラリも充実をしていて、ウェブスクレイビングを行い、ウェブページに掲載されているデータを自動取得をし、何らかの計算処理をするなどということも行える。スクレイビングライブラリを利用すると、普段手作業で行っていることを自動化できるようになる。例えば、あるサイトの検索順位を一定時間ごとに取得して追跡する、特定の商品の価格を複数のECを巡回して取得し、比較する、統計情報を取得し、自動加工、可視化を行うなどができるようになる。つまり、多くの業種での「業務」のほとんどに関わってくる自動化がPythonでできるようになる。

理由4.非エンジニアもPythonを利用すべき時代に

誰がコードを書くかは別として、エンジニアだけでなく、非エンジニアもPythonを利用する時代がやってきている。

個人的には、非エンジニアにも、Pythonの初歩的なプログラミングの授業、研修を必須にしてしまい、誰でも初歩的なPythonプログラミングができるようになっているのが理想的だと思う。

今時、「ワードもエクセルも使えません」という人は働ける場が限られてしまうのと同じように、デスクワークをする人の必修スキルとして「Pythonの初歩」が位置付けられることはあり得ると思うし、そういう企業は強い競争力を持つことになる。なぜなら、業務効率を高める工夫が現場から生まれて、現場で解決できるようになるからだ。

ただし、非エンジニアにとって、Pythonの最大のハードルはライブラリに対する知識だ。これは普段からさまざまなライブラリを実際に使ってみるという経験の積み重ねが必要になる。将来、非エンジニアもPythonのコードを書く世の中になるかもしれないが、ライブラリに精通するのは、エンジニアという専門職でなければなかなかできない。

そこで、エンジニアと現場の連携が必要になってくる。現場の非エンジニアが業務効率に関する課題を発見する。それをエンジニアに相談し、どのようなライブラリを使って解決すればいいかアドバイスを受けたり、デザインをしたりしてもらう。それを現場でPythonプログラミングを行い、エンジニアにレビューと検証をしてもらうという連携が可能になる。

Pythonがエンジニアと非エンジニアの関係を変える!

エンジニアの仕事はコーディングではなく、設計と実装とライブラリの情報収集になっていく。

今、デスクワークをする人で「エクセルがまったく使えない」という人はもはや珍しくなっている。しかし、多くの人ができるのは日常的に使う縦横集計表を作れる程度のことで、分析系の関数を使ってデータ分析をするには、詳しい人に教えてもらうというのが一般的だ。これと同じ感覚で、業務システムの改善が可能になっていく。

これは、現場とエンジニアの関係を変えていくことになる。現場とエンジニアはしばしば対立的になりがちだった。現場は課題を感じていても、それをうまくエンジニアに伝えられない。エンジニアは想像で課題解決のシステムを開発する。現場からすると、それはピント外れのものであり、かえって課題を悪化させてしまうものだったというのもよくある話になっている。

これは現場とエンジニアが互いの仕事に対する理解が少ないことが原因だ。非エンジニアはプログラミング言語をまったく知らないので、何ができて、何ができないのかを理解していない。一方で、エンジニアは何ができて、何ができないかを理解しているが、常に業務負担が過剰になっているため、技術的可能性よりも業務の優先順位を考え、実行可能性の観点で対応してしまいがちだ。

Pythonという今までになかった文化を持つプログラミング言語が登場したことで、Pythonを媒介にこの現場とエンジニアの溝が埋められるかもしれない。

もちろん、Pythonがワード、エクセルと同じレベルの「ホワイカラーにとっての必須スキル」になっていくかどうかは私にはわからない。

しかし、プログラミング言語はこれからもPythonが向いている方向に進化をしていく。それは、コードを1から書いていくのではなく、豊富なライブラリを組み合わせていくものになる。その時、エンジニアの役割というのはどのようなものになるだろうか。エンジニアに求められる役割も変わっていくことになる。

原稿:牧野武文(まきの・たけふみ)

テクノロジーと生活の関係を考えるITジャーナリスト。著書に「Macの知恵の実」「ゼロからわかるインドの数学」「Googleの正体」「論語なう」「街角スローガンから見た中国人民の常識」「レトロハッカーズ」「横井軍平伝」など。

【関連記事】「プログラミング言語「Python」でできることや学習方法まとめ」

エンジニアも非エンジニアもPythonを学ぶべき理由とは!?--エンジニアに求められる役割に変化も