前の記事でプログラミング言語についてご紹介しました。ですが
このように感じた人もいるかと思います。プログラミング言語はたくさんあり、どれが自分に合っているのか、どの言語が将来性があるのかわかりませんよね。プログラミング言語にはそれぞれ特徴があり、向き不向きもあります。あなたが何を作りたいか、どんな仕事をしたいかによって選ぶべき言語は違います。
ただ、作りたいものやどう言った仕事をしたいかなかなかイメージができませんよね。そこでこの記事では、人気のプログラミング言語の特徴やどんな人にオススメなのかを解説します。各言語の特徴やメリットデメリットをよく理解して、あなたがどの言語を選ぶか考えてみましょう。
【この記事の内容】
- オススメのプログラミング言語がわかる
- 各言語についてわかる
[no_toc]
自分のやりたいことや作りたいもの、就きたい仕事を書き出してみよう
各プログラミング言語の特徴やメリットデメリットについて知る前に、あなたのやりたいことや作りたいもの、就きたい仕事などを箇条書きで書き出してみましょう。少なくても簡単なものでも構いません。プログラミング言語の特徴やメリットデメリットを読みながら、書き出したリストの横に言語を書き足していきましょう。
あなたのやりたいことやりたいことや作りたいもの、就きたい仕事などを実現できる言語が感覚的に掴めるようになります。
Python(パイソン)
Pythonとは
Pythonは、Google三大言語(C++、Java、Pythonのこと)の一つで、Google App Engine でもPythonが採用されています。また、世界一のUU(ユニークユーザー)数 を誇る「Facebook」の開発にも採用されていることで、大規模なシステム開発においても有用な言語であることが証明されました。Perlがlivedoorやmixiで使用され日本での普及が進んだ同じ現象が、Pythonでも起きているといえます。
Pythonの特徴
インデント(コードを読みやすいように整形すること)によるブロックのルールや、言語の構文やメソッドの使い勝手がとても分かりやすいです。AIなど人工知能でも最近注目されており、ビックデータの解析に使う研究者もいます。ラズベリーパイという学習用のミニコンピュータで工作も楽しめます。
Pythonを学習するメリット
- 学習コストが比較的低い
- 言語が読みやすい(スタイリッシュ)
- 専門的な会社に行きやすい
意外と応用範囲も広く、言語学習だけで言えばオススメしたい言語です。
Pythonを学習するデメリット
- 日本ではあまり浸透しておらず、情報が入手しづらい
よくRubyなどと比較される言語ですが、繰り返しになりますがとても学びやすく言語自体は良いものです。ただ、日本では他の言語と比較して一部のベンチャーなどでしか仕事になりづらい点や、学習できる環境がメジャーな言語に比べて揃えにくいというデメリットがあります。
こんな人にオススメ
- 海外志向の強い人
- 新しいもの好きな人
Ruby(ルビー)
Rubyとは
Rubyは教育で使われることもあり、読みやすく書きやすい言語です。慣れるとコードが物凄く短く(早く)書けます。
Rubyの特徴
日本産の言語ですが元々アメリカのシリコンバレー等で爆発的に使われ、その後日本でも活用されるようになりました。最近では、中小規模のシステムでRubyを採用する企業が増加しています。
Rubyを学習するメリット
- サーバーの知識が身につき、汎用的な知識もつけやすい点
- 非常に多くのWEBサービスやアプリ、ゲームに使われている点
- 最近では業務系の分野でも案件が増えてきている点
RubyはWEBサービスは勿論、スマホアプリやゲーム、業務系アプリ等も得意としていて汎用性が高い言語です。またRubyを採用する企業が増加し、開発経験が少なくても案件を獲得しやすい傾向にあります。さらにインターンや副業も行いやすい点がRubyを学習するメリットと言えます。
Rubyを学習するデメリット
- 処理速度が少し遅い
- 大規模開発には向いていない
Rubyは学ぶ・作るという点において優秀ですが、言語仕様として処理速度が遅いのが弱点となります。大規模なシステムを作成したり、複雑なデータベースの使用方法をすると遅くなりがちです。ですが、最近は改善されつつあり、クラウド技術の発展により軽減されてきています。大企業への就職や大規模開発にはあまり向いていない点はありますが、学習や中小規模のシステム開発ではRuby(のWEBフレームワークのRuby on Rails)がオススメです。
PHPの項目でも述べましたが、PHPからRubyへ移行するシステムなども出てきています。
こんな人におすすめ
- 起業したい人
- ベンチャーで働きたい人
- SNS等の自社サービス作りたい人
Java(ジャバ)
Javaとは
Javaは、Google三大言語のひとつで、コンピュータのOSに依存しない汎用性の高い言語です。
Javaの特徴
大型の業務システムを作る際に採用されることが多いしっかりした言語です。コンパイラ言語(コーディングした後に実行するためのファイルを作ってから使うもの)ですので、PHP/Python/Rubyと言ったスクリプト言語よりも高速に処理ができます。また、どのコンピュータにも搭載できるという特徴を持っています。
Javaを学習するメリット
- プログラミングそのものの知識がしっかりつく
- 大規模開発に採用されやすい
- Androidアプリをスタンダードな方法で作れる
オブジェクト指向や、汎用的な言語の知識がしっかり学べます。業務としてもJavaの経験を持つエンジニアは歓迎されやすい傾向です。WEBシステムだけではなく、その汎用性から組み込み系やスマホ(Androidアプリ)にも使用されています。Java開発は処理速度が早く、ハード含めて保守を行いやすい点などバランス型といえます。
Javaを学習するデメリット
- 学習コストが比較的高く動きを確認しながら学習できない
- アメリカで伸び悩んでいるため今後、日本でも見直す所が増えるかもしれない
Javaは記述するコードの量が多く、設計も複雑で学習コストが高い言語です。もし個人でシステムを開発する場合、記述するコード量が膨らみ現実的ではありません。一方で、時間と費用が必要だという前提の大規模なシステム開発に採用される傾向にあります。またアメリカではJavaの案件成長率がマイナス30%になったというデータもあり、今後は今まで通り評価されるのか不明な点もあるのでマイナス評価としました。
こんな人におすすめ
- 大企業に務めたい人
- スタンダードにAndroidアプリ作りたい人
C言語 / C++(シープラプラ)
C言語 / C++とは
C++は、Google三大言語のひとつです。C言語にオブジェクト指向と呼ばれる考え方などの機能を拡張したものがC++です。C++は基本的にC言語の上位互換で、C言語をマスターした後の次のステージと言ってもいいでしょう。
C言語 / C++の特徴
C言語/C++は組み込み系(家電、ロボットなど)と呼ばれるものや研究目的のシミュレーションツール、コンシューマ向けゲーム(家庭用ゲーム機)のプログラミングで主に使用されます。低級(コンピュータが理解しやすく、逆に人間が理解し難い)言語と呼ばれる言語で、習得が難しい言語です。しかし処理するスピードが非常に早いので、スピーディーに動作するユーザーにストレスのない(反応の早い)アプリが開発できます。
C言語を学習するメリット
- 比較的難しいがその分プログラミング基礎力が身につく
- とても早い動作のアプリが作れるようになる
Javaと同じく、C言語とC++は学習コストが高く習得するのが難しい言語です。ただ、コンピュータについてや言語の基本的な使い方(考え方)をしっかりと学習できるため、習得できた際の知識の基盤として活用できる範囲は広いです。最近ではJavaでAndroidアプリを作ると処理速度が遅くなるので、C++でAndroidアプリを開発しているという人もいます。
スキルと環境さえ整えられれば、処理速度の早いアプリを作れるようになるのは魅力です。リアルタイム性を求められる業務システム(例えば証券取引システム)なども、C言語/C++が採用される傾向にあります。
C言語を学習するデメリット
- 使いこなせるようになる前に挫折しやすい
- 中途半端な理解だと難易度の高いバグが出がち
そのネームバリュー(知名度)から学び始め、多くの人が挫折すると思われるのがC言語です。
C言語やC++はコンピュータがどのように動いているかをしっかり理解しないと使いこなせず、使えるようになった時の有用性に相対する挫折率がマイナス評価です。
こんな人におすすめ
- 理系の大学生
- 家庭用ゲーム機のゲームを作りたい人
- ハードやロボットに興味ある人
C#(シーシャープ)
C#とは
「C#」は、C言語に近い文法で、C++よりも簡単にオブジェクト指向で処理を記述できるように作られている言語です。
C#の特徴
業務で使う他は、ゲームを作る際に学習されている方が多くいます。特に「Unity」という3Dゲーム作成を得意としているゲーム開発ツールで採用されているため、Unityを使うという用途でも人気になっています。業務システムでも、WindowServerというOSを入れたコンピュータ用に使われていることがあります。
C#を学習するメリット
- ゲームで動かしながら学びやすい
ゲーム開発に使える環境やライブラリ(処理をまとめたパッケージ)が比較的多いため、ゲームを作りながらオブジェクト指向を学んでいきやすいです。「.NET」という環境を利用することでiOS/Android向けのアプリの開発も可能になっています。
C#を学習するデメリット
- 業務ではほとんどWindowsでしか使わない
ゲームなど様々なものを作成することができますが、C#はゲーム以外の業務では基本的(.NETを使えば、Macアプリも作成できる)にWindows上で動くアプリしか作らないので、仕事の幅としての汎用性は低いです。
こんな人におすすめ
- モダンなゲームなどを作りたい人
JavaScript(ジャバスクリプト)
JavaScriptとは
JavaScriptは、WEBブラウザ上など様々な場面で活用される言語です。JavaScriptが誕生した当時、WEBページはとても静的でした(文字と写真のみ)。そこで、閲覧者が文字のサイズを変更したり、クリックでデザインを変えたりするようなアクションやユーザーとの対話性を出すために、JavaScriptは作り出されました。
JavaScriptの特徴
JavaScriptは、特にクロスプラットフォームの環境が充実しています。JavaScript単体だけでスマホアプリも作れたり、サーバサイドのデータ管理も開発できます。
JavaScriptを学習するメリット
- GoogleChromeなどのブラウザだけで動作確認できるので学習がとても始めやすい
- 各種ツールの使い方を覚えるだけで色んなモノが作れる。
WEB系もユーザーがいかに使いやすいかを考え改良することが求められるようになってきており、JavaScriptのスキルが仕事として歓迎されやすくなっている点もプラス評価です。
JavaScriptを学習するデメリット
- 新しい物が次々出ていて学習するポイントが安定しない
- 広い範囲の知識がないと使いこなせない
JavaScriptが使えるフロントエンジニアは重宝されるものの、サーバサイドの知識もある程度要求されます。仕事として行う場合、結局他の言語の知識も必要になってくる場合が多くあります。(JavaScriptで完結する場合ももちろんある)
こんな人におすすめ
- いろんな事をやりたい人
- 格好いいWEBサービスを作りたい人
PHP(ピーエイチピー)
PHPとは
PHPは、日本では多くのWEBサービスで利用されている言語です。CMSサイト(企業サイトなど管理者ページで簡単に更新できるようになっているサイト)作成によく利用されるWordPressや、ECサイト設置に利用されるEC-CUBEなどにも使用されています。
PHPの特徴
手軽に使える軽量な言語です。日本の多くのレンタルサーバでも使用可能です。WEBサイト制作の際に一部分にプログラムの処理が必要な場面などでもよく使われます。
PHPを学習するデメリット
- 現状案件が多いが徐々に減少傾向にある
言語自体がツギハギで作られてきた経緯もあり、高い技術力を持つ(様々な言語が使える)人が嫌うことがあります。日本では小中規模のサービスをつくる場合、RubyやPython、Scalaなどの方が人気となっています。
こんな人におすすめ
- WEBデザイナーになりたい人
- ECサイト作成したい人
- WEB制作会社に行きたい人
Swift
Swiftとは
Swiftは、Appleから2014年に発表された新しいプログラミング言語です。
Swiftの特徴
iOS(iPhone)、Mac、Apple TV、Apple Watchで利用するアプリが作成でき、Macで開発することになります。Apple製品の開発には「Objective-C」というものが使われることが多かったのですが、Swiftに切り替わっていっています。
Swiftでプログラミング入門するメリット
- 活躍しやすい
- 新しい使われ方も期待できる
言語自体が新しいため、募集の条件でも経歴についてはあまり重要視されていない傾向です。また、PerfectというSwift製のWEBフレームワークの登場により、今後はiPhoneアプリの制作以外にも幅が広がっていくだろうという期待もあります。
Swiftでプログラミング入門するデメリット
- ちょっと特殊な言語
他の言語にはない独特の特徴を持っている部分があり、仮にSwiftを学んでから他の言語にいくときに、別の言語を初めに学ぶよりも少し抵抗があるかもしれません。
こんな人におすすめ
- ベンチャーで働きたい人
- iPhoneアプリ等作りたい人
- Appleが好きな人
Go言語(ゴー)
Go言語とは
「Go」は、2009年にGoogleによって開発された比較的新しい言語です。コンパイル型の言語で、言語構造がシンプルで初心者でもわかりやすいことから、近年人気が急上昇しているプログラミング言語の1つです。また、TIOBE Softwareによる2016年のプログラミング言語大賞ではGoが大賞を受賞しました。
Go言語の特徴
Go言語の主な特徴として、軽量なスレッディングやシンプルでバランスのとれた言語で、安全性が高くシステムの運用に支障をきたすGC(ガーベッジコレクション)やメモリリークが起きにくい言語でもあります。また、CやC++、Javaなどの言語と構文が似ているため、これらの手続きの言語を1つでも経験したことがあるなら、短時間での習得も可能です。
Go言語を学習するメリット
Go言語が近年人気を集めているのは、
- 安定性が高い
- 柔軟性が高い
- 軽量な並行処理
などから初心者でもわかりやすく、開発が容易に行える点が挙げられます。日本国内でも広告配信システムやアプリケーションの開発で、Go言語を扱った案件が増えてきています。
Go言語を学習するデメリット
Go言語では比較的新しい言語では標準で提供されているような継承や例外がなく、非知的なプログラマーのために設計されていると言われています。
こんな人におすすめ
- 新しい言語に触れてみたい
- 人気急上昇中の言語なので習得しておきたい
VisualBasic.NET(ビジュアルベーシックドットネット)
VisualBasic.NET(以下VB.NET)とは
「VB.NET」は、IT教育の一環として使用されることの多いプログラミング言語です。C言語やJavaと比較すると、私たちが日常に使うような言葉(自然言語)に似ているため、プログラミング初心者でも分かりやすい言語です。
VisualBasic.NETの特徴
Microsoftが作っていることもあり、基本的にはWindowsコンピュータ上で利用します。使い方が特徴的で、ボタンなどのパーツをドラッグ&ドロップで画面に配置して、そのパーツに対して命令を加えていきます。
VB.NETを学習するメリット
- 簡単でわかりやすい
- 仕事で使える場合も多い
IT教育で使われているくらいなので、比較的少ない学習コストで学べます。古い技術を動かし続けている職場では「VB6」というもの等がまだ動いていますが、「.Netframework」というものが入っていればどこでも動かせますので業務用システムでも利用されることが有ります。特に実装にコストをかけたくないユーザが操作する部分などで使用されます。
なお、.NET(ドットネット)と呼ばれるものには他にもC#.NETやASP.NETなど、似たように使えるものもあります。
VB.NETを学習するデメリット
- プログラミングのやり方が特徴的過ぎる
通常のプログラミング言語と違い、自然言語に近いので簡単に理解しながら学習が進められるというメリットの反面、この言語でしかアプリ開発ができないことがあります。このように汎用性が低く、他のプログラミング言語を学習する際にまたゼロからの学習になってしまいます。
こんな人におすすめ
- 学生(特に高校生)
この記事の復習
プログラミング言語と一言でいってもメリットやデメリット、特徴は様々です。
起業・ベンチャーに興味がある人は
- Ruby
- Swift
新しいものや話題の言語に興味がある人は
- Python
- Go
大規模開発やAndroidアプリに興味がある人は
- Java
ゲームやゲーム機に興味がある人は
- C
- C#
家電などのハードやロボットに興味がある人は
- C
Webデザインなどに興味がある人は
- Javascript
- PHP
学生、特に高校生には
- VB.NET
がオススメでした。しかし一番大切なのは、自分が就きたい仕事や作りたいものをイメージすることです。
- 知っトク雑学
- プログラミングのコンテストがある
中高生向けが多いですが、22歳以下を対象とした「U-22プログラミング・コンテスト」などがあります。
下記のURLからぜひ中高生の作品をご覧ください。
中高生が作ったとは思えないようなクオリティのゲームやアプリがあります。
彼らの作品を参考に、あなただったらどんなものを作るのかイメージを膨らませましょう!
Unityインターハイ
アプリ甲子園
U-22プログラミング・コンテスト
中高生国際Rubyプログラミングコンテスト