mof-brown

ずっとモフモフしてたい

Play framework + WebSocket 勉強会に参加してきました

3/6にパソナテックさんで開催された「Play framework + WebSocket 勉強会」に参加してきました。

【エンジニアカフェEvent】
PlayBay - PlayFramework+WebSocket勉強会
http://www.pasonatech.co.jp/event/index.jsp?no=3405&key=caf

【当日のまとめ】
https://yukar.in/note/ckFoJe

PlayFrameworkの概要

  • 1.2.4はほぼ完成形。プロダクション利用OK。
  • 2.0はRC。プロダクションで利用するのはまだ早い。
  • でもScalaで書きたいなら2.0
  • Jenkins本に寄稿しているので買ってねw
概要の話なのでここはすんなり。1.2.4を実際の案件で使っているというのは何だか心強い(?)ですね。

PlayFramework1.2.4におけるWebSocket

  • Play!にはチャットのサンプルが付いている
  • WebSocket未対応ブラウザ向けにweb-socket-jsというライブラリがあるらしい
  • 1.2.4ではRFC6455仕様が動作しないので、パッチ適用が必要
  • Apache mod_proxyを挟むと問題が発生する可能性がある (詳細不明)
  • F.javaという変態クラスがある
  • WebSocketはChromeデバッグするのがオススメ
  • WebSocketはチャットを作るための技術ではない!!
いやーご本人が一番キツイと思いますが、Play!を触ったことが無い人もフォーカスしてWebSocketの説明を口でするのは無理があるw
自分はソース見ながら聞いていたので何となく理解できたけど、初見の方にはところどころイミフだったかもしれません。


Play!framework 2.0一巡り

  • 2.0開発の理由
    • JVM言語への正式対応
    • ビルドシステムの再構築 (SBTを採用)
  • IDEとしてEclipseが一応使えるけど、Scalaなのでvi等でおk
  • SBT採用によってビルド速度が向上
  • Akka採用
  • 認証等、Controllerで共通して利用する仕組みが整っていない
  • Controller、JSON周りの使い勝手はかなり向上している
何だか知らないキーワードがいっぱい出てきましたw
このセッションを聞いて、とりあえず2.0触るのはまだ先だなと思いました。個人的には、Play!はフルスタックなところが魅力なんですが、その辺りがまだまだ用意されていないようです。

でもScala書きたくなったら触るかも。

Play2.0 + pjax

  • pjax = "Making AJAX Applications Crawlable"
  • HTML5 History API pushState を利用した技術
  • pjax自体はjQuery plugin
  • githubで利用されているらしい
pjaxという名前を今回初めて聞きました。
 
pjaxとは、Ajaxを利用したWebアプリなりサイトを開発する際に発生する
  • ブラウザバックへの対応
  • Webクローラへの対応
  • パーマネントリンク
といった問題を解決するための1つの手法のようです。
仕組みは、
  • Ajaxリクエスト時は"X-PJAX"ヘッダを指定する
  • サーバー側は"X-PJAX"ヘッダの有無で、AjaxリクエストかURLリクエストかを判断し、返すレスポンスを切り替える
ってことで合ってますかね。
 
正直この方式がうまく当てはまるケースがあるのか、ピンと来ませんでした。URLリクエストの時のサーバー側のハンドリングが難しい気がするなぁ。
 
それにしても、講師をしてくれた中村学氏の説明がとてもわかりやすかったです。
 

所感

見事にWebSocketで何か作りたくなりましたw
ただ、サンプルが大体チャットになってしまうように、なかなかネタが思いつかないですね。
パッと思いつくのはコラボ編集、リアルタイムモニタリング、ソーシャル、ゲーム辺りですかね。
 
あと、MacBook Airが欲しくなりました。Proは重過ぎる...。
 
最後に、講師の皆様や会場関係者の皆様、本当にお疲れ様でした!