開発ツール
Python と Go の開発ツール
uv・poetry・ipython・jupyter・cookiecutter と、gopls・dlv・air。Python と Go の開発でよく使う周辺ツール。
言語そのものの入れ方は エディタと開発の小道具 や mise にあります。ここでは、その上で使う周辺のツールをまとめています。
uvとても速い Python のパッケージ・プロジェクト管理
Ubuntu には最初から入っていません。 で入れられます。
pip・venv・pipx・pyenv の役割を1つでこなす、Rust 製の高速なツールです。依存の追加や仮想環境の作成、Python 本体の導入までできます。
$ uv init myapp && cd myapp # プロジェクトを作る(pyproject.toml ができる)
$ uv add requests # 依存を追加(.venv も自動で作られる)
$ uv add --dev pytest # 開発用の依存
$ uv run main.py # 仮想環境の中で実行する
$ uv sync # uv.lock のとおりに入れ直す
$ uv python install 3.13 # Python 本体を入れる
$ uv venv && source .venv/bin/activate
$ uv pip install -r requirements.txt # pip と同じ使い方もできる
$ uvx ruff check . # ツールを入れずに1回だけ実行する
$ uv tool install ruff # コマンドとして入れる(pipx の代わり)poetryPython の依存とパッケージ化
Ubuntu には最初から入っていません。 で入れられます。
依存の管理から、PyPI に出すためのパッケージ作りまでをまとめて扱います。
$ poetry new myapp # 雛形を作る
$ poetry init # 既存のフォルダを poetry 管理にする
$ poetry add requests
$ poetry add --group dev pytest
$ poetry install # poetry.lock のとおりに入れる
$ poetry run python main.py # 仮想環境の中で実行する
$ poetry show --tree # 依存の木
$ poetry build # 配布用のファイルを dist/ に作るipython高機能な Python の対話シェル
Ubuntu には最初から入っていません。 で入れられます。
補完・色付け・履歴が強化された、Python の対話モードです。ちょっとした試し書きに便利です。
$ ipython
In [1]: import json
In [2]: json.dumps? # ? で説明を見る(?? でソース)
In [3]: %timeit sum(range(1000)) # 実行時間を測る
In [4]: %run script.py # スクリプトを実行して変数を残す
In [5]: !ls # シェルのコマンドを実行する
In [6]: %history -n 1-5 # 履歴jupyterブラウザで使うノートブック
Ubuntu には最初から入っていません。 で入れられます。
コードと結果・グラフ・メモを1つのノートブック(.ipynb)にまとめて、ブラウザで少しずつ実行できます。
$ jupyter lab # ブラウザで開く(http://localhost:8888)
$ jupyter lab --no-browser --port 8888 # ブラウザを開かない(WSL・リモートで)
$ jupyter nbconvert --to html note.ipynb # HTML に書き出す
$ jupyter nbconvert --to script note.ipynb # .py に書き出す
$ jupyter nbconvert --to notebook --execute --inplace note.ipynb # 全部実行して保存cookiecutterテンプレートからプロジェクトを作る
Ubuntu には最初から入っていません。 で入れられます。
質問に答えるだけで、テンプレートからプロジェクトの雛形を作ります。
$ cookiecutter gh:audreyfeldroy/cookiecutter-pypackage # GitHub のテンプレートから
$ cookiecutter ./my-template # 手元のテンプレートから
$ cookiecutter gh:user/repo --no-input project_name=demo # 質問せずに値を渡すgoplsGo の言語サーバー
Ubuntu には最初から入っていません。 で入れられます。
エディタの補完・定義へのジャンプ・エラー表示を支える、Go 公式の言語サーバーです。ふつうは VS Code や Neovim が裏で動かします。
$ gopls version
$ gopls check main.go # エラーや警告を表示する
$ gopls format -w main.go # 整形して上書きするgo install で入れたコマンドは ~/go/bin に入ります。export PATH="$PATH:$HOME/go/bin" を ~/.bashrc に足しておきます。
dlv (Delve)Go のデバッガ
Ubuntu には最初から入っていません。 で入れられます。
Go のプログラムを止めながら、変数の中身を見たり1行ずつ進めたりします。
$ dlv debug # 今のパッケージをビルドしてデバッグ開始
$ dlv debug ./cmd/app -- -port 8080 # -- の後ろはプログラムへの引数
$ dlv test ./pkg # テストをデバッグする
$ sudo dlv attach <PID> # 動いているプロセスにつなぐ(dlv) break main.go:42 # b でも可。行や関数名で止める場所を決める
(dlv) continue # c: 次に止まるまで進む
(dlv) next # n: 1行進む(関数には入らない)
(dlv) step # s: 関数の中に入る
(dlv) print user # p: 変数を表示
(dlv) locals # ローカル変数の一覧
(dlv) quitair保存するたびに Go を再ビルド・再起動
Ubuntu には最初から入っていません。 で入れられます。
ファイルの変更を見張って、Go のプログラムを自動でビルドし直して起動し直します。Web サーバーの開発で便利です。
$ air init # 設定ファイル .air.toml を作る
$ air # 監視を始める
$ air -c .air.toml