2章 環境構築
この章では下記を理解することを目的としている。
- 正しく環境構築をすることの重要性とその意義
- 環境構築に必要な知識やツール
本書で取り扱われている環境構築の手順についてはgithubで公開されています。
https://github.com/eycjur/ds_instructions_guide/blob/main/docs/setup.md
2.1. 分析の土台としての環境構築
なぜ環境構築が大切か
適切な環境構築が行われていない場合、下記のような現象が発生する。
- 同じコードでも異なる挙動を示す(再現性がない)
- チーム内での連携がスムーズに進まない(効率性が低い)
環境構築における再現性とは、だれでも同一の環境を利用できるようにすることで、常に同じ実行結果を得られるようにすることを指す。
また、データサイエンスプロジェクトにおけるバグの調査など、目的とは直接関係しない作業に多く時間がかかるため、環境構築において効率性が高めることは重要である。
2.2. リポジトリの構造を整える
適切なリポジトリを作成することは下記のようなメリットがある。
- チーム全体での理解が容易になる
- チーム開発の分担がしやすくなる
- 保守・拡張がしやすくなる
- 自動化ツールの導入・運用がしやすくなる
本書籍で扱うリポジトリの構造については、Githubで公開されているため、ここでは割愛。
https://github.com/eycjur/ds_instructions_guide
2.3. VS Codeでの開発環境の整備
本書ではVisual Studio Codeを使い開発効率を上げる方法を紹介している。
ファイルによる設定
.vscode/setting.jsonを編集することでユーザーやワークスペースの設定を編集することができる。ファイルを直接操作をするのが難しい場合は、エディタの起動後のファイル->ユーザー設定を開くことでGUIによる設定を行うことも可能。
拡張機能
.vscode/extensions.jsonにはインストールされた拡張機能を管理することができる。
本書では代表的な拡張機能としてRuff, Git Graph, Rainbow CSVなどが書かれている。
デバッガ
VS Codeには下記のように開発をサポートするためのデバッグ機能が備わっている。
- ブレークポイントの設定
- 任意の行までプログラムの実行を一時停止することができる機能
- ステップ実行・変数の追跡
- 1行ずつ処理を進めながら変数の値を確認できる機能
- デバッグコンソール
- 実行中のコードの中で、任意のPythonコードを評価し動作を確認できる機能
また、.vscode/launch.jsonを編集することでさまざまなデバッグを行うことが可能。
ショートカット
ファイル->ユーザー設定->キーボード ショートカットを編集することで自由にショートカットを割り振れる。
2.4. Dev Containerによる仮想環境構築
Dev Containerは、VS Codeの拡張機能の1つであり、Dockerコンテナ内に開発環境を構築する仕組み。
Dockerはアプリケーション開発のために必要なツールを1つの環境にまとめ、コンテナとしてパッケージ化する技術。
Docker Composeは複数のコンテナで構成されるシステムを一括で定義・管理することができるツール。
Dev Containerを使うことによって、
- 開発環境への接続がスムーズになる
- VS Codeの拡張機能や設定をコンテナ内に統一できる
- チーム内での環境差分がなくなり、開発の再現性が高まる
などのメリットがある。
Dev Containerの使い方
.devcontainer/devcontainer.jsonに設定を記入する。
先ほどの拡張機能やデバッガの設定もdevcontainer.jsonに記入して設定できる。
設定ができたら、VS Codeのコマンドパレット(ctrl+shift+P)を開き、Dev Containers: Reopen in Containerを選択することでコンテナを起動できます。
2.5. uvによるパッケージ管理
本書ではパッケージ管理のツールとして、uvを利用する方法が挙げられている。uvは、pipやPoetryと比較し、依存関係の解決能力に優れていたり、高速で動作するという特徴がある。
# 初期設定
uv init
# 利用可能なPythonのバージョン確認
uv python list
# python 3.12のインストール
uv python install 3.12
#
uv sync
# パッケージのインストール
uv add pandas
# パッケージのインストール(バージョンを指定)
uv add 'pandas==2.0.0'
# パッケージのインストール(バージョンを範囲指定)
uv add 'pandas>=2.0.0'
# パッケージのアンインストール
uv reomve pandas
# Pytonスクリプトの実行
uv run python ./sample.py
感想
Dev Containerを使った仮想環境の構築は初めてでしたが、setup.mdの内容をベースに進めることができ、非常にわかりやすかったです。
私はソロで分析の仕事をすることが多いため、再現性や効率を高めることはおろそかになりがちでした。個人単位ではどうしても各自で使いやすい環境やツールを使いがちですが、長期的に見ると今回のような標準的な環境を構築するメソッドを組むことが重要になってくるのではないかなと思います。
昔は仮想環境構築にはvirtualenv、バージョン管理はpyenv辺りを使っていた記憶ですが、やはり時代が進むにつれてどんどん便利になっていきますね。開発者に感謝です。