人工知能を開発するならRubyとPythonのどちらが良い?

Junk mail procection concept with vintage businessman and laptop at office

こんにちは。

ITエンジニア・webディレクター・webデザイナーなどのIT人材の自立・キャリアを支援するITプロパートナーズの木村です。

弊社では、独立精神旺盛な優秀なエンジニアの方々の独立・起業サポートや、フリーランス支援を行っています。

こちらでは、日々の現場でサポートさせていただいている中での、プロの目線で、エンジニアに役立つお話をしてまいります。

ご存知の通り、ここ数年、人工知能を利用したサービスが相次いで登場しています。

大企業を中心に人工知能開発競争に遅れまいと、人工知能開発エンジニアの採用に力を入れている企業が多く、IT人材市場においても人工知能開発ができる、というのは非常に評価が高くなるステータスの一つです。

このように注目されがちの人工知能ですが、身も蓋もない言い方をすれば、所詮はロジックの集合体でしかありません。

そして、そのロジックをどのように活用することで、新たな価値を持ったサービスとするかが人工知能開発エンジニアの腕の見せ処となっています。

この人工知能を使った新サービス作りについて、様々な視点からいろいろな意見があるかと思いますが、ITエンジニアの視点に立ったとき、大きなインパクトを与えるのは、システムをどのプログラミング言語で作るかです。

ITシステムにおけるプログラミング言語とは、建築における建材です。

どの言語を選択するかによって、システムの特徴・癖は変わってしまいます。

そこで今回は、現在、広い分野でよく使われているRubyと人工知能開発と親和性が高いとされるPythonという2つの言語を人工知能システムの開発という観点で見ていきたいと思います。

フリーランスの単価の伸ばし方

「必要以上に安売りをしてしまう」「市場感より高い単価で参画してしまいトラブルになる..」

フリーランス市場は売り手市場であるものの、いまだに正しいノウハウが確立されておらず、多くの方が案件探しに苦労されています。

ですが、現在の市場感や企業側に刺さる経験・スキルを理解し正しく案件探しをすれば、誰でも自身のバリューを活かし単価を伸ばすことができる、というのも事実です。

ITプロパートナーズでは、

・9割がエンド直案件のため、高単価
・約6割が週3-4案件のため、柔軟に働ける
・約7割がリモートのため、働く場所を選べる

などの魅力的な案件を数多く保有し、マッチング能力の高い即戦力エージェントが完全サポートします。

初めてのフリーランス、情報収集段階でも大丈夫です。あなたの働き方にマッチし、単価も高く、最もバリューを発揮できる案件を探しませんか?

⇨ ITプロパートナーズの詳細を見る

Rubyの得意分野と将来性は?

shutterstock_475068907

まずは、Rubyから見ていきたいと思います。

Rubyの最大の特徴はなんといっても、「日本発で世界標準になった唯一の言語」です。

日本国内での利用度は非常に高く、一部の求人会社によってはもっとも求人広告の多い言語となっていることから、今回の比較対象に選んでみました。

さて、プログラミング言語Rubyの特徴を整理しておきましょう。

そもそもとして、RubyPerlの複雑さに嫌気を指したメンバーによって作られた言語です。

とはいえ、Perlを全否定することはなく、Perlのモットーである「やり方はいろいろある (There’s More Than One Way To Do It; TMTOWTDI)は「多様性は善 (Diversity is Good)」というスローガンに変わって Rubyへと引き継がれています。

そのため構文についてはPerlとの代替性を持ち、一つの結果を得るために様々な書き方が可能で表現力が豊かという特徴を持ちエンジニアが書いていて楽しい言語と良く言われています。

ただし、表現力が豊かだからと言って、冗長化された読みにくい構文が推奨されているわけではありません。

あくまで非公式なやり方もできる、というだけであって、非公式な方法を採用することは原則として自粛するように求めています。

その逆にPythonは「ある動作をさせる方法は、基本的に1通りしかない」という原則を掲げています。

(これは今回の比較を考えるうえで重要なポイントで、実はRuby Perlに嫌気を感じたが、Pythonには乗り換えたくなかった方たちによって開発された言語です。)

その他のRubyPythonを比較して、Ruby独自の特徴を指摘するのは結構、難しいのですが(どちらもPerlの影響を受けており、オブジェクト指向言語でインタプリンタ式)Mixinについては要注意です。

どちらにもMixin(機能)と呼ばれるもの自体はありますが、大きな差(そもそも発想が違う)があります。

まずはPythonMixinから見てみましょう。

こちらのMixinは簡単に言ってしまうと、サブクラスによって継承されることにより機能を提供し、単体で動作することを意図しないクラスのことです。

もっと端的に言えば、中身は他から借りてくる(継承する)、殻だけのクラスのことをMixinと言います。

JavaなどのMixinPythonと同じものです。

