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
80
UMLで考える,Ploneの開発
Plone研究会発表資料 @OSC 2024 Fall
Takashi NAGAI
October 18, 2024
Tweet
Share
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
A better future with KSS
kneath
240
18k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
0
48
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
56
Test your architecture with Archunit
thirion
1
2.1k
A Soul's Torment
seathinner
1
2.1k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
Tell your own story through comics
letsgokoyo
0
770
My Coaching Mixtape
mlcsv
0
17
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
350
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ツールとの連携強化