【初学者向け】Python処理系について

## はじめに


##### 本記事は以下の方を対象にしています。
・Python処理系について知りたい方
・主なPython処理系の実行方法について知りたい方

## Python処理系の概要

#### Python処理系とは何か
Python処理系とは、Pythonプログラムを実行するために必要なソフトウェアのことです。Pythonはインタプリタ型のプログラミング言語であるため、プログラムを実行するためにはPython処理系が必要です。

>インタプリタ型
>=>プログラミング言語で書かれたソースコードを逐次解釈しながら実行するプログラムのこと
>
>参考：[Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF)

## Python処理系の種類
Python処理系には、**CPython、Jython、IronPython、PyPy**などがあります。
このほかにも多くの種類が存在します。[こちらの記事に](https://qiita.com/chromia/items/f2facd0637426b4d06c4#brython)わかりやすくまとめられているので、ぜひ参考にされてください。Python処理系が網羅されています。

今回は以上４つの処理系について説明いたします。


## Python処理系の概要と特徴
#### CPython
CPythonは、Pythonの標準処理系であり、最も一般的に使われています。
CPythonは、拡張モジュールの作成が容易なので、多くのPythonパッケージがCPython上で動作するように作られています。また、CPythonは、Pythonの標準ライブラリを含んでいるため、開発者がすぐに使用できるようになっています。

処理系を特に意識していなければ、Pythonファイルを実行する際はCPythonを利用しているかもしれませんね。


#### Jython
JythonはJavaプラットフォーム上で動作し、JavaとPythonを統合することができます。
Jythonは、Javaアプリケーション内でPythonコードを実行することができます。また、Jythonは、Javaライブラリにアクセスすることができるため、JavaとPythonの組み合わせで、柔軟かつ強力なアプリケーションを開発することができます。



#### IronPython
IronPythonは、.NET Framework上で動作し、Pythonと.NETを統合することができます。
IronPythonは、C#やVB.NETなどの.NET言語からPythonコードにアクセスすることができるため、.NETアプリケーションにPython機能を統合することができます。またIronPythonも、Pythonの標準ライブラリを含んでいるため、開発者がすぐに使用できるようになっています。


>.NET Framework
＝＞Web、Windows、Microsoft Azure 用のアプリを構築するための開発プラットフォーム。
>Windows で Web サイトやサービス、デスクトップ アプリなどを実行するサポートを行う。

IronPythonは.NET Framework上で動作するため、Windows環境で最も一般的に使用されます。

#### PyPy
PyPyは、CPythonと互換性を持ちながら、高速に実行するために開発されたPython処理系です。
PyPyは、PythonコードをJITコンパイラでコンパイルすることで、CPythonよりも高速に実行することができます。また、PyPyは、CPythonと同じPython仮想マシンを使用しているため、CPythonと同様にPythonパッケージを利用することができます。

>JITコンパイラ
>＝＞実行時コンパイラ（じっこうじコンパイラ、Just-In-Time Compiler、JITコンパイラ）とは、
>ソフトウェアの実行時にソースコードをコンパイルするコンパイラのこと。
>
>引用元：[Wikipedia](https://ja.wikipedia.org/wiki/%E5%AE%9F%E8%A1%8C%E6%99%82%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E>3%83%A9)



## Python処理系の利用方法

Python処理系でPythonコードを実行するには、以下の手順に従います。

#### CPython
CPythonはデフォルトで実行することができます。
```
$ python <実行したいファイル名>.py
```



#### Jython

##### ①Jythonのインストール
 [Jythonの公式ウェブサイト](https://www.jython.org/)から、OSに合わせたバージョンのJythonをダウンロードしてインストールします。

##### ②Jythonの実行:
 ターミナルまたはコマンドプロンプトを開き、以下のようにJythonを実行します。


```
$ jython <実行したいファイル名>.py
```




 Jythonの対話モード: ターミナルまたはコマンドプロンプトを開き、以下のようにJythonの対話モードを開始します。


```
$ jython
```

これにより、対話的にPythonコマンドを入力して実行することができます。



**Webアプリケーション実行:** Webフレームワークを選択して、Jythonで動作するように構成します。例えば、DjangoフレームワークはJythonで動作するように構成できます。

コマンドラインからJythonを起動して、Webアプリケーションを実行します。

```
jython <実行したいファイル名>.py runserver
```



#### IronPython

##### ①IronPythonのインストール
まず、[公式のIronPython Webサイト](https://ironpython.net/) から最新バージョンのIronPythonをダウンロードしてインストールします。

##### ②IronPythonスクリプトの実行
IronPythonでスクリプトファイルを実行するには、以下のようにコマンドラインでipyとスクリプトファイルのパスを指定して入力します。

```
$ ipy <実行したいファイル名>.py
```

これにより、ファイルがIronPythonで実行されます。

**IronPythonの対話モード:** ターミナルまたはコマンドプロンプトを開き、以下のようにIronPythonの対話モードを開始します。

```
$ ipy
```

#### PyPy

##### ①PyPyのインストール
まず、[公式のPyPy Webサイト](https://www.pypy.org/download.html) から最新バージョンのPyPyをダウンロードしてインストールします。

##### ②PyPyスクリプトの実行
PyPyでスクリプトファイルを実行するには、以下のようにコマンドラインでpypyとスクリプトファイルのパスを指定して入力します。

```
$ pypy <実行したいファイル名>.py

```

これにより、ファイルがpypyで実行されます。

**PyPyの対話モード:** ターミナルまたはコマンドプロンプトを開き、以下のようにPyPyの対話モードを開始します。

```
$ pypy
```


## どのPython処理系を利用するか？
以下の点に注目し、使い分けるとよいでしょう。

**パフォーマンス**: 処理速度やメモリ使用量などのパフォーマンスに注目することが重要です。

**対応プラットフォーム**: 処理系が動作するプラットフォームやOSによって選択肢が異なるため、自分が使いたい環境に対応しているかを確認する必要があります。


## まとめ

今回の記事は、Python処理系を知らない方に向けて概要を説明いたしました。
Python処理系とは、「Pythonファイルを実行するためのツール」です。
実行方法も、インストールして冒頭の部分（「python」）
を変更するだけなので、とても手軽ですね。

ちなみに、私がPython処理系を知るきっかけとなった記事はこちら↓
[【競プロ用】Python高速化Tips](https://qiita.com/shoji9x9/items/e7d19bd6f54e960f46be)です。
同じPythonファイルを、処理系を変更するだけで実行速度が速くなります。
競プロには必須の知識ですね。

以上、閲覧ありがとうございました。

#### 参考
https://www.sejuku.net/blog/89419