プログラミング忘備録

プログラミングやゲームに関することをつらつらと

Pythonでのプログラミングをするためには、どのソフトを使えばいいのか?_1

私は仕事で数年プログラムを勉強しただけの、いわゆる「底辺エンジニア」です。

参考書を読みながら、さまざまな環境でPythonプログラミングをしているうちに、それぞれのソフトの使い勝手の良さや悪さがわかってきたような気がするので、それをまとめてみました。

前提

  • 底辺エンジニア目線であり、上級者となるとまた違うかもしれない
  • お仕事の場合、プロジェクトに合わせた環境が必要(OSがWindowsと決まっている場合は当然それにあわせなくてはならない)
  • 経験上、研究や開発の段階ではOSにLinuxUbuntuで十分)を使うことが多い
  • 他にもソフトは色々あるが、インストールしてから実行するまでの手順がシンプルなもののみ記載
  • 嘘は言ってないつもりですが、一部の情報が間違っているかもしれませんので、その点はご容赦を

先に結論だけ

おススメなのは以下の3つです。

  • Anaconda:Pythonの環境構築やライブラリ管理に便利なツール
  • VSCode:厳密には環境というより、コードエディタに近いもの
  • Google Colaboratory:ブラウザで簡単にPythonを実行できるプラットフォーム

・とりあえず何かをやってみたい・プログラムを実行してみたい
Google ColabratoryやAnaconda
・結果をGUI表示したり、できる限り難しいコマンドを使わずにアプリを作ってみたい
→Anaconda
GPULinuxを使う等、実践的な業務も見据えたPythonの勉強をしてみたい
VSCode


各ソフトの長所と短所

とりあえず、代表的なソフトとして4つを挙げてみました。
ここで紹介しているソフトは、「Pythonプログラミングを書いて、実行できるようにするための道具」という意味です。

Anaconda (WindowsLinuxMacでオススメ)
・長所
・Spyderは見た目にも非常にわかりやすい環境(IDE)である
・マウス操作での実行が簡単
・短所
・ソフトの起動がけっこう重い
・コードの補完性能は他のよりも低い気がする(邪魔になることが多い気がする)
・終了時の画面をそのまま開いてはくれない(設定が必要かも)
・Anaconda Nabigatorにある全てのソフトを使いこなすにはそれなりに知識と経験が必要
・AnacondaのAIは、モデルのファイルサイズが膨大だし、ブラウザでChatGPTに聞いた方が使いやすい(わざわざAnacondaのAIを使う意味はない気がする)
・conda含めて、会社の規模によっては商用利用が厳しい(似たような、mini-condaならまだ使えるかも)

VSCode (WSL・Linuxでオススメ)
・長所
VSCode自体は動作の軽いエディター
拡張機能を使うことで、色々な機能が使える
・短所
・カスタマイズ性は広いが、自分なりのカスタマイズを設定するまでが大変
Python自体は別途インストールが必要

Google Colabratory (Web上で使える)
・長所
・ユーザー登録するだけで使える
・制限はあるが、GPUが使えるので、AIモデルの作成も可能
・短所
・Jupyter Notebookみたいな感じでクセがある
Google Drive上でも、ファイルへアクセスするのは難しい

Docker
・長所
・(一応)どのOSでも環境の再現が可能
・短所
・勉強のハードルが非常に高い(Dockerの仕組みやDockerコマンドの知識が必要)
・複数のコンテナファイル(環境)を作ると重い

Anaconda (WindowsLinuxMacでオススメ)

・長所
 ・Spyderは見た目にも非常にわかりやすいソフトである
 ・マウス操作で実行ができる
・短所
 ・ソフトの起動がけっこう重い
 ・コードの補完性能は他のよりも低い気がする
 ・前回開いた画面をそのまま開いてはくれない(設定が必要かも)
 ・Anaconda NabigatorにあるSpyder以外の機能を使うのにはそれなりに知識が必要
 ・AnacondaのAIは、モデルのファイルサイズが膨大だし、ブラウザでChatGPTに聞いた方が使いやすい(わざわざAnacondaのAIを使う意味はない気がする)

