Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
UMLで考える,Ploneの開発
Search
Takashi NAGAI
October 18, 2024
110
0
Share
UMLで考える,Ploneの開発
Plone研究会発表資料 @OSC 2024 Fall
Takashi NAGAI
October 18, 2024
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
170
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
180
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.4k
Exploring anti-patterns in Rails
aemeredith
3
360
Large-scale JavaScript Application Architecture
addyosmani
515
110k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
440
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
54k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
180
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
540
Joys of Absence: A Defence of Solitary Play
codingconduct
1
360
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Transcript
UMLで考える,Ploneの開発 -UMLで設計するPloneコンテンツタイプ Plone研究会 永井 孝
PloneとUML:これまでの歩み • Archetypes: • Archetypesというフレームワークで構築 • UMLのクラス図,状態遷移図からPythonコードを自動生成するArchGenXML • Dexterity: •
Plone 4以降、Dexterityが主流に.XMLスキーマとPythonコードで定義 • AGXが登場.UMLからの生成も可能に (Plone 5.2までサポート) • TTW (Through The Web): DexterityのコンテンツタイプをWebブラウザ上で設 計可能に • 現在: • Dexterityが主流.UMLからの自動生成は減少傾向 • UMLによる設計は、構造やワークフローの可視化、理解促進に依然として有効
なぜUMLで設計するのか? • Ploneはオブジェクトデータベース: • コンテンツをオブジェクトとして扱う • オブジェクト指向設計との親和性が高い • UMLで表現するメリット: •
可視化: 複雑な構造を図解し、関係者間で共有、理解を深める • 設計段階でのエラー防止: 早期に問題を発見・修正、手戻りを 削減 • 保守性の向上: 構造を明確化し、変更・拡張を容易に • コミュニケーションの円滑化: 開発者以外も設計内容を理解し やすくなる
クラス図でコンテンツタイプを表現 • クラス: コンテンツタイプをクラスとして定義 • 例:ニュース記事、イベント情報 • 属性: フィールドを属性として定義 •
データ型、制約などを明記 • 例: title (string), description (text), start_date (date), text(text) など • 操作: メソッドを操作として定義 • コンテンツに対する操作をモデリング • 例: get_title(), set_description(), publish() • 関係性: 継承、関連、集約 • 例:ニュース記事は DexterityContent を継承
状態遷移図でワークフローを表現 • ワークフロー: コンテンツのライフサイクルを管理 状態: コ ンテンツの状態を表現 例:下書き、レビュー待ち、公開済 み •
遷移: 状態間の遷移を表現 例:下書き → レビュー待ち → 公 開済み • イベント: 遷移のトリガー 例:編集、申請、承認 • ガード条件: 遷移の条件 例:特定のロールを持つユーザーの み承認可能 • アクション: 遷移に伴う処理 例:メール送信、インデックス 更新
BehaviorとUMLインターフェース • Behavior: • コンテンツタイプに機能を追加 再利用可能なモジュール • 例:コメント機能、タグ付け機能 • インターフェース:
• クラスが持つべき操作を定義 • Behaviorとインターフェースの類似性: • 抽象的な定義を提供 • 具体的な実装は別に定義
まとめ • Ploneのコンテンツタイプ設計にUMLは有効 • 可視化、設計段階でのエラー防止、保守性向上、コミュニケーション 促進 • クラス図でコンテンツタイプの構造を表現 • 状態遷移図でワークフローを表現
• 今後の展望: UMLツールとの連携強化