Pythonを学ぶ際に出てくるAnaconda、Jupyter Notebook、Google Colablatoryなどの違い

#はじめに
Pythonを学ぶ際に、以下のようなものが最初に出てきます。

- Anaconda
- Jupyter Notebook
- Google Colablatory
- IDLE
- Spyder
- Visiual Studio
- Visiual Studio Code

本によって使うものが違ったりいろいろな機能があったりするため、結局何が何なのか、どれを使えば良いのか分からなくなってしまいますよね。

この記事では、**それぞれの違い**と、**どんな特徴があるのか**をまとめました。初学者の方の頭の整理になれば幸いです。

#分類・特徴
それぞれ分類と特徴はこのようになっています。

|  名称  |  分類  |  特徴  |
| ---- | ---- | ---- |
|  Anaconda  |  Python環境構築サポートソフト  | 機械学習やデータサイエンス等のライブラリが初めから入っている。プロジェクトごとの環境設定ができる。 |
|  Jupyter Notebook  |  IDE（統合開発環境）  | ブラウザ上で使うことが出来る。Python以外の言語にも対応している。 |
|  Google Colablatory  |  IDE  | ブラウザ上で使うことが出来る。Pythonのみに対応。 |
|  IDLE  |  IDE  | Python用のIDE。Pythonをインストールしたときに付いてくるデフォルトのもの。 |
|  Spyder  |  IDE  | Python用のIDE。Jupyter Notebookほどの機能は無いがシンプル。 |
|  Visiual Studio  |  IDE  | Microsoftが提供するIDE。Python以外の言語にも対応している。 |
|  Visiual Studio Code  |  エディタ  | Microsoftが提供するエディタ。Python以外の言語にも対応している。 |

Anacondaは少し特殊なため、先にIDEとエディタについて説明します。

##IDE（統合開発環境）とは
一言で言えば、**これ一つでプログラムを書いて動かすことが出来るソフト**のことです。
少し詳しく説明すると、コーディング、コンパイル、デバッグ、テストなどのプログラミングに必要な機能が全てひとまとまりになっているものを言います。
そのため、基本的にはIDEを一つ用意してしまえばプログラムを書き始められるものとなっており、本などでは一番最初に用意を勧められます。

##エディタとは
一言で言えば、**プログラムを書くことが出来るソフト**のことです。
つまり、コーディングの機能のみを持ったものを指します。そのため、エディタは動作が軽く、ストレスなくプログラムを書くことが出来ます。
また、ソフトによっては、後からコンパイル、デバッグ、テストなどの機能を追加することも出来るため、IDEとの明確な区別が出来ないものもあります。

最初に紹介したVSCode（Visiual Studio Code）の他にもエディタはたくさんあります。

- Atom
- vim
- nano
- メモ帳（Windows）
- サクラエディタ
- 秀丸エディタ

いろいろ使ってみて自分のお気に入りのエディタを見つけても良いかもしれません。

#それぞれの紹介
##Anaconda

https://www.anaconda.com/

Anacondaは他のものとは違い、IDEやエディタではありません。Pythonの環境構築をサポートしてくれるソフトです。

具体的には、

- Python環境の構築
- よく使うパッケージ、ライブラリのインストール
- プロジェクトごとの環境設定

が出来ます。

また、この中で最も使える機能が**プロジェクトごとの環境設定**です。

通常、pipなどでパッケージやライブラリをインストールした場合には、他プロジェクトでインストールしたもの同士で依存関係がぐちゃぐちゃになってしまい、プログラムが上手く動かないことがあります。これはプロジェクトが増えるごとに起きる確率が高くなる重大な問題です。

しかし、AnacondaにはCondaというパッケージ管理ツールが内包されており、プロジェクトごとに分離した環境を作り出すことが出来ます。そのため、依存関係に悩むことを減らすことが出来るのです。

また、Condaに似た機能を持つソフトに、venvというものもあります。これはPythonをインストールした際に付いてくる、最も手軽にプロジェクトごとの環境設定が出来るソフトです。Anacondaのインストールが難しい人はこちらを使ってみるのも良いかと思います。

##Jupyter Notebook

https://jupyter.org/

分類：IDE
使用できる言語：Python、Julia、R、C++、Ruby、Kotlinなど
難易度：低
使用環境：インストール版とブラウザ版のどちらも可能

使用者が多く、文献も多いため、まだプログラミングに慣れていないような初心者の方にもおすすめのIDEです。ビジュアルも良いため、分かりやすさの面でもおすすめです。
Anacondaをインストールした場合には自動でJupyter Notebookも付いてくるため、Anacondaを入れてしまうのもありです。

##Google Colablatory

https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja

分類：IDE
使用できる言語：Python
難易度：中
使用環境：ブラウザ版のみ

ブラウザで簡単にPythonのプログラムが書けるGoogleのサービスです。手軽にPythonを書けるのが良いですが、現状ではJupyter Notebookなどに比べると日本語の資料が少ないため、独学かつ調べることが得意ではない人は他のIDEを使うことを検討しても良いかもしれません。
また、GoogleがGPUという演算処理装置を無料で提供しているため、機械学習を学びたい方にも向いています。ただし、無料で使える範囲には限りがあるため注意が必要です。

##IDLE

https://docs.python.org/3/library/idle.html

分類：IDE
使用できる言語：Python
難易度：低
使用環境：インストール版のみ

Pythonをインストールしたときに自動でインストールされる、公式のIDEです。最低限の機能しかなく、利便性はあまりないですが、プログラミングをし始めるまでの壁がほとんどないため、初めてプログラミングをする人に向いています。

##Spyder

https://www.spyder-ide.org/

分類：IDE
使用できる言語：Python
難易度：中
使用環境：インストール版のみ

グラフの描画やデータ解析に強く、計算や解析をするためにプログラミングをする人におすすめのIDEです。
Jupyter Notebookほどの機能はありませんがシンプルでかっこいいです。
Anacondaをインストールした場合には自動でJupyter Notebookも付いてくるため、Anacondaを入れてしまうのもありです。

##Visiual Studio

https://visualstudio.microsoft.com/ja/

分類：IDE
使用できる言語：だいたい何でも
難易度：中
使用環境：インストール版のみ

Microsoftが提供する、だいたい何でも出来るIDEです。ゲーム開発やアプリ開発からWeb開発など多種多様な用途に対応しています。ただ、その分カスタマイズ出来る部分が多すぎて、使いこなすのには時間がかかる部分もあるため注意が必要です。

##Visiual Studio Code

https://code.visualstudio.com/

分類：エディタ
使用できる言語：だいたい何でも
難易度：中
使用環境：インストール版とブラウザ版のどちらも可能

筆者が最も愛するエディタです。Visiual Studioのエディタ部分の機能だけ取り出したものです。
比較的動作が軽く、カスタマイズ性が良く、さらにかっこいいため、ストレスなくプログラミングができます。また、カスタマイズをすることで、エディタの機能だけでなく、コンパイルやデバッグ、テストまで出来るので、IDEのように使うことも可能です。ただし、カスタマイズされていない状態だとほとんど何も出来ないので、少しだけ難易度が高いです。

#最後に
様々なソフト、サービスについてまとめました。少しでも頭の整理に役立てたのであれば嬉しいです。
また、筆者も学習中の身のため、もし間違えがあればご指摘いただけるとありがたいです。