/Linuxコマンド

開発ツール

Python と Go の開発ツール

uv・poetry・ipython・jupyter・cookiecutter と、gopls・dlv・air。Python と Go の開発でよく使う周辺ツール。

言語そのものの入れ方は エディタと開発の小道具 や mise にあります。ここでは、その上で使う周辺のツールをまとめています。

uvとても速い Python のパッケージ・プロジェクト管理

Ubuntu には最初から入っていません。 で入れられます。

pip・venv・pipx・pyenv の役割を1つでこなす、Rust 製の高速なツールです。依存の追加や仮想環境の作成、Python 本体の導入までできます。

bash
$ 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 に出すためのパッケージ作りまでをまとめて扱います。

bash
$ 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 の対話モードです。ちょっとした試し書きに便利です。

bash
$ 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)にまとめて、ブラウザで少しずつ実行できます。

bash
$ 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 には最初から入っていません。 で入れられます。

質問に答えるだけで、テンプレートからプロジェクトの雛形を作ります。

bash
$ cookiecutter gh:audreyfeldroy/cookiecutter-pypackage   # GitHub のテンプレートから
$ cookiecutter ./my-template                             # 手元のテンプレートから
$ cookiecutter gh:user/repo --no-input project_name=demo # 質問せずに値を渡す

goplsGo の言語サーバー

Ubuntu には最初から入っていません。 で入れられます。

エディタの補完・定義へのジャンプ・エラー表示を支える、Go 公式の言語サーバーです。ふつうは VS Code や Neovim が裏で動かします。

bash
$ 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行ずつ進めたりします。

bash
$ 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) quit

air保存するたびに Go を再ビルド・再起動

Ubuntu には最初から入っていません。 で入れられます。

ファイルの変更を見張って、Go のプログラムを自動でビルドし直して起動し直します。Web サーバーの開発で便利です。

bash
$ air init                         # 設定ファイル .air.toml を作る
$ air                              # 監視を始める
$ air -c .air.toml