|
| 1 | +# 第1章: Pythonへようこそ:環境構築と基本思想 |
| 2 | + |
| 3 | +プログラミング経験者にとって、新しい言語を学ぶ上で最も重要なことの一つは、その言語特有の「流儀」や設計思想を理解することです。この章では、Pythonの開発環境を構築し、Pythonがどのような考え方で作られているのかを探ります。 |
| 4 | + |
| 5 | +## Pythonのインストールとバージョン管理 |
| 6 | + |
| 7 | +Pythonを始めるには、まずお使いのコンピュータにPythonをインストールする必要があります。しかし、プロジェクトごとに異なるバージョンのPythonを使いたい場面は頻繁にあります。そこで、複数のPythonバージョンを簡単に切り替えて管理できる **`pyenv`** の利用を強く推奨します。 |
| 8 | + |
| 9 | +**`pyenv` とは?** |
| 10 | +`pyenv` は、システム全体に影響を与えることなく、ユーザーのホームディレクトリ内で複数のPythonバージョンを管理できるツールです。これにより、「プロジェクトAではPython 3.9を、プロジェクトBではPython 3.11を使う」といったことが容易になります。 |
| 11 | + |
| 12 | +### インストール手順(macOS/Linuxの例): |
| 13 | +Homebrew(macOS)やgitを使って簡単にインストールできます。 |
| 14 | + |
| 15 | +1. **pyenvのインストール:** |
| 16 | + |
| 17 | + ```bash |
| 18 | + # Homebrewの場合 (macOS) |
| 19 | + brew install pyenv |
| 20 | + ``` |
| 21 | + |
| 22 | +2. **シェルの設定:** |
| 23 | + インストール後、以下のコマンドをシェルの設定ファイル(`.zshrc`, `.bash_profile`など)に追加します。 |
| 24 | + |
| 25 | + ```bash |
| 26 | + eval "$(pyenv init --path)" |
| 27 | + eval "$(pyenv init -)" |
| 28 | + ``` |
| 29 | + |
| 30 | +3. **Pythonのインストール:** |
| 31 | + 利用可能なバージョンを確認し、特定のバージョンをインストールします。 |
| 32 | + |
| 33 | + ```bash |
| 34 | + # インストール可能なバージョンの一覧を表示 |
| 35 | + pyenv install --list |
| 36 | +
|
| 37 | + # 例として Python 3.11.5 をインストール |
| 38 | + pyenv install 3.11.5 |
| 39 | + ``` |
| 40 | + |
| 41 | +4. **バージョンの切り替え:** |
| 42 | + `pyenv` を使うと、ディレクトリごと、またはグローバルに使用するPythonのバージョンを切り替えられます。 |
| 43 | + |
| 44 | + ```bash |
| 45 | + # このディレクトリでは 3.11.5 を使う |
| 46 | + pyenv local 3.11.5 |
| 47 | +
|
| 48 | + # グローバルで 3.11.5 を使う |
| 49 | + pyenv global 3.11.5 |
| 50 | + ``` |
| 51 | + |
| 52 | +Windowsユーザーの方は、`pyenv`のWindows版である **`pyenv-win`** を利用すると同様の環境を構築できます。 |
| 53 | + |
| 54 | + |
| 55 | +## 対話モード(REPL)の活用 |
| 56 | + |
| 57 | +Pythonには **REPL** (Read-Eval-Print Loop) と呼ばれる対話モードが備わっています。これは、コードを1行書くたびに即座に実行・評価し、結果を返してくれる機能です。他の言語での経験者にとっても、新しいライブラリの動作確認や、ちょっとした文法のテストに非常に便利です。 |
| 58 | + |
| 59 | +ターミナルで `python` と入力するだけで起動します。 |
| 60 | + |
| 61 | +```python |
| 62 | +$ python |
| 63 | +Python 3.11.5 (main, Aug 24 2023, 15:09:47) [Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin |
| 64 | +Type "help", "copyright", "credits" or "license" for more information. |
| 65 | +>>> message = "Hello, Python!" |
| 66 | +>>> print(message) |
| 67 | +Hello, Python! |
| 68 | +>>> 1 + 2 * 3 |
| 69 | +7 |
| 70 | +>>> exit() |
| 71 | +``` |
| 72 | + |
| 73 | +より高機能なREPLとして **IPython** や **Jupyter Notebook** も人気があります。これらはコード補完や履歴管理、インラインでのグラフ描画など、さらに強力な機能を備えています。 |
| 74 | + |
| 75 | + |
| 76 | +## スクリプトの実行方法 |
| 77 | + |
| 78 | +一連の処理をまとめて実行する場合は、`.py` という拡張子を持つファイルにコードを記述します。例えば、`hello.py` というファイルを以下のように作成します。 |
| 79 | + |
| 80 | +**hello.py** |
| 81 | + |
| 82 | +```python |
| 83 | +def main(): |
| 84 | + print("Hello from a Python script!") |
| 85 | +
|
| 86 | +if __name__ == "__main__": |
| 87 | + main() |
| 88 | +``` |
| 89 | +
|
| 90 | +`if __name__ == "__main__":` は、このスクリプトが直接実行された場合にのみ `main()` 関数を呼び出すためのお決まりの書き方です。他のスクリプトからモジュールとしてインポートされた際には `main()` は実行されません。 |
| 91 | +
|
| 92 | +このスクリプトを実行するには、ターミナルで以下のようにコマンドを入力します。 |
| 93 | +
|
| 94 | +```bash |
| 95 | +python hello.py |
| 96 | +``` |
| 97 | +
|
| 98 | +出力結果: |
| 99 | +
|
| 100 | +``` |
| 101 | +Hello from a Python script! |
| 102 | +``` |
| 103 | +
|
| 104 | +
|
| 105 | +## Pythonの禅 (The Zen of Python) |
| 106 | +
|
| 107 | +Pythonには、その設計哲学を端的に表した **「The Zen of Python」** という短い詩のような文章があります。これはPythonの思想を理解する上で非常に重要です。対話モードで `import this` と入力すると表示されます。 |
| 108 | +
|
| 109 | +```python |
| 110 | +>>> import this |
| 111 | +The Zen of Python, by Tim Peters |
| 112 | +
|
| 113 | +Beautiful is better than ugly. |
| 114 | +Explicit is better than implicit. |
| 115 | +Simple is better than complex. |
| 116 | +Complex is better than complicated. |
| 117 | +Flat is better than nested. |
| 118 | +Sparse is better than dense. |
| 119 | +Readability counts. |
| 120 | +... |
| 121 | +``` |
| 122 | +
|
| 123 | +「美しいは醜いより良い」「明示的は暗黙的より良い」「シンプルは複雑より良い」といった言葉は、Pythonでコードを書く上での指針となります。Pythonらしいコードとは、**読みやすく、シンプルで、意図が明確なコード**であると言えます。 |
| 124 | +
|
| 125 | +## パッケージ管理ツール `pip` と仮想環境 `venv` |
| 126 | +
|
| 127 | +Pythonの強力なエコシステムは、豊富なサードパーティ製パッケージ(ライブラリ)によって支えられています。これらのパッケージを管理するのが **`pip`** です。 |
| 128 | +
|
| 129 | +**`pip`** はPythonの標準パッケージインストーラで、例えばデータ分析で人気の `pandas` をインストールするには、以下のコマンドを実行します。 |
| 130 | +
|
| 131 | +```bash |
| 132 | +pip install pandas |
| 133 | +``` |
| 134 | +
|
| 135 | +しかし、プロジェクトAでは `pandas` のバージョン1.0が必要で、プロジェクトBでは2.0が必要、といった依存関係の衝突が起こる可能性があります。これを解決するのが **仮想環境** です。 |
| 136 | +
|
| 137 | +**`venv`** は、プロジェクトごとに独立したPython環境を作成するための標準モジュールです。仮想環境を有効にすると、`pip` でインストールしたパッケージはその環境内にのみ保存され、他のプロジェクトやシステムのPython環境を汚染しません。 |
| 138 | +
|
| 139 | +**仮想環境の作成と利用:** |
| 140 | +
|
| 141 | +1. **作成:** プロジェクトディレクトリで以下のコマンドを実行します。(`.venv` は仮想環境を保存するディレクトリ名で、慣例的によく使われます) |
| 142 | +
|
| 143 | + ```bash |
| 144 | + python -m venv .venv |
| 145 | + ``` |
| 146 | +
|
| 147 | +2. **有効化 (Activate):** |
| 148 | +
|
| 149 | + ```bash |
| 150 | + # macOS / Linux |
| 151 | + source .venv/bin/activate |
| 152 | +
|
| 153 | + # Windows (Command Prompt) |
| 154 | + .\.venv\Scripts\activate |
| 155 | + ``` |
| 156 | +
|
| 157 | + 有効化すると、プロンプトの先頭に `(.venv)` のような表示が追加され、このターミナルセッションでは仮想環境が使われていることが分かります。 |
| 158 | +
|
| 159 | +3. **パッケージのインストール:** |
| 160 | + この状態で `pip install` を実行すると、パッケージは `.venv` ディレクトリ内にインストールされます。 |
| 161 | +
|
| 162 | + ```bash |
| 163 | + (.venv) $ pip install requests |
| 164 | + ``` |
| 165 | +
|
| 166 | +4. **無効化 (Deactivate):** |
| 167 | + 仮想環境から抜けるには `deactivate` コマンドを使います。 |
| 168 | +
|
| 169 | + ```bash |
| 170 | + (.venv) $ deactivate |
| 171 | + ``` |
| 172 | +
|
| 173 | +`pyenv` でPythonのバージョンを管理し、`venv` でプロジェクトごとのパッケージを管理する。この2つを組み合わせることが、現代的なPython開発の基本スタイルです。 |
0 commit comments