SlideShare a Scribd company logo
1 of 56
Download to read offline
Monadic
Programmingのススメ!
Functional Reactive Programming
へのアプローチ
2015年年4⽉月21⽇日
Everforth
浅海智晴
自己紹介
•  1985年年富⼠士通(株)⼊入社
•  UNIXワークステーション/サーバーのOS、分散基盤、Web基盤の開発
に従事
•  2001年年9⽉月に独⽴立立
•  Java, XML, UMLを中⼼心に活動
•  2005年年4⽉月より2007年年3⽉月まで
•  稚内北北星学園⼤大学東京サテライト校教授
•  現在
•  (株) 匠BusinessPlace 取締役チーフコンサルタント
•  (株) Everforth 取締役CTO
•  著作
•  上流流⼯工程UMLモデリング(⽇日経BP)
•  マインドマップではじめるモデリング講座(翔泳社)
http://www.apparel-cloud.com/
http://www.takumi-businessplace.co.jp/
ApparelCloud
 データを一元化することで、多様な情報を、様々なメディア・デバイスを
通じて
 消費者に届け、真のCRMを実現する仕組み。
http://www.apparel-cloud.com/
ApparelCloud
クーポン
  
ブランドサイト
オンラインストア ブログ
ブランド                        
アプリ
ニュース ブログ ショップ
コンテンツ 集計・分析
ダッシュボード
複数メディア・コンテンツを⼀一元管理理し、クオリティの統⼀一と運⽤用コストの低減を実現。
コンテンツを⼆二重三重に登録する必要もなく、データ分析などの⼀一元化も可能。
ApparelCloud
システム構成
メディア
アプリケーション
管理
アプリケーション
WebConsole
Primefaces
(JSF)
WebAPI
play
PUSHSender
play
EmailSender
play
EverforthEngine
play
BatchEngine
Shell
Analysis
Engine
Finagle
Stream
Engine
Finagle
Scala
Java
その他Web
iOS
Android
Web
iOS
Android
Coordination
Engine
ServiceMix
Camel
開発中
開発中
Scala利用の文脈
Object-Functional
Analysis and Design
Object-Functional
Programming
Service Platform as-a-Service
要求
Cloud Service
プログラム カスタマイズ
モデル
Model
Summay Model
要求
Apparel Cloud
Service
Regular Model
WireFrame
(+ Usage)
Mindmap Model
API Usage List
Use case Model
Domain Model
プログラム
(開発)
プログラム
(自動生成)
カスタマイズ
Service Description
参考: Everforthのモデル体系
http://modegramming.blogspot.jp/2015/04/ofadeverforth.html
アジェンダ
背景
関数型プログラミング
Monadic Programming
Functional Reactive
Programming
キーワード
• Monad
• Monadic Programming
• Functional Reactive Programming
背景
新しい現実
•  メニーコア、⼤大容量量メモリ、SSD
•  並列列プログラミング
ハードウェア
•  クラウド・サービス、スマート・デバイス
•  故障、遅延
•  ⼤大規模データ、⼤大規模演算
•  ⾼高頻度度イベント、ストリーミング
•  ⾮非同期、並列列、分散
•  NoSQL、インメモリデータベース
•  CQRS、Event Sourcing、Microservice
クラウド・プラットフォーム
The Reactive Manifest
•  http://www.reactivemanifesto.org/
•  ⽇日本語訳
•  http://okapies.hateblo.jp/entry/2014/12/03/025921
•  Responsive
•  応答性:すぐ応答する
•  Resilient
•  耐故障性:回復復⼒力力に富む、⽴立立ち直りが早い
•  Elastic
•  弾⼒力力性:伸縮⾃自在の
•  Message Driven
•  メッセージ駆動
•  関連: Reactive Streams
•  http://www.reactive-streams.org/
Reactiveの実現
Service Cluster
CPU Core
Function
Service
Message
Message
Message
Function
Function
Function
Function
Function
Service
Service
Service
Service
Function
Reactive
Concurrent
Parallel
Distributed
Responsive
Resillience
Elasticity
Message Driven
Concurrent
Parallel
Distributed
Functional Reactive Programming
へのアプローチ
Object-Oriented Programming
並列処理アプリケーション
Actor
Object-Oriented Programming
Monadic Programming
Functional Programming
Object-Functional Programming
Functional Reactive Programming
並列処理アプリケーション
関数型プログラミング
関数型⾔言語の技術マップ
抽象代数学
数理論理学
直感主義命題論理&
自然演繹
単純型付ラムダ計算
純粋関数型言語
命題
型クラス
群論
Hask圏
(プログラム圏)
永続データ構造
関数型言語
手続き型言語
代数的データ型
Curry-Haward対応
オブジェクト
指向言語
証明
述語論理
様相論理
圏論
直積 直和
不変
副作用なし
参照透過性
置換モデル
モノイド モナド
型
計算
Scala
Scala
OOP
(Java + α)
Functional
Programming
(Haskell – α)
モダン⽂文法
(e.g. Ruby)
DSL
(Scalable)
Java VM
代数的構造デザインパターン
•  半群 (semigroup)
•  モノイド  (monoid)
•  群 (group)
結合律律 (associative law)
•  可換半群
•  可換モノイド
•  可換群(アーベル群)
可換律律 (commutative law)
•  環  (ring)
•  体 (field)
分配律律 (distributive law)
(a + b) + c = a + (b + c)
a + b = b + a
a * (b + c) = a * b + a * c
圏論論デザインパターン
圏  (category)
• Hask圏 (Scala圏?)
• クライスリ圏  
(kleisli category)
射 (arrow,
morphism)
関⼿手  
(functor)
Applicative
functor
モナド  
(monad)
基本概念
•  再帰 (recursion)
•  ⾼高階関数 (high-order function)
•  不不変データ (immutable data)
•  遅延評価 (lazy evaluation)
•  参照透過性 (referential transparency)
•  (項)書換えモデル (substitution model)
•  等式推論論  (equational reasoning)
•  代数的データ型 (algebraic data type)
•  直積, 直和 (direct product, direct sum)
•  永続データ構造 (persistent data structure)
•  エフェクト (effect)
•  型クラス (type class)
•  モナド (monad)
Object-Oriented Programming
Monadic Programming
Functional Programming
Object-Functional Programming
Functional Reactive Programming
並列処理アプリケーション
Monadic  Programming
モナド
•  計算機科学におけるモナド(Monads)とは、計算機科学者の
Eugenio Moggiによって提案されたモジュール性を持たせた
表⽰示的意味論論の枠組みを⾔言う。プログラムとはクライスリ圏
の射である(a program is an arrow of a Kleisli category)、
という要請から合成規則としてクライスリトリプル(Kleisli
triple)というモナドと等価なものが⽤用いられる。(Wikipedia)
•  In functional programming, a monad is a structure that
represents computations defined as sequences of steps: a
type with a monad structure defines what it means to
chain operations, or nest functions of that type together.
This allows the programmer to build pipelines that
process data in steps, in which each action is decorated
with additional processing rules provided by the monad.
(Wikipedia)
•  ⾮非常に難しい概念念
•  使うのは(慣れれば)それほど難しくない
•  モダンな関数型プログラミングの中核概念念
再利利⽤用メカニズムの⽐比較
アプリ
手続き型
サブルーチン
アプリ
オブジェクト指向
フレームワーク
オブジェクト
アプリ
関数型(Monadic)
型クラス
関数
A→B
Functor
Monad
A→M[B]
モナドの⽤用途
•  コンテナ
•  コレクション(List, Vector)
•  成功失敗⽂文脈(Option)
•  インタープリタ
•  Freeモナド, Operationalモナド
•  DI(Dependency Injection)
•  Readerモナド
•  状態機械
•  Stateモナド
•  Processモナド
•  問合せ
•  Slick
•  Spark RDD(Resilient Distributed Dataset)
モナドの種類(⾮非公式分類)
•  コンテナ型
•  値を格納
•  コンビネータを実⾏行行すると即時に評価が⾏行行われる
•  インタープリタ型
•  関数を格納
•  コンビネータを実⾏行行すると関数を合成したモナド(インター
プリタ)が返ってくる
•  純粋関数型のセマンティクス
•  runメソッドなどでインタープリタを実⾏行行する
•  外部⼊入出⼒力力など⾮非純粋関数型処理理はこちらで⾏行行う
•  外部⼊入出⼒力力など副作⽤用を伴う処理理はインタープリタ型モナ
ドで対応
•  IOモナド
コンテナ型モナド
•  Option
•  成功/失敗状態を扱うモナド
•  List
•  データ列列を扱うモナド(シーケンシャルアクセス向け)
•  Vector
•  データ列列を扱うモナド(ランダムアクセス対応)
•  Stream
•  遅延評価によるデータ列列を扱うモナド
•  Try
•  例例外発⽣生状態を扱うモナド
•  Future
•  並列列実⾏行行を扱うモナド
インタープリタ型モナド
•  Stateモナド
•  状態を表現するモナド
•  IOモナド
•  外部⼊入出⼒力力を扱うモナド
•  Processモナド
•  状態機械を表現するモナド
•  ストリーム処理理を実現
Monadic Programmingの
⾮非公式定義
•  ⼀一義的にはモナドを活⽤用したプログラミング
•  本セッションでは以下の型クラス(Scalaz)を活⽤用したプ
ログラミングまでスコープを広げています
•  Functor
•  Applicative Functor
•  Monad
•  MonadはApplicative FunctorおよびFunctorでもある
•  Monadを⽬目的によってApplicative Functorまたは
Functorとして使うことも多い
Functor, Applicative Functor, Monad
⾮非公式理理解
Functor
Applicative Functor
Monad
F.point(x).map(f).map(g).map(h)
(A.point(x) |@| A.point(y) |@| A.point(z))(i(_, _, _))
f g h
f
f
g
g
h
h
i
x
x
y
z
M.point(x).flatMap(f).flatMap(g).flatMap(h)
for {
a <- M.point(x)
b <- f(a)
c <- g(b)
d <- h(c)
} yield d
^^(A.point(x), A.point(y), A.point(z))(i(_, _, _))
x
Option(1).map(f).map(g).map(h)
(Option(1) |@| Option(2) |@| Option(3))(i(_, _, _))
Option(1).flatMap(f).flatMap(g).flatMap(h)
型クラス&Monadの使い所
型クラス
&
Monad
クラス
予約 販売 顧客管理 分析
ロギング
並列処理
故障耐性
機能要求
非機能要求
セキュリティ
トランザクション
分散処理
例外処理
OOPではAOPやDIによっ
て実現してきた機能要求
と⾮非機能要求の分離離を細
粒粒度度、型安全に実現
Scalaz
•  https://github.com/scalaz/scalaz
•  キャッチフレーズ
•  昔: Scalaz: Type Classes and Pure Functional Data
Structures for Scala
•  今: An extension to the core Scala library for functional
programming. http://typelevel.org
•  最新の関数型プログラミングを可能にする機能群を
Scala向けに⽤用意
•  型クラス
•  純粋関数型データ構造
•  Haskellで実績のある機能群をScalaで実現
Monadicプログラミングの効⽤用
def validate(name: String, age: Int): ValidationNEL[Throwable, (String,
Int)] = {!
val a = validateName(name) !
val b = validateAge(age) !
if (a.isSuccess && b.isSuccess) { !
val a1 = a.asInstanceOf[Success[NonEmptyList[Throwable], String]].a !
val b1 = b.asInstanceOf[Success[NonEmptyList[Throwable], Int]].a !
Success((a1, b1)) !
} else if (a.isSuccess) { !
b.asInstanceOf[Failure[NonEmptyList[Throwable], (String, Int)]] !
} else if (b.isSuccess) { !
a.asInstanceOf[Failure[NonEmptyList[Throwable], (String, Int)]] !
} else { !
val a1 = a.asInstanceOf[Failure[NonEmptyList[Throwable], String]].e !
val b1 = b.asInstanceOf[Failure[NonEmptyList[Throwable], Int]].e !
Failure(a1 |+| b1) !
} !
}!
Java⾵風
def validate(name: String, age: Int):
ValidationNEL[Throwable, (String, Int)] = { !
validateName(name) match { !
case Success(a) => validateAge(age) match { !
case Success(b) => Success((a, b)) !
case Failure(e) => Failure(e) !
} !
case Failure(e1) => validateAge(age) match { !
case Success(b) => Failure(e1) !
case Failure(e2) => Failure(e1 |+| e2) !
} !
} !
} !
def validate(name: String, age: Int):
ValidationNEL[Throwable, (String, Int)] = { !
(validateName(name) ⊛ validateAge(age))((_, _)) !
}!
Scala (関数型プログラミング)
Scalaz (Monadicプログラミング)
参考: Scala Tips / Validation (10) - applicative
http://modegramming.blogspot.jp/2012/04/scala-tips-validation-10-applicative.html
プログラミング例例
•  3つの関数を並⾏行行動作させ、それぞれの実⾏行行結果を引数
にした関数を実⾏行行して最終結果を計算
•  calcString(x: Int): String
•  calcInt(x: Int): Int
•  calcFloat(x: Int): Float
•  finalCalc(x: String, y: Int, z: Float): String
•  並列列処理理はFutureモナドで実現
準備
object Util {
import java.net.URL
import scala.concurrent.duration._
import scalax.io.JavaConverters._
def go[T](label: String)(body: => T) {
val ts = System.currentTimeMillis
val r = body
val elapse = System.currentTimeMillis - ts
println(s"$label ($elapse ms): $r")
}
def getPageLength(url: String): Int = {
new URL(url).asInput.bytes.size
}
Scala流流のDSLの例例
go (“bigCalc”) {
val r = bigCalc(1000)
Await.result(r, 1.minute)
}
def calcString(n: Int): String = {
Thread.sleep(n)
n.toString
}
def calcInt(n: Int): Int = {
Thread.sleep(n)
n
}
def calcFloat(n: Int): Float = {
Thread.sleep(n)
n.toFloat
}
def finalCalc(s: String, i: Int, f: Float): String = {
s"$s-$i-$f"
}
}
基本形
def bigCalc(n: Int): String = {
val a = calcString(n)
val b = calcInt(n)
val c = calcFloat(n)
finalCalc(a, b, c)
}
bigCalc (3003 ms): 1000-1000-1000.0
> go(“bigCalc”)(bigCalc(1000))
Optionモナド
def bigCalcO(n: Int): Option[String] = {
for {
a <- Option(calcString(n))
b <- Option(calcInt(n))
c <- Option(calcFloat(n))
} yield finalCalc(a, b, c)
}
Monad
f g h
x
bigCalcO (3005 ms): 1000-1000-1000.0
> go(“bigCalcO”)(bigCalcO(1000))
for式(for ... yield)でmonadicな
パイプラインを構築
参考: Scala Tips/Option Index
http://modegramming.blogspot.jp/2012/02/scala-tips-option-index.html
Optionモナド
Monadic関数版
def calcStringO(n: Int): Option[String] = {
Option(calcString(n))
}
def calcIntO(n: Int): Option[Int] = {
Option(calcInt(n))
}
def calcFloatO(n: Int): Option[Float] = {
Option(calcFloat(n))
} def bigCalcO2(n: Int): Option[String] = {
for {
a <- calcStringO(n)
b <- calcIntO(n)
c <- calcFloatO(n)
} yield finalCalc(a, b, c)
}
Monad
f g h
x
bigCalcO2 (3005 ms): 1000-1000-1000.0
> go(“bigCalcO2”)(Await.result(bigCalcO2(1000), 1.minute))
A->M[B]
モナディック関数
for式にモナディック
関数を組み合わせるの
がイディオム
Futureモナド
val executorService = Executors.newFixedThreadPool(10)
implicit val executionContext = ExecutionContext.fromExecutorService(executorService)
def bigCalcP(n: Int): Future[String] = {
for {
a <- Future(calcString(n))
b <- Future(calcInt(n))
c <- Future(calcFloat(n))
} yield finalCalc(a, b, c)
}
Monad
f g h
x
bigCalcP (3017 ms): 1000-1000-1000.0
> go(“bigCalcP”)(Await.result(bigCalcP(1000), 1.minute))
Futureモナド
改良良版
def bigCalcP2(n: Int): Future[String] = {
val fa = Future(calcString(n))
val fb = Future(calcInt(n))
val fc = Future(calcFloat(n))
for {
a <- fa
b <- fb
c <- fc
} yield finalCalc(a, b, c)
}
Monad
f g h
x
bigCalcP2 (1005 ms): 1000-1000-1000.0
> go(“bigCalcP2”)(Await.result(bigCalcP2(1000), 1.minute))
モナディック処理理の前
にFutuerを開始
Future Applicative
def bigCalcP3(n: Int): Future[String] = {
import scalaz._, Scalaz._
(Future(calcString(n)) |@| Future(calcInt(n)) |@| Future(calcFloat(n)))(finalCalc)
}
def bigCalcP31(n: Int): Future[String] = {
import scalaz._, Scalaz._
^^(Future(calcString(n)), Future(calcInt(n)), Future(calcFloat(n)))(finalCalc)
}
Applicative Functor
f
g
h
i
x
y
z
bigCalcP3 (1162 ms): 1000-1000-1000.0
bigCalcP31 (1004 ms): 1000-1000-1000.0
>go(“bigCalcP3”)(Await.result(bigCalcP3(1000), 1.minute))
> go(“bigCalcP31”)(Await.result(bigCalcP31(1000), 1.minute))
Applicativeを使うと綺
麗麗に記述できる
Future Applicative
改良良版
def bigCalcA[A[_]](n: Int)(implicit C: Applicative[A]): A[String] = {
^^(
C.point(calcString(n)),
C.point(calcInt(n)),
C.point(calcFloat(n))
)(finalCalc)
}
Applicative Functor
f
g
h
i
x
y
z
bigCalcAF (1003 ms): 1000-1000-1000.0
bigCalcAI (3001 ms): 1000-1000-1000.0
>go(“bigCalcAF”)(Await.result(bigCalcA[Future](1000), 1.minute))
> go(“bigCalcAI”)(bigCalcA[Id](1000), 1.minute))
型クラスを利利⽤用し任意
のApplicativeを使える
ように汎⽤用化
Applicativeのpointメソッド
はvirtual constructor
ロジック(機能要求)からApplicativeとして
パラメタ化した⾮非機能要求を分離離
Functional  Reactive  
Programming
Reactiveの実現(再掲)
Service Cluster
CPU Core
Function
Service
Message
Message
Message
Function
Function
Function
Function
Function
Service
Service
Service
Service
Function
Reactive
Concurrent
Parallel
Distributed
Responsive
Resillience
Elasticity
Message Driven
Concurrent
Parallel
Distributed
Functional Reactive
Programmingで実現したいこと
•  関数型プログラミングのメリットを享受
•  参照透過性
•  関数による部品化/部品の組⽴立立て
•  パイプラインのセマンティクス
•  イベント駆動処理理
•  Callback hellの排除
•  ストリーム処理理
•  リソース管理理
•  フロー制御
•  ⼤大規模データ処理理
•  リソース管理理
•  省省メモリ
Functional Reactive Programming
の候補
•  RxJava – Scala
•  https://github.com/ReactiveX/RxJava
•  Observableモナド
•  Scalaz Stream
•  https://github.com/scalaz/scalaz-stream
•  Processモナド
•  Akka Stream
•  https://typesafe.com/blog/typesafe-announces-akka-
streams
•  Akka actor
scalaz stream
•  ScalazベースのStreaming I/Oライブラリ
•  https://github.com/scalaz/scalaz-stream
•  ⽤用途
•  ⼊入出⼒力力処理理フレームワーク
•  パイプライン
•  部品化、部品合成によるロジック記述
•  ⼤大規模データ⼀一括処理理
•  ストリーム処理理
•  Processモナド
•  参照透過性:副作⽤用なし
•  部品化:パイプラインによる関数の合成
•  リソースの獲得・解放
•  フロー制御
•  状態機械
Processモナド
既存部品 アプリケーション・ロジック
リソース管理
トランザクション管理
フロー制御
Function Function
Process
Monad
Process
Monad
Channel Sink
Channel Sink
Process Monad
プログラミング例例
•  パイプラインを流流れてくるデータを以下のルールでパ
ケット化
•  3つで⼀一つのパケットにする
•  パケットにシーケンス番号をつける
•  “start”データの前のパケットにエンドマークをつける
•  上記アルゴリズムを実現した部品を⼤大規模データ処理理と
ストリーミング処理理の両⽅方に適⽤用する
参考: [scalaz-stream] シーケンス番号とエンドマーク
http://modegramming.blogspot.jp/2015/03/scalaz-stream.html
準備
case class Packet(seqno: Int, end: Boolean, content: String)
def sink: Sink[Task, Packet] = {
io.channel((a: Packet) => Task.delay(println(a)))
}
参考: [scalaz-stream] ストリーミングで状態機械
http://modegramming.blogspot.jp/2015/04/scalaz-stream.html
参考: [scalaz-stream] Scala的状態機械/OOP編
http://modegramming.blogspot.jp/2015/03/scalaoop.html
参考: [scalaz-stream] Scala的状態機械/FP編
http://modegramming.blogspot.jp/2015/03/scalafp.html
アプリケーション・ロジック
        def buildTextToPacket[M[_]: Monad](source: Process[M, String]):
