Python基礎

作業時間を半減する環境構築:VSCode/タスクランナー|“保存で整う・ワンキーで回る”仕組み化テンプレ

副業でも本業でも、作業時間の半分は『環境と段取り』で削れます

本記事は、次の4点を“コピペで導入できる”形で提供します。

対象読者:Pythonでデータ分析や自動化を行う初〜中級者。VSCodeを日常的に使いたい・チームで品質を揃えたい方向け。

この記事で身に付くこと

  • 保存時に自動で整うVSCode環境(Black/Ruff/isort)
  • ワンキーで回る一連実行(Format→Lint→Test→Report)
  • 誰のPCでも同じ結果を出す再現性テンプレ(venv×pip-tools×pre-commit)
  • Windows/Mac両対応のタスク/Makefileサンプル

>>Excel業務の自動化で月3万円:社内案件の作り方|“60分→10分”を商品化して社内受注する
>>データ可視化レポート納品の型:Tableau/Matplotlib|“図3点+結論1行+運用”で伝わる・続く・刺さる
>>【保存版】Python副業の始め方:月3〜10万円を目指す現実的ステップ
>>見積り・契約・著作権:トラブルを避ける基本知識|“スコープ×検収×知財”を先に決める
>>初案件はこの一通で決まる|返信率を上げる提案文テンプレ45選【コピペ可/検収基準・見積り付き】

時間が溶ける“3つのムダ”を断つ

現場でよく見かける非効率は、だいたい次の3つに集約されます。

  • ムダ1:手で整える … フォーマット・インポート整理・警告潰しを毎回手作業。
  • ムダ2:手で回すlint → test → report を都度コマンドで3回実行。
  • ムダ3:手で説明 … 環境差異で「動かない」→ 説明・修正工数が膨張。

対策は「保存で整う」「ワンキーで回る」「READMEで再現」の3点セット。
以下のテンプレをそのまま入れるだけでOKです。

セットアップ全体像(最短レシピ)

ここからは そのまま貼って動く設定 を順に示します。
必要に応じて自分のプロジェクトへ調整してください。

1) プロジェクト雛形を用意

ねらい:コード(src/)と検証(tests/)を分け、設定はリポジトリ直下に集約。どのPCでも迷わず開ける構成にします。

project_root/
  .vscode/
  src/
  tests/
  data/
  reports/
  README.md
  requirements.in
  Makefile
  pyproject.toml   # black/ruff/isort/pytest等の設定置き場
  .pre-commit-config.yaml

2) 仮想環境+依存管理(pip-tools)

ポイントrequirements.in に“望むライブラリ名”だけを書き、pip-compile で「解決済みの固定版(requirements.txt)」を自動生成します。これでメンバー全員が同じバージョンを使えます。

これでできること:環境差による「動かない」を防止。新メンバーも pip-sync 1発で同じ環境に。

# Windows/Mac共通(PowerShell/Bash)
python -m venv .venv
. .venv/Scripts/activate # Windows PowerShell
# source .venv/bin/activate # macOS/Linux
python -m pip install --upgrade pip pip-tools


# 依存は requirements.in に記述
cat > requirements.in << 'EOF'
black
ruff
isort
pytest
pandas
matplotlib
EOF


# 依存関係を解決して固定化
pip-compile -o requirements.txt requirements.in
# .venv を requirements.txt と完全同期
pip-sync requirements.txt

3) VSCode 拡張&保存時整形

目的:保存するたびに 自動で フォーマット・インポート整理・静的解析が走るようにします。手で整える作業をゼロに。

推奨拡張:Python、Pylance、Jupyter、Black Formatter(ms-python.black-formatter)、Ruff(charliermarsh.ruff)、GitLens、EditorConfig。

.vscode/settings.json(例)

{
  "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": { "source.organizeImports": true },
  "python.testing.pytestEnabled": true,
  "python.analysis.typeCheckingMode": "basic",
  "[python]": { "editor.defaultFormatter": "ms-python.black-formatter" },
  "ruff.lint.run": "onSave",
  "files.trimTrailingWhitespace": true,
  "files.insertFinalNewline": true
}

Windowsでパス解決に失敗する場合は、"python.defaultInterpreterPath".venv\\Scripts\\python.exe に明示指定してください。

補足formatOnSave保存のたびにBlackが実行され、codeActionsOnSaveインポート整頓(isort)を行います。ruff.lint.run は Ruff の静的解析を保存時に発火します。

4) pre-commit(保存漏れを防ぐ最終防壁)

役割:Git の commit直前に自動整形・チェック を走らせ、保存漏れやルール違反を未然に防ぎます。

.pre-commit-config.yaml(例)

repos:
  - repo: https://github.com/psf/black
    rev: 24.4.2
    hooks: [{id: black}]
  - repo: https://github.com/charliermarsh/ruff-pre-commit
    rev: v0.5.0
    hooks: [{id: ruff}]
  - repo: https://github.com/pycqa/isort
    rev: 5.13.2
    hooks: [{id: isort}]
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.6.0
    hooks:
      - {id: end-of-file-fixer}
      - {id: trailing-whitespace}

