SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
プログラミング言語の
パラダイムシフト
Scalaから見る関数型と並列性時代の幕開け
安田裕介
Hackers Champloo 2015 LT
自己紹介
• 名前:安田裕介
• id: TanUkkii
• トライフォート勤務
今日話す内容
• なぜ並列分散プログラミングが重要なのか
• Scalaから見る並列分散プログラミングの現状
• このダイジェスト版 (http://
www.slideshare.net/TanUkkii/functional-
and-concurencyinscala)
concurrency
なぜ並列性なのか
ムーアの法則
http://spray.io/duse/#/2
トランジスタの数は1.5年ごとに倍になる
ムーアの法則
http://spray.io/duse/#/2
単一スレッドの
パフォーマンスは
限界に達した
今後は
コアが増える形で
トランジスタの集積率を
増やす形になる
トランジスタの数は1.5年ごとに倍になる
アムダールの法則
http://spray.io/duse/#/3
並列計算の分野において、複数のプロセッサを使ったときの
理論上の性能向上の限界を予測する法則
アムダールの法則
並列性の低い
プログラムは
コアが増えても
まったく速くならず、
リソースを無駄にする
並列性の高い
プログラムは
コアが増えるほど
速くなる
http://spray.io/duse/#/3
並列計算の分野において、複数のプロセッサを使ったときの
理論上の性能向上の限界を予測する法則
並列性の低いアプリケーションは
CPUを使い切れない
PHP + Apache
CPU: 32コア Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz
ハードウェアの進化を
待っていれば
プログラムが速くなる
時代は終わった
時代は
並列分散プログラミングへ
並列分散処理の技術
http://spray.io/duse/#/5
スレッド
http://spray.io/duse/#/5
スレッドの問題
• 原子性がない
• 順番の保証がない
• デッドロック、レースコンディション
• リソースとして貴重
• 排他制御、待ち合わせなど、コードが複雑になる
• デバッグが困難
並列分散処理は
難しすぎる
早くなんとかしないと…
万人のための並列分散処理の
課題
Scalaはこう解決(しようと)してる
Future
http://spray.io/duse/#/5
Future
• 非同期計算の結果のための統一インターフェースと
してのコレクション
• Scalaにおける並列実行の単位
• map, flatMapなどのモナドコンビネーターメソッ
ド搭載
"Future" must {

import scala.concurrent.ExecutionContext.Implicits.global


"map and flatMap" in {

val futureMessage = Future {

Thread.sleep(1000); 1

}.flatMap(value => Future {

Thread.sleep(1000); value + 1

}).map(s => s"This is a value of future after $s seconds")

Await.result(futureMessage, 5 seconds) must be("This is a value of future after 2 seconds")

}


"for comprehension" in {

val futureMessage = for {

s1 <- Future {

Thread.sleep(1000); 1

}

s2 <- Future {

Thread.sleep(1000); s1 + 1

}

} yield s"This is a value of future after $s2 seconds"

Await.result(futureMessage, 5 seconds) must be("This is a value of future after 2 seconds")

}

}
Future
並列に実行
並列に実行
並列に実行
forコンプリヘンション
並列に実行
並列に実行
ParallelCollection
http://spray.io/duse/#/5
• Scalaコレクションの並列版
• Scalaコレクションと同じAPIだが、内部実行は並
列
• parメソッドによりScalaコレクションから並列コ
レクションに透過的に変換できる
• Scalaコレクションと使いかたが同じなので簡単に
使える
ParallelCollection
ParallelCollection
"parallel collection" must {

"behave same as standard one" in {

val list = (0 to 9999).toList

list.map(_ + 1).filter(_ % 2 == 0).fold(0)(_ + _) must be

list.par.map(_ + 1).filter(_ % 2 == 0).fold(0)(_ + _)

}

}
通常のコレクション
並列コレクション
使い方まったく同じ
Actor
http://spray.io/duse/#/5
Actorとは
• 並列実行単位となるオブジェクト
Future: 関数 Actor: オブジェクト
並列実行単位
Actor の仕組み
mailbox
thread pool
partial function
message
event loop
thread
Actorはスレッドの問題を解決
する
• 原子性:アクター内部の処理は並列ではなく順次実行されるので、
通常のプログラミングと同じ
• 実行順序:アクター内部の処理は並列ではなく順次実行されるので、
通常のプログラミングと同じ
• カプセル化:他のスレッドからアクター内はアクセスできない
• 安全性:アクターはブロックしないので、デッドロックはおきない
• リソース効率性:スレッドプールから論理スレッドが確保できたと
きだけ、メッセージが処理される
Actorによる並列プログラミング
class CountAActor extends Actor {

var totalA = 0


def receive: Receive = {

case "How many?" => sender ! totalA

case text: String => totalA += text.toUpperCase().count(_ == 'A')

}

}