何も知らない人が「プログラムの動く仕組みはわからなくてもいいから、とりあえず簡単なプログラムを動かしたい。」とか「仕事で使うわけではないので、自作のそれっぽいアプリを作成したい」とかの場合はAnacondaのSpyderがおススメです。WindowsMacを搭載した、いわゆる一般的なパソコンでアプリを作りたい場合も同様です。
メモリ等の計算リソースが十分にある場合はこれを使いましょう。
私は昔、CLI(黒い画面でコマンドカタカタ打つような奴)の使い方もわかっていなかったので、printやplt.show()で簡単に画面が表示されるSpyderは使いやすかったです。

なお、「Anaconda」とは要するにプログラミングするための色々なソフトが詰まったプラットフォームソフトで、その中の機能の1つに、Pythonのコードを書いて実行ができるソフト「Spyder」がある、というイメージです。
インストールはこちらのURLから。
www.anaconda.com

URLを開くとこんな画面になります。

「Skip registration」にいくと、インストーラーを選ぶ画面になります。
自分の使っているOSに合ったものを選びましょう。

インストーラーのダウンロードが完了したら、「Anaconda Navigator」を実行します。

色々な機能がありますが、ここではSpyderの下の「Launch」ボタンをクリックしてSpyderを開きます。Spyderを開くと、いかにもコードを書けそう画面が出てきます。

とりあえず、コードを書けそうな画面に

print("Hello")

と打ってみましょう。F5キーまたは上の再生ボタンみたいな三角を押せば実行できます。
(画像は一部黒塗り)

右に、

Hello

と表示されたと思います。基本的に出力はここに表示されます。実行できなかった場合のエラーもここに表示されるので、実行したらこの画面を見ることにしましょう。

せっかく画像が表示される環境を使っているので、画像も表示してみましょう。
良い感じの画像が思いつかなかったので、ChatGPTにコードを書いてもらいました。コピーして貼り付けて実行してみましょう。

import numpy as np
import matplotlib.pyplot as plt

img = np.random.rand(100, 100, 3)  # 100x100のランダムなRGB画像
plt.imshow(img)
plt.axis("off")
plt.show()

右上に画像が表示されました。この画像は「右クリックを押す」または画像すぐ上の保存ボタンから保存することができます。

さて次に、ライブラリについて説明します。
例えば、「Pythonで画像を開いて編集して、保存したい」という要望があったとき、自分で一から画像ファイルを開いたり閉じたりするコードを自作するのは非常に難しいです。そんな時は、OpenCVやNumpyといった、Pythonライブラリを使えば解決できます。
Pythonライブラリとは簡単に言うと、誰かが何かしらのタスクのために作ってくれたプログラムコードです。
OpenCVを使えば、画像を開いたり保存したり編集することができますし、Numpyを使えば数値計算のための色々なコードが簡単に書けます。

上のコードだと、import numpy~という部分で、数値計算ライブラリのNumpyを使うことを、import matplotlib~という部分でMatplotlibというグラフ等を表示するためのライブラリを使うことを宣言しています。その後、np.~とかplt.~とかの部分で、ライブラリを使った何かしらの処理をしています。
Anacondaはとても親切なので、デフォルトで基本的なライブラリがインストールされています。なので、ただ実行したいだけなら、あまり気にする必要はないかもしれません。
余談ですが、Google Colabratoryも必要なライブラリはある程度インストールされており、使いやすいです。しかし、VSCodeを使う場合は、必要なライブラリをインストールする必要があります。また、AnacondaやGoogle Colabratoryであっても、インストールされていない場合はインストールが必要です。

ライブラリに関連して、仮想環境についても説明します。仮想環境は主にパッケージを分けて管理するために使われます。例えば
・仮想環境1にライブラリAをインストール
・仮想環境2にライブラリBをインストール
とした場合、仮想環境1ではライブラリAが使えますが、インストールされていないライブラリBは使えません。
逆に、仮想環境2ではライブラリBが使えますが、インストールされていないライブラリAは使えません。
複数のアプリを開発したいときに、対応した仮想環境を用意してあげて、それぞれに使う必要があるライブラリのみをインストールすることで、シンプルな環境を作ることができます。

