
ææ°ã®ããã±ãŒãžç®¡çããŒã«"UV"ãã€ã³ã¹ããŒã«ããŠäœ¿ã£ãŠã¿ã
Pythonã®ããã±ãŒãžç®¡çããŒã«ãšããŠãæè¿ã泚ç®ãéããŠããUVãã€ã³ã¹ããŒã«ããŠã䜿ã£ãŠã¿ãŸããã®ã§èšäºã«ããŸãã
äžã®äžã«ã¯ãã§ã«UVã«é¢ããŠã®èšäºã溢ããŠããŸãããã»ãšãã©ã¯è·æ¥ããã°ã©ããŒã®æ¹ãæžããããã®ã§ãéãšã³ãžãã¢ããèŠãã°ããŸã ãŸã é£è§£ãªèšäºãå€ãããšæããŸãã
ãã®èšäºã§ã¯ãéãšã³ãžãã¢ãªãã§ã¯ã®ç®ç·ã§ã现ãããšãããé£ãããšããã¯çããªããããšã«ããUVã䜿ããç¶æ ã«ããããšãç®æšãšããŠãåããããã解説ããŠãããŸãã
ããããUVãšã¯ïŒ
pipãpyenvãšãã£ãPythonã®ããã±ãŒãžç®¡çããŒã«ã®äžã€ã§ãã
2024幎2æã«çºè¡šãããã°ããã§ãããªãæ°ããããŒã«ã§ããããã§ã«ããããŸã§ã®ããã±ãŒãžç®¡çããŒã«ã®ä»£æ¿ã«ãªãããšãæåŸ
ãããŠããŸãã
UVã®æå€§ã®ç¹åŸŽã¯ãããããé«éæ§ã«ãããšæãããå ¬åŒã«ãpipã®10ã100åã®éãã§ããæšã®èšè¿°ããããŸãããã€ãã§ã«ãããªã°ã©ããã

