【Python入門】Pythonでコンパイル(バイトコンパイル)をしよう

今回はPythonでコンパイルをする方法について解説します。Pythonはインタプリタ型言語なのでコンパイルをする必要ありませんが、バイトコンパイルと呼ばれるコンパイルの方法があります。

Pythonについて解説している本やサイトでもコンパイルという言葉が出てきたら、それはバイトコンパイルのことかもしれません。

この記事では、

  • コンパイルとは
  • Pythonでよく使われる拡張子

などの基本的な内容から、

  • バイトコンパイルをする意味
  • バイトコンパイルをする方法

について、解説をしていきます。Pythonが動く基本的な部分を、ぜひ一緒に学習してみましょう!

コンパイルとは

まずはコンパイルとは何かについて知っておきましょう。コンパイルとは、人間が読めるようなプログラムをコンピュータが読めるような機械語に翻訳する作業のことです。

また、コンパイルをするためのソフトウェアを、コンパイラと呼びます。コンパイラ型言語には、CやC++などがあります。コンパイラ型言語はプログラムを書いたり、更新したりするたびにプログラムをコンパイラに通して機械語に翻訳をします。

一方、コンパイラが必要のない言語もあり、それらはインタプリタ型言語と呼ばれます。インタプリタ型言語にはPython、Perl、Rubyなどがあります。インタプリタ型言語は、実行するときに人間が書いたプログラムを一行ずつ翻訳していきます。

コンパイラ型言語は実行速度が早いけれどもバグを見つけるのが難しかったり、またインタプリタ型言語はその逆であったりとそれぞれにメリットやデメリットはあります。

ここまで読んでみて分かる通り、Pythonにはコンパイルという段階がありません。しかし、バイトコンパイルという方法で速度を向上させたりすることができます。

Pythonでよく使われる拡張子

バイトコンパイルについて学ぶ前に、Pythonでよく使われる拡張子について見てみましょう。Pythonでは、「.py」、「.pyc」ファイルをよく見かけます。

.pyファイルは、Pythonのコードを書いたファイルで、一番良く見かけるかもしれません。この.pyファイルを指定すると、書いたコードが実行されます。

.pycファイルはPythonでimportされたときに自動的に作られるPythonのコードになります。この.pycファイルはコンパイルされたPythonのコードです。

Pythonはインタプリタ型言語なので、「コンパイル?」と思った方もいるかもしれません。しかしこの.pycファイルが、バイトコンパイルされたファイルになります。

バイトコンパイルをする意味

ここで、バイトコンパイルをする意味について考えてみましょう。Pythonでコードを実行するときには、機械語に翻訳されて実行されます。ただ、毎回機械語に翻訳するすると無駄な部分まで翻訳されてしまいます。

そこで、.pycファイルを作っておいて、対応する.pyファイルが更新されるたびに.pycファイルを上書きして実行します。この.pycファイルがバイトコンパイルされたファイルになります。バイトコンパイルをすることで実行するまでの速度が速くなります。

あくまでも読み込んだり、実行するまでの速度が早くなるだけで、実行速度が早くなるというわけではありません。また、ファイルのやり取りでコードの中身を知られたくないときなども、この.pycファイルを渡せば実行はできてもコードの中身を見ることはできないファイルが出来上がります。

バイトコンパイルをする方法

ここからはバイトコンパイルをする方法について見てみましょう。バイトコンパイルは、Pythonのコードを実行するときにオプションをつけて実行することで.pycファイルを作ることができます。

今回はhello.pyというファイルのバイトコンパイルをしてみましょう。

python -m compileall xxxxx.py

バイトコンパイルを実行すると、__pycache__ディレクトリが作成され、.pycファイルが格納されます。

まとめ

今回は

  • コンパイルについて
  • Pythonの拡張子
  • バイトコンパイル

について解説してきました。普段は考えずに実行していたPythonのコードでも、どのように実行されているかがわかると興味深いですね。

バイトコンパイルはあまり使う機会がありませんが、少しでもパフォーマンスをよくしてみたいときはぜひ使ってみてください。

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

侍テック編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー