シスアーキ in はてな

シスアーキ(自称)の技術ブログ

【献本駆動】「Play Framework2 徹底入門」を読んだよ!

@kara_d さんから「Play Framework2 徹底入門」を献本頂きました!とても嬉しかったです!  

 

Play Framework 2徹底入門 JavaではじめるアジャイルWeb開発
 

 

 その時の喜びよう

 

早速読んで書評を書こうと思いましたが、読むスピードが人より遅いのと、かなりのボリューム量だったこともあり、読了まで時間がかかりました。読んだ感想は、すごい面白かった&楽しかったです。

 

Play Framework2(以下、Play)は今流行のRailsライクなJavaScalaフルスタックフレームワークです。

Playに関しては、以下の理由で今年の注目技術だと思っています。

 

・今年の流行?

 

 今年に入って日経系雑誌でやたらScala押しの記事を見かけます。そのScalaの本命フレームワークとして、Playが紹介されています。

ちなみに、「Play Framework2 徹底入門」はJava版です(9章にはScala版の簡単な説明もあります)。「なんだ、Java版か」と思った方もいると思いますが、後述の理由から本書は十分読む価値があると思います。

 

SIerフルスタックフレームワークの導入が必須

 

 なにかと世間をにぎわすSIerですが、SIer界隈ではシステムアーキテクト、上級プログラマという人材が不足しています。ええ、それはもう圧倒的に(みんなWebとかソーシャルに流れちゃうからね)。

 そのような状況下でSIerに残る身としては、フルスタックフレームワークの存在は大変ありがたいです。藁にもすがる想いです。フルスタックフレームワークを導入することで、アーキテクトの仕事はかなり軽減します。

フルスタックフレームワークの代表といえばRuby on Railsを思いつくでしょうが、Ruby技術者はこの界隈にはあまりいません。

「そんなことないよ」という皆さん、それはあなたのTLだけの話です。

Scalaについては、「Scala is 何?」です(最近は大分マシにはなったかも知れませんが)。

 

SIerにはJavaフルスタックフレームワークが必要

 

SIerはそのビジネスモデルのため、チーム体制が流動的です。大規模プロジェクトの終了はチーム縮小を意味し、次のプロジェクトが受注できると短期間で体制を整えなければいけません。その点でJava技術者は揃えやすいです。

よって、Java言語による開発が行われやすく、Javaをサポートしたフルスタックフレームワークは魅力的です。 更に言うと、そもそもRFPで「開発言語はJavaで」と指定されていることもあります。

 若干悲観的な意見が多いですが、それだけではありません。Javaも進化しています。

今年はJava界隈で注目のJava8がリリースされる予定です。ラムダをサポートするなど、Javaも遅ればせながらも最新の言語技術を取り込んで来ています。Java8やGuava、Lombokなどのライブラリと組み合わせることで、まだまだJavaでも十分生産性の高い開発が行えると考えています。

 

Java脱却やで!RubyScalaのほうが生産性が高いんやってな!10倍やで!」という上層部の皆さん、皆さんが脱却しないといけないのはCOBOLCOBOL文化です。本気で生産性を考えるなら、現場にCIサーバーをそっと渡してあげてください。喜ばれますよ!

 

その他にも色々理由がありますが、まとめて列挙すると、

 

  • Playは日本のコミュニティの努力もあり、日本語情報が豊富*1で、習得が比較的容易です。有志のコミュニティ*2もあります。急造チームのメンバのスキル習得コストを考えると、技術習得が容易なことは必要条件です。
  • モデル層はEbeanをサポートしているが、他のORMに容易に切替が可能。レガシーDBとの戦いはSIerには日常茶飯事です。モデル層を簡単な変更できることは魅力的です。
  • SIerに忍び寄るクラウドの波。Playはクラウドと相性のいいF/Wです。
  • SIerにとってセキュリティ対策は必須。Playはセキュリティまわりもしっかりサポートしてますよ。

という理由で、SIer各位にも本書をお勧めしたいと思います。PlayはWebやソーシャル界隈の「あちらの技術」ではなく、SIerにとっても魅力的な技術ですよ!

 

では、長々と本筋から離れてしまいましたが、本書の書評です。

 

・「Play Framework2 徹底入門」の書評

 

 徹底入門という名前のとおり、入門から実践的な内容まで幅広いです。

「ヒープメモリが不足した場合の対処」や「コンソール文字が文字化けした場合の対処」、「Herokuへのデプロイ時の注意」など、実際に使っていく上で当たるだろう問題についてもColumnで言及されています。

 

1~3章はPlayの基本が丁寧に説明されています。実際に動かしながら学べるので、Playをはじめて導入するチームの教育資料として良いのではないかと思います。

 

4章からは実践編です。僕は4章が一番読んでて面白かったです。