また、
・仮想環境1にライブラリAとライブラリCの最新版をインストール
・仮想環境2にライブラリBとライブラリCの旧バージョンをインストール
といった使い分けができます。複雑なプログラムでは、「AライブラリではCライブラリの最新バージョンにしか存在しない関数を使う」とか「Bライブラリは旧バージョンのCライブラリじゃないとエラーが発生する」とかの競合性によるエラーが本当によくあります。「1つの環境内で1つ目のアプリを作った後、別のアプリを作った。そのあと、最初のアプリをもう一度使った時に、なぜかエラーが出た。」みたいなことが起きないように、最初から環境を分けておくのがいいのです。

以上、アプリごとに仮想環境を使いわけることで、
・最小限のライブラリ構成ができる(ライブラリがごちゃごちゃしない)
・ライブラリのバージョンの競合性を解消した実行可能な環境が作成できる
といったメリットがあります。なお、このライブラリのバージョンはGithubなんかに書かれていることが多いです。
Pythonを使うコードでrequirements.txtというファイルを見ると(ファイルがない場合もありますが)、

matplotlib ==(バージョン名)

などと書かれており、どのライブラリのバージョンを使えばよいかがわかります。(論文や非公式だと、ごくまれに嘘ついてるコードもあります)。

私はライブラリのバージョン管理にcondaではなく、pipをメインで使っているのですが、pip なら黒い画面で、

pip install -r requirements.txt

とコマンドを打てば、ファイルを用いたライブラリのインストールが簡単にできます(pipとcondaの違いについては後述)。


それでは、Anacondaでの仮想環境の確認とインストールの方法について確認しましょう。
まず、Anaconda Navigatorの画面に戻って、自分の使っている仮想環境を確認します。
画像の上の表示を見ると、base(root)と表示されています。これが、今使っている仮想環境です。実はSpyderの画面にもこの仮想環境名は右下に表示されています(conda: base と表示)。

今使っている仮想環境にインストール済みのライブラリを確認するため、Environmentsのところをクリックします。
表示された画面を順番に説明しましょう。デフォルトではbase(root)という環境のみが表示されており、右側にライブラリ一覧が表示されています。
ライブラリ一覧の上にある「Installed」から「Not Installed」を選べば、インストールされていないライブラリを選べます。また、右の虫眼鏡のところから、ライブラリの名前を検索することもできます。
(虫眼鏡の検索窓に「Serch Packages」とありますが、パッケージとライブラリの違いは割と曖昧です。本ブログでは、とりあえずライブラリで表記を統一します。)

デフォルトでは仮想環境のbaseに、有名なNumpyやPandasといったライブラリは既にインストール済みです。
適当なプログラムを実行するだけなら、これでいいのですが、ライブラリがごちゃごちゃしているので、新しい環境を作ってみましょう。
新しい環境は左下の「Create」から作ることができます。自分がわかりやすい環境名を書き、Pythonのどのバージョンを使うか(ライブラリとの競合性もありますが、特になければPython3.~系を使うのが良い)を選択して、「Create」ボタンを押しましょう

環境が作成出来たら、以下のように選択できます。ここには最低限のライブラリが入っているようです。
なので、NumpyやPandasといったライブラリは入っていませんし、それを使うようなコードを実行するとエラーが出ます。
ライブラリを使用したい場合は、右側のパッケージ一覧からNumpyを検索して、インストールすれば使えるようになります。

それでは、この最低限のライブラリだけが入っている新しい環境で実行してみましょう。左側のバーから「Home」を選択して、上の赤枠で示したところを先ほど作成した仮想環境名に変更します(ここでは、blog_test)。
そして、この仮想環境ではSpyderを使う準備が整っていないので、Spyderの下の「Install」から仮想環境で使うSpyderをインストールしておき、「Launch」で実行します。

