--- /dev/null
+# ä»®æ³ç°å¢
+
+Pythonãããžã§ã¯ãã®äœæ¥ã§ã¯ã**ä»®æ³ç°å¢**ïŒãŸãã¯é¡äŒŒã®ä»çµã¿ïŒã䜿çšãããããžã§ã¯ãããšã«ã€ã³ã¹ããŒã«ããããã±ãŒãžãåé¢ããã¹ãã§ãããã
+
+/// info | æ
å ±
+
+ãããä»®æ³ç°å¢ã®æŠèŠãäœææ¹æ³ãäœ¿çšæ¹æ³ã«ã€ããŠæ¢ã«ãåç¥ãªãããã®ã»ã¯ã·ã§ã³ãã¹ãããããããšãã§ããŸããð€
+
+///
+
+/// tip | è±ç¥è
+
+**ä»®æ³ç°å¢**ã¯ã**ç°å¢å€æ°**ãšã¯ç°ãªããŸãã
+
+**ç°å¢å€æ°**ã¯ãããã°ã©ã ã䜿çšã§ããã·ã¹ãã å
ã®å€æ°ã§ãã
+
+**ä»®æ³ç°å¢**ã¯ããã¡ã€ã«ããŸãšãããã£ã¬ã¯ããªã®ããšã§ãã
+
+///
+
+/// info | æ
å ±
+ãã®ããŒãžã§ã¯ã**ä»®æ³ç°å¢**ã®äœ¿ç𿹿³ãšããã®ã¯ãããã«ã€ããŠèª¬æããŸãã
+
+ãã**ãã¹ãŠã管çããããŒã«**ïŒPythonã®ã€ã³ã¹ããŒã«ãå«ãïŒãå°å
¥ããæºåãã§ããŠãããªãã<a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">uv</a> ãã詊ããã ããã
+
+///
+
+## ãããžã§ã¯ãã®äœæ
+
+ãŸãããããžã§ã¯ãçšã®ãã£ã¬ã¯ããªãäœæããŸãã
+
+ç§ã¯éåžž home/user ãã£ã¬ã¯ããªã®äžã« `code` ãšãããã£ã¬ã¯ããªãçšæããŠããŠããããžã§ã¯ãããšã«1ã€ã®ãã£ã¬ã¯ããªããã®äžã«äœæããŠããŸãã
+
+<div class="termy">
+
+```console
+// Go to the home directory
+$ cd
+// Create a directory for all your code projects
+$ mkdir code
+// Enter into that code directory
+$ cd code
+// Create a directory for this project
+$ mkdir awesome-project
+// Enter into that project directory
+$ cd awesome-project
+```
+
+</div>
+
+## ä»®æ³ç°å¢ã®äœæ
+
+Pythonãããžã§ã¯ãã§ã®**åããŠã®**äœæ¥ãéå§ããéã«ã¯ã**<abbr title="ä»ã®éžæè¢ããããŸãããããã¯ã·ã³ãã«ãªã¬ã€ãã©ã€ã³ã§ã">ãããžã§ã¯ãå
</abbr>**ã«ä»®æ³ç°å¢ãäœæããŠãã ããã
+
+/// tip | è±ç¥è
+
+ãããè¡ãã®ã¯ã**ãããžã§ã¯ãããšã«1åã ã**ã§ããäœæ¥ã®ãã³ã«è¡ãå¿
èŠã¯ãããŸããã
+
+///
+
+//// tab | `venv`
+
+ä»®æ³ç°å¢ãäœæããã«ã¯ãPythonã«ä»å±ããŠãã `venv` ã¢ãžã¥ãŒã«ã䜿çšã§ããŸãã
+
+<div class="termy">
+
+```console
+$ python -m venv .venv
+```
+
+</div>
+
+/// details | ãã®ã³ãã³ãã®æå³
+
+- `python` : `python` ãšããããã°ã©ã ãåŒã³åºããŸã
+- `-m` : ã¢ãžã¥ãŒã«ãã¹ã¯ãªãããšããŠåŒã³åºããŸããã©ã®ã¢ãžã¥ãŒã«ãåŒã³åºãã®ãããã®æ¬¡ã«æå®ããŸã
+- `venv` : éåžžPythonã«ä»éããŠã€ã³ã¹ããŒã«ããã `venv`ã¢ãžã¥ãŒã«ã䜿çšããŸã
+- `.venv` : ä»®æ³ç°å¢ã`.venv`ãšããæ°ãããã£ã¬ã¯ããªã«äœæããŸã
+
+///
+
+////
+
+//// tab | `uv`
+
+ãã <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a> ãã€ã³ã¹ããŒã«æžã¿ãªããä»®æ³ç°å¢ãäœæããããã« `uv` ã䜿ãããšãã§ããŸãã
+
+<div class="termy">
+
+```console
+$ uv venv
+```
+
+</div>
+
+/// tip | è±ç¥è
+
+ããã©ã«ãã§ã¯ã `uv` 㯠`.venv` ãšãããã£ã¬ã¯ããªã«ä»®æ³ç°å¢ãäœæããŸãã
+
+ãã ãã远å ã®åŒæ°ã«ãã£ã¬ã¯ããªåãäžããŠã«ã¹ã¿ãã€ãºããããšãã§ããŸãã
+
+///
+
+////
+
+ãã®ã³ãã³ã㯠`.venv` ãšãããã£ã¬ã¯ããªã«æ°ããä»®æ³ç°å¢ãäœæããŸãã
+
+/// details | `.venv` ãŸãã¯ãã®ä»ã®åå
+
+ä»®æ³ç°å¢ãå¥ã®ãã£ã¬ã¯ããªã«äœæããããšãå¯èœã§ããã `.venv` ãšåä»ããã®ãäžè¬çãªæ
£ç¿ã§ãã
+
+///
+
+## ä»®æ³ç°å¢ã®æå¹å
+
+å®è¡ãããPythonã³ãã³ããã€ã³ã¹ããŒã«ãããããã±ãŒãžãæ°ããäœæããä»®æ³ç°å¢ã䜿çšããããããã®ä»®æ³ç°å¢ãæå¹åããŸãããã
+
+/// tip | è±ç¥è
+
+ãã®ãããžã§ã¯ãã®äœæ¥ã§**æ°ããã¿ãŒããã«ã»ãã·ã§ã³**ãéå§ããéã«ã¯ã**æ¯å**æå¹åãå¿
èŠã§ãã
+
+///
+
+//// tab | Linux, macOS
+
+<div class="termy">
+
+```console
+$ source .venv/bin/activate
+```
+
+</div>
+
+////
+
+//// tab | Windows PowerShell
+
+<div class="termy">
+
+```console
+$ .venv\Scripts\Activate.ps1
+```
+
+</div>
+
+////
+
+//// tab | Windows Bash
+
+ããWindowsã§Bashã䜿çšããŠããå Žå (<a href="https://gitforwindows.org/" class="external-link" target="_blank">Git Bash</a>ãªã©):
+
+<div class="termy">
+
+```console
+$ source .venv/Scripts/activate
+```
+
+</div>
+
+////
+
+/// tip | è±ç¥è
+
+**æ°ããããã±ãŒãž**ãä»®æ³ç°å¢ã«ã€ã³ã¹ããŒã«ãããšãã«ã¯ãå床**æå¹å**ããŠãã ããã
+
+ããããããšã§ããã®ããã±ãŒãžãã€ã³ã¹ããŒã«ãã**ã¿ãŒããã«ïŒ<abbr title="command line interface">CLI</abbr>ïŒããã°ã©ã **ã䜿çšããå Žåã«ãä»®æ³ç°å¢å
ã®ãã®ã確å®ã«äœ¿ãããã°ããŒãã«ç°å¢ã«ã€ã³ã¹ããŒã«ãããŠããå¥ã®ãã®ïŒããããå¿
èŠãªãã®ãšã¯ç°ãªãããŒãžã§ã³ïŒã誀ã£ãŠäœ¿çšããããšãé²ããŸãã
+
+///
+
+## ä»®æ³ç°å¢ãæå¹ã§ããããšã確èªãã
+
+ä»®æ³ç°å¢ãæå¹ã§ããïŒåã®ã³ãã³ããæ£åžžã«æ©èœããïŒããšã確èªããŸãã
+
+/// tip | è±ç¥è
+
+ããã¯**ä»»æ**ã§ããããã¹ãŠãæåŸ
éãã«æ©èœããæå³ããä»®æ³ç°å¢ã䜿çšããŠããããšã**確èªãã**è¯ãæ¹æ³ã§ãã
+
+///
+
+//// tab | Linux, macOS, Windows Bash
+
+<div class="termy">
+
+```console
+$ which python
+
+/home/user/code/awesome-project/.venv/bin/python
+```
+
+</div>
+
+`.venv/bin/python` ã«ãã `python` ãã€ããªãããããžã§ã¯ãïŒãã®å Žå㯠`awesome-project` ïŒå
ã«è¡šç€ºãããŠããã°ãæ£åžžã«åäœããŠããŸã ðã
+
+////
+
+//// tab | Windows PowerShell
+
+<div class="termy">
+
+``` console
+$ Get-Command python
+
+C:\Users\user\code\awesome-project\.venv\Scripts\python
+```
+
+</div>
+
+`.venv\Scripts\python` ã«ãã `python` ãã€ããªãããããžã§ã¯ãïŒãã®å Žå㯠`awesome-project` ïŒå
ã«è¡šç€ºãããŠããã°ãæ£åžžã«åäœããŠããŸã ðã
+
+////
+
+## `pip` ãã¢ããã°ã¬ãŒããã
+
+/// tip | è±ç¥è
+
+ãã <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a> ã䜿çšããŠããå Žåã¯ã `pip` ã®ä»£ããã« `uv` ã䜿ã£ãŠã€ã³ã¹ããŒã«ãè¡ãããã `pip` ãã¢ããã°ã¬ãŒãããå¿
èŠã¯ãããŸãã ðã
+
+///
+
+ããããã±ãŒãžã®ã€ã³ã¹ããŒã«ã« `pip`ïŒPythonã«æšæºã§ä»å±ããŠããŸãïŒã䜿çšããŠãããªãã `pip` ãææ°ããŒãžã§ã³ã«**ã¢ããã°ã¬ãŒã**ããŸãããã
+
+ããã±ãŒãžã®ã€ã³ã¹ããŒã«äžã«çºçããæ³å®å€ã®ãšã©ãŒã®å€ãã¯ãæåã« `pip` ãã¢ããã°ã¬ãŒãããŠããã ãã§è§£æ±ºãããŸãã
+
+/// tip | è±ç¥è
+
+éåžžãããã¯ä»®æ³ç°å¢ãäœæããçŽåŸã«**äžåºŠã ã**å®è¡ããŸãã
+
+///
+
+ä»®æ³ç°å¢ãæå¹ã§ããããšãïŒäžã§èª¬æããã³ãã³ãã§ïŒç¢ºèªããã¢ããã°ã¬ãŒããå®è¡ããŸãããïŒ
+
+<div class="termy">
+
+```console
+$ python -m pip install --upgrade pip
+
+---> 100%
+```
+
+</div>
+
+## `.gitignore` ã远å ãã
+
+**Git**ã䜿çšããŠããå ŽåïŒäœ¿çšããã¹ãã§ãããïŒã `.gitignore` ãã¡ã€ã«ã远å ããŠã `.venv` å
ã®ãããããã¡ã€ã«ãGitã®ç®¡ç察象ããé€å€ããŸãã
+
+/// tip | è±ç¥è
+
+ãã <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a> ã䜿çšããŠä»®æ³ç°å¢ãäœæããå Žåããã§ã«ãã®äœæ¥ã¯æžãã§ããã®ã§ããã®æé ãã¹ãããã§ããŸã ðã
+
+///
+
+/// tip | è±ç¥è
+
+ããããä»®æ³ç°å¢ãäœæããçŽåŸã«**äžåºŠã ã**å®è¡ããŸãã
+
+///
+
+<div class="termy">
+
+```console
+$ echo "*" > .venv/.gitignore
+```
+
+</div>
+
+/// details | ãã®ã³ãã³ãã®æå³
+
+- `echo "*"` : ã¿ãŒããã«ã« `*` ãšããããã¹ããã衚瀺ãããããšããŸããïŒæ¬¡ã®éšåã«ãã£ãŠãã®åäœãå°ãå€ãããŸãïŒ
+- `>` : `>` ã®å·ŠåŽã®ã³ãã³ããã¿ãŒããã«ã«è¡šç€ºããããšããå
容ããã¿ãŒããã«ã«ã¯è¡šç€ºããã `>` ã®å³åŽã®ãã¡ã€ã«ã«æžã蟌ã¿ãŸãã
+- `.gitignore` : `*` ãæžã蟌ããã¡ã€ã«åã
+
+ããã§ãGitã«ããã `*` ã¯ããã¹ãŠããæå³ããã®ã§ããã®ã³ãã³ãã«ãã£ãŠ `.venv` ãã£ã¬ã¯ããªå
ã®ãã¹ãŠãGitã«ç¡èŠãããããã«ãªããŸãã
+
+ãã®ã³ãã³ãã¯ä»¥äžã®ããã¹ããæã€ `.gitignore` ãã¡ã€ã«ãäœæããŸãïŒ
+
+```gitignore
+*
+```
+
+///
+
+## ããã±ãŒãžã®ã€ã³ã¹ããŒã«
+
+ä»®æ³ç°å¢ãæå¹åããåŸããã®äžã§ããã±ãŒãžãã€ã³ã¹ããŒã«ã§ããŸãã
+
+/// tip | è±ç¥è
+
+ãããžã§ã¯ãã«å¿
èŠãªããã±ãŒãžãã€ã³ã¹ããŒã«ãŸãã¯ã¢ããã°ã¬ãŒãããå Žåãããã**äžåºŠ**å®è¡ããŸãã
+
+ããæ°ããããã±ãŒãžã远å ããããããŒãžã§ã³ãã¢ããã°ã¬ãŒãããå¿
èŠãããå Žåã¯ããã**äžåºŠãã®æé ãç¹°ãè¿ã**ãŸãã
+
+///
+
+### ããã±ãŒãžãçŽæ¥ã€ã³ã¹ããŒã«ãã
+
+æ¥ãã§ããŠããããžã§ã¯ãã®ããã±ãŒãžèŠä»¶ã宣èšãããã¡ã€ã«ã䜿ããããªãå Žåãããã±ãŒãžãçŽæ¥ã€ã³ã¹ããŒã«ã§ããŸãã
+
+/// tip | è±ç¥è
+
+ããã°ã©ã ãå¿
èŠãšããããã±ãŒãžãšããŒãžã§ã³ããã¡ã€ã«ïŒäŸãã° `requirements.txt` ã `pyproject.toml` ïŒã«èšèŒããŠããã®ã¯ãïŒãšãŠãïŒè¯ãèãã§ãã
+
+///
+
+//// tab | `pip`
+
+<div class="termy">
+
+```console
+$ pip install "fastapi[standard]"
+
+---> 100%
+```
+
+</div>
+
+////
+
+//// tab | `uv`
+
+ãã <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a> ã䜿çšã§ãããªã:
+
+<div class="termy">
+
+```console
+$ uv pip install "fastapi[standard]"
+---> 100%
+```
+
+</div>
+
+////
+
+### `requirements.txt` ããã€ã³ã¹ããŒã«ãã
+
+ãã `requirements.txt` ããããªããããã±ãŒãžã®ã€ã³ã¹ããŒã«ã«äœ¿çšã§ããŸãã
+
+//// tab | `pip`
+
+<div class="termy">
+
+```console
+$ pip install -r requirements.txt
+---> 100%
+```
+
+</div>
+
+////
+
+//// tab | `uv`
+
+ãã <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a> ã䜿çšã§ãããªã:
+
+<div class="termy">
+
+```console
+$ uv pip install -r requirements.txt
+---> 100%
+```
+
+</div>
+
+////
+
+/// details | `requirements.txt`
+
+ããã±ãŒãžãèšèŒããã `requirements.txt` ã¯ä»¥äžã®ããã«ãªã£ãŠããŸã:
+
+```requirements.txt
+fastapi[standard]==0.113.0
+pydantic==2.8.0
+```
+
+///
+
+## ããã°ã©ã ãå®è¡ãã
+
+ä»®æ³ç°å¢ãæå¹åããåŸãããã°ã©ã ãå®è¡ã§ããŸãããã®éãä»®æ³ç°å¢å
ã®Pythonãšãããã«ã€ã³ã¹ããŒã«ããããã±ãŒãžã䜿çšãããŸãã
+
+<div class="termy">
+
+```console
+$ python main.py
+
+Hello World
+```
+
+</div>
+
+## ãšãã£ã¿ã®èšå®
+
+ãããžã§ã¯ãã§ã¯ãããããšãã£ã¿ã䜿çšããã§ããããã³ãŒãè£å®ãã€ã³ã©ã€ã³ãšã©ãŒã®è¡šç€ºãã§ããããã«ãäœæããä»®æ³ç°å¢ããšãã£ã¿ã§ã䜿ããããèšå®ããŠãã ãããïŒå€ãã®å Žåãèªåæ€åºãããŸãïŒ
+
+èšå®äŸ:
+
+* <a href="https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment" class="external-link" target="_blank">VS Code</a>
+* <a href="https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html" class="external-link" target="_blank">PyCharm</a>
+
+/// tip | è±ç¥è
+
+ãã®èšå®ã¯éåžžãä»®æ³ç°å¢ãäœæããéã«**äžåºŠã ã**è¡ããŸãã
+
+///
+
+## ä»®æ³ç°å¢ã®ç¡å¹å
+
+ãããžã§ã¯ãã®äœæ¥ãçµäºãããããã®ä»®æ³ç°å¢ã**ç¡å¹å**ã§ããŸãã
+
+<div class="termy">
+
+```console
+$ deactivate
+```
+
+</div>
+
+ããã«ããã `python` ã³ãã³ããå®è¡ããŠãããã®ãããžã§ã¯ãçšïŒã®ããã±ãŒãžãã€ã³ã¹ããŒã«ãããïŒä»®æ³ç°å¢ãã `python` ããã°ã©ã ãåŒã³åºãããšã¯ããªããªããŸãã
+
+## äœæ¥æºåå®äº
+
+ãããŸã§ã§ããããžã§ã¯ãã®äœæ¥ãå§ããæºåãæŽããŸããã
+
+/// tip | è±ç¥è
+
+äžèšã®å
容ãçè§£ãããã§ããïŒ
+
+ãããããªãã以äžãèªã¿é²ããŠãã ãããðð€
+
+///
+
+## ãªãä»®æ³ç°å¢ïŒ
+
+FastAPIã䜿ã£ãäœæ¥ãããã«ã¯ã [Python](https://www.python.org/) ã®ã€ã³ã¹ããŒã«ãå¿
èŠã§ãã
+
+ãããããFastAPIãã䜿çšããããã®ä»ã®**ããã±ãŒãž**ã**ã€ã³ã¹ããŒã«**ããå¿
èŠããããŸãã
+
+ããã±ãŒãžãã€ã³ã¹ããŒã«ããã«ã¯ãéåžžãPython ã«ä»å±ãã `pip` ã³ãã³ã (ãŸãã¯åæ§ã®ä»£æ¿ã³ãã³ã) ã䜿çšããŸãã
+
+ãã ãã`pip` ãçŽæ¥äœ¿çšãããšãããã±ãŒãžã¯**ã°ããŒãã«ãªPythonç°å¢**ïŒOSå
šäœã«ã€ã³ã¹ããŒã«ãããPythonç°å¢ïŒã«ã€ã³ã¹ããŒã«ãããŸãã
+
+### åé¡ç¹
+
+ã§ã¯ãã°ããŒãã«Pythonç°å¢ã«ããã±ãŒãžãã€ã³ã¹ããŒã«ããããšã®åé¡ç¹ã¯äœã§ããããïŒ
+
+ããæç¹ã§ãããªãã¯**ç°ãªãããã±ãŒãž**ã«äŸåããå€ãã®ããã°ã©ã ãæžãããšã«ãªãã§ãããããããŠããããã®äžã«ã¯åãããã±ãŒãžã®**ç°ãªãããŒãžã§ã³**ã«äŸåãããã®ãåºãŠããã§ããããð±
+
+äŸãã°ã `philosophers-stone` ïŒè³¢è
ã®ç³ïŒãšãããããžã§ã¯ããäœæãããšããŸãããã®ããã°ã©ã 㯠**`harry` ïŒããªãŒïŒãšããããã±ãŒãžã®ããŒãžã§ã³ `1`**ã«äŸåããŠããŸãããã®ããã `harry` ïŒããªãŒïŒãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã
+
+```mermaid
+flowchart LR
+ stone(philosophers-stone) -->|requires| harry-1[harry v1]
+```
+
+ããããã `prisoner-of-azkaban` ïŒã¢ãºã«ãã³ã®å人ïŒãšããå¥ã®ãããžã§ã¯ããäœæãããšããŸãããã®ãããžã§ã¯ãã `harry` ïŒããªãŒïŒã«äŸåããŠããŸããã**`harry` ïŒããªãŒïŒã®ããŒãžã§ã³ `3`**ãå¿
èŠã§ãã
+
+```mermaid
+flowchart LR
+ azkaban(prisoner-of-azkaban) --> |requires| harry-3[harry v3]
+```
+
+ããããããã§åé¡ã«ãªãã®ã¯ãããããŒã«ã«ã®**ä»®æ³ç°å¢**ã§ã¯ãªãã°ããŒãã«ïŒç°å¢ïŒã«ããã±ãŒãžãã€ã³ã¹ããŒã«ãããªãã `harry` ïŒããªãŒïŒã®ã©ã®ããŒãžã§ã³ãã€ã³ã¹ããŒã«ãããéžã°ãªããšãããªãããšã§ãã
+
+äŸãã°ã `philosophers-stone` ïŒè³¢è
ã®ç³ïŒãå®è¡ããã«ã¯ããŸã `harry` ïŒããªãŒïŒã®ããŒãžã§ã³ `1` ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãïŒ
+
+<div class="termy">
+
+```console
+$ pip install "harry==1"
+```
+
+</div>
+
+ããã«ããã`harry` ïŒããªãŒïŒããŒãžã§ã³1ãã°ããŒãã«ãªPythonç°å¢ã«ã€ã³ã¹ããŒã«ãããŸãã
+
+```mermaid
+flowchart LR
+ subgraph global[global env]
+ harry-1[harry v1]
+ end
+ subgraph stone-project[philosophers-stone project]
+ stone(philosophers-stone) -->|requires| harry-1
+ end
+```
+
+ãããã `prisoner-of-azkaban` ïŒã¢ãºã«ãã³ã®å人ïŒãå®è¡ãããå Žåã¯ã`harry` ïŒããªãŒïŒã®ããŒãžã§ã³ `1` ãã¢ã³ã€ã³ã¹ããŒã«ãã`harry` ïŒããªãŒïŒã®ããŒãžã§ã³ `3` ãã€ã³ã¹ããŒã«ãçŽãå¿
èŠããããŸããïŒãããã¯ãåã«`harry` ïŒããªãŒïŒã®ããŒãžã§ã³ `3` ãã€ã³ã¹ããŒã«ããããšã§ãèªåçã«ããŒãžã§ã³ `1` ãã¢ã³ã€ã³ã¹ããŒã«ãããŸãïŒ
+
+<div class="termy">
+
+```console
+$ pip install "harry==3"
+```
+
+</div>
+
+ãã®ããã«ããŠãã°ããŒãã«ç°å¢ãžã® `harry` ïŒããªãŒïŒã®ããŒãžã§ã³ `3` ã®ã€ã³ã¹ããŒã«ãå®äºããŸãã
+
+ããããã `philosophers-stone` ïŒè³¢è
ã®ç³ïŒãåã³å®è¡ããããšãããšããã®ããã°ã©ã 㯠`harry` ïŒããªãŒïŒã®ããŒãžã§ã³ `1` ãå¿
èŠãªããã**åäœããªããªã**å¯èœæ§ããããŸãã
+
+```mermaid
+flowchart LR
+ subgraph global[global env]
+ harry-1[<strike>harry v1</strike>]
+ style harry-1 fill:#ccc,stroke-dasharray: 5 5
+ harry-3[harry v3]
+ end
+ subgraph stone-project[philosophers-stone project]
+ stone(philosophers-stone) -.-x|âïž| harry-1
+ end
+ subgraph azkaban-project[prisoner-of-azkaban project]
+ azkaban(prisoner-of-azkaban) --> |requires| harry-3
+ end
+```
+
+/// tip | è±ç¥è
+
+Pythonã®ããã±ãŒãžã§ã¯ã**æ°ããããŒãžã§ã³**ã§**äºææ§ãæãªã倿Žãé¿ãã**ããåªããã®ãäžè¬çã§ãããããã§ã泚æãå¿
èŠã§ãããã¹ãŠãæ£åžžã«åäœããããšããã¹ãã§ç¢ºèªããŠãããæå³çã«æå®ããŠæ°ããããŒãžã§ã³ãã€ã³ã¹ããŒã«ããã®ãè¯ãã§ãããã
+
+///
+
+ããªãã®ãã¹ãŠã®**ãããžã§ã¯ããäŸåããŠãã**ã**倿°ã®**ä»ã®**ããã±ãŒãž**ãäžèšã®åé¡ãæ±ããŠãããšæ³åããŠãã ãããããã¯ç®¡çãéåžžã«å°é£ã§ãããããŠã**äºææ§ã®ãªãããŒãžã§ã³**ã®ããã±ãŒãžã䜿ã£ãŠãããžã§ã¯ããå®è¡ãããªãåäœããªãã®ãåãããªããªãã§ãããã
+
+ãŸãã䜿çšããŠããOSïŒLinuxãWindowsãmacOS ãªã©ïŒã«ãã£ãŠã¯ãPythonããã§ã«ã€ã³ã¹ããŒã«ãããŠããããšããããŸãããã®å Žåãç¹å®ã®ããŒãžã§ã³ã®ããã±ãŒãžã**OSã®åäœã«å¿
èŠã§ãã**ããšããããŸããã°ããŒãã«ç°å¢ã«ããã±ãŒãžãã€ã³ã¹ããŒã«ãããšãOSã«ä»å±ããããã°ã©ã ã**å£ããŠããŸã**å¯èœæ§ããããŸãã
+
+## ããã±ãŒãžã®ã€ã³ã¹ããŒã«å
+
+Pythonãã€ã³ã¹ããŒã«ãããšãããã¡ã€ã«ãå«ãã ããã€ãã®ãã£ã¬ã¯ããªãäœæãããŸãã
+
+ãããã®äžã«ã¯ãã€ã³ã¹ããŒã«ãããããã±ãŒãžãä¿åããããã®ãã®ããããŸãã
+
+以äžã®ã³ãã³ããå®è¡ãããšãïŒ
+
+<div class="termy">
+
+```console
+// Don't run this now, it's just an example ð€
+$ pip install "fastapi[standard]"
+---> 100%
+```
+
+</div>
+
+FastAPIã®ã³ãŒããå«ãå§çž®ãã¡ã€ã«ããé垞㯠[PyPI](https://pypi.org/project/fastapi/) ããããŠã³ããŒããããŸãã
+
+ãŸããFastAPIãäŸåããä»ã®ããã±ãŒãžã**ããŠã³ããŒã**ãããŸãã
+
+ããããããããã®ãã¡ã€ã«ã¯**è§£å**ãããã³ã³ãã¥ãŒã¿ã®ãããã£ã¬ã¯ããªã«é
眮ãããŸãã
+
+ããã©ã«ãã§ã¯ããããã®ãã¡ã€ã«ã¯Pythonã®ã€ã³ã¹ããŒã«æã«äœæããããã£ã¬ã¯ããªãã€ãŸã**ã°ããŒãã«ç°å¢**ã«é
眮ãããŸãã
+
+## ä»®æ³ç°å¢ãšã¯
+
+ãã¹ãŠã®ããã±ãŒãžãã°ããŒãã«ç°å¢ã«é
眮ããããšã«ãã£ãŠçããåé¡ã®è§£æ±ºçã¯ãäœæ¥ãã**ãããžã§ã¯ãããšã®ä»®æ³ç°å¢**ã䜿çšããããšã§ãã
+
+ä»®æ³ç°å¢ã¯**ãã£ã¬ã¯ããª**ã§ãããã°ããŒãã«ç°å¢ãšéåžžã«äŒŒãŠããŠãäžã€ã®ãããžã§ã¯ãã§äœ¿ãç¹å®ã®ããã±ãŒãžçŸ€ãã€ã³ã¹ããŒã«ã§ããå Žæã§ãã
+
+ãã®ããã«ããŠãããããã®ãããžã§ã¯ããç¬èªã®ä»®æ³ç°å¢ïŒ`.venv` ãã£ã¬ã¯ããªïŒã«ç¬èªã®ããã±ãŒãžçŸ€ãæã€ããšãã§ããŸãã
+
+```mermaid
+flowchart TB
+ subgraph stone-project[philosophers-stone project]
+ stone(philosophers-stone) --->|requires| harry-1
+ subgraph venv1[.venv]
+ harry-1[harry v1]
+ end
+ end
+ subgraph azkaban-project[prisoner-of-azkaban project]
+ azkaban(prisoner-of-azkaban) --->|requires| harry-3
+ subgraph venv2[.venv]
+ harry-3[harry v3]
+ end
+ end
+ stone-project ~~~ azkaban-project
+```
+
+## ä»®æ³ç°å¢ã®æå¹åãšã¯
+
+ä»®æ³ç°å¢ãæå¹ã«ãããšããäŸãã°æ¬¡ã®ã³ãã³ããå®è¡ããå ŽåãèããŸãïŒ
+
+//// tab | Linux, macOS
+
+<div class="termy">
+
+```console
+$ source .venv/bin/activate
+```
+
+</div>
+
+////
+
+//// tab | Windows PowerShell
+
+<div class="termy">
+
+```console
+$ .venv\Scripts\Activate.ps1
+```
+
+</div>
+
+////
+
+//// tab | Windows Bash
+
+ãããã¯ãWindowsã§Bashã䜿çšããŠããå Žå (<a href="https://gitforwindows.org/" class="external-link" target="_blank">Git Bash</a>ãªã©):
+
+<div class="termy">
+
+```console
+$ source .venv/Scripts/activate
+```
+
+</div>
+
+////
+
+ããã«ãã£ãŠãããã€ãã® [ç°å¢å€æ°](environment-variables.md){.internal-link target=_blank} ãäœæã»ä¿®æ£ãããæ¬¡ã«å®è¡ãããã³ãã³ãã§äœ¿çšã§ããããã«ãªããŸãã
+
+ãããã®ç°å¢å€æ°ã®ã²ãšã€ã«ã `PATH` 倿°ããããŸãã
+
+/// tip | è±ç¥è
+
+`PATH` 倿°ã«ã€ããŠã®è©³çŽ°ã¯ [ç°å¢å€æ°](environment-variables.md#pathç°å¢å€æ°){.internal-link target=_blank} ãåç
§ããŠãã ããã
+
+///
+
+ä»®æ³ç°å¢ãæå¹ã«ãããšããã®ä»®æ³ç°å¢ã®ãã¹ `.venv/bin` ïŒLinuxãšmacOSïŒãããã㯠`.venv\Scripts` ïŒWindowsïŒã `PATH` 倿°ã«è¿œå ãããŸãã
+
+ãã®ç°å¢ãæå¹ã«ããåã® `PATH` 倿°ã次ã®ããã«ãªã£ãŠãããšããŸãã
+
+//// tab | Linux, macOS
+
+```plaintext
+/usr/bin:/bin:/usr/sbin:/sbin
+```
+
+ããã¯ãOSã以äžã®ãã£ã¬ã¯ããªäžã§ããã°ã©ã ãæ¢ãããšãæå³ããŸãïŒ
+
+* `/usr/bin`
+* `/bin`
+* `/usr/sbin`
+* `/sbin`
+
+////
+
+//// tab | Windows
+
+```plaintext
+C:\Windows\System32
+```
+
+ããã¯ãOSã以äžã®ãã£ã¬ã¯ããªäžã§ããã°ã©ã ãæ¢ãããšãæå³ããŸãïŒ
+
+* `C:\Windows\System32`
+
+////
+
+ä»®æ³ç°å¢ãæå¹ã«ãããšã `PATH` 倿°ã¯æ¬¡ã®ããã«ãªããŸãã
+
+//// tab | Linux, macOS
+
+```plaintext
+/home/user/code/awesome-project/.venv/bin:/usr/bin:/bin:/usr/sbin:/sbin
+```
+
+ããã¯ãOSãä»ã®ãã£ã¬ã¯ããªãæ¢ãããåã«ãæåã«ä»¥äžã®ãã£ã¬ã¯ããªäžã§ããã°ã©ã ãæ¢ãå§ããããšãæå³ããŸãïŒ
+
+```plaintext
+/home/user/code/awesome-project/.venv/bin
+```
+
+ãã®ãããã¿ãŒããã«ã§ `python` ãšå
¥åããéã«ãOSã¯Pythonããã°ã©ã ã以äžã®ãã¹ã§çºèŠãã䜿çšããŸãã
+
+```plaintext
+/home/user/code/awesome-project/.venv/bin/python
+```
+
+////
+
+//// tab | Windows
+
+```plaintext
+C:\Users\user\code\awesome-project\.venv\Scripts;C:\Windows\System32
+```
+
+ããã¯ãOSãä»ã®ãã£ã¬ã¯ããªãæ¢ãããåã«ãæåã«ä»¥äžã®ãã£ã¬ã¯ããªäžã§ããã°ã©ã ãæ¢ãå§ããããšãæå³ããŸãïŒ
+
+```plaintext
+C:\Users\user\code\awesome-project\.venv\Scripts
+```
+
+ãã®ãããã¿ãŒããã«ã§ `python` ãšå
¥åããéã«ãOSã¯Pythonããã°ã©ã ã以äžã®ãã¹ã§çºèŠãã䜿çšããŸãã
+
+```plaintext
+C:\Users\user\code\awesome-project\.venv\Scripts\python
+```
+
+////
+
+éèŠãªç¹ã¯ãä»®æ³ç°å¢ã®ãã¹ã `PATH` 倿°ã®**å
é **ã«é
眮ããããšã§ããOSã¯å©çšå¯èœãªä»ã®PythonãèŠã€ãããã**åã«**ããã®ä»®æ³ç°å¢ã®PythonãèŠã€ããããã«ãªããŸãããã®ããã«ããŠã `python` ãå®è¡ãããšãã«ãä»ã® `python` ïŒäŸãã°ã°ããŒãã«ç°å¢ã® `python` ïŒã§ã¯ãªãã**ãã®ä»®æ³ç°å¢ã®**Pythonã䜿çšããããã«ãªããŸãã
+
+ä»®æ³ç°å¢ãæå¹ã«ããŠå€æŽãããããšã¯ä»ã«ããããŸããããããæãéèŠãªå€æŽã®ã²ãšã€ã§ãã
+
+## ä»®æ³ç°å¢ã®ç¢ºèª
+
+ä»®æ³ç°å¢ãæå¹ãã©ãããäŸãã°æ¬¡ã®ããã«ç¢ºèªã§ããŸããïŒ
+
+//// tab | Linux, macOS, Windows Bash
+
+<div class="termy">
+
+```console
+$ which python
+
+/home/user/code/awesome-project/.venv/bin/python
+```
+
+</div>
+
+////
+
+//// tab | Windows PowerShell
+
+<div class="termy">
+
+```console
+$ Get-Command python
+
+C:\Users\user\code\awesome-project\.venv\Scripts\python
+```
+
+</div>
+
+////
+
+ããã¯ã䜿çšããã `python` ããã°ã©ã ã**ãã®ä»®æ³ç°å¢ã®**ãã®ã§ããããšãæå³ããŸãã
+
+LinuxãmacOSã§ã¯ `which` ããWindows PowerShellã§ã¯ `Get-Command` ã䜿çšããŸãã
+
+ãã®ã³ãã³ãã®åäœã¯ã `PATH`倿°ã«èšå®ããã**ããããã®ãã¹ãé ã«**確èªããŠãããåŒã°ããŠãã `python` ããã°ã©ã ãæ¢ããŸãããããŠãèŠã€ããæ¬¡ç¬¬ãã®ããã°ã©ã ãžã®**ãã¹ã衚瀺ããŸã**ã
+
+æãéèŠãªããšã¯ã `python` ãåŒã°ãããšãã«ããŸãã«ãã®ã³ãã³ãã§ç¢ºèªãã "`python`" ãå®è¡ãããããšã§ãã
+
+ããããŠãèªåãæ³å®éãã®ä»®æ³ç°å¢ã«ãããã確èªã§ããŸãã
+
+/// tip | è±ç¥è
+
+ããä»®æ³ç°å¢ãæå¹ã«ãããã®Pythonã䜿çšãããŸãŸ**ä»ã®ãããžã§ã¯ãã«ç§»åããŠ**ããŸãããšã¯ç°¡åã«èµ·ããåŸãŸãã
+
+ãããŠããã®ç¬¬äºã®ãããžã§ã¯ãã¯åäœããªãã§ãããããªããªãå¥ã®ãããžã§ã¯ãã®ä»®æ³ç°å¢ã®**誀ã£ãPython**ã䜿çšããŠããããã§ãã
+
+ãã®ãããã©ã® `python` ã䜿çšãããŠããã®ã確èªã§ããããšã¯åœ¹ç«ã¡ãŸããð€
+
+///
+
+## ãªãä»®æ³ç°å¢ãç¡å¹åããã®ã
+
+äŸãã°ã`philosophers-stone` ïŒè³¢è
ã®ç³ïŒãšãããããžã§ã¯ãã§äœæ¥ãããŠããŠã**ãã®ä»®æ³ç°å¢ãæå¹ã«ã**ãå¿
èŠãªããã±ãŒãžãã€ã³ã¹ããŒã«ããŠãã®ç°å¢å
ã§äœæ¥ãé²ããŠãããšããŸãã
+
+ããããã**å¥ã®ãããžã§ã¯ã**ã `prisoner-of-azkaban` ïŒã¢ãºã«ãã³ã®å人ïŒã«åãæããããšããŸãã
+
+ãã®ãããžã§ã¯ããã£ã¬ã¯ããªãžç§»åããŸãïŒ
+
+<div class="termy">
+
+```console
+$ cd ~/code/prisoner-of-azkaban
+```
+
+</div>
+
+ãã `philosophers-stone` ïŒè³¢è
ã®ç³ïŒã®ä»®æ³ç°å¢ãç¡å¹åããŠããªããšã`python` ãå®è¡ãããšãã ã¿ãŒããã«ã¯ `philosophers-stone` ïŒè³¢è
ã®ç³ïŒã®Pythonã䜿çšããããšããŸãã
+
+<div class="termy">
+
+```console
+$ cd ~/code/prisoner-of-azkaban
+
+$ python main.py
+
+// Error importing sirius, it's not installed ð±
+Traceback (most recent call last):
+ File "main.py", line 1, in <module>
+ import sirius
+```
+
+</div>
+
+ãããããã®ä»®æ³ç°å¢ãç¡å¹åãã `prisoner-of-azkaban` ïŒã¢ãºã«ãã³ã®å人ïŒã®ããã®æ°ããä»®æ³ç°å¢ãæå¹ã«ããã°ã `python` ãå®è¡ãããšãã« `prisoner-of-azkaban` ïŒã¢ãºã«ãã³ã®å人ïŒã®ä»®æ³ç°å¢ã® Python ã䜿çšãããããã«ãªããŸãã
+
+<div class="termy">
+
+```console
+$ cd ~/code/prisoner-of-azkaban
+
+// You don't need to be in the old directory to deactivate, you can do it wherever you are, even after going to the other project ð
+$ deactivate
+
+// Activate the virtual environment in prisoner-of-azkaban/.venv ð
+$ source .venv/bin/activate
+
+// Now when you run python, it will find the package sirius installed in this virtual environment âš
+$ python main.py
+
+I solemnly swear ðº
+```
+
+</div>
+
+## ä»£æ¿ææ®µ
+
+ããã¯ãããããä»çµã¿ã**æ ¹æ¬ãã**åŠã¶ããã®ã·ã³ãã«ãªå
¥éã¬ã€ãã§ãã
+
+ä»®æ³ç°å¢ãããã±ãŒãžã®äŸåé¢ä¿ïŒrequirementsïŒããããžã§ã¯ãã®ç®¡çã«ã¯ãå€ãã®**ä»£æ¿ææ®µ**ããããŸãã
+
+æºåãæŽããããã±ãŒãžã®äŸåé¢ä¿ãä»®æ³ç°å¢ãªã©**ãããžã§ã¯ãå
šäœã®ç®¡ç**ããŒã«ã䜿ããããšèãããã<a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">uv</a> ã詊ããŠã¿ãããšãããããããŸãã
+
+`uv` ã§ã¯ä»¥äžã®ãããªå€ãã®ããšãã§ããŸãïŒ
+
+* ç°ãªãããŒãžã§ã³ãå«ãã**Python ã®ã€ã³ã¹ããŒã«**
+* ãããžã§ã¯ãããšã®**ä»®æ³ç°å¢**ã®ç®¡ç
+* **ããã±ãŒãž**ã®ã€ã³ã¹ããŒã«
+* ãããžã§ã¯ãã®ããã±ãŒãžã®**äŸåé¢ä¿ãããŒãžã§ã³**ã®ç®¡ç
+* ããã±ãŒãžãšãã®ããŒãžã§ã³ã®ãäŸåé¢ä¿ãå«ãã**å³å¯ãª**çµã¿åãããä¿æããããã«ãã£ãŠãæ¬çªç°å¢ã§ãéçºç°å¢ãšå
šãåãããã«ãããžã§ã¯ããå®è¡ã§ããïŒããã¯**locking**ãšåŒã°ããŸãïŒ
+* ãã®ä»ã®ããŸããŸãªæ©èœ
+
+## ãŸãšã
+
+ãããŸã§èªã¿ãã¹ãŠçè§£ãããªããäžéã®å€ãã®éçºè
ãšæ¯ã¹ãŠãä»®æ³ç°å¢ã«ã€ããŠ**ããªãã¯ããå€ãã®ããšãç¥ã£ãŠããŸã**ãð€
+
+ãããã®è©³çްãç¥ãããšã¯ãå°æ¥ãè€éã«èŠããäœãã®ãããã°ã«ãã£ãšåœ¹ç«ã€ã§ãããããããããã®é ã«ã¯ãããªãã¯**ãã®ãã¹ãŠã®åäœãæ ¹æ¬ãã**çè§£ããŠããã§ããããð