既に社会で活躍してるエンジニアの方であれば、「人工知能」を作ってみたいと考えたことがある方も多いかと思います。人工知能やIoTなどの先端技術に携わっているエンジニアを総じて「先端IT人材」などと呼ばれますが、現在日本を含めて世界中で深刻な人材不足の状況です。

人材不足が深刻な状況を表しているデータとして、アメリカでは機械学習エンジニアの平均年収は現在で「1350万円（$120,931）」と非常に高額になっています。（参考：機械学習を学ぶために読むべき厳選書籍3冊）

日本の機械学習エンジニアの平均給料のデータは未だ無いようですが、避けては通れない人材不足の課題があることを加味すると、今後、人工知能に携われるエンジニアのニーズは急激に高まることから給料も高騰することが予測されます。

さて、先ほどから「人工知能」と「機械学習」というキーワードを頻繁に使っていますが、そもそも「人工知能」はどのようなプログラミング言語で書かれているのでしょうか？人口知能と機械学習の詳細に関しては、「人工知能の作り方とは？」の記事を参考いただければと思いますが、本記事では機械学習（つまり人工知能）で使われるプログラミング言語について詳しくみていきましょう！

機械学習はどの言語が使われるの？

非常に注目の高い「機械学習」ですが、どのようなプログラミング言語が使われているのかについてみていきましょう。

分かりやすい具体例に置き換えてみましょう。例えば、ログイン機能があるようなウェブ・アプリケーションを開発すると考えた時に、PHPを使うのか？Rubyを使うのか？フレームワークは？データベースは？と言った具合に、言語のメリット・デメリットを考えて選択をしますよね？

機械学習でも同様で、機械学習のモデルを構築する際に使う言語は特定の言語に定まっている訳ではありません。使う人のスキルや好みによっても異なりますし、会社や組織に属しているのであれば、その組織が使用している言語も様々です。

機械学習で一般的に使われる言語として、下記があります。

Python

R

Octave

C/C++

Java

etc…

機械学習のモデル構築を行う際でも、複数の言語から選択が可能なのはわかりましたが、その中でも特に人気の言語があります。それが「Python（パイソン）」です。

以前にアメリカの企業が約2000名の機械学習エンジニアに対して行なった、「機会学習で使う言語」に関するアンケートでは、一位が「Python」で二位が「R（アール）」という結果がありました。（ソース元のページが削除されてしまいました）

事実、日本で販売されている機械学習入門書や機械学習のオンラインコースでは、Pythonを使って説明されていることが非常に多いです。

では、そもそもなぜPythonが機械学習エンジニアに好んで使われているのでしょうか？Pythonが機械学習で使われる「4つの理由」をみていきましょう。

理由① 言語としての信頼性

まず理由の一つ目としてPythonへの信頼性があるかと思います。一概に「信頼性」と言われてもピンときませんが、多くのテック系大企業のサービスを支えているのがPythonだと考えれば、信頼性も理解しやすいですよね。

有名なテック系企業でPythonを使用しているところでいうと、YouTubeやInstagram、さらにはPintarestやDropboxなどがあります。これらのサービスの根幹にはpythonが使われていることで有名です。（注釈：Pythonのみではありませんが）

また、ここ数年で日本では人工知能の立役者として頑張っている「Pepper」君もpythonに対応している話として有名ですよね。

少し話がそれてしまいましたが、Pythonを根幹としてサービスを開発している企業は多数あることから、Pythonのプログラミング言語としての信頼度がわかるかと思います。

理由② シンプルなシンタックス

次に機械学習でPythonが使われる理由の一つとして、Pythonのシンタックス（文法）に理由があります。Pythonが他の言語との大きな違いでよく言われることの一つとして、Pythonのコードの読みやすさとシンプル性があります。

すでにPythonを触ったことがある方であれば、納得出来るかと思いますが、Pythonでは本当にシンプルかつ最低限のコード記述が可能で、特に他のエンジニアが書いたコードを読むのが他の言語と比べれば非常に容易です。

機械学習エンジニアやデータサイエンティストは、プログラミングだけが全てのタスクではありません。むしろ、データセットの前処理やアルゴリズムの構築/調整などの様々なタスクが絡んでくることから、コーディングに余計な手間や心配をかけたくないのです。

最小限かつ解りやすいシンタックスを有するPythonだからこそ、機械学習エンジニアやデータサイエンティストが好んで使っています。

理由③ プログラミング初心者向き

Pythonが機械学習で好んで使われる3つ目の理由として「Pythonは初心者に易しい言語」という理由があります。人工知能や機械学習と聞くと、一見、超凄腕の熟練プログラマーのようなイメージを思い浮かべる方も多いかと思いますが、実際のところ、多くの機械学習エンジニアやデータサイエンティストのバックグラウンドをたどると「数学」や「統計」などを専門的にやってきた方が多いです。

すでにエンジニアとして活躍されている方であれば、どの言語をとってみても、おおよその文法や使い方は理解しやすいかと思います。（少なくとも少し触って調べれば動かせるレベルですよね）

対して、数学や統計学などをメインに行なって来た方には、プログラミングの土台となる知識や経験はありません。そこで、彼らが好んで使ったのがシンプルかつ読みやすい、初心者でも比較的簡単に習得が可能なPythonなのです。

