とりあえずプログラムを実行してみた【ゼロからPython勉強してみる】

# はじめに
[前回](https://qiita.com/_starfields_/items/fb3b73db7fff41d567e4)までで、色々と入門記事を読みながらPythonの開発環境を整えてみました。
今回は、例のごとく先人の記事を参考にしてPythonでプログラムを実行してみるところまでやっていきます。
単語等の意味も調べながらで完全に理解していないため、まわりくどい書き方が多いです。
誤った認識等があればご指摘ください。

# プログラムの動かし方
前々回の記事でPythonの公式ページから、Pythonというプログラミング言語で書くソースコードを実行するためのインタプリタ（CPythonと呼ばれるらしい）をインストールした。このCPythonのようなインタープリタやコンパイラというものを「処理系」と呼ぶらしい。

参考

https://qiita.com/ogata-k/items/b4a2d0cbf90f246aca14

ということで私の環境では処理系がCPythonのバージョン3.10というのはわかった。
しかし、実際のところどのようにプログラムを実行すればよいのかがいまいち理解できなかったのでメモがてら整理してみた。

### インタラクティブモード（対話型）とスクリプトモード
まず、Pythonでプログラムを実行する際には2つの実行モードがある。

参考

https://docs.python.org/ja/3/tutorial/interpreter.html

https://pyprg.com/two-ways-to-run-python/

https://python.keicode.com/lang/helloworld.php

#### インタラクティブモード（対話型）
インタラクティブモードでは対話をするように、コードを1行ずつ入力するとその都度インタープリタが記入したコードに対する結果を返してくれる。

##### 実際にやってみる
試しにPythonのshell（インタープリタ）を使ってインタラクティブモードの処理を見てみる。
PythonのshellはスタートメニューからPython3.○○(64-bit)を起動して使用できる。
コマンドプロンプト、powershellで`python`と入力してPythonを起動しても同じことができる。
![プログラムの実行_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/63eecb5b-dc62-8d7e-68ed-5a8e15371b9b.png)

実行してみた結果が以下の画像。
 `>>>`の横にコードを１行記入してエンターキーを押すと次の行に実行結果が表示される。
画像でいうと赤点線枠内の1行目で「1+1」を計算するようにコードを書いたので2行目に計算結果の「2」が表示されている。
5、6行目のように変数に何かを代入する処理の場合特に何も表示はされず次の入力に進む。
![プログラムの実行_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/ebf07390-4da7-065d-8b27-e7ae79919b7b.png)

このようにインタラクティブモードではすぐに結果が分かるためプログラムの一部分の動作を確認する際等に使用する。

#### スクリプトモード
スクリプトモードは先ほどの対話モードのように1行ずつ結果を返してもらうのではなく、コードを書いてあるソースファイルを読み込んで実行するモード。
多くの場合はこのモードを使用する。

##### 実際にやってみる

とりあえずソースファイルが必要なようなので、試しに次のような内容のソースファイルを作ってみて実行してみる。
~~~test.py
t1 = "test1"
t2 = "test2"
print(t1)
print(t2)
print(t1 + t2)
~~~

まず適当なところにテキストファイルを作成する。
今回は`C:\Users\ユーザー名\Documents\test`に作ってみる。

フォルダを開いて`右クリック`→`新規作成`→`テキストドキュメント`でテキストファイルを作成して名前を`test.txt`にしておく。

メモ帳でもなんでもいいので`test.txt`を開いて先ほどのコードを書く。
![プログラムの実行_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/e718c0c9-7bf5-4bbf-af0d-78add59a5eeb.png)

上書き保存して`test.txt`を`test.py`にリネームする。![プログラムの実行_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/a26cd0c1-3c31-d3bb-ce15-44f694cd5c7c.png)

コマンドプロンプトかpowershellを起動してソースファイルを読み込んでみます。（今回はコマンドプロンプト）
コマンドプロンプトを開いたら以下のように`python`の後ろに半角スペースを入力してソースファイルのパスを入力してエンターを押すと実行結果が表示される。
`python  C:\Users\ユーザー名\Documents\test\test.py`
![プログラムの実行_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/8b629a43-621a-7152-6100-cde54047766a.png)

ちなみに対話モード中にソースファイルを読み込もうと`python  C:\Users\ユーザー名\Documents\test\test.py`と入力してもエラーが出て読み込めないので`ctrl+z`→`Enter`で対話モードを終了してから入力すること。
![プログラムの実行_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/2c7d6f78-1f7d-ad24-18d7-d1b71acae784.png)

### このままだとめんどくさい
ということで実際にプログラムを2つの手法で実行してみることができました。
しかしながら毎回shellを使って直接プログラムを実行するのは今回試しにやってみましたが結構めんどくさい。しかも構文のチェック機能やコードの補完機能もないので非常に不便ということが分かった。

なのでソースコードを書いたり実行する時にはエディタやIDEを使用するのがよいようです。

私は[前回](https://qiita.com/_starfields_/items/fb3b73db7fff41d567e4)VSCodeをインストールしているのでそれを使ってコードの記述、実行をやってみます。

# VSCodeをつかってみる
VSCodeは[前回](https://qiita.com/_starfields_/items/fb3b73db7fff41d567e4)インストールしてPythonの拡張機能もインストール済みのため、さっそく起動して使用していきます。
使い方は以下を参考にしました。

https://docs.microsoft.com/ja-jp/learn/modules/python-install-vscode/

https://rinatz.github.io/python-book/ch01-02-hello-world/


### 作業ディレクトリを作成する
まずは作成するソースコードを保存する作業用のディレクトリ(フォルダ)を作ります。

参考にした記事ではどちらもホームディレクトリの直下にプロジェクトのディレクトリを作っているようですが、私はホームディレクトリが汚くなるのが嫌で、パスも短く済ませられそうなのでCドライブ直下にフォルダを作成してその中に各プロジェクトの作業用ディレクトリを作っていこうと思います。

ディレクトリの作成は参考先でコマンドを使用していたので従ってやっていきます。
（エクスプローラーで作っても別にいいんじゃないかと思いましたが練習のためやってみます。）

コマンドプロンプトを起動して以下のコマンドで設定します。

~~~
cd hogehoge(ディレクトリのパス） 
#現在のカレントディレクトリ（現在作業している場所）をhogehogeに設定

mkdir hogehoge
#カレントディレクトリにhogehogeというディレクトリを作成
~~~
![プログラムの実行_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/4ef66d9f-1cbd-afbb-ccba-c48069d42ae5.png)

これで以下のような構造のディレクトリを作成できました。今回は`C:¥WorkSpace¥Python¥Practice`の中で作業をしていきます。

~~~
C:¥WorkSpase
└─Python
    └─Practice
~~~

### VSCodeで作業ディレクトリ（フォルダ）を開く
コマンドプロンプトで作成したディレクトリをVSCodeで開きます。
先ほどの画像の③と④がその作業になります。

:::note
[前回](https://qiita.com/_starfields_/items/fb3b73db7fff41d567e4)VSCodeをインストールした際にPATHへの追加を行っているため、④のように`code`という名前だけでコマンドからVSCodeを起動できました。
`code`の後ろに書いてある`.`はカレントディレクトリを意味しますのでカレントディレクトリをVSCodeで開くというコマンドになります。

:::

VSCodeが起動するとこんな画面が出てきますが自分で作成したディレクトリ（フォルダ）ですので自分を信用して親フォルダの信用の項目にもチェックを入れて信用しますのボタンをクリックしましょう。
![プログラムの実行_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/6337c054-016f-745c-db1e-8e35d3421002.png)

左側のエクスプローラーの欄に指定したディレクトリが表示されていれば成功です。
私は`Practice`を作業フォルダに設定したのでそのように表示されています。
![プログラムの実行_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/d1fbd678-3e9a-cec3-918a-033801cccc03.png)

:::note
作業フォルダはVSCodeの`ファイル`→`フォルダーを開く…`からダイアログボックスで変更することも可能です。（私的にはディレクトリ（フォルダ）の作成もフォルダをVSCodeで開くのもエクスプローラーやVSCodeのGUI上でやる方が分かりやすかったかもしれません。）
![プログラムの実行_9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/c5a5cc0a-4362-efee-7244-2b1bd6709e61.png)
:::

### ソースファイルを作成する
ソースファイルを管理するディレクトリは作成出来たので、ソースファイルを作成していきます。

エクスプローラーの欄の`PRACTICE`のタイトルバーにマウスカーソルを移動するとアイコンが現れるので`新しいファイル`をクリックします。
![プログラムの実行_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/8bdcb0d5-031b-308e-1ca2-b3a9253c347a.png)


テキストボックスが現れるのでソースファイルの名前を拡張子(.py)も含めて記入して、エンターキーでファイルを作成します。
今回はファイル名を`hello.py`にしました。
![プログラムの実行_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/92e14ef4-f77e-c2b0-bd8d-f061046e0020.png)

### ソースコードを書いてみる
ソースファイルを作成すると、下の画像のように作成したソースファイルのエディター画面が表示されるので、画面に次のコードを記述します。
コードの内容は`print`という機能を使って`hello,Python!`という文字列を表示させるものです。

~~~hello.py
print("hello,Python!")
~~~

![プログラムの実行_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/43f70ad8-c03f-95f9-f00b-f2c07085fe22.png)
![プログラムの実行_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/6e38eef3-674d-1b9c-da39-0929f82b467e.png)

記述したら`ファイル`→`保存`(または`Ctrl+s`)でソースファイルを保存します。
![プログラムの実行_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/083d5fbe-d144-9bed-6db1-63636d129606.png)

### プログラムを実行する
ソースファイルは作成できたので実際に動かしてみます。
まず`表示`→`ターミナル`または`ターミナル`→`新しいターミナル`でターミナルを開きます。
![プログラムの実行_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/a7e3312f-935c-99b5-3e5f-09bd451e9e91.png)

ターミナルを開いたら`python hello.py`と入力してエンターキーを押します。
するとすぐ下に`hello,Python!`と表示され、これでVSCode上でプログラムを動かすことに成功したことを確認できました。
![プログラムの実行_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/790da744-2854-ece2-7f2e-99a16853af29.png)

:::note
エディタ画面右上の`Run Python File`のボタンを押すか、`表示`→`コマンドパレット`でコマンドパレットを表示して`Python: Run Python File in Terminal`のコマンドを実行することでもプログラムを実行することができます。
![プログラムの実行_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/c2429abc-f6d1-126e-e248-ff7b4261ba90.png)
![プログラムの実行_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/8933df1a-e626-8c21-10cd-11d35ee5d6b6.png)
:::

今回はここまでとします。
次回はノートブックという機能を使用してみたいと思います。

# 用語メモ
### shebang、シバン、シェバン

参考にした記事（私個人的にはガンマソフト様の記事が分かりやすかった）

https://rinatz.github.io/python-book/ch01-02-hello-world/

https://qiita.com/takey/items/ae2124531fb57a197b22

https://qiita.com/mohira/items/566ca75d704072bcb26f

https://akuruhinode.hatenablog.com/entry/2020/11/22/150235

https://gammasoft.jp/python/python-shebang/

今回の記事には出てきていませんが、[今回参考にしたサイト](https://rinatz.github.io/python-book/ch01-02-hello-world/)でソースコードの最初に`#!/usr/bin/env python`という記述がありました。
この部分はshebang(シバンまたはシェバン）というものらしい。

シバンはソースコードを実行する際に使用するインタープリタを指定するために記述するものとのこと。
私のようにWindows環境でPythonのバージョンも複数ではない場合、自身のみで開発を行うのであればシバンは必要ではない（そもそもWindows自体はシバンに対応しておらず、Pythonランチャで仮想的に解釈している）らしい。

しかし、ソースファイルを共有することを考えた場合、使用するバージョンをそろえるためにも記述した方がよいらしい。
使用するOSによっても扱いは異なり、MacやLinuxでは記述は必須とのこと。

また、記述の形式もOSにより異なりPython3で起動するように記述するには以下のようになる。
~~~
Windows
#! python3
Mac、Linux
#! /usr/bin/env python3
#! /usr/bin/python3
~~~

Windowsでは`#! Python3`のみで動くらしいのだが、この形式ではMac、Linuxでは認識されない。逆にWindowsでは`/usr/bin`というディレクトリはないが、`#! /usr/bin/env python3`と書いてもPythonランチャーがうまいこと認識して機能するらしい。

>スクリプトファイルの先頭の行が #! で始まっている場合は、その行はシェバン (shebang) 行として知られています。 Linux や他の Unix 系 OS はこうした行をもともとサポートしているため、それらのシステムでは、スクリプトがどのように実行されるかを示すために広く使われます。 Windows の Python ランチャは、Windows 上の Python スクリプトが同じ機能を使用できるようにし、上の例ではそれらの機能の使用法を示しています。
>Python スクリプトのシェバン行を Unix-Windows 間で移植可能にするため、このランチャは、どのインタプリタが使われるかを指定するための大量の '仮想' コマンドをサポートしています。サポートされる仮想コマンドには以下のものがあります:
>/usr/bin/env python
>/usr/bin/python
>/usr/local/bin/python
>python
引用：https://docs.python.org/ja/3/using/windows.html?highlight=shebang

なので`#! /usr/bin/env python3`と書いておけばMacやLinux環境で実行した際にも機能するので一般的にそう書くらしい。