odoo-development について
企業向け業務アプリケーションを構築・拡張する開発者向けのOdoo開発スキルです。モジュール型のPython・XML開発、ORM、セキュリティ、テスト、国際化、性能を扱います。
主な機能
- 01Odooのモジュール型アーキテクチャ
- 02ORMとPythonの実践
- 03XMLビューと継承
- 04アクセス制御と検証
- 05テストと性能の指針
活用シーン
- 01Odooモジュールの構築や拡張
- 02モデル、ビュー、コントローラーの実装
- 03モジュールのセキュリティと性能の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill odoo-developmentインストール後、Claude Code で/odoo-developmentを入力して読み込まれたか確認します。
詳細
Odoo 開発
Python、Odoo、およびエンタープライズビジネスアプリケーション開発の専門家です。
開発の主要原則
コード品質とアーキテクチャ
- Python、XML、JSON を使用した正確な Odoo の例を用いて、明確で技術的な回答を作成します
- Odoo の ORM、API デコレーター、XML ビュー継承を活用して、モジュール性を高めます
- PEP 8 標準と Odoo のベストプラクティスに従います
- Odoo の規約に沿った、説明的な命名を使用します
構成と整理
- モデル、ビュー、コントローラー、データ、セキュリティの関心事を分離します
- 十分に文書化された
__manifest__.pyファイルを作成します - 明確なディレクトリー構成でモジュールを整理します
ORM と Python の実装
models.Modelを継承するモデルを定義します- API デコレーターを適切に適用します:
- モデルレベルのメソッドには
@api.model - レコードセットのメソッドには
@api.multi - 計算フィールドには
@api.depends - UI のフィールド変更には
@api.onchange
- モデルレベルのメソッドには
- XML ベースの UI ビュー(フォーム、ツリー、カンバン、カレンダー、グラフ)を作成します
<xpath>と<field>による XML 継承を使用して変更を加えます- HTTP エンドポイントには
@http.routeを使用してコントローラーを実装します
エラー管理と検証
- 組み込みの例外(
ValidationError、UserError)を活用します @api.constrainsによって制約を適用します- 堅牢な検証ロジックを実装します
- try-except ブロックを戦略的に使用します
- Odoo のロギングシステム(
_logger)を活用します - Odoo のテストフレームワークを使用してテストを作成します
セキュリティとアクセス制御
- ACL とレコードルールを XML で定義します
- セキュリティグループを通じてユーザー権限を管理します
- すべてのアーキテクチャレイヤーでセキュリティを最優先します
- ir.model.access.csv ファイルで適切なアクセス権を実装します
国際化と自動化
- 翻訳可能な文字列に
_()を付けます - 自動化アクションとサーバーアクションを活用します
- スケジュールタスクには cron ジョブを使用します
- 動的な HTML テンプレートには QWeb を使用します
パフォーマンスの最適化
- ドメインフィルターとコンテキストで ORM クエリーを最適化します
- 静的データや更新頻度の低いデータをキャッシュします
- 負荷の高いタスクをスケジュールアクションに委ねます
- 継承を利用して XML 構造を簡素化します
- prefetch_fields と計算メソッドを効率的に使用します
基本方針
- 「設定より規約」を適用します
- すべてのレイヤーでセキュリティを徹底します
- モジュール型アーキテクチャを維持します
- 包括的に文書化します
- コアコードを変更せず、継承によって拡張します
モジュール構成のベストプラクティス
module_name/
├── __init__.py
├── __manifest__.py
├── models/
│ ├── __init__.py
│ └── model_name.py
├── views/
│ └── model_name_views.xml
├── security/
│ ├── ir.model.access.csv
│ └── security_rules.xml
├── data/
│ └── data.xml
├── controllers/
│ ├── __init__.py
│ └── main.py
├── static/
│ └── src/
├── wizards/
│ ├── __init__.py
│ └── wizard_name.py
└── reports/
└── report_templates.xml
モデル定義の例
from odoo import models, fields, api
from odoo.exceptions import ValidationError
class CustomModel(models.Model):
_name = 'custom.model'
_description = 'Custom Model'
name = fields.Char(string='Name', required=True)
active = fields.Boolean(default=True)
state = fields.Selection([
('draft', 'Draft'),
('confirmed', 'Confirmed'),
], default='draft')
@api.depends('name')
def _compute_display_name(self):
for record in self:
record.display_name = record.name
@api.constrains('name')
def _check_name(self):
for record in self:
if len(record.name) < 3:
raise ValidationError("Name must be at least 3 characters")
ビュー定義の例
<record id="custom_model_form" model="ir.ui.view">
<field name="name">custom.model.form</field>
<field name="model">custom.model</field>
<field name="arch" type="xml">
<form>
<header>
<field name="state" widget="statusbar"/>
</header>
<sheet>
<group>
<field name="name"/>
<field name="active"/>
</group>
</sheet>
</form>
</field>
</record>
コメント
Markdown 対応