Process[M, Packet] = {
source.
chunk(3). // 3個ずつチャンク化
            pipe(zipWithNext). // 次のパケットを同時に取得
            pipe(zipWithIndex). // インデックを採番
            map(toPacket)
}
def toPacket(x: ((Vector[String], Option[Vector[String]]), Int)):
Packet = {
val ((current, next), index) = x
val content = current.mkString("-")
val isend = next.cata(_.headOption === Some("start"), true)
Packet(index + 1, isend, content)
}
既存部品とアプリケーションロ
ジックを組合せてパイプライン
を構築
以下のロジックを実現
- 3つで⼀一つのパケットにする
- パケットにシーケンス番号をつける
- “start”データの前のパケットにエン
ドマークをつける
⼤大規模データ処理理
val source = io.linesR("data.txt")
val pipeline = buildTextToPacket(source).to(sink)
pipeline.run.run
Packet(1,false,1-2-3)
Packet(2,true,4-5-6)
Packet(3,true,start-8-9)
1
2
3
4
5
6
start
8
9
汎⽤用部品を⼤大規模データ処理理に
適⽤用
リソース管理
フロー制御
chunk
zipWith
Next
zipWith
Index
toPacketChannel Sink
Process Monad
EventProcessor
val queue = EventProcessor.q
val source = Vector("1", "2", "3", "4", "5", "6", "start", "8", "9")
source foreach { x =>
queue.enqueueOne(x).run
Thread.sleep(2000)
}
object EventProcessor {
val q = async.unboundedQueue[String]
val eventStream: Process[Task, String] = q.dequeue
}
参考: [scalaz-stream] ストリーミングで状態機械
http://modegramming.blogspot.jp/2015/04/scalaz-stream.html
ストリーム処理理
val source = EventProcessor.eventStream
val pipeline = buildTextToPacket(source).to(sink)
pipeline.run.run
Packet(1,false,1-2-3)
Packet(2,true,4-5-6)
汎⽤用ロジックをストリーミング
処理理に適⽤用
リソース管理
フロー制御
chunk
zipWith
Next
zipWith
Index
toPacketChannel Sink
Process Monad
まとめ
•  モナド
•  マイクロ・フレームワーク
•  DSL(Domain Specific Language)
•  Monadic Programming
•  モナドベースのパイプラインプログラミング
•  関数による部品化、部品の組み⽴立立て
•  Functional Reactive Programming
•  Futureモナド
•  Processモナド
END