インストール&有効化:

pip install pre-commit
pre-commit install  # commit前に自動整形・静的解析

なぜ効く? コードレビューで「末尾空白」や「改行が…」といったノイズ指摘が消え、本質的な議論だけに集中できます。

5) Makefile:一連実行の定番(Mac/WSL向け)

ねらいmake formatmake test など 短いコマンド名 で一連の処理を呼べるようにします。

.PHONY: setup sync lint test format report run clean
PY?=.venv/bin/python
PIP?=.venv/bin/pip

setup:
$(PIP) install --upgrade pip pip-tools
pip-compile -o requirements.txt requirements.in
pip-sync requirements.txt

sync:
pip-sync requirements.txt

lint:
$(PY) -m ruff check src tests
$(PY) -m isort --check --diff src tests

format:
$(PY) -m isort src tests
$(PY) -m black src tests

test:
$(PY) -m pytest -q

report:
$(PY) -m src.report

run:
$(PY) -m src.main

clean:
rm -rf .pytest\_cache .ruff\_cache **pycache**

使い方

  • 初回セットアップ:make setup
  • 依存同期:make sync
  • コード整形:make format
  • 静的解析:make lint
  • テスト:make test
  • まとめて:make format lint test

Windowsで make がない場合は、次章の VSCodeタスク で同等のことを実現できます。

6) VSCode タスク(Make不要でも回る)

目的Tasks: Run Task から 一括実行(Format → Lint → Test)ができるようにする。

.vscode/tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Setup",
      "type": "shell",
      "command": "python -m pip install --upgrade pip pip-tools && pip-compile -o requirements.txt requirements.in && pip-sync requirements.txt"
    },
    {"label": "Lint", "type": "shell", "command": ".venv/bin/python -m ruff check src tests || .venv/Scripts/python -m ruff check src tests"},
    {"label": "Format", "type": "shell", "command": ".venv/bin/python -m isort src tests && .venv/bin/python -m black src tests || .venv/Scripts/python -m isort src tests && .venv/Scripts/python -m black src tests"},
    {"label": "Test", "type": "shell", "command": ".venv/bin/python -m pytest -q || .venv/Scripts/python -m pytest -q"},
    {"label": "All", "dependsOrder": "sequence", "dependsOn": ["Format", "Lint", "Test"]}
  ]
}

キーバインド例keybindings.json

[
  {"key": "ctrl+shift+l", "command": "workbench.action.tasks.runTask", "args": "All"},
  {"key": "ctrl+shift+s", "command": "workbench.action.files.saveAll"}
]

動かし方

  1. すべてのファイルを保存(Ctrl/Cmd + Shift + S
  2. Ctrl/Cmd + Shift + LAll タスク実行 → Format → Lint → Test が順番に走ります。

7) デバッグ&ノートブック運用

目的:VSCodeのデバッガとJupyterを併用し、実験(notebooks)→関数化(src)→テスト(tests) の流れを定着させます。

.vscode/launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Run main",
      "type": "python",
      "request": "launch",
      "program": "${workspaceFolder}/src/main.py",
      "console": "integratedTerminal"
    },
    {
      "name": "Python: Pytest",
      "type": "python",
      "request": "launch",
      "module": "pytest",
      "args": ["-q"],
      "console": "integratedTerminal"
    }
  ]
}

Jupyterのコツ

  • notebooks/実験用src/本番用。Notebookで得た知見は関数化して src/ に移し、tests/ で検証。
  • レポート出力は jupyter nbconvert --to html で PDF 代替に。
  • 前処理スクリプトは src/ に置き、Notebook から呼び出して一貫性を保つ。

“保存で整う”を保証する設定(pyproject.toml)

役割:Black / isort / Ruff / Pytest のルールを1か所に集約。誰が実行しても同じ結果に。

[tool.black]
line-length = 100

\[tool.isort]
profile = "black"

\[tool.pytest.ini\_options]
minversion = "7.0"
addopts = "-q"

\[tool.ruff]
line-length = 100
select = \["E","F","I","B"]

初心者向けポイント

  • line-length は折り返し位置。100にすると横に長すぎない、読みやすい幅に整います。
  • select はRuffがチェックするルール群。E(PEP8エラー)やF(未使用など)等を一括チェック。

さらに時短する“小ワザ集”

  • テンプレ化:本リポジトリを GitHub の Template Repository にして、新規案件は「Use this template」で即作成。
  • スニペット:テスト・ロギングの雛形を VSCode の User Snippets に登録。
  • ターミナル分割:左で pytest -f、右で ruff --fix を常時実行。
  • Diff駆動pytest -q の失敗から直す → 仕上げに All 実行でクリンナップ。
  • 共通ロガーsrc/utils/logging.py にロガー初期化を集約。
  • Windows快適化:PowerShell プロファイルに pc(pip-compile)、ps(pip-sync)等のエイリアス。

