オブジェクト指向設計の基本は、適切なクラスに適切な「責任」を割り当てることです。
クラスへの「責任の割り当て」の基本スキルと実践テクニックを、サンプルアプリケーションのコードを触りながら学んでみましょう。
<責任駆動の設計パターンを習得しよう>
1. 責任割り当てパターンGRASPのおさらい
2. 動くアプリケーションでのGRASPの実践例の紹介
オブジェクト指向設計の考え方や手法には、いろいろなものがありますが、本回では、ワーフスブラックの「オブジェクトデザイン」
などで提唱され、ラーマン「実践URL」のGRASPの元になっている「責任駆動設計(RDD)」を題材にします。
動くアプリケーションで、どのように GRASPのパターンを応用しているかを解説します。また、GRASP のより大きな適用例として
「イベント駆動アーキテクチャ」や「ドメイン層の分離」など業務アプリケーションにおけるアーキテクチャ適用の実践例も紹介します。
※GRASPとは? クラスやオブジェクトに責務を割り当てる方針を導くパターンや原則のこと。
<講師>
増田 亨氏
有限会社システム設計 代表取締役。
業務アプリケーション開発プロジェクトの陣頭指揮をしながら「ドメイン駆動設計」の実践に日々取り組んでいる。
自らのスキルアップのためにも「ドメイン駆動設計の実践」や「オブジェクトの設計スキル」をテーマに講演やブログ執筆を行っている。
2012年6月ソフトウェア技術者の創造的な学習の場の創出を目的にクリエイティブラーニングLLCを設立。
[これまでの発表]
「オブジェクト指向の設計と実装の学び方のコツ」
「小さなオブジェクトでドメインモデルを組み立てる」
「ドメイン駆動設計という仕事の流儀」
<このエクササイズで得られること>
・「手続き的」な設計と「オブジェクト指向的」な設計との考え方の違いを実感できる。
・より「役に立つ」オブジェクトを設計・実装する基本テクニックを習得できる。
・オブジェクトの実践的な設計スキルを磨くための指針が手に入いる。
<想定する参加者>
・3年目以降の開発者の方。
・現場仕事を通じて実装経験を積んできたが、次のステップとして設計力を磨く方法や機会に悩んでいる。
・学びやスキルを自分の手で獲得しようという意欲のある方。
<参考書籍>
「オブジェクトデザイン」
「実践URL」
<アジェンダ>
13:45 - 14:00 受付
14:00 - 17:00 モデルとコードで学ぶ責任駆動設計
サンプルアプリケーションを元に、モデルを考え、リファクタリングする、という流れをハンズオンで進めます。
- 考え方の説明 (30min)
- サンプルアプリケーションとハンズオンの進め方 (30min)
- ハンズオン前半 (40min)
- 中間フィードバック
- ハンズオン後半 (40min)
- まとめ (10min)
[形式] ハンズオン
< Learning Community Factoryについて>
ソフトウェア開発者にとって、現場の仕事ベースのみで、様々なスキルを身に着けていくには、あまりにもその機会が限定的、偶発的であると言わざるを得ません。より良いソフトウェア作りが現場で増えるよう、現場での実践を想定した、学びの機会と場の創出をその目的としています。
「Learning Community Factory」は、井庭研究室が発見した「学習パターン」の「学びの共同体をつくる」から、実践的、創発的な学びの場を作り出していく思いを込めて、命名しました。
ソフトウェア開発者の学び方をリデザインするために、このコミュニティでは学習パターンを応用、適用します。
<次回以降の予定>
今回の企画は、3部構成となっており、第2部にあたります。今後、第3部を予定しています。
第1部は、ドメイン駆動設計の前提であるオブジェクト指向の設計と実装を、基本に戻って学び直す内容でした。
第2部は、ドメイン駆動設計の各パターンの基礎になっている「責任駆動設計(RDD)」の考え方を、ラーマンの GRASP パターンを中心に、具体例で学ぶ講座です。
第3部は、要件定義や要件分析の活動と、ソフトウェア特にドメイン層の設計・実装の活動を、直接結びつける実践的でアジャイルなやり方を紹介します。
<主催>
Learning Community Factory
<開催支援>
クリエイティブ・ラーニング LLC
DevLOVE
このコミュニティは、ソフトウェア開発に必要な技術、知識を実践的な方法で 学び、メンバー同士のコミュニケーションによって、創発的に学びを 深めることを目的としています。 井庭研究室が発見した「学習パターン」をベースに、ソフトウェア開発者の 学び方をリデザインするために、このコミュニティを始めました。 学習パターン http://learningpatterns.sfc.keio.ac.jp...
メンバーになる