pythonのはじめ方（bottle hello worldあり）

python何から手をつけたらいいですか？とかIDEはなにを入れたらいいですか？と質問してくれた積極的な方がいたので説明用にメモを残します。

# はじめに

### 対象

* pythonをやったことないけど、何から始めたらいいのか思いつかない人。

### 環境はWindowsを想定しています

私がWindowsもしくはLinuxを使っていてMacは使っていないので、
Windowsユーザ向けの情報です。

### 流れ

1. pythonインストール
1. エディタインストール
1. Hello World実行
1. WebでHello World(bottle利用)
1. おすすめの技術紹介

# pythonインストール

[Python公式ページ](https://www.python.org/)でpython本体をダウンロードしましょう。

### バージョンは3系を選択しましょう

pythonのバージョンには2系と3系があります。メジャーバージョンの違いのことですね。
python2.7.16とかpython3.7.4とかですね。ライブラリの対応バージョンにももちろん関連しますが、かなり3系に対応されて来ていますし構文も改善されているのでバージョンは3系を選択しましょう。

python2とpython3の違いについては以下のページを参考にしてみてください。

* [Python2からPython3.0での変更点（わかりやすい）](https://qiita.com/cstoku/items/353fd4b0fd9ed17dc152)
* [2系と3系の違い（わかりやすい）](https://www.python-izm.com/tips/difference_in_version/)
* [【公式ページ】Python 2 から Python 3 への移植](https://docs.python.org/ja/3/howto/pyporting.html)
* [Supporting Python 3: An in-depth guide](http://python3porting.com/)

### 32bit or 64bit

Downloadのボタンを押すとPCが64bitでも32bit版がダウンロードされます。
学習レベルでは64bitにこだわる必要はないと思いますが、必要であれば64bit版のinstallerを使いましょう。

64bit版のダウンロードは[以前投稿](https://qiita.com/HyunwookPark/items/536818009dc33bb405c1)の最後"注意"という部分に書いてあります。


# エディタをインストール

### IDEについて

Java言語ならEclipse、C#はVisualStudioというように、pythonではJetBrains社のPyCharmというIDEを使うことが多いようです。(JetBrainsのIntelliJ IDEAもJava開発でシェアをEclipseと同等もしくはそれ以上に伸ばしている模様)

PyCharmを使うとvirtualenvとかcondaとか環境使えるしコード補完もあるから便利だと思います。
ただ、学習のため基礎もやっておくといいと思います。
また公式サイトの手順はIDEを使っていない前提で説明が書かれているので一通りやってみるにはコマンドプロンプトとエディタで取り組んでみることをおすすめします。

### エディタおすすめ

Hello Worldなどサクッとコード書いてみるにはちょっとしたエディタで十分だと思います。

個人的なおすすめは以下です。

* [Atom](https://atom.io/) (私はこちらを使ってます)
* [VSCode](https://code.visualstudio.com/)

pythonコードも見やすし、多少の補完もしてくれます。その気になればエディタ上から実行も可能です。

また、IDLEを使うのも学習用としてはいいと思います。
↓こちらに画面イメージとか載せておきました。
https://qiita.com/HyunwookPark/items/c7eef970c7d7c05b09ad

# Hello World実行

### ソースコード書く

任意の場所にディレクトリを作成して.pyファイルを新規作成しましょう。
ソースコードの内容はまずはHelloWorldで。この内容だけならimport文も不要です。

```python:test.py
print('Hello World!!')
```

### 実行

コマンドプロンプトもしくはWindows PowerShellで以下のようにコマンド実行してみましょう。

```
> python test.py
Hello World!!
```

# WebでHello World(bottle利用)

### ライブラリをインストール

ライブラリをインストール方法は色々ありますが、もっとも基本的なのはpipを使う方法でしょう。

コマンドプロンプトもしくはWindows PowerShellで以下のようにコマンド実行してみましょう。

```
> pip install bottle
Collecting bottle
  Downloading https://files.pythonhosted.org/packages/69/d1/efdd0a5584169cdf791d726264089ce5d96846a8978c44ac6e13ae234327/bottle-0.12.17-py3-none-any.whl (89kB)
     |████████████████████████████████| 92kB 1.5MB/s
Installing collected packages: bottle
Successfully installed bottle-0.12.17
```

### ソースコードを書く

```python:hellobottle.py
from bottle import route, run

@route('/hello')
def hello():
    return "Hello World!"

run(host='localhost', port=8080, debug=True)
```

### 実行

```console
> python hellobottle.py
Bottle v0.12.17 server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.
```

### ブラウザでアクセス

http://localhost:8080/hello

ブラウザで上記にアクセスするとサーバからの応答が確認できる。
![hellobottle.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224453/4fe6a089-5613-266f-48bf-ab9d1a71a248.png)


# おすすめの技術紹介

pythonに興味が湧いたら以下のようなライブラリで好きなものを作ってみましょう。

|ライブラリ|概要|
|:--|:--|
|[tkinter](https://docs.python.org/ja/3/library/tk.html)|WindowアプリなどGUI画面を作るためのライブラリ(python標準搭載なのでインストール不要)|
|[NumPy](https://www.numpy.org/)|数学計算が得意なライブラリでCythonで記述されていて高速|
|[pandas](https://pandas.pydata.org/)|データ解析のためのライブラリでCSVの読み込みやデータ操作などができる|
|[matplotlib](https://matplotlib.org/)|グラフ描画のライブラリでNumPyやpandasと組み合わせて使うことが多い|
|[scikit-learn](https://scikit-learn.org/)|最近のお流行り"機械学習"のライブラリ|
|[Django](https://docs.djangoproject.com/ja/2.2/)|Ruby on RailsっぽいWeb用フレームワークでログイン機能や画面を作るtemplate機能、O/Rマッパー機能などが含まれる|
|[bottle](https://bottlepy.org/docs/dev/)|pとても軽量なWeb用フレームワークでURIからのルーティング機能が主な機能|
|[Flask](http://flask.pocoo.org/)|とても軽量なWeb用フレームワークでbottleよりシェアが多いように見える(使ったことないので語れません)|
|[pygame](https://www.pygame.org/)|pythonでゲームを作るためのライブラリ|
|[Pyxel](https://github.com/kitao/pyxel/blob/master/README.ja.md)|pythonでレトロゲームを作るためのライブラリ(個人的にやってみたいだけ)|

# 参考

### 公式ドキュメント

* [日本語の公式ドキュメント](https://docs.python.org/ja/3/)
* [Python チュートリアル](https://docs.python.org/ja/3/tutorial/index.html)
* [Python 標準ライブラリ](https://docs.python.org/ja/3/library/index.html)

# おまけ

### virtualenv

プロジェクトによって利用するpythonのバージョンが違っていたりLinuxではデフォルトでpython2がインストールされていてpython3がどうも使いづらかったりするときのために仮想環境を使うことが多いようです。

[virtualenv](https://docs.python.org/ja/3/library/venv.html)というものです。

pycharmを使う場合はプロジェクトを作るときにvirtualenvの利用を聞かれたりします。

### 知っておくといいかも

|技術名|概要|
|:--|:--|
|CPython|公式Pythonのこと|
|Cython|PythonのようなコーディングでコンパイルするとC言語のコードでPython拡張モジュールを作ることができる|
|pyenv|virtualenvのお友達|
|pypy|pythonを高速実行できるとうわさのもの|
|Anaconda|pythonのディストリビューションでデータサイエンスおよび機械学習関連のライブラリが含まれる|
|Jupyter Notebook|Anacondaに含まれるツールで、デバッグのような実行方法ができるエディタのようなものグラフとか画像とかすぐ表示できる|
|pip|pythonのパッケージ管理ツール|