More Related Content

What's hot

Lets scala
Lets scalaLets scala
Lets scalasmdkk
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介Akira Tanaka
 
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けーTanUkkii
 

What's hot (6)

Lets scala
Lets scalaLets scala
Lets scala
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介
 
Learn ES2015
Learn ES2015Learn ES2015
Learn ES2015
 
TypeScript超入門
TypeScript超入門TypeScript超入門
TypeScript超入門
 
Xtext 紹介
Xtext 紹介Xtext 紹介
Xtext 紹介
 
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
 

Viewers also liked

「望ましさ」による優先順位づけ
「望ましさ」による優先順位づけ「望ましさ」による優先順位づけ
「望ましさ」による優先順位づけArata Fujimura
 
Deriving Scalaz
Deriving ScalazDeriving Scalaz
Deriving Scalaznkpart
 
MindmapModelingチュートリアル
MindmapModelingチュートリアルMindmapModelingチュートリアル
MindmapModelingチュートリアルTomoharu ASAMI
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and designTomoharu ASAMI
 
楽々Scalaプログラミング
楽々Scalaプログラミング楽々Scalaプログラミング
楽々ScalaプログラミングTomoharu ASAMI
 
Monadicプログラミング マニアックス
Monadicプログラミング マニアックスMonadicプログラミング マニアックス
Monadicプログラミング マニアックスTomoharu ASAMI
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalazTomoharu ASAMI
 