README雛形(コピペ可)

# プロジェクト名
## 目的/KPI
- 例:定例レポートの自動生成(所要60→10分)
## 環境
- Python 3.11(.venv)/Windows 11 or macOS 14
## セットアップ
- `python -m pip install --upgrade pip pip-tools`
- `pip-compile -o requirements.txt requirements.in && pip-sync requirements.txt`
## 開発
- VSCodeで `Tasks: Run Task -> All`(Format→Lint→Test)
## 納品物
- `reports/weekly_report.pdf`、`README.md`、`CHANGELOG.md`

効果測定.timebook/ に Before/After の所要時間を CSV で記録。短縮時間 × 人数 × 時給 で ROI を算出し、月次で共有。

トラブル対処の早見表

  • VSCodeが .venv を認識しないPython: Select Interpreter.venv を選択。
  • Ruff が動かない → 拡張が入っているか、ruff.lint.runonSave になっているか確認。
  • pip-compile が見つからない.venv を有効化しているか確認 (. .venv/Scripts/activate / source .venv/bin/activate)。
  • Windowsでパスが通らない.venv\\Scripts\\python.exe を明示、タスクの || で代替パスをフォールバック。

伴走の提案:レビューが早い環境で“現場仕様”に

設定の詰めと自動化の型は、質問初動と差し戻しが速い環境ほど早く整います。無料カウンセリング/体験で、あなたの開発環境にMake/Tasks/pre-commitを落とし込み、“保存で整う・ワンキーで回る”まで仕上げましょう。

TechAcademy データサイエンスコース(受講料:174,600円~ ※更に割引あり)

TechAcademy 無料相談

株式会社キカガク AI人材長期育成コース(受講料:237,600円~)

キカガク 無料相談

まとめ:人ではなく道具にルールを任せる

  • 保存で整う → 誰でも同じコード品質に。
  • ワンキーで回る → レビュー前の“やり忘れ”を排除。
  • 再現性テンプレ → 新メンバーも 10 分で参画可能。

このテンプレを導入すれば、レビュー指摘や差し戻しは目に見えて減り、「作る・試す・直す」の回転数が上がります。まずは自分の案件にそのまま入れて、今日から“手で整える時間”を捨てましょう。

この記事から次に読むべきもの(内部リンク)

副業
Excel業務の自動化で月3万円:社内案件の作り方|“60分→10分”を商品化して社内受注する

毎週のExcel定型作業(集計・整形・レポート化)をPythonで自動化し、月3万円の運用費(または評価/手当)を安定的に社内受注するための実践ガイドです。鍵は以下の4点。 この記事は「業務棚卸し → ...

納品の型
データ可視化レポート納品の型:Tableau/Matplotlib|“図3点+結論1行+運用”で伝わる・続く・刺さる

結論:レポートは「データ→図」ではなく「意思決定→図」の順で設計します。最短で伝わり、運用で“使い続けられる”型は次の4点です。 迷ったら「結論→推移→分解→構成→打ち手→運用」。これで会議は10分で ...

初案件
初案件はこの一通で決まる|返信率を上げる提案文テンプレ45選【コピペ可/検収基準・見積り付き】

初案件の提案、何を書けば“選ばれる”の? 長文は読まれないし、自己PRだけだと響かない…今すぐ使える“型”が欲しい! 提案は自己紹介ではなく、「相手のKPIを上げる約束」です。 本記事では、現場で磨い ...

継続案件化
単発を“毎月継続契約”に変える|週次10分レポートと改善バックログの型

単発納品を“毎月の継続契約(リテイナー)”に変えたい。結局、何から整えればいい? 毎週のレポート会って長くなりがち…。10分で意思決定まで持っていくコツは? 結論:リテイナー化の鍵は ①意思決定に直結 ...

副業
【保存版】Python副業の始め方:月3〜10万円を目指す現実的ステップ

Pythonの副業って本当に稼げるの?どうやって最初の1円を作ればいい? 結論、月3〜10万円は“再現性のある型”で十分現実的です。やるべき順番とテンプレをこの記事に全部まとめました。 この記事で身に ...

最近のコメント

    • この記事を書いた人
    • 最新記事

    ふみと

    このブログでは、データサイエンティストとして市場価値を上げる方法を独自にまとめて発信しています。

    【プロフィール】
    ・大手企業データサイエンティスト/マーケティングサイエンティスト(10年、年収900万円台)/案件100件以上
    ・資格:JDLA E資格(日本ディープラーニング協会主催)/JDLA Community(CDLE会員)/Advanced Marketer/ビジネス統計スペシャリスト/統計検定2級/TOEIC 805
    ・スキル:Python/Tableau/SQL/機械学習/Deep Learning/RPA

    -Python基礎