# Install dependencies

プロジェクトルートで
`poetry install`
を実行すると、このプロジェクトに必要なPythonパッケージをインストールできます。

```bash
# プロジェクトルートで実行する
cd ~/repos/haniwers

# poetryで依存パッケージをインストールする
poetry install
Installing dependencies from lock file
Package operations: 0 installs, 0 updates, 0 removals
Installing the current project: haniwers (0.20.0)
```

依存パッケージは
`./.venv`
にインストールされます。

:::{tip}
**Poetryによる仮想環境の構築**

`Poetry`
は
`pyproject.toml`
のあるディレクトリに
`.venv`
を自動的に作成し、その中に依存パッケージをインストールします。
この動作は
`Poetry`
の
`virtualenvs.in-project = true`
設定により制御されており、本プロジェクトではこの設定を採用しています。
:::

## 仮想環境を起動する

プロジェクトはすべてディレクトリ内の仮想環境で実行します。
プロジェクトを開発する場合は、作業の開始時に
`source .venv/bin/activate`
を実行して、仮想環境を起動します。

```bash
# bash/zshの場合
source .venv/bin/activate

# fishの場合
source .venv/bin/activate.fish
```

仮想環境を起動するスクリプトはシェルごとに用意されています。
あなたが利用しているシェルに合わせて変更してください。

## CLIの動作を確認する

仮想環境を起動したら、
`which haniwers`
を実行してパスを確認します。

```bash
# CLIのパスを確認
(.venv) $ which haniwers
~/repos/haniwers/.venv/bin/haniwers
```

表示されたパスがカレントディレクトリの仮想環境の実行パス（
`.venv/bin/haniwers`
）になっていればOKです。

```bash
# CLIが動作することを確認
(venv) $ haniwers --help
```

また
`haniwers --help`
などで、実際のコマンドを実行し、動作を確認できます。

:::{note}
**どうして仮想環境を使うのか？**

多くのOSにはPythonがシステム全体にインストールされています。
このプロジェクトの開発環境も、システムに直接構築することが可能です。
しかし、本プロジェクトの開発では、
**ディレクトリ内に専用の仮想環境**
を作成して作業することを
**強く推奨**
します。
その理由は
**プロジェクトの再現性**
を保つためです。

システムにインストールされたPythonには、
他のプロジェクトやツールによってさまざまな
パッケージが追加されていることがあります。
その状態で作業をすると、開発者個人の環境ごとの差異によって、
予期しないエラーが発生する可能性があります。

このような問題を避けるため、
近年ではプロジェクトごとに独立した仮想環境を作成し、
その中で開発を進める方法が主流になっています。
この手法により、依存パッケージのバージョンや実行環境を厳密に管理できるため、
誰がどの環境で動かしても同じ結果を得られるようになります。

`haniwers`
も、この方針にしたがって設計しており、
`Poetry`
によって
`.venv`
ディレクトリ以下に軽量な仮想環境が自動で構築されるようになっています。

:::
