今週の社内勉強会では@okapiesさんにお越しいただいてReactiveについてお話ししていただきました。
先日TISさんで開催されたReactive System Meetup in 西新宿での講演の再演という形でお願いさせていただいたのですが、弊社のメンバーもReactive System Meetupに参加していた者がいたのですが、今回は時間が長かったこともあり、そのときよりも丁寧にご説明いただきわかりやすかったとのことでした。
Reactiveという単語自体かなり広範囲で使われており、経緯やコンテキストによって様々な捉え方をされていると思うのですが、今回の講演では「Reactiveの3つの立場」として以下の3つに切り分けて順に説明されていました。
- プログラミングモデル(Reactive Programming)
- ランタイム(Reactive Streams)
- システムアーキテクチャ(Reactive Systems)
個人的にはランタイムについてはReactive Streamsそのものというよりは、用途や課題に応じたランタイムの多様性が必要だと感じています。システムアーキテクチャの側面から見てもReactive Streamsはランタイムというよりはコネクタの仕様なので、どういったミドルウェアやサービスがReactive Streamsに対応してくるか?という部分が重要になってくるのではないでしょうか。
また、勉強会の後には弊社のメンバー数名と雑談をさせていただいたのですが、実際はストリームよりも先にIN/OUTが詰まることが多いのでその部分がReactive Streamsに対応してくれないと厳しい、監視機能つきのエージェント的なものでバックプレッシャーを発生させられるとよいのでは?といった話も出ていました。(人力バックプレッシャーつらいなんて話もw)
フロントエンドからシステムアーキテクチャまで様々なコンテキストで使われる「Reactive」というキーワードですが、@okapiesさんのお話しで知識を整理できたのではないかと思います。@okapiesさん、ありがとうございました!
なお、@okapiesさんも準備委員に参加されているScalaMatsuri 2016では登壇者や準備委員会のスタッフを募集しているとのことなので興味のある方は是非ご応募を!