ããšãAIã¢ããªã®Claudeã§ã¯ãMCPãšããæè¡ã䜿ã£ãŠãAIãšãŒãžã§ã³ãã®ãããªããšãå¯èœã«ãªã£ãŠããŸãã
MCPã¯ãClaudeã®ãã£ããäžã§æç€ºãäžãããšãã«ãClaudeèªèº«ãPythonãã€ã³ã¿ãŒãããæ€çŽ¢ãªã©ã®å°çšããŒã«ã䜿ã£ãŠã課é¡è§£æ±ºã«åãçµããšããä»çµã¿ã§ãã
ãã®MCPã«ãããŠãClaudeãPythonã䜿ãããã«å¿
èŠãªããŒã«ãããã®UVã«ãªã£ãŠããŸãã
èªåãUVã䜿ã£ãŠã¿ãããšæã£ããã£ããã¯ããŸãã«ãClaudeã®MCPã§Pythonã䜿ã£ãŠã¿ããã£ãããã«ä»ãªããŸããã
ãªã®ã§ãClaudeã®MCPã«èå³ã®ããæ¹ã¯ããã²ãã€ã³ã¹ããŒã«ããå§ãããŸãã
ããã§ã¯ããããUVãã€ã³ã¹ããŒã«ããŠã䜿ã£ãŠãããŸããããïŒMacOSãæ³å®ããŠããŸãïŒ
UVãã€ã³ã¹ããŒã«ãã
Macã®ã¿ãŒããã«ãèµ·åããŠã以äžã®ã³ãã³ããå
¥åããŸãã
$ curl -LsSf https://astral.sh/uv/install.sh | shPATHãéã£ãŠãããã確èª
以äžã®ã³ãã³ããåäœããã°ãPATHãæ£ããéã£ãŠããŸãã
$ uv --versionåäœããªããã°ã以äžã®ã³ãã³ãã§ç°å¢å€æ°ã«PATHãèšå®ããŸãã
$ source $HOME/.local/bin/env UVã§Pythonãå ¥ãã
UVã§ã¯ä»¥äžã®ããã«ããŸãšããŠè€æ°ã®ããŒãžã§ã³ãã€ã³ã¹ããŒã«ããããšãã§ããŸãã
$ uv python install 3.10 3.11 3.12 # PythonããŒãžã§ã³äžæ¬ã€ã³ã¹ããŒã«Installed 3 versions in 8.48s
+ cpython-3.10.17-macos-aarch64-none
+ cpython-3.11.12-macos-aarch64-none
+ cpython-3.12.10-macos-aarch64-nonePythonã®ããŒãžã§ã³ã¯ä»¥äžã®ã³ãã³ãã§ç¢ºèªã§ããŸãã
uv python listUVã§ä»®æ³ç°å¢ãäœæãã
ãããããä»®æ³ç°å¢çšã®ãã£ã¬ã¯ããªãäœæããç§»åããŸãã
# ãã£ã¬ã¯ããªãäœæ
mkdir uv_project
# ãã£ã¬ã¯ããªã«ç§»å
cd uv_project
uv venvã³ãã³ãã§ä»®æ³ç°å¢ãäœæããŸãã
$ uv venv ãåºåçµæã
Using CPython 3.12.10
Creating virtual environment at: .venv
Activate with: source .venv/bin/activateç¹å®ããŒãžã§ã³ãæå®ããããã§ä»®æ³ç°å¢ãäœæããããšãã§ããŸãã
$ uv venv --python 3.11 # ç¹å®ããŒãžã§ã³ã§ä»®æ³ç°å¢äœæãåºåçµæã
Using CPython 3.11.12
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
ãã£ã¬ã¯ããªèªäœã«Pythonã®ããŒãžã§ã³ãåºå®ããããæ¹ããããŸãã
$ uv python pin 3.11 # ãã£ã¬ã¯ããªã«PythonããŒãžã§ã³åºå®
åŸæ¥ã®venv ã§ã¯ä»¥äžã®ããã«æç€ºçãªã¢ã¯ãã£ããŒã·ã§ã³ãå¿
èŠã§ãã
source .venv/bin/activate Â
python hello.pyuv ã¯Pythonç°å¢ã®ç®¡çãç°¡çŽ åããããã«èšèšãããŠãããä»®æ³ç°å¢ãæç€ºçã«ã¢ã¯ãã£ããŒãããªããŠããuv run ã®ã³ãã³ãã§ãPythonã¹ã¯ãªãããçŽæ¥å®è¡ã§ããŸããïŒå ·äœçãªæé ã¯åŸè¿°ïŒ
uv run hello.py ã䜿çšãããšãã³ãã³ãã¯èªåçã«ä»¥äžã®ããšãè¡ããŸãïŒ1. ãããžã§ã¯ãã«é©åãªä»®æ³ç°å¢ãæ€åºããŸã
2. ãã®ç°å¢ãäžæçã«äœ¿çšããŠã¹ã¯ãªãããå®è¡ããŸã
3. ãããç°å¢ãæåã§ã¢ã¯ãã£ããŒãããå¿ èŠãªãè¡ããŸã
ãã㯠uv ã®äž»èŠãªå©ç¹ã®äžã€ã§ãç°å¢ã®ã¢ã¯ãã£ããŒã·ã§ã³ãæé»çã«åŠçããŸãã
UVã§ã©ã€ãã©ãªãŒãã€ã³ã¹ããŒã«ãã
uv pip install <ã©ã€ãã©ãªå> ã䜿çšããŸãã
ãã€ãã®pipã®åã«uvãšæžãã ãã§ããã
äŸ: requests ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããå Žå
$ uv pip install requestsã€ã³ã¹ããŒã«æžã¿ã®ã©ã€ãã©ãªäžèЧã確èªããã«ã¯ã以äžã®ã³ãã³ãã䜿çšããŸãã
$ uv pip listUVã§Pythonãã¡ã€ã«ãå®è¡ãã
ã§ã¯ãå®éã«Pythonãã¡ã€ã«ãå®è¡ããŠã¿ãŸãããã
hello.pyãã¡ã€ã«ãçšæããŠã"Hello, World!âã衚瀺ããã³ãŒããæžããŸãã
$ echo 'print("Hello, World!")' > hello.pyuv runã³ãã³ãã§ãhello.pyãã¡ã€ã«ãå®è¡ããŸãã
uv run hello.pyç°¡åã§ããã
ããŸã uv init
UVã«ã¯ãããžã§ã¯ããšããç¬ç¹ã®æŠå¿µããããŸãã
uv initã§å®è¡ã§ããŸããå
·äœçã«ã¯ã
ä»®æ³ç°å¢ã®äœæ
pyproject.toml ã requirements.txt ãªã©ã®èšå®ãã¡ã€ã«ã®çæ
äŸåé¢ä¿ã®åæã€ã³ã¹ããŒã«
ãã§ããŸãã
ããã»ã©ã説æããuv venvã¯ãäžèšã®äžã®1.ä»®æ³ç°å¢ã®äœæã«ããããŸããã€ãŸããuv init 㯠uv venvã®æ©èœãå
å«ããäžã§ããããžã§ã¯ãå
šäœã®ã»ããã¢ãããè¡ããããå
æ¬çãªã³ãã³ãã§ãã倧ããªãããžã§ã¯ããå§ããéã«ã¯ uv init ã䟿å©ãããããŸããã
å®éã«ãã£ãŠã¿ãŸãããã
uv unitã®åŸã«ãããžã§ã¯ãåãå ããŠå®è¡ããŸãããããšãçŽäžã«ãããžã§ã¯ãåã®ãã£ã¬ã¯ããªãäœãããŸãã
ãã®äžã«ä»®æ³ç°å¢ãäœæãããŠããŸãã
# ãããžã§ã¯ããäœæ
$ uv initãnew-project
# ãã£ã¬ã¯ããªã«ç§»å
$ cd new-projectnew-projectãã£ã¬ã¯ããª

