仕事でScalaを触るようになってから、2ヶ月ばかり経過しました。まだまだ言語仕様など使いこなせてない部分もありますが、徐々に色々なライブラリに触れる機会も出てきました。その中で今日紹介するのは「Finagle」(フィネーグルと呼ぶらしい)という、Twitter社が開発したライブラリになります。
Finagleは「非同期」でのRPCを作る時に用いるライブラリになります。RPCといっても、基本的にはWebのAPIをイメージしてもらえば大丈夫と思います。ざっとした概要やサンプルソースは以下のスライドが参考になると思います。
【Scala + Finagleの魅力】
https://www.slideshare.net/mobile/kmizushima/scala-finagle
Finagleを使う上でScalaのFuture機能への理解が必須となります。Futureは非同期の処理をScalaで実装する際に用いるもので、処理内容としては下記の記事が参考になります。Javaでのロック処理と比べると、かなり簡単に非同期処理が実装できるのがわかると思います。
【Scala の Future】
https://qiita.com/4245Ryomt/items/63bcf0bf0bab3a99f6b5
Finagleを用いた具体的な実装は、下記のブログ記事が参考になります。関数型っぽい書き方でAPIのやり取りをしているのが、特徴ですね。
【Finagle - 都会育ちのメッセージングフレームワーク】
http://steps.dodgson.org/bn/2011/11/04/