![fs2-contributors](image/fs2-contributors.png)
---
class: middle, center
以前gistにまとめたやつ
[Scalaz-Streamの基本的なクラスや概念まとめ](https://gist.github.com/xuwei-k/6574b69abd5ed47a6743)
---
class: middle, center
## 突然ですが、Googleで1と検索してみましょう
---
class: middle, center
![google 1](image/google-1.png)
---
class: middle
【ニコニコ動画】ご注文はうさぎですか?
第1羽「ひと目で、尋常でないもふもふだと見抜いたよ」
---
class: middle, center
_人人人人人人人_
> 500万再生! <
 ̄Y^Y^Y^Y^Y^Y ̄
---
class: middle, center
## うさぎ?
![usagi](image/usagi.gif)
---
class: middle, center
## うさぎ = ラビット
---
class: middle, center
_人人人人人人_
> Rabbit MQ <
 ̄Y^Y^Y^Y^Y ̄
---
class: middle, center
![rabbitmq_logo](image/rabbitmq_logo.png)
---
class: middle, center
##
---
class: middle
## usagi
- scalaz-stream(fs2)を使ったRabbitmqのクライアント
- Confirmsに対応した
- Akka Actorで書いたものと比べても似たようなパフォーマンスでた (それほどちゃんとベンチマークとってない)
---
class: middle
## usagiの命名の余談
- "ごちうさ" か "ティッピー" と名付けようというのが一瞬頭をよぎったけど、そこまで勇気がなかった
- 誰かお願いします
---
class: middle
## RabbitmqのConfirmsとは
-
- Publish側のAckやNack
- AMQPの範囲ではないRabbitmqの独自拡張
- AMQPにもPublishのAckあるらしいが、遅いから独自に作ったみたいなこと書いてあった(うろ覚え)
---
class: middle
usagiで使ってるscalaz-streamの機能
- [Process](https://github.com/scalaz/scalaz-stream/blob/release/0.7.2a/src/main/scala/scalaz/stream/Process.scala)
- Sink
- [Queue](https://github.com/scalaz/scalaz-stream/blob/release/0.7.2a/src/main/scala/scalaz/stream/async/mutable/Queue.scala)
---
class: middle
## usagi
- 内部実装はある程度mutable
- 外から見ればimmutebleかつスレッドセーフ、なはず?
- Actorに比べれば、Processで返ってくるので使いやすいはず?
- 実際作った後放置してて全然使ってないので自分でもよくわかってない
---
class: middle
- 色々話したけど、おそらく、まだまだ紹介してないもの色々あります
- 時間がアレばコードリーディングか質問タイムをして、終わり