- 更新日: 2022年05月31日
- 公開日: 2020年11月03日
エンジニアになりたい方必見!?プログラミング言語の向き・不向き
今、プログラミングを始めたいという方で「Pythonをやりたい」とおっしゃる方がかなりいらっしゃいます。「Python = AI」というイメージから最先端の言語と考えられているのかもしれません。
もちろん、どのプログラミング言語であっても基本は同じなので、Pythonから入ってもいいのですが、どんな分野でもPythonが使える、Python最強というわけではありません。 開発対象の分野や業界によってどのような言語が使われているかは異なります。
たしかにPythonはAIの分野でよく使われています。 これは「PythonがAIに向いている言語だから」というよりもAIの分野で必要なライブラリ(特定の機能ので再利用可能なソフトウェア群)が揃っていることが大きな理由です。
また、AIの開発といってもAIそのものを作るのか、既存のAIのライブラリを使ったシステムを作るのかによっても意味が大きく変わります。必ずしもPythonでなければならないわけでもないのです。
もしあなたが将来どんな分野での開発をやりたいかが決まっているのであれば、その分野でよく使われている言語から始めると効率よく学べるでしょう。
主な分野で使われているプログラミング言語をまとめましたので、取り組むプログラミング言語を選ぶ際の参考にしてください。
web制作
web制作の場合、フロントエンド(ブラウザ側で表示を作る処理)で使われる言語と、サーバーサイド(ブラウザに送り出すデータを作る処理)で使われる言語の大きく2種類の言語が使われます。
フロントエンド側でよく利用されるのは、HTML/CSSやJavaScript、サーバー側ではPHP、Ruby、Python、Java、最近ではあまり見かけなくなりましたがPerlといった言語です。そのなかでも多くのCMS(WordPressやconcrete5などのwebサイトのコンテンツを管理するシステム)で使われているPHPがもっともポピュラーと言えます。
どの言語を使ってもゼロから開発することはほとんどありません。PHPならCakePHPやLaravel、RubyならRuby on Rails、PythonならDjango、JavaならTomcatといったweb用のフレームワーク(システムの構築に必要なルールを決めてシステムを構築しやすくするソフトウェア群)を利用して開発されるのが一般的です。
企業内システム
企業内システムとは、企業専用の業務システム(もしくはパッケージ製品を各企業向けにカスタマイズしたもの)を指します。 主には流通、営業、人事などの業務に用いられるシステムです。
この分野はシステムインテグレータ(別名SIer"エスアイアー")と呼ばれる会社によって開発されるケースが多く、Javaや古くはVB(VisualBasic)使って開発されたシステムが多くあります。
最近はwebベースのものや専用のシステムではなくクラウドサービスに置き換わっているところもあります。古いシステムをメンテナンスして使い続けている企業(特に規模の大きな企業)も多く、そういったところではJavaやVBが継続して利用されています。
VBについてはInternetExplorer(IE)独自の機能を開発できる唯一の言語で、この機能を利用するためブラウザにIEを使うことを前提に開発されたシステムが多数ありました。これが企業内ではIE必須になっている理由のひとつでもあります。
しかし、IEが現役を退いた今となっては過去の遺産でしかありません。このような理由から、VBを積極的に学ぶことはおすすめしませんが、古いシステムのメンテナンス開発を担当する場合はVBを習得する必要がでてくるかもしれません。
スマートフォンアプリ
iPhone用アプリ開発にはSwift、Android用アプリ開発にはKotlinという言語が使われています。どちらもかつては別の言語だったのですが、開発効率向上のための改善が進んでいて、毎年のように進化しています。Swiftの場合は進化することによって開発効率が向上する面がある一方、過去の言語との互換性を犠牲にしていることも多く、開発者の負担を増やすという負の一面もあるようです。
最近は、webのフロントエンド用言語(HTML/CSS、JavaScript)を使ってクロスプラットフォーム(ひとつのソースコードでiPhoneとAndroidの両方に対応すること)で開発するケースも多くなっています。3Dグラフィックを使ったスマートフォンゲームを開発する場合は、Unity(C#)やUnreal Engine(C++)といったプラットフォームが多く使われていて、こちらもクロスプラットフォーム開発となります。
クロスプラットフォームで開発した場合、ひとつのソースコードで両方のスマートフォンに対応できる(厳密には一部スマートフォンごとに書き換えなければならない部分もあります)メリットはありますが、OSのバージョンアップ直後にはOS独自の機能を利用できない場合もあります。
これは開発環境がそれぞれのOSの最新機能に対応しなければならず、リリース直後はそれらの機能に対応が追いついていないことがあるためです。
機器組み込み
機器組み込みとは炊飯器やエアコンのように比較的機能の少ない家電機器のような機器専用のソフトウェアのことをいい、主にC言語やアセンブラで開発されています。 これらの機器はメモリ容量が小さく、心臓部にあたるマイコンの性能が低いことから、PCやスマートフォンのようなOSが搭載されていません。すべての機能を自前で作らなければならないケースがほとんどです。
アセンブラはコンピュータの命令を直接記述するための言語ですが、マイコンやCPUの種類によって仕様が大きく異なるという少々やっかいな言語です。
その他
マイナーな言語になりますが、金融系システムでよく使われているCOBOLという言語があります。COBOLもかなり古い言語で現在は扱える人が少ない言語ですが、金融系システムは万が一止まると市場に対する影響が大きいため、置き換えが進めにくいというジレンマを抱えています。
システム統合に20年を要したみずほ銀行のシステムでも、COBOLのシステムとJavaのシステム間での連携がおこなわれました。 この事実からも言語の置き換えが容易ではないことがわかります。
これからCOBOLをマスターすればレア人材として重用されるかもしれませんね。
ライブラリとフレームワークがポイント
今回は分野別に使われているプログラミング言語についてまとめてみました。職業プログラマーを目指すのであれば、将来自分がどんな仕事につきたいかによってどの言語から始めるかを決めると良いでしょう。
もしまだどんな仕事につくかわからないという方は、とりあえず応用範囲の広いweb系言語(HTML/CSS, JavaScript)から始めることをおすすめします。
お気づきかもしれませんが、開発対象とプログラミング言語の関連性は言語の特徴だけでなく、ライブラリやフレームワークが充実しているかどうかというのも大きなファクターです。
次回は、プログラミングを学んでいく上でよく聞く言葉「ライブラリ」と「フレームワーク」についてお話したいと思います。
- この記事を書いた人
- 若林健一