Odoo 17で倉庫管理を極める | 第2回: Odoo 17のインストールとInventoryモジュールの基本設定

## はじめに
Odoo 17の**Inventoryモジュール**は、倉庫管理を効率化するための強力なツールですが、その力を最大限に引き出すには、正しいインストールと初期設定が不可欠です。第1回ではOdoo 17とWMSの概要を紹介しました。第2回では、**Odoo 17のインストール**手順と**Inventoryモジュールの基本設定**を詳細に解説します。UbuntuサーバーまたはDockerを使用した環境構築から、倉庫や製品の設定まで、実践的なステップを紹介します。

## システム要件
Odoo 17をスムーズに動作させるには、以下のシステム要件を満たす必要があります：

- **OS**: Ubuntu 20.04/22.04 LTS（推奨）またはWindows/MacOS
- **Python**: Python 3.10以上
- **データベース**: PostgreSQL 12以上
- **メモリ**: 最小4GB（8GB以上推奨）
- **ストレージ**: 20GB以上の空き容量
- **依存パッケージ**: wkhtmltopdf（PDF生成用）、Node.js（JavaScript依存）

Dockerを使用する場合、DockerおよびDocker Composeの最新バージョンが必要です。以下のセクションでは、UbuntuとDockerの両方のインストール手順を解説します。

## Odoo 17のインストール
Odoo 17は、クラウド（Odoo Online/Odoo.sh）またはオンプレミスで導入可能です。ここでは、オンプレミス環境でのインストールをUbuntuとDockerの2つの方法で説明します。

### 方法1: Ubuntuサーバーへのインストール
Ubuntu 22.04 LTSを例に、以下の手順でOdoo 17をインストールします：

1. **システムの更新と依存パッケージのインストール**:
   ```bash
   sudo apt update && sudo apt upgrade -y
   sudo apt install -y python3-pip python3-dev python3-venv libpq-dev
   sudo apt install -y wkhtmltopdf git postgresql
   ```

2. **PostgreSQLの設定**:
   PostgreSQLをインストールし、Odoo用のデータベースユーザーを作成します。
   ```bash
   sudo -u postgres createuser -s odoo
   sudo -u postgres createdb odoo17
   ```

3. **Odooソースコードの取得**:
   Odoo 17のCommunity版をGitHubからクローンします。
   ```bash
   git clone --branch 17.0 https://github.com/odoo/odoo.git /odoo
   cd /odoo
   ```

4. **Python仮想環境の作成と依存のインストール**:
   ```bash
   python3 -m venv venv
   source venv/bin/activate
   pip install -r requirements.txt
   ```

5. **Odooの起動**:
   Odooをローカルで起動し、ブラウザでアクセスします（デフォルトポート: 8069）。
   ```bash
   ./odoo-bin -c odoo.conf
   ```

   ブラウザで `http://localhost:8069` にアクセスし、初期データベースを作成。

### 方法2: Dockerを使用したインストール
Dockerは、環境構築を簡素化します。以下の手順で進めます：

1. **DockerとDocker Composeのインストール**:
   ```bash
   sudo apt install -y docker.io docker-compose
   ```

2. **Docker Composeファイルの作成**:
   以下の内容を `docker-compose.yml` に保存します。
   ```yaml
   version: '3.8'
   services:
     odoo:
       image: odoo:17.0
       depends_on:
         - db
       ports:
         - "8069:8069"
       environment:
         - HOST=db
         - USER=odoo
         - PASSWORD=odoo
       volumes:
         - odoo-data:/var/lib/odoo
     db:
       image: postgres:15
       environment:
         - POSTGRES_DB=postgres
         - POSTGRES_USER=odoo
         - POSTGRES_PASSWORD=odoo
       volumes:
         - db-data:/var/lib/postgresql/data
   volumes:
     odoo-data:
     db-data:
   ```

3. **コンテナの起動**:
   ```bash
   docker-compose up -d
   ```

   ブラウザで `http://localhost:8069` にアクセスし、データベースを初期化。

**注意点**:
- Ubuntuインストールでは、ファイアウォール（例: UFW）でポート8069を開放。
- Docker使用時は、ボリューム設定でデータ永続化を確保。

## Inventoryモジュールの有効化
Odoo 17をインストールしたら、以下の手順でInventoryモジュールを有効化します：

1. **Odooにログイン**:
   ブラウザでOdooにアクセスし、初期データベースを作成。デフォルトの管理者アカウント（`admin` / `admin`）でログイン。

2. **モジュールのインストール**:
   - メニューから「アプリ」（Apps）に移動。
   - 検索バーで「Inventory」を検索。
   - 「在庫」（Inventory）をクリックし、「インストール」を選択。

3. **関連モジュールの確認**:
   Inventoryモジュールは、以下のモジュールと連携することで機能を最大化します：
   - **販売（Sales）**: 出荷と在庫の同期
   - **購買（Purchase）**: 入庫と発注の管理
   - **製造（Manufacturing）**: 生産と在庫の統合
   これらが必要な場合は、同時にインストールします。