対してRubyMixin機能はRuby独自のもので、モジュールの中に「継承関係の無いクラスのようなもの」と呼ばれるものがあり、これらのモジュールをクラスに関連付けること(ある種の継承)を「Mixinする」と言います。

そして「Mixinすることができる機能」をMixin機能と呼びます。

で、みなさんの一番の関心はRubyの将来性ですが、日本生まれの言語のため日本語資料も多く、案件も多いです。

特にIoT分野やビックデータ関連など2000年代以降に国内で整備されたシステムについては圧倒的なシェアがあり、これらのシステムの更改や修正案件を中心に高単価求人も多いです。

これらのシステムは消滅すると思えない上に、簡単にリプレースできるものでもないので、Rubyの未来も安寧なのかな、と私は考えています。

ただ、人工知能の開発という意味ではハンディキャップがあります。

国内でこそPythonを凌駕するシェアを持つRubyですが、海外に目を向けるとPythonの後塵を拝しており、それがサードパーティー製ライブラリの差という形で表れています。

例えば、IT業界の巨人Googleが公開している人工知能開発用ライブラリの「TensorFlow」はPythonには対応していますが、Rubyには対応していません。

pythonの得意分野と将来性は?

shutterstock_339989237

次は世界で最も伸びているといわれる、Pythonです。

PythonRubyとの比較で最大の特徴といえるのは、Rubyのところでも触れた通り、ある動作をさせる方法は、基本的に1通りしかない」という原則があるため、だれが書いても基本的には同じものしかできないとい安心感とつまらなさです。

そして、これもRubyのところで触れましたが、世界に目を向けると、圧倒的にPythonの方が人気で利用者の多い言語です。

結果、サードパーティー製ライブラリの量はPythonの方が多く、特に人工知能分野においては、PythonRubyを大きく突き放しています。

将来性という意味では、人工知能時代への対応力はもちろんのことながら、世界的にPythonの利用が増えており、その潮流に合わせる意味で国内でも今後はPythonで実装したい、乗り換えたいというニーズが高まっており、Rubyより優勢だと思います。

ちなみにですが、言語ごとの年収ラインキングを公表している、海外の求人サイトでは、Pythonが1位となっています。

高単価な人工知能開発案件が平均を押し上げたために、この結果となったようですが、今後、日本でも同様の現象が起きるかもしれません。

ただ、日本ではこれまでRubyが強力だったため、Pythonに関する日本語情報がRubyより少ない、もっというと物足りない、という点はウィークポイントとして指摘する必要があるでしょう。

人工知能を開発するならどちらが良いか

shutterstock_503549980

すでに触れている通り、「RubyPythonどちらの方が人工知能開発に向いているか?」と聞かれたなら、迷わずPythonと答えます。

人工知能開発に使うべき推奨言語としてはライブラリの充実しているPythonとハードウェア制御に優れたC言語(CC++)という考え方が、一般的となっています。

とはいえ、日本国内においてRubyは多くの実績があり、今後の展開次第、もっといえば、Ruby向けに強力な人工知能開発ライブラリが登場すれば、状況に変化が起きる可能性はないとは言えません。

まとめ

お金系

今回は、RubyPythonを比較して、どちらの方が人工知能開発向きかというお話をさせていただきました。

その結果は、何度も触れている通りRubyよりもPythonの方が有利です、

しかし、人工知能開発以外の分野にも目を広げて国内でのニーズを考えると、PythonRubyを圧倒しているとは言えません。

むしろ、Webシステムなど一部の分野ではRubyの方がニーズがあると感じます。

PythonRubyはどちらもPerlを先祖にもつ兄弟言語のような存在です。

構文についてRubyは「多様性は善」、Pythonは「ある動作をさせる方法は、基本的に1通りしかない」と180°違なる理念を掲げていますが、他の多くの面で共通性があります。

そのため、PythonRubyの両方ともを習得してしまうのも不可能ではありませんし、どちらも習得できれば、その分、ご自身の可能性もぐぐっと広がること、間違いなしです。

ぜひぜひ、余裕のある方はバイリンガル・エンジニアになっていだければと思います。

フリーランスの方でこのようなお悩みありませんか?
  • 高額案件を定期的に紹介してもらいたい
  • 週2日、リモートワークなど自由な働き方をしてみたい
  • 面倒な契約周りはまかせて仕事に集中したい

そのような方はぜひ、ITプロパートナーズをご利用ください!

フリーランスの方に代わって高額案件を獲得
週2日、リモートなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート

まずは会員登録をして案件をチェック!

この記事を書いた人
アバター画像
ITプロマガジン
ITプロパートナーズはITフリーランスの方に案件紹介をしているエージェントです。当メディア「ITプロマガジン」では、フリーランスの働き方から仕事探しまで幅広い情報を日々発信しています。