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
0
37
UMLで考える,Ploneの開発
Plone研究会発表資料 @OSC 2024 Fall
Takashi NAGAI
October 18, 2024
Tweet
Share
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
A Philosophy of Restraint
colly
203
16k
Mobile First: as difficult as doing things right
swwweet
222
9k
A better future with KSS
kneath
238
17k
Building Your Own Lightsaber
phodgson
104
6.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
192
16k
Into the Great Unknown - MozCon
thekraken
34
1.6k
Designing for humans not robots
tammielis
250
25k
Bash Introduction
62gerente
610
210k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
570
Writing Fast Ruby
sferik
628
61k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
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ツールとの連携強化