Typography Inspiration from Movie Title Cards
Typography Inspiration from Movie Title CardsTypography Inspiration from Movie Title Cards
Typography Inspiration from Movie Title CardsQuality Logo Products
 
Social Media for Book Publishers and Authors
Social Media for Book Publishers and AuthorsSocial Media for Book Publishers and Authors
Social Media for Book Publishers and AuthorsHikeBandit
 
Social Media for Awareness and Influence
Social Media for Awareness and InfluenceSocial Media for Awareness and Influence
Social Media for Awareness and InfluenceDavid Horne
 
Building trust for cloud customers - the value of cif certification
Building trust for cloud customers - the value of cif certificationBuilding trust for cloud customers - the value of cif certification
Building trust for cloud customers - the value of cif certificationDavid Terrar
 
8/28 數位教學檔案製作
8/28 數位教學檔案製作8/28 數位教學檔案製作
8/28 數位教學檔案製作Jin-yuh Huang
 
8b/10b Encoder Decoder design and Verification for PCI Express protocol usin...
8b/10b Encoder Decoder design and  Verification for PCI Express protocol usin...8b/10b Encoder Decoder design and  Verification for PCI Express protocol usin...
8b/10b Encoder Decoder design and Verification for PCI Express protocol usin...T. Rajib Subudhi
 