先ほどのコードを実行すると、右下に「No module named 'numpy'」エラーが出るはずです。
Numpyのライブラリをインストールしていないために、発生するエラーです。

コード実行にはNumpyとMatplotlibのライブラリが必要なので、ここではコマンドを使って、NumpyとMatplotlibの2つのライブラリをインストールしてみましょう。
右下の
In [1] : のところに([]内の番号はそれぞれで違う)

conda install numpy
conda install matplotlib

と入力した後、Enterを押してみましょう。しばらく待つと、右下に

done
Preparing transaction: done                          
Verifying transaction: done
Executing transaction: done

という表示がされます。先ほど入力したコマンドはざっくりいうと、「conda使って、ライブラリをインストールして」という意味です。
Anacondaで作った仮想環境は基本的に、condaを使ってライブラリを管理します。同じようなコマンドとしてpipもありますが、

conda・・・環境とライブラリ管理
pip・・・ライブラリ管理

です。なお、Anacondaの仮想環境ではcondaだけではなくpipも入っており、pipを使ってインストールすることもできますが、あまりおススメできません。
なぜなら、condaでインストールしたライブラリとpipでインストールしたライブラリの競合性でエラーが出ることがあるからです。
「一部のライブラリだけpipでインストールしたあと、condaでいくつかのライブラリをインストールしたらエラーが発生。」みたいなケースもあり、原因特定に時間もかかるので、基本的にはcondaだけでライブラリ管理を行うのが良いと思います。ただし、VSCodeの章ではcondaは使わずに、pipを使ってライブラリを管理します。

さて、無事に新しい環境でもライブラリをインストール出来たら、実行してみましょう。
ライブラリがインストール出来ていれば、エラーなく実行できるはずです。

念のため、Anaconda Navigatorから仮想環境のライブラリも再確認してみましょう。
インストールしたのはNumpyとMatplotlibだけですが、他の必要なライブラリ(依存関係にあるライブラリ)も一緒にインストールされているので、よくわからないライブラリもたくさんインストールされているはずです。
とりあえず、先ほどの作った仮想環境にはなかった、NumpyとMatplotlibが「Installed」に表示されていればOKです。

AnacondaとSpyderの機能(余談)

Anaconda Navigatorからは色々なソフトが使えます。今回は見やすくて便利なSpyderというソフトを使いましたが、VSCodeでコード編集と実行もできますし、Jupyter Notebook はGoogle Colaboratoryのようなにコードを書いて実行することができます。Edublockではブロック状のパーツを組み合わせて、プログラムができますし、Anaconda AI NavigatorというChatGPTのようなAI機能も使えます(ただし、AIモデルは別途ダウンロードが必要)。

また、Spyderにも使いやすい機能が色々とあります。コードの行番号が表示されているところをクリックすれば、赤い点(breakpoints)がつけられます。その後、「Debug」を実行すると、breakpointsでコード実行が止まるので、コード実行中の変数の値を確認するといったことができます。変数の値は右上(グラフが表示されていたところ)の「Variable Explorer」を選ぶと、確認することができます。
他にも、「Code Analysis」(コード分析、エラー等を検出)や「Format」(ルールに従って、コードをわかりやすい見た目に修正してくれる)の機能なんかがあります。

Anaconda(Spyder)はVSCodeに比べて動作が重いですが、その分、使える機能やソフトが全部乗せされています。
そのため、AnacondaはPCのことが良くわからない人(特に、黒い画面使ってコマンド打ったことない人)がPythonプログラミングを始める環境として最も適していると思います。
(仕事で使うことは権利関係上、難しいかもしれませんが、自学で始めるには十分でしょう。)
まだ、プログラムをやったことない学生等であれば、Anacondaを使ってみてください。

だいぶ長くなってしまったので、VSCodeGoogle Colabratory、Dockerの使い方については次回以降
Pythonでのプログラミングをするためには、どのソフトを使えばいいのか?_2(VSCodeと拡張機能) - プログラミング忘備録