【初心者向け・保存版】プログラミング言語別できること（Ruby/Python/Java/Swift/PHP/Goなど12選）

# AI Academy Bootcamp

[６ヶ月35,000円にてチャットで質問し放題の環境で、機械学習やデータ分析が学べるサービス](https://aiacademy.jp/bootcamp)を提供しております。
数十名在籍しているデータサイエンティストや機械学習エンジニアに質問し放題の環境でデータ分析、統計、機械学習、SQL等が学べます。AI人材に必要なスキルを効率よく体系的に身に付けたい方は是非ご検討ください！
![bootcamp_ad_72ppi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195675/f261ccc8-42db-a292-2511-6a742d1987f7.png)
https://aiacademy.jp/bootcamp


# 対象読者
1. これからプログラミングを始めようと考えている初学者
2. 独学でプログラミングを始めようとしているが、どの言語を選べば良いかわからず困っている方

# はじめに
プログラミングを学ぼうとすると多くの初学者は（私もそうでしたが）どのプログラミング言語を選べば良いのかわからないと思います。
私は、**最初のプログラミング言語は目的で選ぶのが良い**と思っております。
そのためにも様々あるプログラミング言語の中で、1つ1つがどのような特徴を持っているのか簡単に知っておくのが良いかと思います。

プログラミングはとても素晴らしいもので、自分の作りたいものを作ることができ、さらに作ったサービスやアプリを多くの人に使ってもらうことができます。
プログラミングを行うことで、自分の作ったサービスが世の中の問題や身の回りの不便なことを解決できる可能性を秘めています。

プログラミング言語を学ぶとそのようなことが実現することができる大変素晴らしいツールです！

この記事では15の言語をピックアップし、それぞれの言語で出来ることと、こんな人にオススメという形でそれぞれ紹介していきます。

最初のプログラミング言語選びで失敗しないように、この記事を書きました。
少しでも多くの方に役立てればと思っておりますので是非最後までお読み頂けると嬉しいです。

＜追記＞
C#、C++、Lisp、Scalaに関してはほとんど利用したことがないため、足りない部分がありましたら、指摘頂けると幸いです。


# この記事で紹介するプログラミング言語

1. Ruby
2. PHP
3. JavaScript
4. Python
5. Java
6. Swift
7. C#
8. Go
9. Scala
10. C
11. C++
12. Lisp

## Ruby

Rubyは国産の言語で、[まつもとゆきひろ](https://twitter.com/yukihiro_matz)さんによって開発されました。
Rubyは主に、Ruby on RailsというWebフレームを用いて利用されることが多いです。
Webサービス開発をスピーディーに作れたりすることから、立ち上がったばかりの企業では、Ruby(Ruby on Rails)が採用されることが多いように感じます。
学習コストも、RubyやRailsが学べる学習サービスや情報も多く、Rubyプログラマー、Webエンジニアも多く、そういった点でもオススメの言語です。

### こんな人にオススメ！

(1) Webサービスを作りたい人

## PHP

PHP（Hypertext Preprocessor）はRubyと同様、Web開発に適した言語で、HTMLに埋め込むことができたりします。
またWebフレームワークがとても多く、近年ではLaravelが人気です。

### こんな人にオススメ！
(1) Webサービスを作りたい人


## JavaScript

JavaScript（ジャバスクリプト）とはWebサービスの見た目の動きをつけるために大変人気なプログラミング言語です。
初学者の多くは、後述するJava（ジャバ）と名前が似ているため、同じものだと勘違いする方もいらしゃいますが、両者は全く異なるプログラミング言語です。
Webサイトを作るためには、
HTML/CSSもJavaScriptとあわせて必ず学ぶ必要（学ぶこと）になります。
また、JavaScript以外の言語（Pythonなど）でも実装できますが、ブロックチェーンも作ることができます。


・HTML（エイチティーエムエル/HyperText Markup Language）は、Webサイトを作成するための（マークアップ）言語
・CSS（カスケーディングスタイルシート）は、Webサイトのスタイル（見た目や配置などのデザイン）を指定するための言語。

### こんな人にオススメ！

(1) (動的な)Webサービスを作りたい人
(2) ブロックチェーンの実装

## Python

Pythonとはシンプルで理解しやすいプログラミング言語で、
Pythonを使うとWebアプリケーション開発、便利な業務自動化ツール開発、機械学習、統計処理など様々なことに使うことが出来ます。
出来ることは非常に多く、AI開発用途での利用で近年Pythonが人気になっています。
また、データ分析を行いたい場合、Python以外にも、R（アール）やJulia（ジュリア）といった言語もあります。これからデータ分析を目的に始めるなら、Pythonから始めるのをオススメいたします。
（Pythonは[こちら](http://aiacademy.jp)から無料で学べます！）

```
1. 人工知能関連（画像認識・自然言語処理・音声認識 etc..)
2. 機械学習・統計解析
3. Webアプリケーション・Webサービス開発
4. デスクトップアプリ制作(tkinterなど)
5. 業務効率化プログラム
6. Webスクレイピング
7. IoT
8. ロボット/ドローン制御
9. ネットワーク・サイバーセキュリティプログラミング
10. ゲーム開発
11. CGソフトウェア開発
```

<img width="754" alt="スクリーンショット 2019-10-25 14.35.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195675/73ba68a6-672b-fa86-fe81-dc505d0a6b6c.png">

### こんな人にオススメ！
(1) AI領域の開発者やデータサイエンティストを目指したい人
(2) 上記のどれかに当てはまる人


## Java

Java(ジャバ)は大規模なWebシステムやAndroidアプリ開発で利用可能なプログラミング言語です。
Kotlin(コトリン/コットリン)も近年人気になっており、KotlinでもAndroidアプリ開発が出来ます。
下記記事も参考にしてください。
[【はじめてのAndroidアプリ開発】 JavaとKotlinを比較](https://blog.codecamp.jp/android-app-development-kotlin
)

### こんな人にオススメ！
(1) Androidアプリを開発したい人
(2) 大規模なWebシステムを作りたい人
(3) (すみません、主観になってしまいますが、）
大手ではJavaがよく使われている感じがするので大手に就職を目指している人

## Swift
Swift（スウィフト）は、アップル（英: Apple Inc.）が開発したプログラミング言語で、
iOSおよびmacOS等で利用出来るプログラミング言語です。
Worldwide Developers Conference 2014で発表されました。
Swiftを学ぶ場合は、iPhoneアプリを作りたい方です。
以前、Swiftが誕生する前までは、Objective-C（オブジェクティブシー）という言語でiPhoneアプリは作られていましたが、今から始めるならSwiftを選ぶことをオススメ致します。
またARアプリ開発もARKitを使うことで作ることも出来ます。

### こんな人にオススメ！
(1) iPhoneアプリを開発したい人
(2) ARアプリ開発をしたい人

## C＃
C#は、マイクロソフトが開発したプログラミング言語です。
近年では、Unity(ユニティ/Unity3D）というゲームエンジン上でC#を利用することができ、
２D/3DゲームやAR/VRアプリなども作ることが出来ます。
GUIアプリケーションや、ASP.NETというWebアプリケーションのフレームワークを使うことでWebアプリケーションも開発できます。
さらに、Xamarin(ザマリン) を利用するとiOS/Androidアプリが作れます。

### こんな人にオススメ！
(1) Unityを使って2D/3Dゲーム開発したい人
(2) Unityを使ってAR/VRアプリを開発したい人
(3) iOS/Androidの両方でアプリを作りたい人
(4) Windowsアプリケーション
(5) Webアプリケーションを作りた人
(6)GUIのアプリケーション

## Go

Go言語は Robert Griesemer、ロブ・パイク、ケン・トンプソンによって設計された言語です。（[wikipedia参照](https://ja.wikipedia.org/wiki/Go_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E))）
Go言語は、シンプルかつスケーラビリティが高いということで規模の大きいプロジェクトで利用されたり人気です。
[gRPC](http://www.grpc.io/)というプロトコルを用いて高速な通信を実現できます。

また、Rust（ラスト）というMozilla社が支援するオープンソースのシステムプログラミング言語もあり、こちらはGo言語と比較されることが多いですが、ほぼ同じようなことが可能です。
下記の記事も参考にしてみてください。
(GoとRustを比較！始めるならどっち？)[https://media.itkaikei.com/2019/01/25/go-vs-rust/]


## こんな人にオススメ

(1) バックエンド部分のAPIサーバ開発
(2) Webサーバー構築
(3) コマンドラインインターフェース開発



## Scala

Scala（スカラ）はオブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語です。
（[wikipedia参照](https://ja.wikipedia.org/wiki/Scala)）
Webアプリケーションやスマホアプリ開発などに使われており、Javaプラットフォーム上で動作し、Javaのプログラムと連携させることができることが特徴です。
ただ、Scalaエンジニアが少ないことから市場価値が高い反面、Scalaを採用している企業はPHPやRubyに比べ少ないです。

## こんな人にオススメ

(1) Webサービス開発

## C
C(シー)言語は、1972年に開発されたプログラミング言語で汎用性の高い言語です。
基幹システム、車・スマホなどの制御システム、ハードウェア開発などができる言語です。
と言いますか、なんでも出来たりします。
Cは動作が高速で、プログラミング言語の開発にも利用されています。
コンピューターの仕組みを理解するのにももってこいです。

[スーパー中学生誕生、プログラミング言語わずか数週間で開発、U-22プログラミング・コンテスト2019](https://www.bcnretail.com/market/detail/20191021_142131.html)

※プログラミング言語を作りたい方は、[こちら](http://kmaebashi.com/programmer/devlang/index.html)などを参考にしてみてください。

## こんな人にオススメ

（１）　基幹システム、車・スマホなどの制御システム、ハードウェア開発をしたい方
(2) コンピュター仕組みを理解したい方


## C++
C++（シープラスプラス）は、C言語の拡張版として開発されたプログラミング言語です。
C++に限らず、C言語もですが、CPUの動作理解に役に立つので、コンピュター仕組みを知りたい方にはオススメです。
また、何と言っても高速ですので、高速なシステムを作りたい場合、C++を検討しても良いかもしれません。

C++を勉強される方は[こちら](https://qiita.com/borerere/items/7dd02ba6dd8990b10e29)を一度読んでおくと良いかもしれません。

また、Arduino(アルドゥイーノ)マイコンでは、C/C++言語風のArduino言語を使って、ドローンやロボットも作れます。
[Arduino(アルドゥイーノ)でできること15選‼︎ ドローンやロボットも作れる‼︎](https://goworkship.com/magazine/what_can_arduino_do/)

## こんな人にオススメ
(1) 高速なシステム開発
(2) コンピュター仕組みを理解したい方


## Lisp
Lisp（リスプ）とはLISt Processor (リスト処理言語)の省で、AIプログラム等の開発に適している言語です。
ジョン・マッカシー（今の人工知能（Artificial Intelligence）という言葉の提唱者）によって開発者されました。
（しかし、現在ではダントツでPythonがAI分野で利用されています。）
Lispは何と言っても構文が特徴的です。
カッコをたくさん利用します。

<img width="338" alt="スクリーンショット 2019-10-25 16.28.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195675/200ce57d-ca3e-29cd-5894-a4514a054aa0.png">

さらには、[ポーランド記法](https://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%BC%E3%83%A9%E3%83%B3%E3%83%89%E8%A8%98%E6%B3%95)と言う記法もあるようです。

コードは[Wikipedia](https://ja.wikipedia.org/wiki/LISP#LISP%E3%81%AE%E6%AD%B4%E5%8F%B2)を参照


参考：[人工知能で大活躍！今熱い「LISP」の成り立ちとこれから](https://blog.codecamp.jp/lisp)

## こんな人にオススメ
（１） AI領域の開発をしたい人

# まとめ

まとめると、

・Webサービスを開発したい人
→PHP or Ruby or Python or Java + HTML/CSS + JavaScriptを学ぶ。

※ただし、この記事では書いておりませんが、本格的にWebサービスを作りたい場合は、上記のプログラミング言語に加え、データベース（MySQLなど）や、Webセキュリティ、サーバー構築（AWSやGoogle Cloud Platform、さくらクラウドなど）の知識、ネットワークの知識、HTML/CSS、コマンドの基礎、[利用規約」の作り方](https://www.amazon.co.jp/%E3%80%90%E6%94%B9%E8%A8%82%E6%96%B0%E7%89%88%E3%80%91%E8%89%AF%E3%81%84%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B-%E3%80%8C%E5%88%A9%E7%94%A8%E8%A6%8F%E7%B4%84%E3%80%8D%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9-%E9%9B%A8%E5%AE%AE-%E7%BE%8E%E5%AD%A3/dp/4297103265/)、必須ではないですが、GitやDockerなどの知識になります。

・VR/ARアプリを作りたい人
C#(Unity)、Swift

・iPhoneアプリを作りた人
Swift、Kotlin/Native

・Androidアプリを作りた人
Java、Kotlin

・AI領域をやりた人
→Python or R or Julia or Lisp
PythonやR、Juliaが学べますので、是非[AI Academy](https://aiacademy.jp/)を使って頂けると嬉しいです。

・自動化ツールを作りたい人
Pythonなど
（詳細は上記を参考にしてみてください！）

・その他
C言語、Goなど
（詳細は上記を参考にしてみてください！）


# 最後に
拙い文章でしたが、ここまでお読み頂きありがとうございます。
この記事を元に、最初のプログラミンング言語を選びで失敗しない人を減らしたいと思います。
是非、プログラマー、エンジニアの皆様、周りの人でプログラミングを始めようとしている方いらっしゃいましたら、この記事をご共有頂ければ幸いです。
何かわからないことあれば、[twitter](https://twitter.com/tankazunori0914)までDMください。（フォロー頂けると嬉しいです> <）
また私自身、ここで紹介した言語を全てしっかりと扱っているわけではないため、抜け漏れが多く存在しているはずです。こんなこともできるよ！というのがあれば是非コメント頂けると幸いです。

# AI Academy Bootcamp

[６ヶ月35,000円にてチャットで質問し放題の環境で、機械学習やデータ分析が学べるサービス](https://aiacademy.jp/bootcamp)を提供しております。
数十名在籍しているデータサイエンティストや機械学習エンジニアに質問し放題の環境でデータ分析、統計、機械学習、SQL等が学べます。AI人材に必要なスキルを効率よく体系的に身に付けたい方は是非ご検討ください！
![bootcamp_ad_72ppi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195675/f261ccc8-42db-a292-2511-6a742d1987f7.png)
https://aiacademy.jp/bootcamp


# この記事を書いた人

株式会社エーアイアカデミー
代表取締役CEO　谷 一徳 

フォロー、参加お待ちしております！
[Twitter](https://twitter.com/tankazunori0914)
[Facebook](https://www.facebook.com/takazunori)
[人工知能研究コミュニティ](https://www.facebook.com/groups/1892746874314837/)


・過去に書いた記事

[【保存版・初心者向け】独学でAIエンジニアになりたい人向けのオススメのAI勉強方法 (2019年改定版)](https://qiita.com/tani_AI_Academy/items/ab2208e21a2215f8dfad)