Social Media for B2B Small Business
Social Media for B2B Small BusinessSocial Media for B2B Small Business
Social Media for B2B Small BusinessInfusionsoft
 
Warning Ahead: SecurityStorms are Brewing in Your JavaScript
Warning Ahead: SecurityStorms are Brewing in Your JavaScriptWarning Ahead: SecurityStorms are Brewing in Your JavaScript
Warning Ahead: SecurityStorms are Brewing in Your JavaScriptCyber Security Alliance
 

Viewers also liked (20)

「望ましさ」による優先順位づけ
「望ましさ」による優先順位づけ「望ましさ」による優先順位づけ
「望ましさ」による優先順位づけ
 
Deriving Scalaz
Deriving ScalazDeriving Scalaz
Deriving Scalaz
 
MindmapModelingチュートリアル
MindmapModelingチュートリアルMindmapModelingチュートリアル
MindmapModelingチュートリアル
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
 
楽々Scalaプログラミング
楽々Scalaプログラミング楽々Scalaプログラミング
楽々Scalaプログラミング
 
Monadicプログラミング マニアックス
Monadicプログラミング マニアックスMonadicプログラミング マニアックス
Monadicプログラミング マニアックス
 
Scalaz
ScalazScalaz
Scalaz
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
 
Typography Inspiration from Movie Title Cards
Typography Inspiration from Movie Title CardsTypography Inspiration from Movie Title Cards
Typography Inspiration from Movie Title Cards
 
