こんにちは。初めましての人もそうでない人も、
※以下、以前BloggerでUpしていた記事を移行した内容になります。
さて、今日はPythonのプログラミング……の前に。
"ライブラリってなぁに?"
"仮想環境ってなぁに?"
と言葉の意味がわからず、
"プログラミングって難しい、わかんない!!”
とつまずいてしまった方のために、全3回に分けて説明をしています。
初心者が大まかなイメージをつかめることを目的にしているので、厳密には違う部分が出てくるかもしれませんが、そこはご容赦ください。
最終回となる第3回では、Pythonにおける"仮想環境"という言葉の意味を説明していきます。
先に説明した"ファンクション"や"ライブラリ"という言葉のイメージを掴んでいることが前提ですので、まだお読みでない方は、先にそちらの記事をお読みください。
第3回 仮想環境ってなぁに?
先に注意書きです。
"仮想環境"という言葉自体は、Python以外でも出てきます。
ここで説明するのは、あくまでPythonにおける仮想環境の意味、になります。
Python以外の文脈で出てきた場合には意味が異なりますので、注意してください。
では本題、Pythonにおける"仮想環境"という言葉の意味について。
Pythonだと、"Anaconda"だとか"pip"だとか、そんな言葉とセットで"仮想環境"という言葉が出てきます。
Pythonでいう仮想環境とは、先ほど説明したライブラリなどを管理するための環境です。
……と言われても、よくわかりませんよね。
では、そもそもなぜライブラリを管理する必要があるのか、そこから説明していきましょう。
第2回で、ライブラリはたくさんのレシピ(=ファンクション)がつまった図書館のイメージだと説明しました。
さてこの図書館、随時新しいレシピ(=ファンクション)を用意したり、既にあるレシピもよりよく改良したりします。
あなたが図書館のレシピを利用するには、図書館にあるレシピを丸々、あなたが開発を行うPC等に入れる必要があります。
この図書館(=ライブラリ)のレシピを丸々入れることをインストールと言います。
当然、あなたがレシピを丸々入れた後にも、元の図書館では、レシピが日々更新されているかもしれません。
そのため、いつどの時点のレシピのセット(=ライブラリ)をあなたが入れたのかわかるように、バージョンという番号がライブラリには振られています。
さて、図書館のバージョンアップが行われる際、単純に新しいレシピ(=ファンクション)が増えるだけならいいのですが、削除されたり、レシピに必要な材料(=引数)や、逆にできあがる料理(=戻り値)が変更されてしまう場合もあります。
つまり、あなたの作成したプログラムがバージョン1.0.0のライブラリのレシピ(=ファンクション)を前提としていたのに、バージョン2.0.0のライブラリでは、必要なレシピ(=ファンクション)が消えてしまってプログラムが動かなくなってしまう!なんてことになる可能性があるわけです。
仮にこの作成済のプログラムをプログラムAとしましょう。
さて、あなたはプログラムAとは別に、新しくプログラムBを作りたいとします。
新しく作るプログラムBでは、バージョン2.0.0で新しく追加された便利なレシピ(=ファンクション)を使いたい。。。
そんな風に思うかもしれませんね?
その場合、
プログラムAではバージョン1.0.0のライブラリ、
プログラムBではバージョン2.0.0のライブラリ、
を使えるようにしたいわけです。
ここで、"仮想環境"の出番となるわけです。
このプログラムAやプログラムBに必要なライブラリをまとめて入れて管理するのが、"仮想環境"です。
要はこんな箱のイメージですね。
よく聞くAnacondaやpipとは、この箱にライブラリを出し入れ(インストール/アンインストール)したり、箱に入っているライブラリのバージョンを管理するためのツールになります。
またどのプログラムに対して、どの箱が紐づいているかも管理しています。
なんとなく、"仮想環境"という言葉のイメージはつかめましたでしょうか?
これにて全3回に渡って説明いたしました「【連載】Pythonのライブラリや仮想環境ってなぁに?」は終了となります。
この後Pythonの開発環境構築手順に関する記事を更新する予定です。
その際に、具体的にどのフォルダやファイルが仮想環境にあたるのか、軽く触れたいと思います。
よろしければ、引き続きそちらの記事もお読みいただければ幸いです。
----------------------------------------------------------------
素材取得元:
- トップイメージ
- 図中ピクトグラム
- 図中アイコン
- 図中アイコン
----------------------------------------------------------------