「4章 アプリケーションの企画と設計」では実際にPlayでアプリケーションを企画、設計する上での進め方や注意点が述べられています。

企画時の注意点として、サーバーの規模やCookie、セッションの扱いなど、Play独自の注意点が述べられております。また、Play向きの企画、不向きな企画、開発環境や運用環境についてなどの注意点も記載されておりますので、実際にPlayをプロジェクトに導入検討する際は、必ず読んでおいたほうがいいでしょう。

設計では、一線で活躍する@kara_d さんの思想を垣間見ることが出来て、すごい参考になります。

要件はViewから、設計はモデルからという開発の進め方は、僕たちのチームも同じ方法を採っています。このほうが要件のずれが防げるし、設計がしっかりするんですよね。

 

「5章 MVCの実装」からは実際に小さな診断アプリを作っていくことで、開発を擬似体験できます。本章にも書かれていますが、サンプルソースを見ながら本書を読み進めたほうがいいと思います。僕はSublime Textでソースを見ながら本書を読みました。

WebJarsを使ったフロントエンドのライブラリ管理やBootstrap3を使ったデザイン、Twitterシェアボタンなどなど、Playと併用する技術を用いたモダンなWeb開発を経験できます。

ただサンプルソースの内容を説明するだけでなく、その設計にした理由が論理や経験に基づいて説明されており、開発を通して著者と会話している気分になります。

「え、ロジックはモデルでしょ?」という疑問の答えが次のページに記載されていたり、「どんだけOption好きなんだよw」と一人で突っ込みながら読んでいました。

 

「6章 共通処理とAPIの実装」では、実際に業務で必要になる、ログ、バッチ、エラーハンドリングなどの地味な技術についても記述されています。また、単体テストや社内環境、本番環境など、複数環境での環境設定ファイルの運用方法などについても記述されております。

世の中には運用面をまるで考慮していないシステムがあふれており、SIerの保守・運用で大量の技術者の阿鼻叫喚を聞いてきた(時には僕も叫んできた)僕としては、このように運用面についてきちんと記述されているのはうれしいです。

最近のWebアプリでは必須といえるAPIの実装についてもしっかり記述されています。

 

「7章 テスト・デプロイ・管理」では、テストやデプロイ方法について記述されています。個人的に嬉しかったのは、CRUDの説明です。著者作成のCRUDツールの説明がされています。実際のシステム運用では、データパッチを当てるシーンは少なくありません。すみやかにCRUDが作れる仕組みはうれしいです。

 

「8章 Play Tips」では、セキュリティについてしっかりとした記述があります。個人的にはSSLの導入も欲しかったなとは思います。また、認証まわりの仕組みがしっかり書かれているのはうれしいです。実際のシステムで認証がないシステムはほとんどないですからね。

ActorとWebSocketまわりは上級編のイメージを受けました。Actorまわりの説明が不足しているので、ここら辺は別の書籍でしっかり学ぶ必要があるかと思います。

最後に、エンタープライズシステムでは重要なトランザクション制御やSQLの直発行などについても記述があります。これは重要ですからね!

 

「9章 Scalaによる開発」では、JavaプログラマのためのScala入門とScalaによるPlayアプリケーションの作成が記述されています。

この章だけでJavaプログラマScalaに移るのは難しいと僕は感じました。Scalaはコップ本で勉強しましょう!ただ、本章はScalaをやったことないJavaプログラマに、「こういう世界もあるよ」といういい入り口になると思います。

 

・注意点

 

長々と書きましたが、如何でしょうか?僕は1系メインでやってきましたが、そろそろ2系の導入に踏み切ってもいいような感じています。

 

ただ、Playには中毒性があるので皆さん気をつけましょう! 

 

f:id:kozake:20140131075654p:plain

 

(過度の依存性から抜け出すためには、4章を読み直しましょう!)

 

・まとめ

 

  • SturutsをラップしたオレオレF/Wを今でも使って現場を苦しめてるアーキテクトのみなさん!自重して最新のF/Wを使いましょう!Playは楽しいフレームワークですよ!
  • 昔とった杵柄のJavaプログラマさん、最新のJava環境に触れてみましょう!昔プログラマで活躍したからといって、今のプログラマの気持ちが分かるとは限らないですよ!
  • アーキテクト不足に悩んでいるSIerのマネージャー各位!息のいい若手にこの本を渡しましょう!会社経費で渡すと喜ばれますよ!

 

ということで

 

「いつやるの!?」「(ry」

  

Play Framework 2徹底入門 JavaではじめるアジャイルWeb開発
 

 

*1:Play Framework日本語サイト: http://www.playframework-ja.org/

*2:日本Playframeworkユーザー会: https://groups.google.com/forum/#!forum/play_ja