object CountAActor {

def props = Props(new CountAActor)

}
class SampleTest extends TestKit(ActorSystem("SampleSystem", ConfigFactory.empty()))

with WordSpecLike with MustMatchers with ImplicitSender with StopSystemAfterAll {



"CountAActor" must {

"count A and a" in {

val countAActor = system.actorOf(CountAActor.props, "countAActor")

countAActor ! "na" * 16

countAActor ! "BATMAN!"

countAActor ! "How many?"

expectMsg(18)

}

}

}
非同期にメッセージを送る
必ず18になる
Actor内部は順次実行されるので、
安全に状態を更新できる
(直ちに処理されるのではなくmailboxに貯まる)
内部状態は絶対に外から見えないので、
他のスレッドから守られている
Pros&Cons
• Future: 汎用的。スケールしない。
• Parallel Collection: 使い方簡単。利用機会は限
定的。
• Actor: 高機能・高性能。プリミティブすぎて使い
にくい (生成したら消すとか、メッセージの流れ道
の組み合わせとか、全部自分でやる)。
ReactiveStream
http://spray.io/duse/#/5
ReactiveStreamは未来
http://spray.io/duse/#/5
より汎用的に使えて、
抽象度が高く敷居が低い
この領域が未来
ReactiveStreamとは?
https://speakerdeck.com/okapies/reactive-streams-ru-men-number-jjug
これ見て(ごめんなさい)
ReactiveStream実装
AkkaStream
https://speakerdeck.com/okapies/reactive-streams-ru-men-number-jjug
こう書ける
(らしい)
まとめ
• 今後CPUの進化はマルチコア化が駆動
• CPUを使い尽くすために、並列分散プログラミングが必要
• 並列分散プログラミングは難しい
• 抽象度・一般性のトレードオフの中で、並列処理のハードル
を下げる様々な概念がある
• Future, Parallel Collection, Actor, Reactive Stream

Weitere ähnliche Inhalte

Was ist angesagt?

Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc賢太郎 前多
 
Developing an Akka Edge6
Developing an Akka Edge6Developing an Akka Edge6
Developing an Akka Edge6saaaaaaki
 
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 賢太郎 前多
 
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ksServlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ksKazuhiro Sera
 
Developing an Akka Edge1-3
Developing an Akka Edge1-3Developing an Akka Edge1-3
Developing an Akka Edge1-3saaaaaaki
 
Developing an Akka Edge4-5
Developing an Akka Edge4-5Developing an Akka Edge4-5
Developing an Akka Edge4-5saaaaaaki
 
Real world android akka
Real world android akkaReal world android akka
Real world android akkaTaisuke Oe
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめtakezoe
 
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Asami Abe
 
Java使いにとっての関数
Java使いにとっての関数Java使いにとっての関数
Java使いにとっての関数amkt922
 
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on JavaQuasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on JavaTaku Miyakawa
 
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)Eugene Yokota
 
ScalaにまつわるNewsな話
ScalaにまつわるNewsな話ScalaにまつわるNewsな話
ScalaにまつわるNewsな話Yosuke Mizutani
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jstakezoe
 
Lambda Layerの権限制御を試してみた
Lambda Layerの権限制御を試してみたLambda Layerの権限制御を試してみた
Lambda Layerの権限制御を試してみたKazukiNabasama
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.jstakezoe
 
JavaからScalaへ
JavaからScalaへJavaからScalaへ
JavaからScalaへtakezoe
 
Scalaの現状と今後
Scalaの現状と今後Scalaの現状と今後
Scalaの現状と今後Kota Mizushima
 

Was ist angesagt? (20)

Akka actorを何故使うのか?
Akka actorを何故使うのか?Akka actorを何故使うのか?
Akka actorを何故使うのか?
 
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
 
Developing an Akka Edge6
Developing an Akka Edge6Developing an Akka Edge6
Developing an Akka Edge6
 
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い
 
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ksServlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
 
Developing an Akka Edge1-3
Developing an Akka Edge1-3Developing an Akka Edge1-3
Developing an Akka Edge1-3
 
