なぜPlayを使うのか?

このエントリーをはてなブックマークに追加
ご無沙汰です。buster84です。
先日Play meetupでLTさせていただきました。 そのときの資料です。


Reactive programming from Yasuki Okumura
最後までしゃべりきることができなかったのが残念でしたが、何人からかもっと聞きたかったなどと言ってくださってLTして良かったなと思いました。運営の人と会場提供してくださったドワンゴさんに感謝です。

で表題の「なぜPlayを使うのか?」なんですが、パネルディスカッションでPlayのいいところ悪いところや他のフレームワークの比較などを聞いていて自分でも考えてみたくなったので書いてみました。

Playとはどんなフレームワーク? 

まずはどんなフレームワークなのかというところから調べてみました。Playのホームページ の冒頭の部分を抜き出してみました。

Play is based on a lightweight, stateless, web-friendly architecture.
Built on Akka, Play provides predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications.

簡単に訳しますと、「Playは軽量でステートレス、web-friendlyなアーキテクチャを基礎としています。Akkaで構成され、Playは高いスケーラブルなアプリケーションのために予測可能で最小なリソースの消費(CPU, memory, threads)を提供します。」ここから読み取れるようにPlayはフルスタックなフレームワークではないです。Rails-likeと言われることもあるのでフルスタックであると思っている人もいるかと思いますが、むしろ軽量であるといっているからフルスタックとは真逆なのではないでしょうか?実際、Play2.3からWSやAnormがPlay本体から切り離されたりしているので進んでいる方向性はPlay本体はもっと軽量化して使いたいプラグインやライブラリを組み込んで使わせようとしているんだと思います(Slickが2.4から組み込まれるかもという話もあるので一概にはいえませんが)。どこでこういった誤解が生まれたのか調べてみましたところ、Play1のドキュメントにはしっかり'full stack'と言っているのです。恐らくはPlay1のころから使っている方たちはPlay1がフルスタックだからPlay2もフルスタックなんだと暗黙的に思い込んでしまってるのではないでしょうか?ざっくりPlayがどんなフレームワークか分かったところで早速Playを使う理由をあげていきたいと思います。

1.スケーラブルなところ

シャノンがマルチテナント型のSaaSな製品を作っている関係上スケーラブルに作ることは必須条件であるため第一の理由にあげてみました。Akkaをベースに使っているためスケールイン/アウト、アップ/ダウンに対応ができるためお客様が増えたら増えただけリソースを増やして減ったら減った分だけリソースを減らすといったことに柔軟に対応できるのが大きいと思います。

2.Scalaのメンテナンス性

継続的開発やサービスを成長させていくには修正や機能追加のしやすさというのが重要になってきます。Scalaは静的型付け言語であるため修正したときの影響範囲が分かりやすいという点と基本的に変数が不変であるためコードが読みやすいという点がメンテナンス性が高いと思われます。

3.コミュニティがしっかりしている

脆弱性やバグの修正がきちんと行われているのと、メーリングリストに質問をなげればすぐに回答が返ってきます。コミュニティの対応がいいので貢献しようという気持ちにもなりいい循環が生まれていると思います。私も微力ながらメーリングリストはつねに見ていて答えられそうな質問にはなるべく答えるようにしています。


ざっとあげてみましたが結構後付けな部分もあるかと思いますが今自由に何かフレームワークを選べと言われましても恐らくはPlay2を選択するかと思います。みなさんもぜひPlayを使ってみてはいかがでしょうか?


次の記事
« Prev Post
前の記事
Next Post »

1 コメント:

Write コメント
benzookapi
AUTHOR
2014年6月4日 11:27 delete

こちらもあわせてご一読を。
http://connpass.com/event/6020/presentation/?utm_campaign=new_event_links_to_participant&utm_source=notifications&utm_medium=email&utm_content=detail_btn

Reply
avatar
Related Posts Plugin for WordPress, Blogger...