Mafer cuadros (1)
Mafer cuadros (1)Mafer cuadros (1)
Mafer cuadros (1)
 
Social Media for Book Publishers and Authors
Social Media for Book Publishers and AuthorsSocial Media for Book Publishers and Authors
Social Media for Book Publishers and Authors
 
Social Media for Awareness and Influence
Social Media for Awareness and InfluenceSocial Media for Awareness and Influence
Social Media for Awareness and Influence
 
Building trust for cloud customers - the value of cif certification
Building trust for cloud customers - the value of cif certificationBuilding trust for cloud customers - the value of cif certification
Building trust for cloud customers - the value of cif certification
 
L'elefante incatenato
L'elefante incatenatoL'elefante incatenato
L'elefante incatenato
 
8/28 數位教學檔案製作
8/28 數位教學檔案製作8/28 數位教學檔案製作
8/28 數位教學檔案製作
 
8b/10b Encoder Decoder design and Verification for PCI Express protocol usin...
8b/10b Encoder Decoder design and  Verification for PCI Express protocol usin...8b/10b Encoder Decoder design and  Verification for PCI Express protocol usin...
8b/10b Encoder Decoder design and Verification for PCI Express protocol usin...
 
Social Media for B2B Small Business
Social Media for B2B Small BusinessSocial Media for B2B Small Business
Social Media for B2B Small Business
 
