SlideShare a Scribd company logo
Enviar búsqueda
Cargar
Multi paradigm design
Denunciar
Compartir
Akira Takahashi
Programmer en Preferred Networks, Inc.
Seguir
•
8 recomendaciones
•
3,225 vistas
1
de
26
Multi paradigm design
•
8 recomendaciones
•
3,225 vistas
Denunciar
Compartir
Descargar ahora
Descargar para leer sin conexión
Akira Takahashi
Programmer en Preferred Networks, Inc.
Seguir
Recomendados
Start Concurrent por
Start Concurrent
Akira Takahashi
22.8K vistas
•
19 diapositivas
Boost container feature por
Boost container feature
Akira Takahashi
3.4K vistas
•
19 diapositivas
Development C++ Community por
Development C++ Community
Akira Takahashi
5.9K vistas
•
49 diapositivas
Study3 boost por
Study3 boost
Kohsuke Yuasa
1.7K vistas
•
45 diapositivas
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017 por
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
3.8K vistas
•
13 diapositivas
2014 08-30 life with roslyn por
2014 08-30 life with roslyn
shibuki
8.4K vistas
•
26 diapositivas
Más contenido relacionado
La actualidad más candente
なぜか技術書典5で 3サークルの運営をやってた話 por
なぜか技術書典5で 3サークルの運営をやってた話
ota42y
814 vistas
•
26 diapositivas
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express por
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express
Takahiro YAMAGUCHI
2.5K vistas
•
26 diapositivas
Ciecleci por
Ciecleci
YosukeHojo
79 vistas
•
10 diapositivas
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ por
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
文樹 高橋
547 vistas
•
26 diapositivas
3日時間をもらったのでTypeScriptを触ってみた por
3日時間をもらったのでTypeScriptを触ってみた
Yasushi Kato
28K vistas
•
48 diapositivas
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部 por
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
Masahiro Wakame
12.8K vistas
•
56 diapositivas
La actualidad más candente
(20)
なぜか技術書典5で 3サークルの運営をやってた話 por ota42y
なぜか技術書典5で 3サークルの運営をやってた話
ota42y
•
814 vistas
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express por Takahiro YAMAGUCHI
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express
Takahiro YAMAGUCHI
•
2.5K vistas
Ciecleci por YosukeHojo
Ciecleci
YosukeHojo
•
79 vistas
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ por 文樹 高橋
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
文樹 高橋
•
547 vistas
3日時間をもらったのでTypeScriptを触ってみた por Yasushi Kato
3日時間をもらったのでTypeScriptを触ってみた
Yasushi Kato
•
28K vistas
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部 por Masahiro Wakame
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
Masahiro Wakame
•
12.8K vistas
プログラミング同好会とすごい合同勉強会 por nemumu
プログラミング同好会とすごい合同勉強会
nemumu
•
1.5K vistas
jQuery 対応ライブラリと TypeScript por インフラジスティックス・ジャパン株式会社
jQuery 対応ライブラリと TypeScript
インフラジスティックス・ジャパン株式会社
•
5K vistas
今年はRubyを勉強するぞ!という方へCodeYourRubyリポジトリのご紹介 por 中條 剛
今年はRubyを勉強するぞ!という方へCodeYourRubyリポジトリのご紹介
中條 剛
•
764 vistas
mrubyで作るマイコンボード por kishima7
mrubyで作るマイコンボード
kishima7
•
361 vistas
括弧を使わないLispプログラミング por Yuta Mizushima
括弧を使わないLispプログラミング
Yuta Mizushima
•
1.8K vistas
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも! por Toshiaki Maki
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
Toshiaki Maki
•
1.2K vistas
いまNode Express4で書いてるディレクターが 初めて書き始める2ヶ月前くらいの自分に言っておく por Takahiro YAMAGUCHI
いまNode Express4で書いてるディレクターが 初めて書き始める2ヶ月前くらいの自分に言っておく
Takahiro YAMAGUCHI
•
7.1K vistas
チーム開発積み重ね Rails Developers Meetup 2018 Day2 por tatsuo sakurai
チーム開発積み重ね Rails Developers Meetup 2018 Day2
tatsuo sakurai
•
4K vistas
TypeScriptは明日から使うべき por Masahiro Wakame
TypeScriptは明日から使うべき
Masahiro Wakame
•
6.1K vistas
rogyゼミ第2回 ニックさん por rogy01
rogyゼミ第2回 ニックさん
rogy01
•
2.1K vistas
2014年の制作物報告 por uu ymd
2014年の制作物報告
uu ymd
•
2.7K vistas
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド por keroyonn
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
keroyonn
•
1.9K vistas
goroutineはどうやって動いているのか por ota42y
goroutineはどうやって動いているのか
ota42y
•
4.2K vistas
bootsnapはどれくらい早くなるのか por ota42y
bootsnapはどれくらい早くなるのか
ota42y
•
1.5K vistas
Destacado
二分探索法で作る再帰呼び出しできるCプリプロセッサマクロ por
二分探索法で作る再帰呼び出しできるCプリプロセッサマクロ
digitalghost
7.5K vistas
•
21 diapositivas
Boost study14 por
Boost study14
fjnl
2.1K vistas
•
36 diapositivas
左と右の話 por
左と右の話
Cryolite
6.9K vistas
•
34 diapositivas
Boost.Graph入門 por
Boost.Graph入門
egtra
4K vistas
•
23 diapositivas
error handling using expected por
error handling using expected
Akira Takahashi
3K vistas
•
30 diapositivas
C++14 solve explicit_default_constructor por
C++14 solve explicit_default_constructor
Akira Takahashi
7.3K vistas
•
7 diapositivas
Destacado
(20)
二分探索法で作る再帰呼び出しできるCプリプロセッサマクロ por digitalghost
二分探索法で作る再帰呼び出しできるCプリプロセッサマクロ
digitalghost
•
7.5K vistas
Boost study14 por fjnl
Boost study14
fjnl
•
2.1K vistas
左と右の話 por Cryolite
左と右の話
Cryolite
•
6.9K vistas
Boost.Graph入門 por egtra
Boost.Graph入門
egtra
•
4K vistas
error handling using expected por Akira Takahashi
error handling using expected
Akira Takahashi
•
3K vistas
C++14 solve explicit_default_constructor por Akira Takahashi
C++14 solve explicit_default_constructor
Akira Takahashi
•
7.3K vistas
Boost Tour 1_58_0 merge por Akira Takahashi
Boost Tour 1_58_0 merge
Akira Takahashi
•
4.8K vistas
C++1z draft por Akira Takahashi
C++1z draft
Akira Takahashi
•
6.6K vistas
クソザコ鳥頭が非順序連想コンテナに入門してみた por Mitsuru Kariya
クソザコ鳥頭が非順序連想コンテナに入門してみた
Mitsuru Kariya
•
6.6K vistas
Economía popular y solidaria por César Guadamud
Economía popular y solidaria
César Guadamud
•
889 vistas
Percepción social de la discapacidad física. por José María
Percepción social de la discapacidad física.
José María
•
2K vistas
Отзыв о работе переводчика por Ksenia Mazheyko
Отзыв о работе переводчика
Ksenia Mazheyko
•
718 vistas
Head start networking por Career Development Centre, La Trobe University
Head start networking
Career Development Centre, La Trobe University
•
1.5K vistas
Marcus Chantrey, Go Green December Business Breakfast, St Mary Redcliffe Chur... por Go Green
Marcus Chantrey, Go Green December Business Breakfast, St Mary Redcliffe Chur...
Go Green
•
843 vistas
Настанова щодо роботи в ВікіОсвіті por galina_pr
Настанова щодо роботи в ВікіОсвіті
galina_pr
•
1.1K vistas
ばすけ por roap_jp
ばすけ
roap_jp
•
1K vistas
Power of Outdoor Play - We Built a Hill por Chris Wejr
Power of Outdoor Play - We Built a Hill
Chris Wejr
•
7.1K vistas
10 trends reshaping digital por Nils Mork-Ulnes
10 trends reshaping digital
Nils Mork-Ulnes
•
2.5K vistas
開発環境と言語 por ujihisa
開発環境と言語
ujihisa
•
1.8K vistas
ADN Antreprenor 2016 - Cristian Logofatu, Bittnet por Gabriel Barliga
ADN Antreprenor 2016 - Cristian Logofatu, Bittnet
Gabriel Barliga
•
813 vistas
Similar a Multi paradigm design
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』 por
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』
Takahiro Hirata
3.4K vistas
•
42 diapositivas
普段こういうこと気にしながら、こんな風に作ってます。 por
普段こういうこと気にしながら、こんな風に作ってます。
c-mitsuba
1.5K vistas
•
73 diapositivas
初音玲の流儀 - なんでプログラミングしているの? por
初音玲の流儀 - なんでプログラミングしているの?
Akira Hatsune
3.3K vistas
•
11 diapositivas
デザインツール戦争とMaterial Theme Editor por
デザインツール戦争とMaterial Theme Editor
Asami Yamamoto
1.9K vistas
•
79 diapositivas
Cppmix 01 por
Cppmix 01
Akira Takahashi
1K vistas
•
11 diapositivas
デザイナー×エンジニア ~ハッカソンからのつながり~(まにフェス) por
デザイナー×エンジニア ~ハッカソンからのつながり~(まにフェス)
Chihiro Tomita
1.5K vistas
•
34 diapositivas
Similar a Multi paradigm design
(20)
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』 por Takahiro Hirata
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』
Takahiro Hirata
•
3.4K vistas
普段こういうこと気にしながら、こんな風に作ってます。 por c-mitsuba
普段こういうこと気にしながら、こんな風に作ってます。
c-mitsuba
•
1.5K vistas
初音玲の流儀 - なんでプログラミングしているの? por Akira Hatsune
初音玲の流儀 - なんでプログラミングしているの?
Akira Hatsune
•
3.3K vistas
デザインツール戦争とMaterial Theme Editor por Asami Yamamoto
デザインツール戦争とMaterial Theme Editor
Asami Yamamoto
•
1.9K vistas
Cppmix 01 por Akira Takahashi
Cppmix 01
Akira Takahashi
•
1K vistas
デザイナー×エンジニア ~ハッカソンからのつながり~(まにフェス) por Chihiro Tomita
デザイナー×エンジニア ~ハッカソンからのつながり~(まにフェス)
Chihiro Tomita
•
1.5K vistas
Cvpr2017事前読み会 por Takuya Minagawa
Cvpr2017事前読み会
Takuya Minagawa
•
5.8K vistas
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう por Study Group by SciencePark Corp.
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
Study Group by SciencePark Corp.
•
192 vistas
CodingTips+ 基礎編 por Yusuke Ito
CodingTips+ 基礎編
Yusuke Ito
•
516 vistas
クロスプラットフォーム開発雑感 #pronamaclrhsapporocpp por Katsuya Shimizu
クロスプラットフォーム開発雑感 #pronamaclrhsapporocpp
Katsuya Shimizu
•
4.5K vistas
市場価値を高める仕事のつかみ方 por Daiki Tanoguchi
市場価値を高める仕事のつかみ方
Daiki Tanoguchi
•
1.7K vistas
ownCloudについて por Shinya Saita
ownCloudについて
Shinya Saita
•
3.8K vistas
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 por Katsuhiro Morishita
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
•
71.4K vistas
今さら聞けない人のためのDevOps超入門 por VirtualTech Japan Inc./Begi.net Inc.
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
•
37 vistas
印刷APIのサポート事情 - DevRel Meetup in Tokyo #17 por Yasunori Kihara
印刷APIのサポート事情 - DevRel Meetup in Tokyo #17
Yasunori Kihara
•
1.6K vistas
WordPressで行うシステム開発 WordCamp Tokyo 2015用 por Satoshi Kamigaki
WordPressで行うシステム開発 WordCamp Tokyo 2015用
Satoshi Kamigaki
•
7.2K vistas
アプリデザインの共通言語 por Hiroki Akiyama
アプリデザインの共通言語
Hiroki Akiyama
•
418 vistas
PyCharm入門 por Yuki Nagai
PyCharm入門
Yuki Nagai
•
12.1K vistas
システム設計の原則 por You&I
システム設計の原則
You&I
•
249 vistas
ECMA-376の活用を考える(XLSX編) por You&I
ECMA-376の活用を考える(XLSX編)
You&I
•
138 vistas
Más de Akira Takahashi
Cpp20 overview language features por
Cpp20 overview language features
Akira Takahashi
890 vistas
•
28 diapositivas
Cppmix 02 por
Cppmix 02
Akira Takahashi
675 vistas
•
7 diapositivas
Modern C++ Learning por
Modern C++ Learning
Akira Takahashi
18.5K vistas
•
12 diapositivas
cpprefjp documentation por
cpprefjp documentation
Akira Takahashi
1.3K vistas
•
23 diapositivas
Boost tour 1_61_0 merge por
Boost tour 1_61_0 merge
Akira Takahashi
2K vistas
•
126 diapositivas
Boost tour 1_61_0 por
Boost tour 1_61_0
Akira Takahashi
1.4K vistas
•
14 diapositivas
Más de Akira Takahashi
(20)
Cpp20 overview language features por Akira Takahashi
Cpp20 overview language features
Akira Takahashi
•
890 vistas
Cppmix 02 por Akira Takahashi
Cppmix 02
Akira Takahashi
•
675 vistas
Modern C++ Learning por Akira Takahashi
Modern C++ Learning
Akira Takahashi
•
18.5K vistas
cpprefjp documentation por Akira Takahashi
cpprefjp documentation
Akira Takahashi
•
1.3K vistas
Boost tour 1_61_0 merge por Akira Takahashi
Boost tour 1_61_0 merge
Akira Takahashi
•
2K vistas
Boost tour 1_61_0 por Akira Takahashi
Boost tour 1_61_0
Akira Takahashi
•
1.4K vistas
Boost tour 1.60.0 merge por Akira Takahashi
Boost tour 1.60.0 merge
Akira Takahashi
•
5.1K vistas
Boost tour 1.60.0 por Akira Takahashi
Boost tour 1.60.0
Akira Takahashi
•
2.1K vistas
Boost Tour 1_58_0 por Akira Takahashi
Boost Tour 1_58_0
Akira Takahashi
•
2.5K vistas
C++14 enum hash por Akira Takahashi
C++14 enum hash
Akira Takahashi
•
8.1K vistas
Programmer mind por Akira Takahashi
Programmer mind
Akira Takahashi
•
10K vistas
Boost.Study 14 Opening por Akira Takahashi
Boost.Study 14 Opening
Akira Takahashi
•
4.1K vistas
Executors and schedulers por Akira Takahashi
Executors and schedulers
Akira Takahashi
•
7.4K vistas
Improvement future api por Akira Takahashi
Improvement future api
Akira Takahashi
•
7.9K vistas
C++14 variable templates por Akira Takahashi
C++14 variable templates
Akira Takahashi
•
5.7K vistas
C++14 relaxing constraints on constexpr por Akira Takahashi
C++14 relaxing constraints on constexpr
Akira Takahashi
•
4.7K vistas
C++14 binary literals por Akira Takahashi
C++14 binary literals
Akira Takahashi
•
4.9K vistas
Leaning random using Boost Random por Akira Takahashi
Leaning random using Boost Random
Akira Takahashi
•
6.2K vistas
C++14 Overview por Akira Takahashi
C++14 Overview
Akira Takahashi
•
11.8K vistas
Boost Tour 1.53.0 por Akira Takahashi
Boost Tour 1.53.0
Akira Takahashi
•
4.5K vistas
Multi paradigm design
1.
マルチパラダイムデザイン 再利用性の高いアプリケーションの設計 高橋 晶(Akira Takahashi) faithandbrave@longgate.co.jp 2014/05/24(土)
Boost.勉強会 #15 札幌
2.
自己紹介 • 高橋 晶(Akira
Takahashi) • はてなID : faith_and_brave • TwitterID : @cpp_akira • Boost.勉強会 東京の主催者 • boostjp/cpprefjpサイトのコアメンバ • 著書:C++テンプレートテクニック、C++ポケットリファレ ンス、プログラミングの魔導書 Vol.1と3 • 好きなことは、「抽象」「直交」「再利用」「分割統治」
3.
本日のお題 • アプリケーションの設計について話します。 • ライブラリではない、ソフトウェアやゲームなどです。 •
皆さんは普段、どのようなプログラム設計をアプリケーショ ンに適用しているでしょうか。 • 今日は、私が普段のアプリケーション設計に採用している、 マルチパラダイムデザインというものを紹介します。
4.
再利用 • アプリケーションコードは、全てのコードがそのアプリケー ション専用というわけではない。 • ほとんどは、汎用的なコードか、そのアプリケーションが 属する(複数の)分野で共通利用できるコード。 •
アプリケーションコードとしてべったり張り付いたコードを 他のプロジェクトに再利用するのはめんどう。 • 再利用可能なコードとアプリケーション固有のコードを、 きっちり住み分けするのが今日のお話。
5.
文献
6.
マルチパラダイムデザインの概要 • ドメイン駆動設計のアーキテクチャ(ディレクトリ構成)を 採用する。 • アプリケーションを構成するプログラムを、ドメインという 単位で分割し、部品の再利用性を高める。 •
各ドメイン/各機能を、共通性と可変性という考えの元に 設計する。 • 部品の再利用性が高まることによって、類似アプリケーショ ンを、実績あるコードを元に作り上げることができる。
7.
ドメイン駆動設計 • Eric Evansが提唱した、アプリケーションをドメインに 分割していく設計手法。 •
プロジェクト内で共通の用語を使うユビキタス言語や、構成 要素(エンティティ、値オブジェクト、リポジトリ、サービ ス等)が細かく規定されていたりする。 • 再利用は想定されておらず、一本のアプリケーションを効率 的に作ることを目標にしている。 • 今回紹介する私の設計では、ドメイン駆動設計のレイヤー (ディレクトリ構成)のみを採用する。
8.
ドメイン駆動設計のレイヤー構造 infrastructure domain app
9.
インフラストラクチャ • アプリケーション全体で使用する、ベースとなるライブラリ、 フレームワークを置くレイヤー。 • Boost、zlib、Ruby
on Rails、.NET Framework等。
10.
ドメイン • アプリケーションを構成する部品を、できるだけ再利用可能 な形で分割して置くレイヤー。ライブラリのようなもの。 • クラスは複数の機能をまとめたものだが、 ドメイン(domain,
問題領域)はクラス・関数群をまとめた 機能ファミリー。 • 「アプリケーションを作る!」という大きな問題を、 ドメインという小さな問題群に分割する。
11.
アプリケーション • 特定アプリケーションのみで必要な機能を置くレイヤー。 • ユーザー情報、ビジネスロジック、戦闘ロジック、画面遷移など。 •
本当はこの上に、見た目を制御する「プレゼンテーションレイヤー」が あるが、それほど重要ではないので省略する。 • できるだけ多くの機能を再利用可能な形でドメインに分割す るので、アプリケーションレイヤーは薄くなる。
12.
依存関係 • レイヤーとしては、上のレイヤーから下のレイヤーへの依存 のみ。 • アプリケーションはドメイン、インフラストラクチャに 依存するが、ドメインがアプリケーションに依存しては ならない。 •
ドメイン間は依存する場合がある。 相互依存にならないよう、図に書き起こして依存関係を整理 すること。
13.
抽象化のためのドメイン分割 • ドメイン分割をすると、そのドメインのユーザー(アプリケー ションや他のドメイン)へのインタフェースが、自然と抽象 的になる。 • 実装詳細をユーザーに直接使わせない。 •
抽象化が当たり前のように行われるようになる。
14.
ここまでで大事なこと • アプリケーションを構成するプログラムの レイヤーを意識する。 • 大きな問題(アプリケーションを作る!)を 小さな問題群(ドメイン)に分割統治する。
15.
再利用性を意識する • ドメイン分割を行い、抽象的になったドメイン機能は、 どのようにその機能が使われるか、さらに想定を広げる必要が 出てくる。 • マルチパラダイムデザインでは、機能を共通性と可変性という 特性で分析して設計する。 •
共通性(commonality)とは、あらゆる目的に同じ使い方が できる性質。 • 可変性(variability)とは、状況によって使い方が変わる性質。
16.
共通性のためにできること • 共通性を表現するためには、C++では継承やテンプレート、 関数オーバーロードといったものを使用できる。 • たとえば、std::vectorは、あらゆる要素型に同じ操作方法を提供する という共通性を表現している。 •
その他、プリプロセッサによるバックエンドの自動切り替え も、共通性のために使用できる。 • たとえば、boost::threadは環境によって、pthreadによる実装と Windows APIによる実装を、自動的に切り替えている。ユーザーに提供 するインタフェースを共通化している。
17.
可変性のためにできること • 可変性を表現するためには、C++では実行時多態性や、テン プレートのポリシークラス、トレイト、関数オブジェクトを 使用できる。 • 与えられるパラメータによって動作を変えることは、たとえ ばstd::sort()が行っている。与えられる関数オブジェクト によって、比較の動作が変わる。 •
可変性を意識して設計したドメインは、他のプロジェクトへ の再利用がしやすくなる。
18.
ケーススタディ • 以下の構成になっているドメインの設計を考える。 application domain ui animation infrastructure
19.
ケーススタディ • ウィンドウに何らかのアニメーションをさせる namespace ui
{ class Window; } domain/ui/Window.h namespace animation { class MyAnimation { public: void start(ui::Window& window); }; } domain/animation/MyAnimation.h • いま、animationドメインはuiドメインに依存している
20.
ケーススタディ • ドメイン間の依存関係を断ち切る可変性を導入する namespace animation
{ class MyAnimation { public: template <class Window> void start(Window& window); }; } domain/animation/MyAnimation.h • これで、animationドメインのみを他プロジェクトに 再利用できる。
21.
ケーススタディ • 終了イベントを受け取る可変性を導入する。 namespace animation
{ class MyAnimation { std::function<void()> callback_; public: template <class Window> void start(Window& window); ! template <class Window, class F> void start(Window& window, F callback); }; } • これで、MyAnimationクラスが、複数の用途・状況に 対応できるようになった。
22.
どこまで想定するか • 抽象化や再利用とは、どこまで想定して作ればいいだろうか。 • 目の前のアプリケーションの要件だけを見てドメイン分割、 抽象化、可変性の導入をすると、設計が破綻しやすい。 •
再利用性を高めるには、プロジェクトの今後の方向性や、 複数のマーケットまでを見通す目が必要になる。
23.
何がマルチパラダイムなのか • 従来のオブジェクト指向設計では、可変性を表現する方法が 多態性に限定された。 • マルチパラダイムデザインでは、他のパラダイムを共通性と 可変性に使用し、設計にさらなる柔軟性を持たせる。 •
たとえば、テンプレートの「特定インタフェースを持ってい れば継承関係がなくていい」という性質は、ドメイン間の やりとりをよりシンプルにする。
24.
DSL • DSL(domain specific
language, ドメイン特化言語)は、特 定の問題を効率的に解決するための小さな言語。 • 昔はアプリケーション指向言語(AOL : application oriented language)と呼ばれていた。 • 広義には、プレーンテキストの言語のみならず、ツールも含 む。SQLやUIエディタ、GraphvizもDSL。 • 問題領域にくわしい専門家(ゲームならプランナー)に、使っ てもらったりする。
25.
まとめ • マルチパラダイムデザインでは、アプリケーションを構成す るプログラムを、小さな問題(ドメイン)に分割する。 • 分割したドメインを、共通性と可変性に注目して設計し、 再利用性を高める。 •
再利用性を高めることによって、アプリケーションコードを 他のプロジェクトに使いまわせるようになり、他のプロジェ クトを、高い品質のコードを元にして作れるようになる。
26.
みんな読もう! • あのCryoliteさんも2004年時点で読んでるぞ! • ※ただしピアソンのため、絶版です。中古で…