先日Play meetupでLTさせていただきました。 そのときの資料です。
Reactive programming from Yasuki Okumura
最後までしゃべりきることができなかったのが残念でしたが、何人からかもっと聞きたかったなどと言ってくださってLTして良かったなと思いました。運営の人と会場提供してくださったドワンゴさんに感謝です。
で表題の「なぜPlayを使うのか?」なんですが、パネルディスカッションでPlayのいいところ悪いところや他のフレームワークの比較などを聞いていて自分でも考えてみたくなったので書いてみました。
ざっとあげてみましたが結構後付けな部分もあるかと思いますが今自由に何かフレームワークを選べと言われましても恐らくはPlay2を選択するかと思います。みなさんもぜひPlayを使ってみてはいかがでしょうか?
最後までしゃべりきることができなかったのが残念でしたが、何人からかもっと聞きたかったなどと言ってくださってLTして良かったなと思いました。運営の人と会場提供してくださったドワンゴさんに感謝です。
で表題の「なぜPlayを使うのか?」なんですが、パネルディスカッションでPlayのいいところ悪いところや他のフレームワークの比較などを聞いていて自分でも考えてみたくなったので書いてみました。
Playとはどんなフレームワーク?
まずはどんなフレームワークなのかというところから調べてみました。Playのホームページ の冒頭の部分を抜き出してみました。簡単に訳しますと、「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を使う理由をあげていきたいと思います。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.
1.スケーラブルなところ
シャノンがマルチテナント型のSaaSな製品を作っている関係上スケーラブルに作ることは必須条件であるため第一の理由にあげてみました。Akkaをベースに使っているためスケールイン/アウト、アップ/ダウンに対応ができるためお客様が増えたら増えただけリソースを増やして減ったら減った分だけリソースを減らすといったことに柔軟に対応できるのが大きいと思います。2.Scalaのメンテナンス性
継続的開発やサービスを成長させていくには修正や機能追加のしやすさというのが重要になってきます。Scalaは静的型付け言語であるため修正したときの影響範囲が分かりやすいという点と基本的に変数が不変であるためコードが読みやすいという点がメンテナンス性が高いと思われます。3.コミュニティがしっかりしている
脆弱性やバグの修正がきちんと行われているのと、メーリングリストに質問をなげればすぐに回答が返ってきます。コミュニティの対応がいいので貢献しようという気持ちにもなりいい循環が生まれていると思います。私も微力ながらメーリングリストはつねに見ていて答えられそうな質問にはなるべく答えるようにしています。ざっとあげてみましたが結構後付けな部分もあるかと思いますが今自由に何かフレームワークを選べと言われましても恐らくはPlay2を選択するかと思います。みなさんもぜひPlayを使ってみてはいかがでしょうか?
1 コメント:
Write コメントこちらもあわせてご一読を。
Replyhttp://connpass.com/event/6020/presentation/?utm_campaign=new_event_links_to_participant&utm_source=notifications&utm_medium=email&utm_content=detail_btn