理由④ 成熟したエコシステム

さて、いよいよ最後の理由となりますが・・個人的にはこれがもっとも重要な理由だと考えます。なぜ機械学習にPythonが使われているのかと言うと、「非常に多くの機械学習向けのライブラリやフレームワークがPythonには存在」するからです。

機械学習でPythonを使うと言っても、Pythonのみで全てのプロセスを処理するのは滅多にありません。例えば500万件の膨大なデータを高速に処理するためのPandasや、データをアルゴリズムでより高度かつ高速に処理するためのNumpyなど、様々なライブラリやフレームワークを活用して機械学習のモデルを構築します。

他の例であげると、Googleが開発してオープンソースとして公開してる機械学習に用いるライブラリのTensorFlow（テンソル・フロー）や、非常に簡単にディープニューラルネットワークの構築が可能なKeras（ケラス）もPythonの上に成り立っています。

このように、Pythonをベースとして活用できる機械学習向けのライブラリやフレームワークは多数存在することから、Pythonが機械学習でもっとも人気の高い言語と言える訳です。

他の言語では機械学習はダメなの？

と、ここまでPythonのお話ばかりをしてしまうと、では他のプログラミング言語は信頼ができなくて、初心者に解りにくくて、使いづらくて、機械学習を行うためのライブラリが用意されていないのか！と言われてしまいそうですが・・・そんなことはありません。

あくまでも冒頭でお話した通りで、会社や組織によって機械学習のために使う言語は様々で、Pythonだけはありません。様々なレベルのエンジニアや会社がPythonをメインに使っていることから、人気が高いだけであり、状況に応じて他の言語を使うことも多々あります。

では、Python以外で機械学習で支持率の高い言語について簡単にみていきましょう。

R言語（アール）



ソフトウェアエンジニアの方には、あまり馴染みがないかも知れませんが、R言語（アールと読みます）も機械学習では頻繁に使われる言語の一つです。

R言語はPythonと同様にオープンソースのプログラミング言語で、特に統計や解析向けに利用されています。統計のバックグラウンドを持っている方は、PythonよりもR言語を使って機械学習のモデル構築をやる方が圧倒的に多いです。

R言語の主な特徴として、最小限のコードでデータを解析するための工夫が散りばめられています。また、大学や研究機関などで頻繁に使われる言語でもあります。（念のため注釈を入れますが、ここ近年ではR言語をアカデミックで使う流れも変わりつつあります）

また機械学習の本場アメリカでは、最近ではpythonで機械学習を学ぶよりもR言語の方が機械学習初心者には向いていると言われています。その主な理由として、基礎的な統計モデルを動かす場合はPythonよりもR言語の方が比較的、少ないコードで実行することが可能だからです。

また、機械学習の熟練者から初心者まで集まるコミュニティー「Kaggle」でも、Pythonと同じくらいの頻度でR言語が使われているのが解ります。（参考：Kaggleとは？）日本でもR言語により機械学習の入門書の出版も増えてきていますので、あえてPythonよりもR言語から機械学習の世界に入ってみるのもありかと思います。

Octave

R言語よりも、よりマイナー感がありますが、Octave（オクターブ）も機械学習エンジニアに愛される言語の一つです。

Octaveとは、主に数値解析を目的とした高レベルプログラミング言語で、線形/非線形問題を数値的に解くためのコマンド・インターフェースを提供しています。

Octaveの最大の特徴として「MATLAB」との互換性が非常に高いことです。MATLAB（マトラボ）とは、アメリカのMathWorks社が開発している数値解析ソフトウェアで、工学・理学・経済学を筆頭に様々な業界で100万人以上のユーザーをもつ数値計算のプロ言語です。

このMATLABですが、上記でも示した通り商業用として開発された有償ソフトウェアであり、使うのには初年度で29万円、翌年度から毎年11.6万円かかります。（参考：MathWorks料金ページ）

このMATLABと互換性が非常に高く、かつ無料で使えるのがOctaveです。まだまだ日本ではOctaveの知名度は非常に低く、AmazonなどでのOctaveでの機械学習入門書はごく僅かとなっています。

ただ、使い方自体は非常にシンプルです。また完全に個人的な意見ではありますが、ひとまず難しいことは置いといて、ガツガツ計算や処理をしていきたい時にはPythonよりもOctaveの方が効率よく出来るイメージです。

簡単にインストールも可能ですし、無料で使うことが可能ですので、興味がある方は是非Octaveも試してみはいかがでしょうか？

まとめ

いかがでしたでしょうか？ここ最近、日本ではPythonを使えるエンジニアの給料が高くなる傾向があると、よく人材系のサービスで特集などが組まれていますよね。

今回はpython自体にフォーカスを当てるというより、機械学習で使われちている言語のPythonの特徴と理由を紐解いてみました。これから、様々な業界で機械学習が活用されるのは必須だと思います。まだまだ日本で機械学習をやっているエンジニアは極少数ですので、是非この機会にPythonと機械学習を習得してみてはいかがでしょうか？

【機械学習 初心者向けチュートリアル】

以上、「なぜ機械学習にPythonが使われるのか？機械学習でPythonが使われる4つの理由」でした。