人工知能の開発に興味を持ったものの、なにから手を付けたら良いか、わからない、という方も多いと思います。
そこで今回は、人工知能開発の準備の一つとして、どのようなプログラミング言語が人工知能開発に使われていて、どれぞれどのような、メリット・デメリットがあるのかを含めて、ご紹介したいと思います。
人工知能とは?
人工知能とは、「人間の代わりに知的な処理ができる計算機・システム」のことです。
知的な処理というと、どうしても日本人は、『ドラえもん』や『鉄腕アトム』のイメージで感情豊かなロボットをイメージしがちですが、まだまだ、そのようなレベルには達していません。
とはいえ、ここ10年ほどの進化と普及はすさまじく、人工知能はビジネスの世界で当たり前で使われるようになっています。その結果、人工知能を扱えることができるAIエンジニアやデータサイエンティストを巡って、世界的な人材の争奪戦が行われています。
また、みなさんはあまり意識していないと思いますが、ユーザーの癖やインターネット上の流行に合わせて進化するスマホの入力予測や、より最適な回答ができるチャットボット、それからアンチウィルスソフトなどで、みなさんも普通に人工知能にお世話になっているはずです。
さらに、人工知能に服をデザインさせる企業も登場しています。クリエイティブ活動にも活用できるあたり、最近の人工知能は本当に“知的な存在”になりつつあると言えます。
人工知能開発(AI開発)で使われるプログラム言語
さて、様々な環境で使われていて、注目を集めている人工知能ですが、ここ5年くらいで、いくつか人工知能用のライブラリーやAPIが公開されるようになっています。そうした便利ツールを使えば、ある程度の知識とプログラミングスキルさえ身に着ければ、誰でも人工知能を組み込んだシステムの開発ができるようになっています。
ただ、ライブラリーやAPIを活用してAIを利用する場合、それらに対応するプログラミング言語でソースコードを書いておく必要があります。そうした問題から、ある程度、人工知能開発に利用されるプログラミング言語は絞られるようになってきました。
ここでは、人工知能開発に使われることの多いプログラミング言語を5種類ご紹介します。
①Python
人工知能開発で使われるプログラミング言語として、筆頭といえる存在なのがPythonです。
もともと、シンプルで可用性の高いコードがかけることから、欧米のWeb系企業などで利用率が高いプログラミング言語でした。そのこともあり、2015年にGoogleが公開したTensorFlowや、2016年にFacebookから公開されたPyTorchなど、有力な人工知能ライブラリーのほとんどがPython対応です。
そのため「AI開発といえば、Python」という状況になりました。
業界・業種を問わず、広くPythonでの人工知能開発が行われているため、迷ったのならば、とりあえずPythonを選ぶと間違いはありません。Python自体、人工知能以外でも使われているプログラミング言語ですので、勉強する価値のあるプログラミング言語です。
デメリットは、次に紹介するC言語に比べて、処理が遅いという点です。ビックデータを処理するディープラーニング型AIにとっては、無視できない問題です。
ちなみに、これは余談ですが、「日本でもAI人材を増やすために、Pythonが分かるエンジンを増やしたい」という意図から、2020年春の基本情報処理試験からプログラミング問題にPythonが追加されることになりました。が、その春試験が新型コロナウイルスの影響で中止になる、という、幸先の悪い滑り出しとなってしまいました。
②C/C++
C言語やその派生形であるC++も人工知能開発でよく使われるプログラミング言語です。
C言語には他のプログラミング言語より、処理が速いというメリットがあり、大量のデータを扱い処理が重くなりがちな人工知能開発では、「最適解」とされています。ただ、Pythonよりも扱いにくく、もっというと、PythonよりもC言語の方が高いプログラミングスキルを要求される、というデメリットもあります。
ちなみに、先述のGoogleのTensorFlowも、FacebookのPyTorchもC/C++に対応しています。もちろん、Pythonしか対応していない人工知能開発用ライブラリーもありますが、C言語やC++にしか対応していないライブラリーもあります。
Pythonを使うか、C/C++を使うかは、開発したいものの特性と作成者のスキル次第ではないかと思います。
③JavaScript
Tensorflow自体はJavaScriptに非対応なのですが、実はWebアプリ開発などでTensorflowの技術を扱えるように、Googleから「Tensorflow.js」というライブラリーが用意されています。
すでにTensorflow.jsで開発されたWebサービスも登場しており、例えば『pix2pix』は手書きの線画から写真を生成することが可能です。
JavaScriptは扱えるエンジニアが多く、また、JavaScriptはWebアプリ以外にもスマホアプリの開発にも使われるなど、利用シーンの多いプログラミング言語です。今後、Python、C/C++に続く人工知能開発の主要プログラミング言語となるポテンシャルを秘めていると言えます。
④Java
汎用プログラミング言語として長らく主要な位置を占めてきたJavaですが、人工知能開発の世界では、上の三つのプログラミング言語よりやや存在感が薄いです。
これは、Pythonよりもコーディングが複雑で、JVM(Java仮想マシン)のせいでC言語よりも処理が遅いという、PythonとC言語の間でJavaの立ち位置が中途半端になってしまったことが原因です。
とはいえ、汎用プログラミング言語として一大勢力を築いているプログラミング言語ということで一定の影響力はあり、Tensorflowなど、Java対応のライブラリーも存在します。ただ、やはりライブラリー数で、PythonとC/C++に劣っており、それらが扱えるエンジニアは、特別な要件がない限り、Javaで人工知能開発することは、基本的にはないです。
⑤Julia
C言語よりは遅いですが、Pythonよりも格段に処理速度が速いプログラミング言語として、開発されたのがJuliaです。後発言語ということで、コーディング面でもPythonより改善されていて、非常に美しく書くことができます。
このJuliaの凄いところは、Pythonのライブラリーを呼び出すことができる、という点です。TensorFlowやPyTorchをはじめ、PythonのライブラリーがPython以上の実効速度で使えてしまうのです。もはや、「Python要らない子なんじゃない?」くらいのインパクトがあります。
ただ、歴史が浅く、どうしても、これまで紹介したプログラミング言語よりも「コミュニティーが小さく情報収集が難しい。日本語資料なんて、まず見当たらない」という大きなハンディキャップを抱えています。
非常に画期的で注目したいプログラミング言語なのですが、プログラミングスキルに自信があり、英語が読める、という方以外には、現状、おすすめしにくいプログラミング言語です。
人工知能の将来性
冒頭でも書きましたが、みなさんの身近なところで、あるいは普段の業務の中で人工知能の利用が始まっています。今後も、様々な形で人工知能のニーズが高まると推測されます。
特に、筆者が注目しているのは、JavaScriptでの人工知能開発です。Webアプリと連携することで、様々なハードウェア上で動作可能な人工知能を開発することができます。また、既存のWebサイトに、人工知能を用いた顧客の満足度を高める仕掛けを用意したいと考える企業も出てくるでしょう。
まとめ:ライブラリーありきでプログラミング言語を選ぼう
今回は人工知能開発に使われるプログラミング言語をご紹介しましたが、真に重要なのはプログラミング言語ではなく、人工知能を人工知能として機能させるライブラリーです。
ですので、「なにをする人工知能を開発したいのか」を決めてから「その人工知能のために必要なライブラリー」を探して、最後に「そのライブラリーが対応するプログラミング言語」という順番で選ぶのが王道です。
その観点に立った時、現状では、もっともライブラリーが拡充しているPythonが、やはり一強と言えます。