mcpField
O
odoo-best-practices

odoo-best-practices

github.com/mercatorproj開発160 回インストール2 週間前に更新
リポジトリ

odoo-best-practices について

odoo-best-practicesは、Odoo 18~20のモジュール開発、拡張、レビュー向けのガイダンススキルです。ORMの活用、安全な拡張、アクセス制御を重視し、作業に応じた参考資料を案内します。

主な機能

  1. 01Odoo 18~20のモジュール開発指針
  2. 02コア改変ではなく拡張を推奨
  3. 03ORMとアクセス制御の実践
  4. 04トピック別の参考資料への案内
  5. 05テストと性能改善の指針

活用シーン

  1. 01カスタムOdooモジュールの設計
  2. 02モデルとアクセスルールの実装レビュー
  3. 03XMLビューやOWLコンポーネントの構築・継承
  4. 04テスト作成やORMクエリの最適化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mercatorproj/odoo-best-practices --skill odoo-best-practices

インストール後、Claude Code で/odoo-best-practicesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
README.md
agents/
openai.yaml
references/
official-docs.md
frontend-architecture.md
module-architecture.md
dev-environment.md
project-roadmap.md
external-api.md
orm-patterns.md
testing-performance.md
testing.md
security-i18n.md
views-owl.md

詳細

Odoo のベストプラクティス

Odoo バージョン 18~20 を対象にモジュールを構築、拡張、レビューする際は、これらのプラクティスを適用してください。特に指定がない限り、Odoo 20.0 の規約を前提としています。

設計理念

これらのルールは、Odoo の中核となる設計理念を守るためのものです。

  1. すべてがモジュールです — Enterprise の機能であっても、Community の上に積み重ねられたモジュールにすぎません。
  2. データがプログラムです — ビュー、アクション、メニュー、セキュリティルールはデータベースのレコードであり、XML データファイルによってインストールされます。
  3. 変更せず、拡張します — モデルの _inherit、xpath によるビュー継承、QWeb 継承を使用します。コアを変更しなければ、アップグレードをスムーズに行えます。
  4. XML ID がつなぎ役です — module.xml_id がグローバルな名前空間であり、depends はシステムのパッケージマネージャーのように機能します。
  5. 設定より規約を優先します — 名前はテーブル、列、UI に自動的に対応します。命名規約に従ってください。
  6. ORM は API であり、セキュリティ境界です — パブリックメソッドは RPC 経由で公開されます。生の SQL はセキュリティを迂回します。
  7. 設計上、統合されています — 1 つのデータベースと共有のベースモデルを使用します。プレゼンテーション層の方向性は OWL です。

判断に迷った場合は、将来のアップグレードを安全に保ち、ORM の範囲内にとどまる選択肢を選んでください。

基本ルール

  • コアモジュールは変更しないでください。必ずカスタムモジュール内で _inherit を使って拡張してください。
  • 新しいモデルには必ず _description を定義し、ir.model.access.csv にアクセスルールを設定してください。
  • UI のみの検証には api.onchange を、データベースレベルの不変条件には api.constrains を使用してください。
  • 名前の衝突を避けるため、カスタムモジュール名にはベンダー名またはプロジェクト名の名前空間を付けてください(例:mycompany_feature)。
  • __manifest__.py の version は Odoo シリーズに合わせてください(例:20.0.1.0.0)。
  • ユーザーに表示する文字列には、翻訳に対応できるよう _() を付けてください。
  • ORM のプリフェッチを活用するため、可能な場合は Python のループよりもレコードセットのメソッド(mapped、filtered、sorted)を優先してください。
  • sudo() の使用は必要最小限にし、権限を昇格する理由を必ず記載してください。
  • ユーザー入力からドメインを連結しないでください。インジェクションを防ぐため、Domain オブジェクト(domain &= Domain(...))を使用してください。
  • 従来の _sql_constraints の代わりに、models.Constraint / models.Index(Odoo 20 以降)を使用してください。

関連資料

タスクが該当分野に関わる場合は、関連するリファレンスを読んでください。デフォルトではすべてのリファレンスを読み込まないでください。

  • モジュールのセットアップ、マニフェスト、移行: references/module-architecture.md を読んでください。
  • 外部 JSON-2 API 統合、API キー、RPC トランザクション: references/external-api.md を読んでください。
  • モデル定義、計算フィールド、制約、レコードセット: references/orm-patterns.md を読んでください。
  • XML ビュー、ビュー継承、OWL コンポーネント、フロントエンドアセット: references/views-owl.md を読んでください。
  • Web クライアントのアーキテクチャ、コンテキスト、py_js、JS Domain クラス: references/frontend-architecture.md を読んでください。
  • アクセスルール、レコードルール、マルチカンパニー、翻訳: references/security-i18n.md を読んでください。
  • テストフレームワーク、パフォーマンスのパターン、クエリの最適化: references/testing-performance.md を読んでください。
  • 開発環境のセットアップ、ソースからのインストール、odoo-bin、設定、スキャフォールディング、サーバーの実行: references/dev-environment.md を読んでください。
  • 公式ドキュメントのインデックス(チュートリアル、リファレンス、ハウツー、インストール、ガイドライン): references/official-docs.md を読んでください。

コメント