pyproject.tomlãã¡ã€ã«ã¯ä»¥äžã®ããã«ãªã£ãŠããŸãã
ããã§ã¯ãpythonã®ããŒãžã§ã³ã3.12以äžãšããŠããŸãã
[project]
name = "new-project"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = []
Pythonã®ããŒãžã§ã³ã¯ããããžã§ã¯ããäœæããéã«æå®ããããšãã§ããŸãããããžã§ã¯ãåã«ç¶ããŠã-pãªãã·ã§ã³ã§ããŒãžã§ã³ãæå®ããã ãã§ãã
$ uv init new-project-3.10 -p 3.10pyproject.tomlãã¡ã€ã«ã確èªãããšã">=3.10"ã«ãªã£ãŠãããšæããŸãã
ããã±ãŒãžã®è¿œå ã¯uv addã§è¡ããŸã
$ uv add requestsãã£ã¬ã¯ããªå ã«ããrequirements.txt ã pyproject.toml ã«èšèŒãããäŸåé¢ä¿ãäžæ¬ã§ã€ã³ã¹ããŒã«ããã«ã¯ã以äžã®ã³ãã³ãã䜿çšããŸãã
$ uv syncPythonãã¡ã€ã«ã®å®è¡ã¯ãuv runã§è¡ããŸãã
$ uv run main.py ãåºåçµæã
Hello from new-project-3-10!ãããã«
ãããã§ããã§ããããã
é«éãªãšãããè¯ãã§ããããããžã§ã¯ã管çãããããã§ãããã³ãŒããçŽæçã§åãããããã®ã§ã¯ãªãããšæããŸãã
Pythonã«ã¯æ§ã
ãªããã±ãŒãžç®¡çããŒã«ããã£ãŠãããããæ¥ã
é²åããŠããŸããèªåãããããŸã§ããã€ãã®ããŒã«ã䜿ã£ãŠãã玹ä»ãããŠããŸããããä»ã®ãšãããUVãäžçªäœ¿ããããããªå°è±¡ã§ãã
æåŸãŸã§ãèªã¿ããã ãããããšãããããŸããã