AI

OSS ERP比較:Odoo vs ERPNext vs Dolibarr でSAP・freeeを脱却する

オープンソースラボ編集部2026年6月13日

OSS ERP比較:Odoo vs ERPNext vs Dolibarr でSAP・freeeを脱却する

SAP Business One(月100,000円〜)・freee(月23,760円〜)・弥生会計(月27,280円〜)に対して、Odoo(統合ビジネスアプリ群)・ERPNext(Python/Frappe製のモジュラーERP)・Dolibarr(PHP製の軽量ERP/CRM)はOSSでERPをセルフホストできます。

OSS ERPを選ぶ理由

  • コスト: Odooコミュニティ版は無料。SAP Business One(年間150万円〜)と比べて大幅削減
  • モジュール化: 会計・在庫・販売・購買・HR・製造を必要なものだけ有効化
  • カスタマイズ: Python/JavaScriptで独自ビジネスロジックをモジュールとして追加
  • ローカライズ: ERPNextは日本語対応・消費税計算・電子帳簿保存法対応(コミュニティ)

主要ツールの概要

Odoo

2005年公開、Python/JavaScript(OWL)製のOSSです。GitHubスター40k+。会計・販売・CRM・在庫・製造・HR・eコマース・プロジェクト管理など50+アプリを一つのプラットフォームで提供します。コミュニティ版は無料・エンタープライズ版はモジュール単位の有料(月$28/ユーザー〜)。

# docker-compose.yml - Odoo 17 セルフホスト
version: '3.8'
services:
  odoo:
    image: odoo:17.0
    restart: unless-stopped
    ports:
      - "8069:8069"
    environment:
      HOST: postgres
      USER: odoo
      PASSWORD: ${DB_PASSWORD}
    volumes:
      - odoo_data:/var/lib/odoo
      - ./addons:/mnt/extra-addons  # カスタムモジュール
    depends_on:
      - postgres
    command: --database mycompany --update all

  postgres:
    image: postgres:15
    restart: unless-stopped
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: odoo
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  odoo_data:
  postgres_data:
# Odoo XML-RPC APIで受注を自動作成
import xmlrpc.client
import os

ODOO_URL = 'https://erp.yourcompany.com'
DB = 'mycompany'
USERNAME = 'admin'
API_KEY = os.environ['ODOO_API_KEY']

# 認証
common = xmlrpc.client.ServerProxy(f'{ODOO_URL}/xmlrpc/2/common')
uid = common.authenticate(DB, USERNAME, API_KEY, {})

models = xmlrpc.client.ServerProxy(f'{ODOO_URL}/xmlrpc/2/object')

def call(model: str, method: str, *args):
    return models.execute_kw(DB, uid, API_KEY, model, method, list(args))

# 顧客を検索または作成
def get_or_create_partner(name: str, email: str) -> int:
    partners = call('res.partner', 'search', [('email', '=', email)])
    if partners:
        return partners[0]
    return call('res.partner', 'create', {
        'name': name,
        'email': email,
        'customer_rank': 1,
    })

# 販売注文(Sale Order)を作成
def create_sale_order(partner_id: int, product_id: int, qty: float, price: float) -> int:
    order_id = call('sale.order', 'create', {
        'partner_id': partner_id,
        'order_line': [
            (0, 0, {  # 新しい行を追加
                'product_id': product_id,
                'product_uom_qty': qty,
                'price_unit': price,
            })
        ],
    })
    # 注文を確認(Draft → Sale)
    call('sale.order', 'action_confirm', [order_id])
    return order_id

# 使用例: ECサイトの注文をOdooに自動登録
partner_id = get_or_create_partner('田中太郎', 'tanaka@example.com')
order_id = create_sale_order(
    partner_id=partner_id,
    product_id=42,  # OdooのProduct ID
    qty=2,
    price=9800.0,
)
print(f'販売注文 #{order_id} 作成完了')
# Odoo カスタムモジュール(addons/my_module/__manifest__.py)
{
    'name': 'My Custom Module',
    'version': '17.0.1.0.0',
    'category': 'Custom',
    'author': 'Your Company',
    'depends': ['sale', 'account'],
    'data': [
        'views/sale_order_views.xml',
        'security/ir.model.access.csv',
    ],
    'installable': True,
    'auto_install': False,
}

# models/sale_order.py - 受注に独自フィールドを追加
from odoo import models, fields, api

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    # カスタムフィールド: 案件の優先度スコア
    priority_score = fields.Integer(
        string='優先度スコア',
        compute='_compute_priority_score',
        store=True,
    )

    @api.depends('amount_total', 'partner_id.country_id')
    def _compute_priority_score(self):
        for order in self:
            # 金額が高い × 日本顧客 = 高優先度
            base_score = min(int(order.amount_total / 10000), 100)
            country_bonus = 20 if order.partner_id.country_id.code == 'JP' else 0
            order.priority_score = base_score + country_bonus