8717385 d karotte_190g
8717385 d karotte_190g8717385 d karotte_190g
8717385 d karotte_190g
 
Historypin_DigiTools_Map_App
Historypin_DigiTools_Map_AppHistorypin_DigiTools_Map_App
Historypin_DigiTools_Map_App
 
Warning Ahead: SecurityStorms are Brewing in Your JavaScript
Warning Ahead: SecurityStorms are Brewing in Your JavaScriptWarning Ahead: SecurityStorms are Brewing in Your JavaScript
Warning Ahead: SecurityStorms are Brewing in Your JavaScript
 

Similar to Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ

実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】Tomoharu ASAMI
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】Tomoharu ASAMI
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...Akira Inoue
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】Tomoharu ASAMI
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説Daisuke Nishino
 
企業システムにアジャイルは必要か
企業システムにアジャイルは必要か企業システムにアジャイルは必要か
企業システムにアジャイルは必要かHiromasa Oka
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 
DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発Tomoharu ASAMI
 
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶjQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶShumpei Shiraishi
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】Tomoharu ASAMI
 
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】Tomoharu ASAMI
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう幹雄 小川
 
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Akira Inoue
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りましたTomoharu ASAMI
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014Koji Hasegawa
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】Tomoharu ASAMI
 
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】Tomoharu ASAMI
 

