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
41
UMLで考える,Ploneの開発
Plone研究会発表資料 @OSC 2024 Fall
Takashi NAGAI
October 18, 2024
Tweet
Share
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
BBQ
matthewcrist
87
9.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Practical Orchestrator
shlominoach
186
10k
The Invisible Side of Design
smashingmag
299
50k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
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ツールとの連携強化