エンジニアに人気のプログラミング言語を特徴とあわせて一挙紹介!
市場での需要が高く、最先端の技術や開発などに用いられることから、エンジニアに人気がある言語「Python」「JavaScript」「C/C++」「Java」「C#」の5つピックアップし、言語にまつわるエピソードや特徴、主に使用されている分野、Hello Worldのコードなどを解説・紹介していきます。
市場での需要が高く、最先端の技術や開発などに用いられることから、エンジニアに人気がある言語「Python」「JavaScript」「C/C++」「Java」「C#」の5つピックアップし、言語にまつわるエピソードや特徴、主に使用されている分野、Hello Worldのコードなどを解説・紹介していきます。
知識・情報
2020/09/08 UP
- プログラミング
- SE資格・スキル
世界にいくつのプログラミング言語が存在しているかご存知でしょうか。1940年頃にアセンブリ言語が登場して以来、約80年の間に誕生したプログラミング言語は1000言語以上存在すると言われています。
1954年に世界初の高水準言語FORTRANが登場し、その4年後の1960年には50年後の現在もさまざまな基幹システムや金融システムにおいて使用されているCOBOLが誕生しました。
2020年現在、実務に使用されている言語はそのうち30〜40言語程度と言われていますが、それでも膨大な数のプログラミング言語が用いられ、さまざまな場面で活用されています。
今回はその中でも市場での需要が高く、最先端の技術や開発などに用いられることから、エンジニアに人気がある言語「Python」「JavaScript」「C/C++」「Java」「C#」の5つピックアップし、言語にまつわるエピソードや特徴、主に使用されている分野、Hello Worldのコードなどを解説・紹介していきます。
Python
Pythonは1991年にグイド・ヴァンロッサムによって開発されました。オープンソースで運営されている汎用プログラミング言語で、Webアプリケーションフレームワークを持ち、特に数式処理やデータの統計・解析に強い言語として知られています。
多くのライブラリが公開され、データ解析に限らず組み込みソフトウェアの開発やWeb開発、人工知能、機械学習、統計学を含む数学的な教育分野などの幅広いシーンで用いられています。
具体的に特徴を見ていきましょう。
Pythonの主な特徴
・文法がシンプルでわかりやすい
・少ないコードで簡潔にプログラムを書ける
・専門的なライブラリが豊富にある
・Webフレームワークが開発されている
Pythonは文法を単純化することによって可読性を高め、書きやすく作業性と信頼性が高いデザインになっています。
特にコードは熟練者と言語に触れたばかりの学習者でも同じコードを記述するように、シンプルで簡潔な文法が採用されています。
また、シンプルで必要最低限の基本部分に、必要なライブラリを選択して導入していく設計になっており、データサイエンスや数値計算の用途で作成されたライブラリを中心に、非常に豊富なライブラリが無料で使用できます。
Webアプリケーションフレームワークも充実しており、Webアプリの開発用途にも広く使用されています。Pythonソフトウェア財団とJetBrainsによる共同調査では、2017年10月現在、Pythonを使用している26%の人がWebアプリ開発を主な用途としています。
なお、Pythonの特徴については、こちらの記事も合わせてご確認ください。
Pythonが人気の理由
データ解析や数式処理に強いため、近年人気が高まっているAI/機械学習の分野において他の言語に対して強いアドバンテージを持ちます。
主要なフレームワークはもちろん、ディープラーニングやAI/機械学習に必要となる統計系のライブラリが充実している点で人工知能に関係する開発現場ではPythonまたはR言語が選択されています。
また、元来Pythonはコードの記述のしやすさや、OSをまたいで同一のコードを実行できるクロスプラットフォームであること、安全性が高く堅牢な言語であることから、Webアプリの開発にも活発に使用されています。
Pythonができること
・Webアプリの開発
Django や FlaskのようなWebアプリケーションフレームワークが充実しており、それを用いたWebアプリ開発が活発です。
Pythonが用いられた有名なWebアプリには、大手のSNSサービスや動画サービスなど、大量のファイルを管理する有名なWebサービスがあります。
・機械学習の開発
Pythonは汎用言語ですが数学的な処理に強く設計されています。統計処理や数値計算を得意とし、統計学・数学方面のライブラリが充実していることから、人工知能などの機械学習や深層学習を用いたソフトウェア開発の分野で、人工知能が学習し、蓄積したデータの解析に活発に採用されています。
・組み込みアプリの開発
ソフトウェアとハードウェアの組み込みシステムで使用されるアプリで、近年ではIoT機器の組み込みソフトウェア開発の現場で広く採用されています。
PythonでHello World
PythonをインストールしたPC上に、「helloworld.py」と名前を付けたファイルを作成してください。
ファイル内には下記のコードを記入し、保存します。
print("Hello World")
JavaScript
JavaScriptは多くのWebページで使用されているスクリプト言語です。1995年にリリースされ、NetscapeNavigator2.0に実装されました。
多くのWebページの動的なUIを支えており、日常的に利用するWebサービスはもちろん、閲覧しているWebサイトの多くでスムーズな動的UI表現に用いられています。
多くの場合Webブラウザ上で実行されますが、近年ではNode.jsの登場によって、サーバサイド開発でも使用されるようになりました。
また、HTML5と組み合わせることによってマルチプラットフォームのスマートフォンアプリの開発にも用いられています。
なお、「JavaScript」と「Java」は、名前は似ていますがJavaの派生言語ではなく、開発の経緯も異なり、中身は全く別のものです。
JavaScriptが開発された当初、ネットスケープ社とサン・マイクロシステムズ社が業務提携をしていましたが、そのサン・マイクロシステムズ社が開発したJavaが大きく注目されていたため、元々の名前であるLiveScriptからJavaScriptへ名称が変更されたという経緯があります。
JavaScriptの主な特徴
・動きのあるWebページを作成するには欠かせない
・Webブラウザ上で動くプログラミング言語である
・ブラウザとテキストエディタで書ける
大きなアニメーションや動的表現に限らず、スムーズなUIの実現には欠かせない言語です。
たとえばSNSの画面で、ブラウザをリロードしなくても新しい投稿を表示したり、メッセージを確認している最中に新着情報が更新される仕組みも、JavaScriptによって実現されています。
これらの技術はAjax(Asynchronous JavaScript + XML)と呼ばれ、ウェブブラウザ内で非同期通信を行いながらインターフェイスの構築を行うプログラミング手法です。
Ajaxによって、ユーザーが見ている画面のバックグラウンドでサーバと通信を行い、結果に応じてHTMLを動的に書き換えています。
また、JavaScriptの実行エンジンはWebブラウザに組み込まれているため、ブラウザがあれば実行するOSのプラットフォームに依存せず実行できる、マルチプラットフォーム対応言語でもあります。
開発環境の構築も非常にシンプルで、ブラウザとテキストエディタがあれば誰でもすぐに開発を始められるのも、最も大きな特徴と言えるでしょう。
なお、JavaScriptの特徴については、こちらの記事も合わせてご確認ください。
JavaScriptが人気の理由
なんと言っても非常に扱いやすく、習得しやすい言語である点があげられます。フロントエンド開発では必須とも言え、多くのフロントエンドエンジニアはHTMLやCSSと同時にJavaScriptも習得しています。
JavaScriptは、Node.jsの登場でサーバサイドでの実行と開発も可能になり、より表現の柔軟性が高まりました。
フロントエンドとサーバサイド両方でJavaScriptを用いて開発が進められるため、本来であればサーバサイドエンジニアとフロントエンドエンジニアの間で必要となる仕様のすり合わせなどが少なくなり、開発にかかる人的リソースの消耗が押さえられ、結果として開発コストが軽減されます。
このような理由から、現在では、Webアプリ開発において積極的にJavaScriptが活用され、サーバサイドとフロントエンドがJavaScriptで記述されることを前提に開発されたフレームワークが複数存在しています。
これ以外に、Webサイトやアプリだけでなく、HTMLとJavaScriptを組み合わせて、マルチプラットフォームに対応したスマートフォンアプリも作成が可能です。
細かなリアルタイムのレスポンスが必要なゲーム系アプリには向きませんが、ビジネスなどのツール系開発にはすでに多くのアプリで採用されています。
JavaScriptができること
・HTMLコンテンツの変更
・CSSスタイルの変更
・サーバサイド
・アプリの作成
Ajaxによる動的なHTMLの書き換えによってスムーズなWebサイトの表現が可能です。また、CSSスタイルを変更することによってUIを変更し、ユーザーの環境に合わせた表示の書き換えを行います。
これにより、Webサイトをスムーズにレスポンシブデザインに対応させ、PC向けブラウザからタブレット、スマートフォンまで閲覧環境によって最適な表現に対応させています。
サーバサイドに実行環境を組み込むことで、ノンブロッキングI/Oに対応しているため高速でアクセスに対する処理が行えます。
ノンブロッキングI/Oとは一つの処理が完了する前に同時並行で他の処理を行う手法で、細かな通信が多数発生するSNSのようなWebアプリの処理に適しています。
JavaScriptでHello World
以下の内容をテキストエディタにコピーアンドペーストし、Helloworld.htmlと名前を付けて保存します。
ブラウザでファイルを開くと、アラート画面に「Hello World」と表示されます。
<!DOCTYPE HTML> <html> <body> <script> alert('Hello World'); </script> </body> </html>
C/C++
C言語とC++は親子関係にあるプログラミング言語です。そのため、まとめてC/C++と表記されることもあり、プログラミング言語としてもC言語の機能を拡張させたものがC/C++である関係にあり、どちらも引き続き人気の高い言語です。ここでは二つ合わせて紹介します。
C言語は1972年にAT&Tベル研究所が主体となって開発した汎用プログラミング言語で、高水準言語の特徴を持ちながらハードウェアの制御も可能な低水準言語の特徴を併せ持ちます。
その後の1983年に、同じくCT&Tベル研究所によってC++が公開され、C言語とともに人気を博す様になりました。
どちらも登場から50年近く経った古い言語でありながら、基幹系システムや動作環境の資源制約が厳しいシステム、実行速度性能に高い要求のあるソフトウェアの開発に使用され、現在も最新版のリリースが続けられています。
C/C++は、近年ではロボット開発やIoT機器の組み込みソフトウェアの開発にも使用されています。
また、計算リソースが非常に限られており、遠隔でのバグフィックスが難しいため極力バグやトラブルを避けなければいけない宇宙探査機などの宇宙開発では、機能拡張されたC++よりもさらに単純かつ技術の蓄積があるC言語が採用されています。
C/C++の主な特徴
・実行速度がとても速い
・メモリ管理ができる
・OS開発もできる
C/C++が他の高水準言語と比較して最も特徴的と言えるのは、その実行処理速度が非常に高速である点です。そのため、高速なデータ処理を求められる環境では他の言語よりもC/C++が選択されることも少なくありません。
また、低水準言語としての特徴を持ち、ハードウェアの制御やメモリ管理が可能なため、リソースが限られている環境では細かなメモリの動的確保によるリソースの最大限の活用ができます。
ハードウェアからアプリの管理まで幅広く対応できる言語で、Red Hat Linuxの約71%、Windows10のカーネルの多くもC言語で記述されていると言われています。
C/C++が人気の理由
C/C++はその汎用性の高さと処理速度から、組み込み系やOSなどの基盤部分を開発する場面で強みを発揮します。特にC言語はアセンブラと同等レベルの処理を簡潔に記述でき、他の高水準言語のようなバックグラウンド処理やブラックボックス的なライブラリもありません。
そのため、実行ファイルの肥大化がなく、生成コードにも無駄がなくコンパクトであることから、ハードウェア制御を行うファームウェアに適しているので、組み込みやロボット開発を中心とした工業開発でも採用されています。
メモリの利用効率が非常によく、限られたメモリを最大限に使用することができます。そのためハードウェア的に制限がある場面での開発には他の言語よりも強みを発揮します。また、非常に言語の処理速度が早いため、処理に厳しい速度が求められる場面で強く、大規模基幹システムやビル管理システム、流通システムの開発で用いられています。
これらの特徴は、ハードウェア的に制限が厳しく限られたリソースと電源の中で最大限の機能を求められるIoT機器の組み込み開発やエッジAIの開発に最適であるため、C/C++が使用される場面が多くあります。
C/C++ができること
・スマホアプリやゲームの開発
・ロボット技術の開発
・IoT技術の開発
C/C++は「大体のことがなんでもできる」という意味で汎用言語と言えます。スマートフォンアプリやゲームの開発は近年UnityやSwiftなどのアプリ開発に最適化された言語が登場しましたが、以前はC/C++を始めとしたC系言語が開発言語の主流として用いられていました。
また、ロボット技術の開発にもC/C++はファームウェアとして広く活用されています。ハードウェア制御を行いながら柔軟なプログラミングが可能なC/C++は、産業用ロボットの開発には欠かせない言語であると同時に、工場の制御システムや基幹システムにも組み込まれています。
そのほか、モノのインターネット、IoT(Internet of Things)機器にもC/C++は多く利用されています。IoT機器は電源の供給が限られていることが多く、またサイズや使用条件によってハードウェアにも制限が厳しいため、それらのハード的な条件に適合しながらエッジAIなどを開発するには他の言語では機能的に難しいのです。
なお、パソナテックでは、エッジAIのフレームワーク「Qumico(クミコ)」を開発しています。Qumicoは、Pythonで作成した、学習済みニューラルネットワークをC言語の変換することが可能です。ソースコードも公開されていますので、興味がある方はぜひご確認ください。
GitHub:PasonaTech-Inc/Qumico
C/C++でHello World
C/C++によるHello Worldは、以下のコードで表示します。
C言語
#include <stdio.h> int main() { puts("Hello, World"); }
C++
#include <iostream> int main() { std::cout << "Hello, World" << std::endl; }
Java
高い汎用性を持つコンパイル型のプログラミング言語で、基本的にどのような環境でも使用できるように作られており、応用力が高いのが特徴です。
一度開発者がコードを書いたら、それがどこでも実行できるべきであるとするWORA(write once, run anywhere)の理念に基づき、コンパイルされたJavaのコードは、Javaをサポートするすべてのプラットフォーム上で実行できます。
Javaで作成したアプリは、通常は開発・実行するコンピュータのアーキテクチャには依存せず、あらゆるJava仮想マシン上で実行可能なバイトコードにコンパイルされます。
これによって、同一のコードによるクロスプラットフォームなアプリの実行が可能となります。Java仮想マシンはパソコンに限らず各種家電製品や車両、スマートフォンなどさまざまな場所に実装され、Javaのアプリを実行します。
プラットフォームに縛られない言語であることを目指したJavaは、構文はC/C++に似ていますが、C/C++と比較して低水準の機能が少なくなっており、ハードウェア寄りの制御は制限されています。
GitHubの調査によると2019年の時点でJavaはWebアプリで使用されている最も人気のあるプログラミング言語の一つであり、約900万人の開発者がいるという調査結果も出ています。アプリ開発から基幹システム開発まで幅広く利用されていることから非常に需要が高いため、エンジニアの求人数も多い言語の一つです。
Javaの主な特徴
・OSに依存しない
・オブジェクト指向
・大規模開発に向いている
前述のとおり、Javaは開発環境や実行環境に極力依存しない設計がされた言語です。そのため、Java仮想マシンが実装されているプラットフォームであれば、どのOSでも同じように開発や実行ができます。
また言語の特性上、オブジェクト指向で開発でき、大規模開発に向いているため、基幹システムの開発などでも使用されており、近年では大手銀行や大手保険会社の基幹システムが、COBOLからJavaに移行する大改修を行ったことが知られています。
Javaが人気の理由
Javaは、大規模開発に向いていることから、エンタープライズ領域で多く採用されたため、新規開発に限らず改修・保守業務も多数発生しています。
また、Javaは基幹システム以外の用途でも利用されています。たとえば、組み込みやIoT機器開発にも使用され、幅広い分野でJavaによるアプリが使用されています。
これ以外に、JavaはAndroidアプリの開発も可能です。最近ではUnityやKotlinが登場し、Androidアプリの開発がJava一択ではなくなりましたが、依然としてJavaは多くのアプリに採用されています。
基幹システムや勘定システムをCOBOLで開発していた企業が、COBOLエンジニアの減少と確保の困難さや保守業務のコストの高さから、Javaへと移行する傾向があります。さらに、今人気があるスマホアプリ開発の現場でも、Javaエンジニアが必要とされていることから、Javaエンジニアの需要は高く推移しており、人気も高くなっています。
Javaができること
・業務システムの開発
・Androidアプリの開発
・Webアプリやゲームの開発
Javaは汎用言語であるため、基本的にどのようなことにも対応できます。そのため、Webアプリやゲーム、デスクトップアプリの開発から、家電製品、車載機器などのファームウェアまでさまざまな分野で使用されています。
まずJavaは、業務システムの開発に積極的に採用されており、金融機関の勘定システムやカードや保険などの開発に活用されています。また、大規模な物流管理システムなどにも使用され、国内外の物流を支えています。
また、AndroidOS向けのアプリ開発でも未だに需要は高く、Kotlinなど、後発の言語が増えてきている中でも、依然として高いシェアを維持しています。
このほか、IoTの現場でもJavaは活躍しています。モノのインターネットであるIoTにはさまざまな言語が使用されていますが、その中でもJavaは、デバイスからデータセンターまでを、同じ言語でシームレスに繋いで動作可能であるという点で注目を集めています。
JavaでHello World
JavaでHello Worldを表示するには、下記のコードを使用します。
テキストファイルにコピーアンドペーストしてHello.javaと名前を付けて保存してください。
public class Hello{ public static void main(String[] args){ System.out.println("Hello World"); } }
C#
2000年にMicrosoft社が開発したオブジェクト指向の汎用言語で、C++とJavaを元にしているため、文法はJavaに似ていますが、構文以外の機能では開発者が以前の所属で開発したDelphiの影響を色濃く持っています。そのため、若干Pascalに似た感覚があると評されることもあり、同じC系言語のC/C++やObjective-Cとは大分扱いが異なります。
元々C#は、Windows用のアプリを開発するために設計されているため、Windows環境でのアプリ作成に最適化されています。マルチパラダイムプログラミング言語であり、オブジェクト指向や型付けのほか、命令形、宣言型、手続き型、関数型、ジェネリックプログラミング、リフレクション、イベント駆動型などさまざまな要素を持っています。
共通言語基盤(CLI)の機能を強く反映しており、C#が持つ組み込み型の大半はCLIフレームワークに実装されている値型と対応しているほか、Microsoft社が提供する.NetFrameworkの一部として機能します。
C#の主な特徴
・Windowsアプリを簡単に作成できる
・Windows環境以外でも使える
・汎用性が高い
当初の開発目的がWindows向けのアプリの開発であったため、.NetFrameworkによってWindowsアプリを比較的簡単に作成できるという特徴があります。
また、仕様公開化と標準化によって、クロスプラットフォーム化が進み、Windows環境に限らず柔軟に幅広いプラットフォームで実行できます。
そのほか、C系の汎用言語であり、マルチパラダイムプログラミング言語であるため汎用性が非常に高く、さまざまな分野で利用が広がっているという特徴もあります。
C#が人気の理由
前述のとおり、Windows系の業務用アプリ開発に強いため、既存の業務システムの開発はもちろん、昨今では在宅向けの業務システムの開発などでさらに需要が伸びています。
また、C#をベースとしたゲームエンジンUnityの登場によって、C#はVR/AR、ゲームアプリの開発でも非常に人気が高まっています。
このほか、C#には、Unity以外にも、クロスプラットフォームに対応したアプリ開発フレームワークのXamarinがあり、アプリ開発の場面では、複数の選択肢を持つことができます。なお、Xamarinは、Unityと比較するとツール系のアプリに強いと言われています。
C#ができること
・デスクトップアプリの開発
・Webアプリの開発
・VR・ARの開発
・ゲームの開発
C#は、他のC系言語同様に非常に高い柔軟性と汎用性を持ち、基本的にはなんでもできる言語です。その中でもWindowsデスクトップアプリの開発は他の言語に対して群を抜いて得意な分野と言えるでしょう。
また、Webアプリの開発でもASP.NET などのフレームワークが提供されているため、C系言語の処理速度を発揮した高速なアプリを提供することができます。
またVR/AR、ゲーム開発の場面では、前述のUnityが活躍しています。Unityは、C#でコーディングできるだけでなく、直感的な画面の制作や処理の実装が可能です。
また、映像や3Dモデル、音楽、効果音などを無償・有償でライブラリから簡単に入手でき、自分でビジュアル開発ができない人でもゲームが作れることから、アプリ開発者にはとても高い人気があります。
さらにUnityは、VRやARを実装したアプリ開発も開発可能で、仮想現実や拡張現実などの新しいエンターテイメント分野でのシェアを拡大しています。
C#でHello World
C#でHello Worldを表示するには、下記のコードをテキストファイルにコピーアンドペーストしてHello.csと名前を付けて保存してください。
using System; public class Hello{ public static void Main(){ Console.WriteLine("Hello World"); } }
人気のあるプログラミング言語について把握する
AI/機械学習のPython、フロントエンドのJavaScript、IoTならC/C++、基幹システムならJava、WindowsアプリならC#と、それぞれ言語の特徴や人気の理由について紹介しました。各言語によって得意な分野や専門性が異なることがおわかりいただけたでしょうか。
言語によって主に使用されている分野や需要は異なりますが、今回紹介した5つの言語はIT開発においては需要が高く推移している言語ばかりなので、もし興味を持ったらぜひ言語についてさらに掘り下げて知ると同時に、環境構築をして触れてみてください。