第2回 Play 2.0 Javaはじめて&もくもく会 に参加してきた #play_ja #coedo #playbeya
- 「Play部屋 – Play 2.0 Javaはじめて&もくもく会」をはじめます
- (Play部屋) 第2回 Play 2.0 はじめて&もくもく会 - 日本Playframeworkユーザー会
- 2013/01/24 (Play部屋) 第2回 Play 2.0 はじめて&もくもく会 #play_ja #coedo #playbeya - Togetter
先週1/15(火)に第1回が開催されたこのシリーズですが、早速翌週となるこの日に第2回が開催されました。小一時間程遅れて会に合流。
会場は前回同様、コワーキングスペース茅場町 Co-Edo(コエド)@茅場町。
今回のもくもくテーマ:Play 2.0 WebSocket
この『WebSocket』キーワードとしては聞いた事があるものの、詳細を把握だとか実際にこれを使って何か作ってみた(仕事で/趣味で)、というのは個人的にはございません。
なので、まずはキーワードで幾つかWebサイトをピックアップしてみる。Playは2.x系でも1.x系でもサポートしてるんですねぇ。
概要とか
実装:様々な環境
- Node.jsとWebSocket.IOでチャットアプリを作る | mawatari.jp
- Node.js(WebSocket)でリアルタイムWebの実現 | HTML5/CSS3, JavaScript 次世代WEB研究開発
- Tomcat7でWebSocketを使ってみた - chitan's blog
- Jettyで始めるWebSocket超入門:特集|gihyo.jp … 技術評論社
- PHPでもWebSocketを。チャットデモはこちら「PHPWebSocket Chat」|オープンソース・ソフトウェア、ITニュースを毎日紹介するエンジニア、デザイナー向けブログ
- NodeJSとWebSocketで実現するリアルタイムWeb(日本語版) - Lancers(ランサーズ)開発ブログ
- WebSocket備忘録 - pochi's weblog
- WebSocketの中身を覗いてみる - m-kawato@hatena_diary
- WebSocket+jQueryMobileでリアルタイムにメッセージを表示する | スマホサイト・アプリをつくろう。
- I am mitsuruog: websocketを使う際の意外な落とし穴
実装:Playframework 2.x
- Documentation: ScalaWebSockets ― Playframework
- Documentation: AkkaCore ― Playframework
- WebSocketアプリケーションを作るのにPlay frameworkをつかおう
- JavaOne TokyoでPlayFrameworkとWebSocketのことを話してきました
- Node.js vs Play framework リベンジマッチ - from scratch
- Node.js vs Play framework 第二弾 ( websocket 編 ) - from scratch
- PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
- ScalaとPlayFramework2始めて数時間の人間が無謀にもWebSocketのお試しプログラム書いてみた - 新しいフォルダ (2)
- 【解決済】Play2.xのwebsocketで特定のクライアントにpushする方法 #Java #Play #sbt #Scala #websocket - Qiita
- Scala で WebSocket - Play2 Mini - なんとなくな Developer のメモ
- Websockets in Play 2.0 | Javalobby
- playframework - How to use WebSockets in Scala using Play Framework? - Stack Overflow
実装:Playframework 1.2.x
勉強会
- WebSocket勉強会公式サイト
- WebSocket勉強会に参加した - 竹居の日記
- LT募集中! 3/6にPlayFramework + WebSocketの勉強会をします
- PlayBay Play! FW+WebSocket勉強会 #play_ja #playbay - Yukarin'Note
- Play framework + WebSocket 勉強会に参加してきました | mof-brown engineer blog
- レポート置き場: PlayBay - PlayFramework+WebSocket勉強会に参加しました #play_ja #playbay
- 空が狭い: WebSocket勉強会に行って来た
方向転換→Play2.0Javaチュートリアル実践
...で、いざ実践!と思ったのですがここで何故か気が変わって、Play2.0ScalaでWebSocketをやらずにPlay2.0Javaでチュートリアルをやろう、と方向転換する事に(笑)
まぁ理由というか状況的に
- Scalaはほぼ初心者
- Play2.0も先週触ったのが初めて
- WebSocket...( ゚д゚)ポカーン
な状態だったもので、さすがに臨むには装備が心許無いとw それなら、
という心境になりました。なのでここからはPlay2.0Javaで試してみた記録というか過程のメモになります。
Java実行環境導入
導入してなければ、この辺でサクッと。
$ java -version java version "1.7.0_11" Java(TM) SE Runtime Environment (build 1.7.0_11-b21) Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode) $
Play環境変数設定
ここは前回やったScalaと同じ。
$ sudo vi .bash_profile ----------- ########################## # add Playframework env. ########################## #PLAY_HOME=/Applications/play-1.2.5 PLAY_HOME=/Applications/play-2.0.4 export PLAY_HOME export PATH=$PATH:$PLAY_HOME ----------- $ source .bash_profile
Playバージョン確認。
$ play help _ _ _ __ | | __ _ _ _| | | '_ \| |/ _' | || |_| | __/|_|\____|\__ (_) |_| |__/ play! 2.0.4, http://www.playframework.org Welcome to Play 2.0! These commands are available: ----------------------------- license Display licensing informations. new [directory] Create a new Play application in the specified directory. You can also browse the complete documentation at http://www.playframework.org. $
IDEについて(→IntelliJを選択)
EclipseのPlayプラグイン、1.2系であれば既存のものがあると思ってるけど、2.0系のプラグインはあるのかな?(どうやら無いっぽい…)
@kara_dさんにこの辺りの点を伺ったところ、やはりPlay2.0JavaでもIntelliJを使ったほうが良いらしい!との事です。ちなみにEcliipseでやる場合はViewをSublime Text2でカバーするのがオススメらしい…。Sublime Text2導入したらその構成も試してみるかな。
なので、IDEはIntelliJを使う事にするw Scalaプラグインが入ってると不具合生じるとの事なので、設定で一時的にScalaプラグインを無効にしておく。
アプリケーション作成
templateは『2 - Create a simple Java application』を選択。
$ pwd /Users/Xxxxxx/IdeaProjects $ $ play new todolist _ _ _ __ | | __ _ _ _| | | '_ \| |/ _' | || |_| | __/|_|\____|\__ (_) |_| |__/ play! 2.0.4, http://www.playframework.org The new application will be created in /Users/shinyaa31/IdeaProjects/todolist What is the application name? > todolist Which template do you want to use for this new application? 1 - Create a simple Scala application 2 - Create a simple Java application 3 - Create an empty project > 2 OK, application todolist is created. Have fun! $
アプリケーション起動
プロジェクト内に移動し、[play]→[run]で起動。
$ cd todolist/ $ play [info] Loading project definition from /Users/Xxxxxx/IdeaProjects/todolist/project [info] Set current project to todolist (in build file:/Users/Xxxxxx/IdeaProjects/todolist/) _ _ _ __ | | __ _ _ _| | | '_ \| |/ _' | || |_| | __/|_|\____|\__ (_) |_| |__/ play! 2.0.4, http://www.playframework.org > Type "help play" or "license" for more information. > Type "exit" or use Ctrl+D to leave this console. [todolist] $ run [info] Updating {file:/Users/Xxxxxx/IdeaProjects/todolist/}todolist... [info] Done updating. --- (Running the application from SBT, auto-reloading is enabled) --- [info] play - Listening for HTTP on port 9000... (Server started, use Ctrl+D to stop and go back to the console...) [info] Compiling 4 Scala sources and 2 Java sources to /Users/Xxxxxx/IdeaProjects/todolist/target/scala-2.9.1/classes... [info] play - Application started (Dev)
ブラウザで http://localhost:9000/ にアクセス。
IDEAにプロジェクト取り込み
- [idea]コマンドでIDEA化。
[todolist] $ idea [info] Trying to create an Idea module todolist [info] Excluding folder target [info] Created /Users/Xxxxxx/IdeaProjects/todolist/.idea/IdeaProject.iml [info] Created /Users/Xxxxxx/IdeaProjects/todolist/.idea [info] Excluding folder /Users/Xxxxxx/IdeaProjects/todolist/target/scala-2.9.1/cache [info] Excluding folder /Users/Xxxxxx/IdeaProjects/todolist/target/scala-2.9.1/classes [info] Excluding folder /Users/Xxxxxx/IdeaProjects/todolist/target/scala-2.9.1/classes_managed [info] Excluding folder /Users/Xxxxxx/IdeaProjects/todolist/target/streams [info] Created /Users/Xxxxxx/IdeaProjects/todolist/.idea_modules/todolist.iml [info] Created /Users/Xxxxxx/IdeaProjects/todolist/.idea_modules/todolist-build.iml [todolist] $
- IDEA起動、[File]→[Open]でプロジェクトを開く。
あとはチュートリアルに従ってもくもく。前回のPlay2.0Scala同様、一通りの実装を終えてHerokuにデプロイする手前の状態まで持って行って時間終了となりました。同じチュートリアル課題『todolist』ですが、こなしていく過程で色々と勉強になる事も多かったです。@kara_dさん、@kohachoriさんはじめアドバイス頂いた皆さん、ありがとうございました!
WebSocketサンプルアプリ
参加前に色々Web漁ってみた『Play2.0でWebSocketのサンプルアプリ』ですが、公式アーカイブファイル内にある samples/java 配下のチャットアプリが学習には良さげのようです。まぁ確かに公式で配布されているものが一番ですよね(笑)
という訳でsamples配下から適当な場所にプロジェクト一式をコピーして動かし、ブラウザ確認するまでの過程を以下にメモ。ソースコード解析等はまた別の機会という事にする。
$ pwd /Applications/play-2.0.4/samples/java $ ls comet-clock computer-database computer-database-jpa forms helloworld websocket-chat zentasks $ $ cp -R websocket-chat/ /Users/Xxxxxx/IdeaProjects/websocket-chat $ cd /Users/Xxxxxx/IdeaProjects/websocket-chat $ play [info] Loading project definition from /Users/Xxxxxx/IdeaProjects/websocket-chat/project [info] Set current project to websocket-chat (in build file:/Users/Xxxxxx/IdeaProjects/websocket-chat/) _ _ _ __ | | __ _ _ _| | | '_ \| |/ _' | || |_| | __/|_|\____|\__ (_) |_| |__/ play! 2.0.4, http://www.playframework.org > Type "help play" or "license" for more information. > Type "exit" or use Ctrl+D to leave this console. [websocket-chat] $ run [info] Updating {file:/Users/Xxxxxx/IdeaProjects/websocket-chat/}websocket-chat... [info] Done updating. --- (Running the application from SBT, auto-reloading is enabled) --- [info] play - Listening for HTTP on port 9000... (Server started, use Ctrl+D to stop and go back to the console...)
やり残した事
本来であれば上記Play2.0Javaのチュートリアルプロジェクト一式をIntelliJ経由でMercurialプラグインを用いてBitBucketにプッシュし、成果として上げようと思っていたのですがIntelliJでのMercurial及びBitbucketリポジトリへの連携に関して、若干時間を取られてしまった部分がありました。(プロジェクト初期登録の段階でプロジェクト一式を Add to VCSする方法が分からなかった、という点)
一式Addする際はコマンドラインでも良いじゃん?とアドバイスも頂いたのですが(笑)何とかしてIDE(IntelliJ)経由でも行けないものかと試行錯誤してみたものの策が見つからない状態でしばし時間が経ってしまったので、この件は一旦途中経過をメモで残しておき、後日何らかの形でエントリとして纏めなおそうと思います。該当の箇所がコマンドラインになったとしても、まぁそれはそれで...
今後のPlay2.0周りのお勉強については、当エントリ途中で書いたように
という方向で進めて行こうと思います。Scala方面については『逆引きレシピ』辺りをもくもく勉強していく事で進めて行くかな?その後にコップ本か。
- 作者: 竹添直樹,島本多可子
- 出版社/メーカー: 翔泳社
- 発売日: 2012/07/03
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 54回
- この商品を含むブログ (14件) を見る
- 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
- 出版社/メーカー: インプレス
- 発売日: 2011/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 235回
- この商品を含むブログ (46件) を見る
Java方面は1.2と2.0、同時に同じテーマで学んで違いを把握しながら進めるというのも良いかも知れん。この辺は折角なので貪欲に行こう。
@kara_dさん&@kohachoriさん、及び当日参加された皆様、ありがとうございました!