SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
Object-Functional Analysis and Design and Programming温泉
Report
Tomoharu ASAMI
Follow
home
Aug. 19, 2012
•
0 likes
•
3,770 views
1
of
29
Object-Functional Analysis and Design and Programming温泉
Aug. 19, 2012
•
0 likes
•
3,770 views
Download Now
Download to read offline
Report
Technology
クラウド温泉3.0の資料です。 ディスカッションのネタ提供を目的としています。
Tomoharu ASAMI
Follow
home
Recommended
Object-Funcational Analysis and design
Tomoharu ASAMI
3.1K views
•
33 slides
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
6.2K views
•
70 slides
Scalaプログラミング・マニアックス
Tomoharu ASAMI
6.5K views
•
44 slides
実務者のためのかんたんScalaz
Tomoharu ASAMI
10.3K views
•
63 slides
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
5.8K views
•
30 slides
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
3.2K views
•
39 slides
More Related Content
What's hot
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
3.7K views
•
72 slides
Algebraic DP: 動的計画法を書きやすく
Hiromi Ishii
6.7K views
•
50 slides
Java使いにとっての関数
amkt922
1.6K views
•
17 slides
Thinking in Cats
Eugene Yokota
7.2K views
•
82 slides
Scalaで型クラス入門
Makoto Fukuhara
6.4K views
•
30 slides
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
6.9K views
•
52 slides
What's hot
(20)
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
•
3.7K views
Algebraic DP: 動的計画法を書きやすく
Hiromi Ishii
•
6.7K views
Java使いにとっての関数
amkt922
•
1.6K views
Thinking in Cats
Eugene Yokota
•
7.2K views
Scalaで型クラス入門
Makoto Fukuhara
•
6.4K views
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
•
6.9K views
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Asami Abe
•
1.6K views
Scalaノススメ
Yasuyuki Maeda
•
15.8K views
Phantom Type in Scala
Yasuyuki Maeda
•
4.6K views
BOF1-Scala02.pdf
Hiroshi Ono
•
342 views
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
•
5.7K views
Scalaで学ぶ関数型言語超入門
yujiro_t
•
7.5K views
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
•
47.9K views
あなたのScalaを爆速にする7つの方法(日本語版)
x1 ichi
•
14.2K views
ScalaMatsuri 2016
Yoshitaka Fujii
•
7.1K views
Scalaz
Kota Mizushima
•
4.4K views
Scala2.8への移行
guest5f4320
•
573 views
はてなブックマーク in Scala
Lintaro Ina
•
68.6K views
なぜリアクティブは重要か #ScalaMatsuri
Yuta Okamoto
•
7.9K views
Scala の関数型プログラミングを支える技術
Naoki Aoyama
•
9.9K views
Similar to Object-Functional Analysis and Design and Programming温泉
JAWSDAYS 2014 ACEに聞け! EMR編
陽平 山口
3.2K views
•
68 slides
JavaWorld Day 2009 Scala
Tomoharu ASAMI
2.4K views
•
41 slides
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
MapR Technologies Japan
4.6K views
•
26 slides
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
2K views
•
36 slides
RDB開発者のためのApache Cassandra データモデリング入門
Yuki Morishita
7.4K views
•
53 slides
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
2.4K views
•
33 slides
Similar to Object-Functional Analysis and Design and Programming温泉
(20)
JAWSDAYS 2014 ACEに聞け! EMR編
陽平 山口
•
3.2K views
JavaWorld Day 2009 Scala
Tomoharu ASAMI
•
2.4K views
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
MapR Technologies Japan
•
4.6K views
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
•
2K views
RDB開発者のためのApache Cassandra データモデリング入門
Yuki Morishita
•
7.4K views
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
•
2.4K views
2014 11-20 Machine Learning with Apache Spark 勉強会資料
Recruit Technologies
•
11K views
Jubatusでマルウェア分類
Shuzo Kashihara
•
5.4K views
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
Fujio Kojima
•
2.7K views
ざっくり DDD 入門!!
Yukei Wachi
•
10.2K views
Spark MLlib code reading ~optimization~
Kai Sasaki
•
835 views
HBase at LINE
LINE Corporation (Tech Unit)
•
2.3K views
HBase at LINE
Shunsuke Nakamura
•
13.8K views
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
増田 亨
•
4K views
Sphinx/reST
Ryo Maruyama
•
2K views
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
Tomoharu ASAMI
•
43 views
Data management of cosmos db using apache gremlin
Takao Tetsuro
•
196 views
最近のストリーム処理事情振り返り
Sotaro Kimura
•
17.2K views
Functional JavaScript with Lo-Dash.js
Shogo Sensui
•
2.1K views
Introduction to Spray at Kansai Functional Programming
Suguru Hamazaki
•
1.8K views
More from Tomoharu ASAMI
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
Tomoharu ASAMI
42 views
•
46 slides
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
Tomoharu ASAMI
61 views
•
47 slides
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
Tomoharu ASAMI
61 views
•
38 slides
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
Tomoharu ASAMI
56 views
•
49 slides
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
Tomoharu ASAMI
48 views
•
81 slides
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
Tomoharu ASAMI
60 views
•
60 slides
More from Tomoharu ASAMI
(20)
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
Tomoharu ASAMI
•
42 views
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
Tomoharu ASAMI
•
61 views
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
Tomoharu ASAMI
•
61 views
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
Tomoharu ASAMI
•
56 views
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
Tomoharu ASAMI
•
48 views
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
Tomoharu ASAMI
•
60 views
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
Tomoharu ASAMI
•
62 views
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
Tomoharu ASAMI
•
85 views
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
Tomoharu ASAMI
•
72 views
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
Tomoharu ASAMI
•
57 views
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
Tomoharu ASAMI
•
59 views
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
Tomoharu ASAMI
•
48 views
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
Tomoharu ASAMI
•
82 views
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
Tomoharu ASAMI
•
111 views
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
Tomoharu ASAMI
•
70 views
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
Tomoharu ASAMI
•
225 views
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
Tomoharu ASAMI
•
202 views
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
Tomoharu ASAMI
•
271 views
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
Tomoharu ASAMI
•
303 views
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
Tomoharu ASAMI
•
182 views
Recently uploaded
磁石内臓イヤリングによる磁力変化を利用したジェスチャ識別
sugiuralab
7 views
•
1 slide
画像生成AIの問題点
iPride Co., Ltd.
10 views
•
9 slides
インフラチームとCCoEの関係.pptx
ssuser5c7ee4
20 views
•
18 slides
GraphQLはどんな時に使うか
Yutaka Tachibana
14 views
•
37 slides
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
118 views
•
31 slides
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
164 views
•
16 slides
Recently uploaded
(14)
磁石内臓イヤリングによる磁力変化を利用したジェスチャ識別
sugiuralab
•
7 views
画像生成AIの問題点
iPride Co., Ltd.
•
10 views
インフラチームとCCoEの関係.pptx
ssuser5c7ee4
•
20 views
GraphQLはどんな時に使うか
Yutaka Tachibana
•
14 views
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
•
118 views
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
•
164 views
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
•
57 views
拡散する画像生成.pdf
NTTDOCOMO-ServiceInnovation
•
44 views
テスト自動化.pdf
ssuserf8ea02
•
29 views
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
•
7 views
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
•
145 views
CatBoost on GPU のひみつ
Takuji Tahara
•
548 views
ヒアラブルデバイスにおける音漏れ信号を用いた空中ジェスチャ認識
sugiuralab
•
5 views
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
•
115 views
Object-Functional Analysis and Design and Programming温泉
1.
Object-Functional Analysis and Design and
Programming温泉 2012年年8⽉月18⽇日 浅海智晴
2.
⽂文脈
3.
論論点 • 業務アプリケーションにおける関数型⾔言語 •
どこまでかけるのか • モナドの使い所 • 業務アプリケーションにおけるオブジェクト指向⾔言語 • 本物のオブジェクト指向⾔言語から新たな気づきはないか • 関数型⾔言語とオブジェクト指向⾔言語の選択 • 関数型⾔言語とモデリング技術の連携 • 形式⼿手法とモデリング?
4.
アジェンダ ディスカッションの元ネタを提供します。 関数型プログラミング Object
Functional Programming (OFP) Object Functional Analysis and Design (OFAD)
5.
新しい現実 ハードウェア • メニーコア、⼤大容量量メモリ、SSD • インメモリデータベース •
並列列プログラミング クラウド・プラットフォーム • クラウド・サービス、スマート・デバイス • 故障、遅延 • ⼤大規模データ、⼤大規模演算 • ⾼高頻度度イベント • ⾮非同期、並列列、分散 • NoSQL
6.
アプリケーションの階層と役割 アプリケー
• DSLの作法に従ってビジネスロ ジックを記述 ション • OO、関数型のスキルは最低限 • フレームワークを簡単に使⽤用する DSL ための専⽤用⾔言語 • OO、関数型の⾼高度度なスキル フレーム • ドメインの共通処理理を記述 ワーク • OO、関数型の⾼高度度なスキル
7.
⽤用語 • セッション内でのローカルな⽤用法 • (普通の)オブジェクト指向⾔言語
• Java的なオブジェクト指向⾔言語。オブジェクト+クラス+抽象 データ型+静的型付け+⼿手続き+値。 • 本物のオブジェクト指向⾔言語 • オブジェクトとメッセージから構成される核に何かを加えたも の。 • 関数型⾔言語 • 純粋関数型⾔言語(での利利⽤用も可能) • イミュータブル、参照透過性 • モナドが⼀一級市⺠民 • 型クラス(相当) • モデリング • 業務アプリケーションを分析・設計するためのモデリング⼿手法 • UMLを使ったオブジェクト指向モデリング
8.
関数型プログラミング
9.
関数型⾔言語とは • ⾼高階関数を扱える。 •
関数を値として扱える。 • 関数の引数と返却値に関数を渡せる。 • 関数リテラル(クロージャ)が記述できる。 • 数学(ラムダ計算、圏論論など)的にプログラムを記述でき る。
10.
関数型⾔言語の系譜 浅海私⾒見見。 20年年ほどの空⽩白の後の⾒見見え⽅方、 あるいはOOプログラマが後追い で調べたときの⾒見見え⽅方と考えて ください。
新世代関数型 ⾔言語 • Haskell 伝統的関数型 • Scala(+scalaz) ⾔言語 • ラムダ計算 • Lisp, ML, OCaml • 代数、圏論論 • ラムダ計算 • 型クラス • ⼿手続き、オブジェ • 代数データ型、 元祖関数型⾔言語 クト指向で補完 モナド • pure Lisp • 抽象データ型 • Parametric • Subtype polymorphism • ラムダ計算 polymorphism
11.
関数型⾔言語の⻑⾧長所と短所 ⻑⾧長所 •
⾼高階関数を使った技が使える • List処理理, 関数合成(コンビネータ)、モナドなど • 定理理と証明 • 証明された(動作保証された)定理理(関数)を積み上げてプログラムを 記述できる (← 多少理理想論論も⼊入ってます) 短所 • 関数実⾏行行のオーバーヘッド • 関数オブジェクト • メモリを⼤大量量に消費する • 関数オブジェクト • データの⼤大量量複写 • スタックの使⽤用量量が読めない • 再帰 • 回避する技のノウハウが必要
12.
関数型⾔言語の技術マップ
13.
代数的構造デザインパターン 結合律律 (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
14.
圏論論デザインパターン
圏 (category) モナド • Hask圏 (Scala圏?) (monad) • クライスリ圏 (kleisli category) Applicative 射 (arrow, functor morphism) 関⼿手 (functor)
15.
並列列プログラミング • マルチスレッド
• 共有状態 (shared mutability) • 共有状態をロック ← 伝統的⽅方法 • STM (Software Transactional Memory) • アクター • 状態をアクターローカル(スレッドローカル)にする (isolating mutability) • 不不変オブジェクトによるメッセージで通信 • 関数プログラミング⽅方式 • 代数的データ型、永続データ構造 • ⇒ 不不変オブジェクト • 状態変更更ではなく、状態変更更命令令書を計算 • イメージとしてはSQLの⽂文字列列を計算して作成する感じ • モナドのメカニズムを使って並列列処理理(+状態変更更命令令書)を 隠蔽
16.
Object Functional Programming
(OFP)
17.
OFP新三種の神器 トレイト (trait) •
mix-in • 型安全のAOP的な運⽤用 モナド (monad) • 計算⽂文脈をカプセル化する新しい⾔言語概念念 • Monadicプログラミング 型クラス (type class) • 型安全のダブルディスパッチ(?) • Scalaでは、⽂文脈、主体、客体の組でオブジェクトを束縛
18.
オブジェクトと関数の連携(1)
19.
オブジェクトと関数の連携(2)
20.
Arrowを⽤用いたデーターフロー
21.
モナドによる計算⽂文脈
22.
Object Functional Analysis
and Design (OFAP)
23.
オブジェクトモデリング 協調の実装技術 がボトルネック
ドメイン・モデル になっている 状態 機械 協調 静的 アプリケーション 構造 モデル
24.
オブジェクトの世界と関数の世界
25.
ユースケースと関数
26.
メタモデル
27.
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演算
28.
まとめ • 論論点
• 業務アプリケーションにおける関数型⾔言語 • どこまでかけるのか • モナドの使い所 • 業務アプリケーションにおけるオブジェクト指向⾔言語 • 本物のオブジェクト指向⾔言語から新たな気づきはないか • 関数型⾔言語とオブジェクト指向⾔言語の選択 • 関数型⾔言語とモデリング技術の連携 • 形式⼿手法とモデリング?
29.
END