ERPNext

2008年公開、Python/JavaScript(Frappe Framework)製のOSSです。GitHubスター22k+。中小製造業・非製造業・教育・医療向けの垂直統合型ERPで、会計・在庫・HR・給与・プロジェクト管理を提供。日本語UI・日本の消費税対応がコミュニティで整備されています。

# ERPNext を Frappe Docker でデプロイ
git clone https://github.com/frappe/frappe_docker.git
cd frappe_docker
cp example.env .env

# .env を編集してサイト名とパスワードを設定
sed -i 's/SITE_NAME=erp.example.com/SITE_NAME=erp.yourcompany.com/' .env

# 起動(フルスタック)
docker compose -f compose.yaml   -f overrides/compose.mariadb.yaml   -f overrides/compose.redis.yaml   up -d

# ERPNextアプリのインストール
docker compose exec backend bench get-app --branch version-15 erpnext
docker compose exec backend bench install-app erpnext --site erp.yourcompany.com

機能比較表

比較項目OdooERPNextDolibarr
モジュール数50+20+40+
会計・財務
製造(MRP)
eコマース
日本語対応✅(コミュ)
GitHub Stars40k+22k+5k+

ERP・会計システムはLow-Codeカテゴリ/categories/low-codeのN8Nと連携してECサイト(Shopify・WooCommerce)の注文を自動でOdooに取り込むワークフローを構築します。マーケティングカテゴリ/categories/marketingのListmonkとOdoo CRMを組み合わせてターゲットメールキャンペーンを実行する統合も実現できます。

FAQ

Q. freeeからOdooへの会計データ移行方法は?

A. ①freeeから仕訳データをCSVエクスポート(設定→エクスポート→仕訳帳)②Odooの会計モジュールの勘定科目(Chart of Accounts)をfreeeに合わせて設定③Odoo「会計→仕訳帳→インポート」からCSVをインポート。変換スクリプト(Python)でfreeeのCSV形式をOdoo標準形式(date,account_code,debit,credit,narration)に変換する中間ステップが必要です。消費税コードもodoo_tax_codeとして事前に設定しておく必要があります。電子帳簿保存法対応: Odooの請求書PDF出力にタイムスタンプを付与するカスタムモジュールがコミュニティで提供されています。

Q. Odooのコミュニティ版(Community)とエンタープライズ版(Enterprise)の違いは何ですか?

A. 主な差分: ①会計: コミュニティはシングルカレンシー・エンタープライズは多通貨・銀行照合の自動化②eコマース: コミュニティ版は基本機能のみ・エンタープライズは拡張eコマース③モバイルアプリ: エンタープライズのみ対応④テクニカルサポート: エンタープライズはOdoo社のサポート契約含む。セルフホストのコミュニティ版(無料)で始めて、機能が不足した場合にエンタープライズ版(月$28/ユーザー〜)に移行するのが一般的な選択肢です。Odooのコミュニティ版でも400社以上のサードパーティアドオン(apps.odoo.com)が利用可能です。

Q. ERPNextの「Frappe Framework」とは何ですか?

A. FrappeはERPNextを構築しているPythonのフルスタックWebフレームワークです(Djangoに似た構成)。特徴: ①DocType(データモデル)をコードなしでUI定義→自動でAPI・フォーム・リストビューが生成②Permission framework(ロールベースアクセス制御)が組み込み③独自のMariaDB/PostgreSQLクエリビルダーとWebSocket通知④カスタムアプリ開発: bench new-app myappでスケルトン生成→bench install-app myappでERPNextに追加。ERPNextのカスタマイズはPython(DocTypeロジック・Hooks・Webマーケットプレース)とJavaScript(フォームスクリプト・ダッシュボード)で行います。

Q. 中小規模(社員30名)の製造業にはOdooとERPNextどちらが向いていますか?

A. 製造業にはERPNextが向いています。理由: ①BOM(Bill of Materials)・生産指示・品質検査フロー・在庫転送のUXがOdooより直感的②日本の製造業向けコミュニティアドオンが整っている③freeeとのCSV連携が比較的シンプル。OdooはeコマースやWebサイト統合・多国籍展開(英語・ユーロ中心)に強く、国内製造業の業務フローはERPNextの方がフィットしやすいです。ただしOdooのほうがUIの洗練度が高くユーザーの習熟が早いため、社員教育リソースが少ない場合はOdooを推奨する場合もあります。

まとめ

ユースケース推奨ツール
総合ビジネスアプリ・eコマース統合Odoo
製造業・国内中小企業・日本語強化ERPNext
超軽量・PHP・会計+CRM程度で十分Dolibarr

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。