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
34
UMLで考える,Ploneの開発
Plone研究会発表資料 @OSC 2024 Fall
Takashi NAGAI
October 18, 2024
Tweet
Share
Featured
See All Featured
The Cult of Friendly URLs
andyhume
78
6.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Code Review Best Practice
trishagee
65
17k
Why Our Code Smells
bkeepers
PRO
335
57k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
Raft: Consensus for Rubyists
vanstee
137
6.7k
Side Projects
sachag
452
42k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
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ツールとの連携強化