Upload
Download free for 30 days
Login
Submit search
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
12 likes
3,201 views
Tomoharu ASAMI
OOAD + OFPについて現時点での考えをまとめてみました。 PPTX→PPT出力の関係で、当日は非表示にしているスライドも入っています。
Technology
Read more
1 of 39
Download now
Downloaded 51 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
More Related Content
PDF
Scalaプログラミング・マニアックス
Tomoharu ASAMI
PDF
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
PDF
Object-Functional Analysis and Design and Programming温泉
Tomoharu ASAMI
PDF
実務者のためのかんたんScalaz
Tomoharu ASAMI
PDF
Object-Funcational Analysis and design
Tomoharu ASAMI
PDF
C#実装から見るDDD(ドメイン駆動設計)
Takuya Kawabe
PDF
Scalaでプログラムを作りました
Tomoharu ASAMI
PDF
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
Scalaプログラミング・マニアックス
Tomoharu ASAMI
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
Object-Functional Analysis and Design and Programming温泉
Tomoharu ASAMI
実務者のためのかんたんScalaz
Tomoharu ASAMI
Object-Funcational Analysis and design
Tomoharu ASAMI
C#実装から見るDDD(ドメイン駆動設計)
Takuya Kawabe
Scalaでプログラムを作りました
Tomoharu ASAMI
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
What's hot
(20)
PDF
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Tomoharu ASAMI
PDF
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Takuya Kawabe
PDF
ScalaMatsuri 2016
Yoshitaka Fujii
PPTX
Scala × DDD × 弊社実践例
侑亮 原田
PDF
ドメイン駆動設計(DDD)の実践Part2
増田 亨
PDF
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
Tomoharu ASAMI
PDF
Thinking in Cats
Eugene Yokota
PDF
Scalaで型クラス入門
Makoto Fukuhara
PPTX
Java使いにとっての関数
amkt922
PDF
Xcore introduction
Akira Tanaka
PDF
Sbtのマルチプロジェクトはいいぞ
Yoshitaka Fujii
PDF
Why Reactive Matters #ScalaMatsuri
Yuta Okamoto
PDF
ATN No.2 Scala事始め
AdvancedTechNight
PDF
はてなブックマーク in Scala
Lintaro Ina
PDF
めんどくさくない Scala #kwkni_scala
Kazuhiro Sera
PDF
ちいさなオブジェクトでドメインモデルを組み立てる
増田 亨
PDF
あなたのScalaを爆速にする7つの方法(日本語版)
x1 ichi
PDF
なぜリアクティブは重要か #ScalaMatsuri
Yuta Okamoto
PDF
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Asami Abe
PDF
Phantom Type in Scala
Yasuyuki Maeda
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Tomoharu ASAMI
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Takuya Kawabe
ScalaMatsuri 2016
Yoshitaka Fujii
Scala × DDD × 弊社実践例
侑亮 原田
ドメイン駆動設計(DDD)の実践Part2
増田 亨
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
Tomoharu ASAMI
Thinking in Cats
Eugene Yokota
Scalaで型クラス入門
Makoto Fukuhara
Java使いにとっての関数
amkt922
Xcore introduction
Akira Tanaka
Sbtのマルチプロジェクトはいいぞ
Yoshitaka Fujii
Why Reactive Matters #ScalaMatsuri
Yuta Okamoto
ATN No.2 Scala事始め
AdvancedTechNight
はてなブックマーク in Scala
Lintaro Ina
めんどくさくない Scala #kwkni_scala
Kazuhiro Sera
ちいさなオブジェクトでドメインモデルを組み立てる
増田 亨
あなたのScalaを爆速にする7つの方法(日本語版)
x1 ichi
なぜリアクティブは重要か #ScalaMatsuri
Yuta Okamoto
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Asami Abe
Phantom Type in Scala
Yasuyuki Maeda
Ad
Viewers also liked
(17)
PDF
20110820 metaprogramming
Masanori Kado
PDF
SimpleModelerによるAndroidアプリ自動生成 with g3/g4
Tomoharu ASAMI
PDF
モデリングの未来 〜~パネルディスカッション
Tomoharu ASAMI
PDF
JavaWorld Day 2009 Scala
Tomoharu ASAMI
PDF
DSL駆動によるクラウド・アプリケーション開発
Tomoharu ASAMI
PDF
楽々Scalaプログラミング
Tomoharu ASAMI
PDF
Monadicプログラミング マニアックス
Tomoharu ASAMI
PDF
Everforth AWS
Tomoharu ASAMI
PDF
Scala DSLの作り方
Tomoharu ASAMI
PDF
文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
Tomoharu ASAMI
PPT
メタプログラミングって何だろう
Kota Mizushima
PDF
Scala in Model-Driven development for Apparel Cloud Platform
Tomoharu ASAMI
PDF
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
PDF
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
Tomoharu ASAMI
PPTX
Prefer Cloud Platform - ビジョン、アーキテクチャ
Tomoharu ASAMI
PPTX
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Norito Agetsuma
PDF
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
なおき きしだ
20110820 metaprogramming
Masanori Kado
SimpleModelerによるAndroidアプリ自動生成 with g3/g4
Tomoharu ASAMI
モデリングの未来 〜~パネルディスカッション
Tomoharu ASAMI
JavaWorld Day 2009 Scala
Tomoharu ASAMI
DSL駆動によるクラウド・アプリケーション開発
Tomoharu ASAMI
楽々Scalaプログラミング
Tomoharu ASAMI
Monadicプログラミング マニアックス
Tomoharu ASAMI
Everforth AWS
Tomoharu ASAMI
Scala DSLの作り方
Tomoharu ASAMI
文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
Tomoharu ASAMI
メタプログラミングって何だろう
Kota Mizushima
Scala in Model-Driven development for Apparel Cloud Platform
Tomoharu ASAMI
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
Tomoharu ASAMI
Prefer Cloud Platform - ビジョン、アーキテクチャ
Tomoharu ASAMI
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Norito Agetsuma
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
なおき きしだ
Ad
Similar to Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
(20)
PDF
ケーススタディ/実装 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第46回】
Tomoharu ASAMI
PDF
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
Tomoharu ASAMI
PDF
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
Tomoharu ASAMI
PDF
Kaleidox
Tomoharu ASAMI
PDF
Software Development with Symfony
Atsuhiro Kubo
PDF
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
Tomoharu ASAMI
PDF
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
Tomoharu ASAMI
PDF
関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ
Kent Ohashi
PDF
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
貴志 上坂
PDF
Symfony2でより良いソフトウェアを作るために
Atsuhiro Kubo
PDF
ざっくり DDD 入門!!
Yukei Wachi
PDF
ドメイン駆動設計という仕事の流儀
増田 亨
PPT
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
PDF
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
Tomoharu ASAMI
PPTX
R超入門機械学習をはじめよう
幹雄 小川
PPTX
2014 11-20 Machine Learning with Apache Spark 勉強会資料
Recruit Technologies
PPT
Scala on Hadoop
Shinji Tanaka
PDF
Isomorphic web development with scala and scala.js
TanUkkii
PDF
Functional JavaScript with Lo-Dash.js
Shogo Sensui
PDF
DTraceによるMySQL解析ことはじめ
Mikiya Okuno
ケーススタディ/実装 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第46回】
Tomoharu ASAMI
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
Tomoharu ASAMI
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
Tomoharu ASAMI
Kaleidox
Tomoharu ASAMI
Software Development with Symfony
Atsuhiro Kubo
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
Tomoharu ASAMI
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
Tomoharu ASAMI
関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ
Kent Ohashi
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
貴志 上坂
Symfony2でより良いソフトウェアを作るために
Atsuhiro Kubo
ざっくり DDD 入門!!
Yukei Wachi
ドメイン駆動設計という仕事の流儀
増田 亨
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
Tomoharu ASAMI
R超入門機械学習をはじめよう
幹雄 小川
2014 11-20 Machine Learning with Apache Spark 勉強会資料
Recruit Technologies
Scala on Hadoop
Shinji Tanaka
Isomorphic web development with scala and scala.js
TanUkkii
Functional JavaScript with Lo-Dash.js
Shogo Sensui
DTraceによるMySQL解析ことはじめ
Mikiya Okuno
More from Tomoharu ASAMI
(20)
PDF
ケーススタディ/テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第47回】
Tomoharu ASAMI
PDF
設計モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第45回】
Tomoharu ASAMI
PDF
分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】
Tomoharu ASAMI
PDF
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
Tomoharu ASAMI
PDF
要求モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第42回】
Tomoharu ASAMI
PDF
ビジネス・モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第41回】
Tomoharu ASAMI
PDF
ケーススタディ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第40回】
Tomoharu ASAMI
PDF
Cloud Native Component Framework 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第39回】
Tomoharu ASAMI
PDF
プレゼンテーション・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第38回】
Tomoharu ASAMI
PDF
アプリケーション・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第37回】
Tomoharu ASAMI
PDF
ドメイン・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第36回】
Tomoharu ASAMI
PDF
Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Tomoharu ASAMI
PDF
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
Tomoharu ASAMI
PDF
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
Tomoharu ASAMI
PDF
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
Tomoharu ASAMI
PDF
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
Tomoharu ASAMI
PDF
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
Tomoharu ASAMI
PDF
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
Tomoharu ASAMI
PDF
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
Tomoharu ASAMI
PDF
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
Tomoharu ASAMI
ケーススタディ/テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第47回】
Tomoharu ASAMI
設計モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第45回】
Tomoharu ASAMI
分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】
Tomoharu ASAMI
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
Tomoharu ASAMI
要求モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第42回】
Tomoharu ASAMI
ビジネス・モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第41回】
Tomoharu ASAMI
ケーススタディ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第40回】
Tomoharu ASAMI
Cloud Native Component Framework 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第39回】
Tomoharu ASAMI
プレゼンテーション・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第38回】
Tomoharu ASAMI
アプリケーション・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第37回】
Tomoharu ASAMI
ドメイン・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第36回】
Tomoharu ASAMI
Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Tomoharu ASAMI
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
Tomoharu ASAMI
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
Tomoharu ASAMI
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
Tomoharu ASAMI
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
Tomoharu ASAMI
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
Tomoharu ASAMI
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
Tomoharu ASAMI
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
Tomoharu ASAMI
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
Tomoharu ASAMI
Recently uploaded
(12)
PDF
Working as an OSS Developer at Ruby Association Activity Report 2025
Hiroshi SHIBATA
PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
Takuya Minagawa
PPTX
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
Ko Jikawa
PDF
[email protected]
Matsushita Laboratory
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
Masaki Yamakawa
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
hatedwunao
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
Akira Tanaka
PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
Jun MITANI
PDF
20250823_IoTLT_vol126_kitazaki_v1___.pdf
Ayachika Kitazaki
PDF
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
Kannabi1
PPTX
Vibe Codingを触って感じた現実について.pptx .
iPride Co., Ltd.
PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
池田 直哉
Working as an OSS Developer at Ruby Association Activity Report 2025
Hiroshi SHIBATA
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
Takuya Minagawa
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
Ko Jikawa
[email protected]
Matsushita Laboratory
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
Masaki Yamakawa
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
hatedwunao
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
Akira Tanaka
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
Jun MITANI
20250823_IoTLT_vol126_kitazaki_v1___.pdf
Ayachika Kitazaki
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
Kannabi1
Vibe Codingを触って感じた現実について.pptx .
iPride Co., Ltd.
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
池田 直哉
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
1.
Object-Functional! Analysis and Design! 次世代モデリングパラダイムへの道標 2012年3⽉月19⽇日 匠BusinessPlace 浅海智晴
2.
⾃自⼰己紹介 • (株)匠BusinessPlace。⽇日本Javaユーザグループ副会⻑⾧長。
edge2.cc主宰。 • 代表作 • XML SmartDoc (XML⽂文書処理システム) • Relaxer (XML/Javaスキーマコンパイラ) • 開発中 • SimpleModeler (Scala DSLモデルコンパイラ) • SmartDox (⽂文書処理システム) • g3 (サービスマッシュアップフレームワーク) • g4 (Androidアプリケーションフレームワーク) • 近著 • 「上流⼯工程UMLモデリング」(⽇日経BP) • 「マインドマップではじめるモデリング講座」(翔泳社) • 「ボクらのScala」(Softbank Creative)
3.
活動
4.
関連サイト • Modegramming Style
(テキストDSL駆動開発を テーマにしたブログ) • http://modegramming.blogspot.com/ • SimpleModeler • http://github.com/asami/simplemodeler/ • SmartDox • http://github.com/asami/smartdox • g3フレームワーク • http://code.google.com/p/goldenport3/ • g4フレームワーク • http://github.com/asami/goldenport-android- library/
5.
⽂文脈
6.
アジェンダ 関数型プログラミング Object Functional
Programming (OFP) Object Functional Analysis and Design (OFAD) 応⽤用
7.
新しい現実 クラウド・プラットフォーム •
クラウド・サービス、スマート・デバイス • 故障、遅延 • ⼤大規模データ、⼤大規模演算 • ⾼高頻度イベント • ⾮非同期、並列、分散 • 計算機科学 メニーコア • 並⾏行行プログラミング メモリDB • I/Oボトルネックの解消 • アルゴリズム勝負 • 並⾏行行プログラミング
8.
OFADの要素技術/関連技術
CQRS Scala EIP クラウド DSL コンピュー EDA 計算機科学 ティング アジャイル OFP 開発 OOAD OFAD UCD/UX DDD DCI はセッションで触れる技術
9.
アプリケーションの階層と役割 アプリケー
• DSLの作法に従ってビジネスロ ジックを記述 ション • OO、関数型のスキルは最低限 • フレームワークを簡単に使⽤用する DSL ための専⽤用⾔言語 • OO、関数型の⾼高度なスキル フレーム • ドメインの共通処理を記述 ワーク • OO、関数型の⾼高度なスキル
10.
関数型プログラミング
11.
関数型⾔言語とは • ⾼高階関数を扱える。 •
関数を値として扱える。 • 関数の引数と返却値に関数を渡せる。 • 関数リテラル(クロージャ)が記述できる。 • 数学(ラムダ計算、圏論など)的にプログラムを記述でき る。
12.
関数型⾔言語の系譜
新世代関数型 ⾔言語 • Haskell 伝統的関数型 • Scala(+scalaz) ⾔言語 • ラムダ計算 • Lisp, ML, OCaml • 代数、圏論 • ラムダ計算 • 型クラス • ⼿手続き、オブジェ • 代数データ型、 元祖関数型⾔言語 クト指向で補完 モナド • pure Lisp • 抽象データ型 • Parametric • Subtype polymorphism • ラムダ計算 polymorphism
13.
関数型⾔言語の⻑⾧長所と短所 ⻑⾧長所 •
⾼高階関数を使った技が使える • List, 関数合成(コンビネータ)など • 定理と証明 • 証明された(動作保証された)定理(関数)を積み上げてプログラ ムを記述できる (← 多少理想論も⼊入ってます) 短所 • 関数実⾏行行のオーバーヘッド • 関数オブジェクト • メモリを⼤大量に消費する • 関数オブジェクト • データの⼤大量複写 • スタックの使⽤用量が読めない • 再帰
14.
関数型⾔言語の技術マップ
15.
代数的構造デザインパターン 結合律 (associative law) •
半群 (semigroup) • モノイド (monoid) (a + b) + c = a + (b + c) • 群 (group) 可換律 (commutative law) • 可換半群 • 可換モノイド a+b=b+a • 可換群(アーベル群) 分配律 (distributive law) • 環 (ring) • 体 (field) a * (b + c) = a * b + a * c
16.
圏論デザインパターン
圏 (category) モナド • Hask圏 (Scala圏?) (monad) • クライスリ圏 (kleisli category) Applicative 射 (arrow, functor morphism) 関⼿手 (functor)
17.
Object Functional Programming (OFP)
18.
OFP新三種の神器 トレイト (trait) •
mix-in • 型安全のAOP的な運⽤用 モナド (monad) • 計算⽂文脈をカプセル化する新しい⾔言語概念 • Monadicプログラミング 型クラス (type class) • 型安全のダブルディスパッチ(?) • Scalaでは、⽂文脈、主体、客体の組でオブジェクトを束縛
19.
オブジェクトと関数の連携(1)
20.
オブジェクトと関数の連携(2)
21.
Arrowを⽤用いたデーターフロー
22.
KleisliでOption/Listを合成
23.
Object Functional Analysis and
Design (OFAP)
24.
オブジェクトモデリング 協調の実装技術 がボトルネック
ドメイン・モデル になっている 状態 機械 協調 静的 アプリケーション 構造 モデル
25.
モデル変換の流れ 業務モデリング
要求モデリング システム・モデリング 設計 実装 アプリケーション・モデル システム 業務モデル 抽出 要求モデル 変換 具体化 設計モデル 実現 実装 モデル 調整 調整 参照 抽出 拡張 解決空間 解決空間 問題空間 プラットフォーム プラットフォーム 実現 実装 非依存 固有 ドメイン・モデル DDDのカバー範囲
26.
オブジェクトの世界と関数の世界
27.
オブジェクトの世界と関数の世界-2
28.
ユースケースと関数
29.
イベント→データフローの流れ
30.
メタモデル
31.
データフローの実装技術 A Unifiying
ISBN: 978-0-521-11787-6 Framework for Structured Yourdon(Structured Chart)、DeMarco(DFD)、Jackson(Structure Text) Analysis and を代数(Initial algebra)で記述して、圏論で操作する試み Design Models SA/SDの技術を関数に繋ぐことができる可能性 AsakusaFW http://www.asakusafw.com/ DSLで記述したデータフローをHadoop上で実⾏行行するフレームワーク Asakusa DSL設計⼿手法 (http://www.asakusafw.com/wp/wp-content/ uploads/2012/01/AsakusaDSLDesignMethodology.pdf) Spark http://www.spark-project.org/ Apache Mesos上で動作するクラスタ計算システム。Scala⾔言語に統合さ れているのが特徴。 データフロー的演算をScalaの⾃自然なプログラミングで記述できる。
32.
SparkとScalding val file =
spark.textFile("hdfs://...") file.flatMap(line => line.split(" ")) .map(word => (word, 1)) Spark .reduceByKey(_ + _) class WordCountJob(args : Args) extends Job(args) { TextLine( args("input") ).read. flatMap('line -> 'word) { line : String => line.split("s+") }. groupBy('word) { _.size }. write( Tsv( args("output") ) ) } Scalding • https://github.com/twitter/scalding • CascadingのScala DSL • Collection APIでHadoop演算
33.
応⽤用
34.
Domain-Driven Design (DDD) •
A Model Expressed in Software • Value Object (97) • Supple Design • Side-Effect-Free Functions (250) • Closure of Operations (268) • Declarative Design – Domain Specific Language • A Declarative Style of Design – Composite Specification • Maintaining Model Integrity • Context Map (344) • Destillation • Declarative Style (426)
35.
Data Context Interaction
(DCI) トレイト/型クラス でロールをデータ に編みこみ
36.
CQRS, EDA
37.
Enterprise Integration
Patterns (EIP) Apache Camel Enterprise Integration Patterns • http://camel.apache.org/enterprise-integration- patterns.html RouteBuilder builder = new RouteBuilder() { public void configure() { errorHandler(deadLetterChannel("mock:error")); from("seda:a") .choice() .when(header("foo").isEqualTo("bar")) .to("seda:b") .when(header("foo").isEqualTo("cheese")) .to("seda:c") .otherwise() .to("seda:d"); } };
38.
まとめ • クラウド・コンピューティング、メニーコアで並⾏行行・分
散プログラミングが必須に。 • 関数型⾔言語で計算機科学、数学の果実を取り込む道筋をつ ける。 • 技術革新の発⽣生する場になる。 • 要求仕様からシステムアーキテクチャはオブジェクト、 アルゴリズムは関数のハイブリッドが現実解。 • オブジェクト・モデリングのボトルネックである協調を 関数型で埋める⽅方法が論点の⼀一つ。 • プロセス計算で協調を記述するのはまだ時期尚早? • 当⾯面はデータフローをDSLで記述する応⽤用が期待⼤大。
39.
END
Download