ここ10年くらいで急速に日本でも広まったPythonですが、改めて、どういった言語なのか、おさらいしておきましょう。
Pythonは意外と歴史の長いプログラミング言語で、1991年に誕生しました。長らくマイナーなプログラミング言語でしたが、2000年以降に登場したPython2.0でガベージコレクションやリストが導入され、使いやすいプログラミング言語となったことで、一気に人気に火が付きました。
Python2.0の流れを組む、いわゆる2.x系は2010年に登場した2.7が最後のリリース(サポートは2020年1月1日まで)になっており、現在は2008年に登場したPython3.0流れを組む3.x系が中心となっています。
わざわざ、2.x系と3.x系という話をしたかというと、後方互換性がなく、ソースコードの記述方法すら違います。そのため、3.x系では2.x系用のライブラリが動かない、という問題もあります。
開発者側もこの問題のインパクトを意識しており、2.6と2.7には、2.xから3.xへの移植を助ける「2to3 ツール」と「lib2to3 モジュール」というのが含まれています。
もっとも、2015年リリースのFedora23や2016年リリースのUbuntu16.04、さらに2018年リリースのRed Hat Enterprise Linux 7.5(RHEL7.5)で、Python3.x系が標準装備になるなど、2019年現在、ほとんどの環境でPython3.x系対応が終わっているはずです。
ただし、独学で勉強しようと思っている方は要注意です。自分が購入しようとしている書籍や、閲覧しているインターネットサイトの情報が、Python2.x系なのかPython3.x系なのか確認しておかないと、「見本通り書いたのに、なぜか動かない」ということもありえます。
そんなPythonですが、日本では人工知能(AI)開発への関心の高まりに伴って、「人工知能開発向けのライブラリが多く使い勝手が良い」ということで有名かもしれません。ですが、そもそもPythonが人工知能開発にも使われるようになった理由は「開発の効率性が高い」というところにあります。
Pythonを利用すると開発の効率性が高まる理由は、“同じロジックであれば、誰が書いても同じようなソースコードになる”ことを目指して開発されたプログラミング言語だからです。ソースコードを書いた人とは異なる人が精査するのも楽ですし、あとから加筆修正するのも簡単です。開発効率だけでなく、保守の面からでも優れています。
実は、この考え方、他のプログラミング言語では聞かれない考え方です。逆に、Perlには「やり方はいろいろある (There’s More Than One Way To Do It; TMTOWTDI)」というモットーがあります。Pythonと比較されることが多いRubyにも「多様性は善 (Diversity is Good)」というスローガンが掲げられています。
そこまで極端ではなくても、例えばプログラミング言語の利用率ランキング「GitHubPullRequest」で上位20位に入るようなメジャーなプログラミング言語の中で「やり方は一つしかないプログラミング言語」を明確に打ち出しているのはPythonくらいでしょう。
このPythonのメリットに注目したGAFA(Google、Apple、Facebook、Amazon)などが積極的に利用したことで、海外ではWeb系を中心に幅広く利用されるようになりました。そして、Googleが機械学習ライブラリTensorFlowをPython向けに公開したことで、日本でも注目されるようになったのです。
ちなみに、2.x系と3.x系で記述方法が変更になり、後方互換性がなくなった理由も、人によって記述方法に差異が出ることを防ぐための措置が行われた、といえば、いかにPythonが開発効率を重視した言語なのか分かってもらいやすいかと思います。
さらに補足すれば、開発効率重視で“遊びがなく”、パターンさえ理解できれば、誰でもそれなりのプログラミングができることから、「Pythonは簡単」「Pythonは学びやすい」と言われているのです。
今回は、求人市場の実態を知る参考値として、求人検索エンジン「スタンバイ」(株式会社ビズリーチ)に掲載された求人情報を分析した、【求人検索エンジン「スタンバイ」調べ】を利用させていただきたいと思います。
求人検索エンジン「スタンバイ」プログラミング言語別年収ランキング2018
(提示年収の中央値ベスト10)
順位 | 言語 | 年収中央値(万円) | 最大提示年収(万円) | 求人数(件) |
1 | Go言語 | 600 | 1,600 | 2,202 |
2 | Scala | 600 | 1,300 | 1,489 |
3 | Python | 575 | 1,499 | 9,344 |
4 | Kotlin | 575 | 1,200 | 961 |
5 | TypeScript | 575 | 1,200 | 667 |
6 | R言語 | 575 | 1,000 | 220 |
7 | Ruby | 550 | 1,200 | 11,676 |
8 | Swift | 550 | 1,200 | 3,353 |
9 | Perl | 525 | 1,200 | 4,509 |
10 | C言語 | 525 | 1,000 | 9,347 |
Pythonは年収中央値(想定年収平均値)と求人数が第三位、最大提示額は第二位です。非常に好成績だと言えるでしょう。日本初の国際標準となったRubyがPythonよりも求人数が多く第二位となっていますが、その差はあまり大きくありません。
人工知能分野ではPythonの方がRubyよりも圧倒的な優位性があります。しかし、Web系システムの場合、RubyとPythonは直接のライバルであり、近年、RubyからPythonへと移行する例が広まっています。この集計結果だけを見ると、RubyからPythonへの移行が日本国内でも相当に行われていると考えられます。
給与面では、PythonがRubyを上回っているのは興味深いところです。理由としては二つ考えられます。
まず、単純にRubyエンジニアの方がPythonエンジニアより多いため、需要と供給の関係から、Pythonエンジニアの方が高単価を提示してもらいやすい、という可能性です。
もう一つの可能性としては、Pythonは人工知能開発にも強いプログラミング言語です。人工知能開発案件は言うまでもなく、高単価です。最大提示年収は人工知能開発関連の案件かもしれません。また、年収中央値も高単価な人工知能開発案件のおかげで引き上げられている側面もあるかもしれません。
最後にPythonの将来性についても検証しておきましょう。
Pythonの将来性を考える上で、ポジティブ材料として次のことが考えられます。
〇今後も人工知能開発やクラウドサービスなど、(特に海外発の)最新技術の開発環境としてPythonが指定されることが多い。
〇企業側のニーズ拡大に対して、エンジニアが足りていない。
一つ目として“今後も人工知能開発やクラウドサービスなど、(特に海外発の)最新技術の開発環境としてPythonが指定されることが多い”というのを指摘しました。現在も、先述のTensorFlowやAWS(Amazon Web Service)といったクラウドサービスなどで、Pythonが開発対応言語として選ばれることが多いですが、今後もこの傾向は続くと思われます。
その結果として、“企業側のニーズ拡大に対して、エンジニアが足りていない”という二つ目の事態も引き続き展開されると思われます。
逆に、Pythonの将来性を考える上で、ネガティブ要素と言えるのは以下のようなことです。
〇学びやすいということはエンジニアが増えて、単価が下がる可能性あり。
5年~10年といった比較的長いスパンでみると、Pythonを扱えるエンジニアが増えて、需要と供給のバランスが再調整され、結果、単価が下がる可能性ももちろんあります。ただし、単純に全員の単価が下がっていくという方向にはならないでしょう。
おそらくは、単純にPythonでプログラミングができるプログラマーと、人工知能や最新のクラウド動向に対応して、上位工程に関われる優れたスキルセットを保有するシステムエンジニアの間で年収格差が広がる構図になる可能性が高いです。
日本でも人気が出てきて、書籍や学習サイトが増えてきたPythonですが、海外、特にアメリカで積極的に使われている言語です。結果として、「Pythonに関連する技術動向」の情報は、だいたい英語で発信されます。
もちろん、インパクトが大きいものについては、日本語Webメディアでの紹介含めて、日本語化されますが、リアルタイムではありません。また、機械翻訳でとりあえず日本語化しただけなので、なにを言いたいのか分からないドキュメント、というのもよくあります。
単純にPythonでプログラミングを組むことができるようになれば良い、ということであれば、そのような英語で発信されたドキュメントをリアルタイムで読む必要はありません。しかし、市場価値の高いPythonエンジニアになりたいのであれば、リアルタイムで原文を読みこむ力も必要になるでしょう。