Python初学者のスシテンコです。
巷では「Pythonで機械学習を!」だとか「みんなプログラミングを覚えるべき!」だとか、そういったポジショントークがはびこっています。
そのため、「試しに学んでみようかな…」と悩んでいる方も多いかと思います。
かくいう私もその一人です。
しかしながら、Pythonを学ぶにあたって障壁となるのが「環境構築」です。
この環境構築ですが、ざっくり言うと「書いたコードを気軽に動かすために、パソコンに前提となるアプリや条件の記載されたコードやコマンドを用意する必要がある」のです。要は「Pythonでアレコレ試行錯誤して遊ぶまでがめんどくさい」のです。
ある調査では「プログラミングを学びたいけど、環境構築でつまづいて諦めた」という声が9割を越えたとの衝撃の結果もあります。
それぐらい環境構築はめんどくさいし、初学者がプログラミングを学ぶにあたっての障壁となりやすいのです。
ちなみに結論から申し上げますと、Pythonはこの環境構築をしくじると
何度もアプリのインストールをし直す
モジュールと呼ばれる機械学習が手軽に使えるPythonの肝が上手く動かせずに時間を無駄にする
など、学習意欲が削がれる罠が大量に待ち受けています。
そこで、本記事では私自身の試行錯誤の結果、Pythonで快適に遊びまくれる開発環境構築に関して、知見を蓄積させていこうかと思います。
※この記事を読むにあたっての注意書き
1.PC内でexe形式で立ち上げるソフトウェアは「アプリ」という名称で表現しています。
Python
公式のPythonのパッケージをインストールすると、OS内でPythonが実行できるようになります。
後述の「IDLE」も同時にインストールされるため、エディタとインタプリタも入手できます。
なお、このPythonパッケージのインストールの際に、環境変数PATHの設定をしっかりしないとPython実行時にディレクトリ指定関連のエラーが頻発するため、下記の記事などを参考にしておくといいでしょう。(私も完全に原因や仕様を把握してません)
▼環境変数PATHの設定
IDLE
IDELは、Pythonをダウンロードしたら一緒にダウンロードされる「インタプリタ」の名称です。
インタプリタとは、人間に分かりやすい高水準プログラミング言語(高級言語)で書かれたコンピュータプログラムを、コンピュータが解釈・実行できる形式に変換しながら同時に少しずつ実行していくソフトウェア。英語の原義は「通訳者」。 https://e-words.jp/w/インタプリタ.html
用途としては、数行のコードを実行する時などに使います。
たとえば、
print('Hello,World')
と入力すると
Hello,World
と表示されます。
プログラミング言語初学者向けにわかりやすく説明すると
4+3
は
7
と表示されます。
「4+3」という整数の足し算を実行してくれるように、printというPython特有の指示も実行してくれるわけです。
IDLEはシンプルな数行のコードを書いて実行結果を確認する際に使います。
手軽なのでプログラミング言語としてのPythonの型や性質を一から順に学習していく際に使うことが多めです。
paiza.IO
ブラウザ上でPythonを始めとしたプログラムを書いたり実行できるサイトです。
下の「実行」ボタンを押した段階で、URLが自動生成されます。
URLを知っていれば誰でも書いたコードを閲覧できるため、試しに書いたコードなどを共有する場合には便利です。
私は、新しく習得するコードのサンプルをprintしながら覚えてメモする際に使います。
ただし、Pythonで本格的に実用的なコードを書く際に必要になる「モジュール」が用意されてないため、実行できるコードに制約がある点が難点です。
コマンドプロンプト(ターミナル)
Windowsに標準搭載されているシェル系のアプリです。Python関係なくOSに対して色々命令できます。
.py形式で書かれたコードをぶち込んで動作確認する際に使います。
私の場合、Qiitaで丸コピペしたコードも「とりあえずコマンドプロンプトにぶち込んで動くかどうか確認」という適当さで試してます。
下の検索窓に「cmd」と入力するだけで起動する手軽さも便利です。
このシェル系のアプリですが、自身のPCからサーバーに接続して直接操作する時なども扱うことが多いです。
そのため、基本的な概念や操作方法を理解しておくといいでしょう。
▼参考リンク
Anaconda
Pythonを学ぶにあたって、前述の公式パッケージと同様にインストールが推奨されているPython開発用アプリが「Anaconda」です。
AnacondaはPythonの実行環境として知られていますが、本来、データサイエンスのためのいろいろなツールやライブラリの実行環境で、Pythonにかぎらず、さまざまなコマンドやプログラミング言語も提供しています。 Anacondaは、独自にAnaconda用のソフトウェア資産の公開サービスを運営しており、データサイエンス用のソフトウェアなどを中心に、多くのソフトウェアが利用できるようになっています。PyPIで公開されているソフトウェアも、全てではありませんが主要なソフトウェアはAnacondaにも登録されています。 https://www.python.jp/install/anaconda/
Python関連の書籍によっては、公式Pythonパッケージと同様にインストールが推奨されているアプリです。…が、Python公式パッケージと同時利用するとあらぬエラーの原因になりがちという問題があります。
とくにPythonを使うにあたって肝となる「モジュール」のインストールコマンドやインストール先が違うため、そのあたりで色々な問題が頻発します。
このAnacondaを導入するメリットですが、大半のメディアでは「ライブラリにソフトウェアがたくさん入ってて便利」と紹介されています。ですが、実際にPythonを使うにあたって、必要のない機能は予期せぬエラーを招く結果になるため、初学者の段階ではAnacondaはインストールしなくていいと思います。
少なからず、同じOS内でPython公式パッケージとAnacondaを同時に使うのはエラーの要因になりやすいため非推奨です。
Jupiter Notebook
「Jupyter Notebook」は、PythonなどをWebブラウザ上で記述・実行できる統合開発環境です。
前述のAnacondaインストール時に付属しますが、JupiterNotebookのみのインストールも可能です。
使用感としては、前述の「paiza.IO」をより開発環境に特化したUIという感じで、視覚的にも非常にわかりやすかったです。
…が、WEBブラウザ上でコードを書いたり実行する理由がなければ、初学者のうちは使わなくても問題ないと思います。これも前述のpaiza.IO同様、Pythonで高度な処理を行うにあたり必要なモジュールが初期設定のままでは使えないからです。
どうしても使いたい場合は、次項で解説する「Docker」での環境構築にてJupiter Notebookでの開発環境構築方法が解説された参考記事を紹介するため、そちらをご参考ください。
▼参考リンク
Docker
Dockerとは、Docker社が提供する「コンテナ型仮想化技術」 を実現するアプリです。
ざっくり言うと「パソコンの中に仮想でもう一つのパソコンを作る」ことになり、これで前述のような「同じパソコンの中にPythonとAnacondaが同居することで生じる問題」などに対処しやすくなります。裏を返せば「自身のパソコン(OS)からDockerで独立したPython環境を隔離する」ことになるわけです。
▼参考リンク
Dockerを利用したPythonの環境構築は、下記の記事および動画を参考にすれば、まったく同じ環境の実現が可能となります。
上記記事内で紹介されている「Dockerfile」についてのより詳しい解説は以下の記事にもあります。
ちなみに私は、現職エンジニアymnさん(Twitter,Qiita)の紹介でこのDockerを導入しました。
このDockerでの開発環境に統一することによって、
・Dockerのコンテナ作成ファイルを渡せば誰でも同じ環境が再現可能(自身のPCを変える場合も)
・コンテナを削除することで仮想環境を手軽にリセットできる
・結果、自身のOS環境依存の問題に悩まされずに済む
などのメリットが得られます。
また、必要なモジュールのインストールもDockerfileに「RUN」コマンドで指定するだけで済むので、試行錯誤するうちに不必要なモジュールが増えたり、その影響でエラーが生じるリスクを劇的に下げられます。
Visual Studio Code
Visual Studio Codeは、Microsoft社の提供する無料のコードエディターです。略称には「VSCode」が使われます。
現職エンジニアにプログラミングについて聞くと高頻度でオススメされるアプリです。
前述のDockerと合わせて、なぜオススメされるか納得の使いやすさです。
プログラミング言語を書いてるとわかりますが、
「コードの型ごとに色が変わる」
「書くコードの形式(拡張子)を指定する」
「動かすためのディレクトリに移動する」
「実行のためにシェルを立ち上げる」
などの手間を、VSCode一つでほぼカバーできます。
初学者のうちは「一つのファイルでコードを書いて実行する」ことが多めですが、実用的なコードを書くに当たって「複数のファイルを取り扱う」ことが増えたり、「一つのファイルで書くには長すぎるコードを別のファイルに記述して管理」などの必要が出てきます。
そういった必要が出来てた際、Visual Studio Codeではエクスプローラーを確認(ディレクトリ構造の可視化)したり、管理(新規ファイルの作成など)も容易に行なえるため、非常に便利です。
▼Visual Studio Codeの公式ダウンロード先
自身のしたいことや学習状況によって環境構築を柔軟に切り替えよう!
以上、様々なPythonの開発環境構築についてご紹介してきました。
私自身が試行錯誤した結果、とくにPythonを学ぶにあたって障壁と感じたのが「環境構築の要因によりモジュールが正しく動かない」という問題です。この問題を手軽に解消できるのが「Docker + Visual Studio Code」という環境構築をしてしまうことです。
これにより、Qiita等で先駆者が公開しているコードをコピペすればほぼそのまま動いてくれますし、エラーが出ても環境特有の問題に頭を悩ます頻度は下げられます。
ただ、DockerもVisual Studio Codeも初学者の理解度によっては難しく感じて手軽ではないかもしれません。単に「Pythonとしてのコードの型を理解する」だけなら公式パッケージのみでOKです。ですが、本格的にPythonで書いたコードを動かしたいなら、環境の問題やモジュール関連のエラーは避けては通れない道です。
ですので、大事なのは目的に合わせて最適な環境でコードを書いて実行するということです。
私の場合は今のところ、
Pythonの型や実行結果を学習する →IDLE(Python公式パッケージ)
新しく学んだコードの応用を試してメモしたり共有する →paiza.IO
他人のコードコピペしてとりあえず実行 →コマンドプロンプト(+Edit with IDLE)
実際にコードを動かしたり書いたコードをまとめて管理する →Docker + VSCode
と使い分けております。
最終的には「Dockerによる仮想環境にて開発・実行、VSCodeにて書いたコードを管理」という形に落ち着かせたいです。
このように、何もコードを書いて実行するだけでなく、書いたコードの管理やそれに合わせた開発環境選びも、プログラミングを学んで実践するにあたり重要な要素となるため、ぜひ、ご自身に合った開発環境を見つけ出してみてください。