Developing an Akka Edge4-5
Developing an Akka Edge4-5Developing an Akka Edge4-5
Developing an Akka Edge4-5
 
Real world android akka
Real world android akkaReal world android akka
Real world android akka
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
 
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
 
Java使いにとっての関数
Java使いにとっての関数Java使いにとっての関数
Java使いにとっての関数
 
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on JavaQuasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
 
とりあえず使えるSBT
とりあえず使えるSBTとりあえず使えるSBT
とりあえず使えるSBT
 
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
 
ScalaにまつわるNewsな話
ScalaにまつわるNewsな話ScalaにまつわるNewsな話
ScalaにまつわるNewsな話
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
 
Lambda Layerの権限制御を試してみた
Lambda Layerの権限制御を試してみたLambda Layerの権限制御を試してみた
Lambda Layerの権限制御を試してみた
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.js
 
JavaからScalaへ
JavaからScalaへJavaからScalaへ
JavaからScalaへ
 
Scalaの現状と今後
Scalaの現状と今後Scalaの現状と今後
Scalaの現状と今後
 

Andere mochten auch

kibayos beaker-070829
kibayos beaker-070829kibayos beaker-070829
kibayos beaker-070829Mikio Yoshida
 
プログラミング・パラダイム
プログラミング・パラダイムプログラミング・パラダイム
プログラミング・パラダイムYusuke Matsushita
 
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装Koji Morikawa
 
マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。剛 大島
 
【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方nwrnet
 
バーニングマンから考える組織論 20140223Co-Lab用
バーニングマンから考える組織論 20140223Co-Lab用バーニングマンから考える組織論 20140223Co-Lab用
バーニングマンから考える組織論 20140223Co-Lab用明弘 野村
 
女性にモテるためのIT系男子的部屋の片付け術
女性にモテるためのIT系男子的部屋の片付け術女性にモテるためのIT系男子的部屋の片付け術
女性にモテるためのIT系男子的部屋の片付け術やまもと さをん
 
Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要nwrnet
 
収入と貯蓄の関係V1
収入と貯蓄の関係V1収入と貯蓄の関係V1
収入と貯蓄の関係V1Shimizu Hitoshi
 
プロの無職についての考察:序
プロの無職についての考察:序プロの無職についての考察:序
プロの無職についての考察:序Koichi ITO
 
モテない男のソリューション -万葉恋愛メソッド-
モテない男のソリューション -万葉恋愛メソッド-モテない男のソリューション -万葉恋愛メソッド-
モテない男のソリューション -万葉恋愛メソッド-sukopun
 
Mon2 25
Mon2 25Mon2 25
Mon2 25medism
 
大阪大学サイバーメディアセンターにおける可視化サービスの取り組み
大阪大学サイバーメディアセンターにおける可視化サービスの取り組み大阪大学サイバーメディアセンターにおける可視化サービスの取り組み
大阪大学サイバーメディアセンターにおける可視化サービスの取り組みShinji Shimojo
 
Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010Yamagata Yoriyuki
 
大学生のためのドラッカー 同志社生協講演
 大学生のためのドラッカー 同志社生協講演 大学生のためのドラッカー 同志社生協講演
大学生のためのドラッカー 同志社生協講演ToshimasaHikita
 
名前重要 超重要
名前重要 超重要名前重要 超重要
名前重要 超重要baban ba-n
 
ワーママのお金に関するアンケート Money by powermamaproject
ワーママのお金に関するアンケート Money by powermamaprojectワーママのお金に関するアンケート Money by powermamaproject
ワーママのお金に関するアンケート Money by powermamaprojectNaoko Tsubaki
 
正規表現 入門
正規表現 入門正規表現 入門
正規表現 入門NOAN
 

Andere mochten auch (20)

kibayos beaker-070829
kibayos beaker-070829kibayos beaker-070829
kibayos beaker-070829
 
プログラミング・パラダイム
プログラミング・パラダイムプログラミング・パラダイム
プログラミング・パラダイム
 
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
 
マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。
 
Leadership
LeadershipLeadership
Leadership
 
【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方
 
バーニングマンから考える組織論 20140223Co-Lab用
バーニングマンから考える組織論 20140223Co-Lab用バーニングマンから考える組織論 20140223Co-Lab用
バーニングマンから考える組織論 20140223Co-Lab用
 
女性にモテるためのIT系男子的部屋の片付け術
女性にモテるためのIT系男子的部屋の片付け術女性にモテるためのIT系男子的部屋の片付け術
女性にモテるためのIT系男子的部屋の片付け術
 
Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要
 