## Inventoryモジュールの基本設定
Inventoryモジュールを有効化したら、倉庫管理の基本設定を行います。以下のステップで、倉庫、位置、単位を設定します。

### 1. 倉庫の作成
Odooでは、物理的な倉庫や仮想的な在庫場所を「倉庫」として管理します。
- メニューから「在庫」→「設定」→「倉庫」を選択。
- 「新規」をクリックし、以下を設定：
  - 倉庫名（例: 東京倉庫）
  - 短縮名（例: TKY）
  - 会社（デフォルトで自動設定）
- 保存後、必要に応じて複数の倉庫を追加。

### 2. 保管場所の設定
倉庫内には、棚やエリアなどの「保管場所」を設定します。
- 「在庫」→「設定」→「保管場所」に移動。
- 例: 東京倉庫内に「棚A」「棚B」を作成。
  ```python
  # 保管場所をプログラムで作成する例
  from odoo import models, fields

  class StockLocation(models.Model):
      _inherit = 'stock.location'

      name = fields.Char('場所名', required=True)
      location_id = fields.Many2one('stock.location', '親場所')
  ```
  このコードはカスタムモジュールでの例ですが、GUIで同様の設定が可能です。

### 3. 単位（UoM）の設定
製品の数量を管理するために、単位（例: 個、kg、箱）を設定します。
- 「在庫」→「設定」→「単位」に移動。
- 例: 「個」「ダース」「ボックス」を追加。
- カテゴリ（例: 数量単位、重量単位）で分類。

### 4. 製品の追加
在庫管理の基本となる製品を登録します。
- 「在庫」→「製品」→「製品」に移動。
- 「新規」をクリックし、以下を設定：
  - 製品名（例: スマートフォン）
  - 製品タイプ: 在庫品
  - 在庫追跡: ロット番号/シリアル番号/追跡なし
  - 初期数量（例: 100個）
  - 保管場所（例: 東京倉庫/棚A）

### 実践例: サンプル倉庫の設定
以下の手順で、簡単な倉庫環境を構築します：
1. 倉庫「大阪倉庫」を作成（短縮名: OSA）。
2. 保管場所「棚1」「棚2」を大阪倉庫内に追加。
3. 単位「個」と「箱」を設定（1箱=12個）。
4. 製品「Tシャツ」を追加（初期数量: 50個、棚1に保管）。

## 実践: 最初の在庫調整
設定が完了したら、初期在庫を登録します：
1. 「在庫」→「在庫調整」に移動。
2. 「新規」をクリックし、以下を入力：
   - 製品: Tシャツ
   - 数量: 50
   - 保管場所: 大阪倉庫/棚1
3. 「適用」をクリックして在庫を更新。

以下は、在庫調整をプログラムで実行する例です：
```python
from odoo import models, fields, api

class StockInventory(models.Model):
    _inherit = 'stock.inventory'

    @api.model
    def adjust_inventory(self, product_id, quantity, location_id):
        inventory = self.create({
            'name': '初期在庫調整',
            'location_ids': [(6, 0, [location_id])],
            'product_ids': [(6, 0, [product_id])],
        })
        inventory.action_start()
        inventory.line_ids.create({
            'product_id': product_id,
            'product_qty': quantity,
            'location_id': location_id,
            'inventory_id': inventory.id
        })
        inventory.action_validate()
```

このコードは、カスタムモジュールで在庫調整を自動化する例です。GUIでは数クリックで同様の操作が可能です。

## トラブルシューティング
インストールや設定時に発生しがちな問題と解決策を以下にまとめます：
- **PostgreSQL接続エラー**: ユーザー名/パスワードを確認し、PostgreSQLが起動していることを確認。
- **依存パッケージの不足**: `requirements.txt`を再確認し、pipでインストール。
- **ポート競合**: 8069番ポートが他のサービスで使用されていないか確認。
- **在庫データ不一致**: サンプルデータをクリアし、初期設定を再確認。

Odooの[公式フォーラム](https://www.odoo.com/forum/help-1)や[ドキュメント](https://www.odoo.com/documentation/17.0/)は、問題解決に役立ちます。

## まとめと次回予告
Odoo 17のインストールと**Inventoryモジュールの基本設定**を完了することで、倉庫管理の基盤が整いました。**Ubuntu**や**Docker**を使った環境構築、倉庫や製品の設定、在庫調整の手順を学びました。これにより、リアルタイムの在庫管理が可能な環境が準備できました。

次回は、**入出庫**と**内部移動**の具体的なプロセスを解説します。バーコードを使った効率的な作業や、販売・購買との連携方法も紹介しますので、ぜひお楽しみに！

---

この記事が役に立ったら、**いいね**や**ストック**をお願いします！Odoo WMSのシリーズを一緒に学びましょう！