Similar to Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ (20)

実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
 
Kaleidox
KaleidoxKaleidox
Kaleidox
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
企業システムにアジャイルは必要か
企業システムにアジャイルは必要か企業システムにアジャイルは必要か
企業システムにアジャイルは必要か
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発
 
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶjQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
 
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りました
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
 
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 

More from Tomoharu ASAMI

テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】Tomoharu ASAMI
 
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】Tomoharu ASAMI
 
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】Tomoharu ASAMI
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】Tomoharu ASAMI
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】Tomoharu ASAMI
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】Tomoharu ASAMI
 
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】Tomoharu ASAMI
 
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】Tomoharu ASAMI
 
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】Tomoharu ASAMI
 
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】Tomoharu ASAMI
 
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】Tomoharu ASAMI
 
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】Tomoharu ASAMI
 
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】Tomoharu ASAMI
 
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】Tomoharu ASAMI
 
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】Tomoharu ASAMI
 
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】Tomoharu ASAMI
 
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】Tomoharu ASAMI
 
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】Tomoharu ASAMI
 
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】Tomoharu ASAMI
 
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】Tomoharu ASAMI
 

More from Tomoharu ASAMI (20)

テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
 
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
 
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
 
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
 
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
 
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
 
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
 
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
 
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
 
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
 
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
 
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
 
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
 
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
 
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
 
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
 
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
 

Recently uploaded

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Recently uploaded (7)

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