収入と貯蓄の関係V1
収入と貯蓄の関係V1収入と貯蓄の関係V1
収入と貯蓄の関係V1
 
(10)昇進管理
(10)昇進管理(10)昇進管理
(10)昇進管理
 
プロの無職についての考察:序
プロの無職についての考察:序プロの無職についての考察:序
プロの無職についての考察:序
 
モテない男のソリューション -万葉恋愛メソッド-
モテない男のソリューション -万葉恋愛メソッド-モテない男のソリューション -万葉恋愛メソッド-
モテない男のソリューション -万葉恋愛メソッド-
 
Mon2 25
Mon2 25Mon2 25
Mon2 25
 
大阪大学サイバーメディアセンターにおける可視化サービスの取り組み
大阪大学サイバーメディアセンターにおける可視化サービスの取り組み大阪大学サイバーメディアセンターにおける可視化サービスの取り組み
大阪大学サイバーメディアセンターにおける可視化サービスの取り組み
 
Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010
 
大学生のためのドラッカー 同志社生協講演
 大学生のためのドラッカー 同志社生協講演 大学生のためのドラッカー 同志社生協講演
大学生のためのドラッカー 同志社生協講演
 
名前重要 超重要
名前重要 超重要名前重要 超重要
名前重要 超重要
 
ワーママのお金に関するアンケート Money by powermamaproject
ワーママのお金に関するアンケート Money by powermamaprojectワーママのお金に関するアンケート Money by powermamaproject
ワーママのお金に関するアンケート Money by powermamaproject
 
正規表現 入門
正規表現 入門正規表現 入門
正規表現 入門
 

Ähnlich wie プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー

Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみてKota Mizushima
 
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChiselScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChiselKei Nakazawa
 
インターンシップの学生にお届けしようとしたScalaの文法(初級編)
インターンシップの学生にお届けしようとしたScalaの文法(初級編)インターンシップの学生にお届けしようとしたScalaの文法(初級編)
インターンシップの学生にお届けしようとしたScalaの文法(初級編)Kentaro Masuda
 
Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)Hideaki Tarumi
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾Ryutaro YOSHIBA
 
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingScalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingTomoharu ASAMI
 
プログラマ人生論
プログラマ人生論プログラマ人生論
プログラマ人生論ymmt
 
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Kota Mizushima
 
Dark vol4 for_slideshare
Dark vol4 for_slideshareDark vol4 for_slideshare
Dark vol4 for_slideshareara_ta3
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingchibochibo
 
.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLI.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLIkeitasudo1
 
基本の WordPress コーディング規約 / WordCamp Tokyo 2016 LT
基本の WordPress コーディング規約 / WordCamp Tokyo 2016 LT基本の WordPress コーディング規約 / WordCamp Tokyo 2016 LT
基本の WordPress コーディング規約 / WordCamp Tokyo 2016 LTAkira Tachibana
 
マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞DMM.com
 
Do you like scala
Do you like scalaDo you like scala
Do you like scalaYuto Suzuki
 
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜Tanaka Yuichi
 

Ähnlich wie プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー (20)

Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
 
Scalaノススメ
ScalaノススメScalaノススメ
Scalaノススメ
 
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChiselScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChisel
 
インターンシップの学生にお届けしようとしたScalaの文法(初級編)
インターンシップの学生にお届けしようとしたScalaの文法(初級編)インターンシップの学生にお届けしようとしたScalaの文法(初級編)
インターンシップの学生にお届けしようとしたScalaの文法(初級編)
 
Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
 
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingScalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive Programming
 
プログラマ人生論
プログラマ人生論プログラマ人生論
プログラマ人生論
 
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -
 
実戦Scala
実戦Scala実戦Scala
実戦Scala
 
Dark vol4 for_slideshare
Dark vol4 for_slideshareDark vol4 for_slideshare
Dark vol4 for_slideshare
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
 
Scrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pubScrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pub
 
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPANSAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
 
Start-padrino
Start-padrinoStart-padrino
Start-padrino
 
.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLI.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLI
 
基本の WordPress コーディング規約 / WordCamp Tokyo 2016 LT
基本の WordPress コーディング規約 / WordCamp Tokyo 2016 LT基本の WordPress コーディング規約 / WordCamp Tokyo 2016 LT
基本の WordPress コーディング規約 / WordCamp Tokyo 2016 LT
 
マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞
 
Do you like scala
Do you like scalaDo you like scala
Do you like scala
 
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
 

Mehr von TanUkkii

Distributed ID generator in ChatWork
Distributed ID generator in ChatWorkDistributed ID generator in ChatWork
Distributed ID generator in ChatWorkTanUkkii
 
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...TanUkkii
 
Architecture of Falcon, a new chat messaging backend system build on Scala
Architecture of Falcon,  a new chat messaging backend system  build on ScalaArchitecture of Falcon,  a new chat messaging backend system  build on Scala
Architecture of Falcon, a new chat messaging backend system build on ScalaTanUkkii
 
Akka Clusterの耐障害設計
Akka Clusterの耐障害設計Akka Clusterの耐障害設計
Akka Clusterの耐障害設計TanUkkii
 
スケールするシステムにおけるエンティティの扱いと 分散ID生成
スケールするシステムにおけるエンティティの扱いと 分散ID生成スケールするシステムにおけるエンティティの扱いと 分散ID生成
スケールするシステムにおけるエンティティの扱いと 分散ID生成TanUkkii
 
すべてのアクター プログラマーが知るべき 単一責務原則とは何か
すべてのアクター プログラマーが知るべき 単一責務原則とは何かすべてのアクター プログラマーが知るべき 単一責務原則とは何か
すべてのアクター プログラマーが知るべき 単一責務原則とは何かTanUkkii
 
ディープニューラルネット入門
ディープニューラルネット入門ディープニューラルネット入門
ディープニューラルネット入門TanUkkii
 
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けーTanUkkii
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 
Scalaによる型安全なエラーハンドリング
Scalaによる型安全なエラーハンドリングScalaによる型安全なエラーハンドリング
Scalaによる型安全なエラーハンドリングTanUkkii
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングTanUkkii
 
プログラミング言語Scala
プログラミング言語Scalaプログラミング言語Scala
プログラミング言語ScalaTanUkkii
 
これからのJavaScriptー関数型プログラミングとECMAScript6
これからのJavaScriptー関数型プログラミングとECMAScript6これからのJavaScriptー関数型プログラミングとECMAScript6
これからのJavaScriptー関数型プログラミングとECMAScript6TanUkkii
 

Mehr von TanUkkii (16)

Distributed ID generator in ChatWork
Distributed ID generator in ChatWorkDistributed ID generator in ChatWork
Distributed ID generator in ChatWork
 
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...
Non-blocking IO to tame distributed systems ー How and why ChatWork uses async...
 
Architecture of Falcon, a new chat messaging backend system build on Scala
Architecture of Falcon,  a new chat messaging backend system  build on ScalaArchitecture of Falcon,  a new chat messaging backend system  build on Scala
Architecture of Falcon, a new chat messaging backend system build on Scala
 
JSON CRDT
JSON CRDTJSON CRDT
JSON CRDT
 
Akka Clusterの耐障害設計
Akka Clusterの耐障害設計Akka Clusterの耐障害設計
Akka Clusterの耐障害設計
 
WaveNet
WaveNetWaveNet
WaveNet
 
スケールするシステムにおけるエンティティの扱いと 分散ID生成
スケールするシステムにおけるエンティティの扱いと 分散ID生成スケールするシステムにおけるエンティティの扱いと 分散ID生成
スケールするシステムにおけるエンティティの扱いと 分散ID生成
 
Akka HTTP
Akka HTTPAkka HTTP
Akka HTTP
 
すべてのアクター プログラマーが知るべき 単一責務原則とは何か
すべてのアクター プログラマーが知るべき 単一責務原則とは何かすべてのアクター プログラマーが知るべき 単一責務原則とは何か
すべてのアクター プログラマーが知るべき 単一責務原則とは何か
 
ディープニューラルネット入門
ディープニューラルネット入門ディープニューラルネット入門
ディープニューラルネット入門
 
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
Scalaによる型安全なエラーハンドリング
Scalaによる型安全なエラーハンドリングScalaによる型安全なエラーハンドリング
Scalaによる型安全なエラーハンドリング
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
 
プログラミング言語Scala
プログラミング言語Scalaプログラミング言語Scala
プログラミング言語Scala
 
これからのJavaScriptー関数型プログラミングとECMAScript6
これからのJavaScriptー関数型プログラミングとECMAScript6これからのJavaScriptー関数型プログラミングとECMAScript6
これからのJavaScriptー関数型プログラミングとECMAScript6
 

プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー