+ All Categories
Home > Documents > Play ja kansai

Play ja kansai

Date post: 06-Dec-2014
Category:
Upload: takafumi-ikeda
View: 6,187 times
Download: 3 times
Share this document with a friend
Description:
The FIRST playframework meet up in japan
Popular Tags:
61
Play! と業務と私 @ikeike443 2011/08/06 第一回 Playframework 勉強会 In 西 1186日土曜日
Transcript
Page 1: Play ja kansai

Play! と業務と私@ikeike443

2011/08/06 第一回 Playframework 勉強会 In 関西

11年8月6日土曜日

Page 2: Play ja kansai

Play! の (・∀・)イイネ!!@ikeike443

2011/08/06 第一回 Playframework 勉強会 In 関西

11年8月6日土曜日

Page 3: Play ja kansai

自己紹介

11年8月6日土曜日

Page 4: Play ja kansai

@ikeike443

池田尚史(いけだたかふみ)

株式会社シャノン

Jenkinsプラグイン開発者

Playframework好き

11年8月6日土曜日

Page 5: Play ja kansai

略歴2001年 コンサルタントとしてスタート

SAPの導入とか

2005年~2009年 業務パッケージソフト開発者

Delphi, Java を使った3-tierのアプリ(not web)

2010年~ シャノンでWebサービス開発者

11年8月6日土曜日

Page 6: Play ja kansai

シャノンの紹介マーケティングプラットフォームというサービスをSaaS型で提供しています

見込み顧客管理システムです

11年8月6日土曜日

Page 7: Play ja kansai

シャノンの紹介キャンペーン、メール配信、Webトラッキングなど

イベント、セミナー管理に特に強いです

デブサミ、Interopなどのイベントにも使われています

企業のマーケティング部門で使っていただいています

11年8月6日土曜日

Page 8: Play ja kansai

私の位置づけ・主業務ソリューションエンジニア的な仕事をしています

自社APIの利用サポートなどもしています

自社プロダクトと、SalesForce、社内システム、Webサイト(MTやWordpress)との連携システム構築や、その支援も行っています

自社プロダクトはPerlなのに私だけJava!

11年8月6日土曜日

Page 9: Play ja kansai

playdocjaの翻訳をほんのちょっとだけ手伝ってます

11年8月6日土曜日

Page 10: Play ja kansai

http://playdocja.appspot.com/11年8月6日土曜日

Page 11: Play ja kansai

翻訳協力者募集中です!

11年8月6日土曜日

Page 12: Play ja kansai

勢いで日本Playframeworkユーザー会ML作っちゃった

11年8月6日土曜日

Page 13: Play ja kansai

http://groups.google.com/group/play_ja

11年8月6日土曜日

Page 14: Play ja kansai

是非、ご参加を!

11年8月6日土曜日

Page 15: Play ja kansai

私とPlay!

11年8月6日土曜日

Page 16: Play ja kansai

実は1.0.1から使ってます

きっかけは

11年8月6日土曜日

Page 17: Play ja kansai

ある日

11年8月6日土曜日

Page 18: Play ja kansai

Javaでプロダクト書いてよ

(Oracle出身のCTOは元々Javaのエンジニア)

11年8月6日土曜日

Page 19: Play ja kansai

はい。。。

(Servletとかだるいなー、web.xmlとかやだなー)

11年8月6日土曜日

Page 20: Play ja kansai

Railsじゃだめですか? と言いかけたその時!

11年8月6日土曜日

Page 21: Play ja kansai

11年8月6日土曜日

Page 22: Play ja kansai

HotDeployサポート

ActiveRecordっぽい機構がある

URLマッピングも超単純

なにより、XML を書かなくてイイ!!

11年8月6日土曜日

Page 23: Play ja kansai

キタ━━━━(゚∀゚)━━━━ッ!!

11年8月6日土曜日

Page 24: Play ja kansai

2010年1月頃、1.0.1 から触り始めた

1.0.2 で1案件

1.0.3.2 で 2案件 + 1プロダクト

1.1.1 で 1案件

1.2.2 で新人教育を兼ねて 1案件

1.2.2 でプロトタイプ 2件 作成中

11年8月6日土曜日

Page 25: Play ja kansai

Jenkins plugin も書いた

11年8月6日土曜日

Page 26: Play ja kansai

業務で使ってみた!!

充分使える! 使いやすい!

で、特に感じたPlayのいいところを宣伝!

今日のお話し

11年8月6日土曜日

Page 27: Play ja kansai

Play! の (・∀・)イイネ!!

11年8月6日土曜日

Page 28: Play ja kansai

Playclipse@erwan が作ってるEclipseプラグイン

https://github.com/erwan/playclipse

11年8月6日土曜日

Page 29: Play ja kansai

PlayclipseECLIPSE_HOME/dropins に入れて再起動

m/v/c/routesボタン

view上でクラス名補完

11年8月6日土曜日

Page 30: Play ja kansai

Hot DeployECJ(Eclipse Compiler for Java)を使ってる

他に比べてHotDeployのトラブルが極端に少ない(ハズだと思うが未検証)

Sessionを持たない構造なのが大きい?

後述のスキーマ自動変更と組み合わせると再起動ゼロで開発できる

11年8月6日土曜日

Page 31: Play ja kansai

JPA on steroidsXMLを書かずとも動く(CoC!)

@Entityアノテーションを打つだけ

public なフィールドは全てDBスキーマとして利用

getter/setter いらない(書くことも出来る)

11年8月6日土曜日

Page 32: Play ja kansai

JPA on steroidsPlay! はデフォルトでスキーマ自動変更がOn(DEV)

Modelクラスを変更するだけで勝手にCreate/Alterが発行されてスキーマが更新される

緩くDB設計して、細部は作りながら微調整できる

11年8月6日土曜日

Page 33: Play ja kansai

DBプラグインhttps://github.com/pepite/play--database

内部でHibernateのSchemaExportを利用してる

開発時はPlay! に任せてスキーマ変更

固まったらDDLを抜き出し、整形し直してリリース

11年8月6日土曜日

Page 34: Play ja kansai

p6spyも普通に使えますPlay! が実行時に発行してるSQLを見たいならp6spy

conf/application.conf に下記のように書く

db.driver=com.p6spy.engine.spy.P6SpyDriver

lib 配下に p6spy.jar を置く

conf 配下に spy.properties を置けばOK

11年8月6日土曜日

Page 35: Play ja kansai

ノンブロッキングI/OContinuation の実装がされている

1リクエスト中に重たい処理があってもスレッドを占有しない(みたい)

大量のリクエストを上手くさばくことが出来る

11年8月6日土曜日

Page 36: Play ja kansai

ノンブロッキングI/Onode.js との比較記事あり

個人的に翻訳しているが未公開

http://www.subbu.org/blog/2011/03/nodejs-vs-play-for-front-end-apps11年8月6日土曜日

Page 37: Play ja kansai

ノンブロッキングI/OJava のみのサポート

Java であっても、war にして サーブレットコンテナに載せてしまうと恩恵を受けられない(ハズ)

※ ServletWrapperを経由しちゃうので

素の Play! をそのままデプロイすべき

11年8月6日土曜日

Page 38: Play ja kansai

MemcachedPlayにはHttpSessionはない

Controller#sessionの実態はただのCookie

セッション管理にはMemcachedを使うのがおすすめ

セッションレプリケーション?なにそれ美味しいの

11年8月6日土曜日

Page 39: Play ja kansai

MemcachedMemcachedを複数クラスタで使うのも簡単

memcached.1.host=mem.shanon.co.jp:11211

memcached.2.host=mem2.shanon.co.jp:11211

11年8月6日土曜日

Page 40: Play ja kansai

お手軽なインタセプタController にプリセット

@Before, @After, @Catch, @Finally

それぞれ、Controllerの初期処理、終了処理、例外処理として共通化して書ける

11年8月6日土曜日

Page 41: Play ja kansai

お手軽なインタセプタ@With

各Controllerを横断して挿し込みたい処理を書く

障害通知メール、ロギング、認証などに使える

11年8月6日土曜日

Page 42: Play ja kansai

@With(Aop.class)public class MyController extends Controller{....}

public Aop extends Controller{ @Before(priority=1) public static void checkCSRF{ ... } @Before(priority=2) public static void auth{ ... } @Catch(priority=99,value=Exception.class) public static void sendAlert(){ new SimpleMail.send(“Alert!”); }}

11年8月6日土曜日

Page 43: Play ja kansai

テンプレートも悪くないhtmlを切りだしてユーザー定義タグを作れる

複数画面で使うようなViewを部品化

Javaで拡張タグも作れる

最終的には素のGroovyをゴリゴリ書く

※ フィクスチャにも同じエンジンを適用できる(後述)

11年8月6日土曜日

Page 44: Play ja kansai

Job非同期ジョブ実行の仕組みがある

cron の代わりに使える

実行サイクルをアノテーションで記述

@OnApplicationStart, @On, @Every

11年8月6日土曜日

Page 45: Play ja kansai

Job実行サイクルの外出し可能

ジョブコントローラに下記

@On(“cron.somethingjob”)

conf/application.conf に下記

cron.somethingjob=0 * * * * ?

11年8月6日土曜日

Page 46: Play ja kansai

Job環境によってジョブ実行を止めることも出来る

%test.cron.somethingjob=never

%prod.cron.somethingjob=never

※ 1.1で取り込まれた私のパッチです

11年8月6日土曜日

Page 47: Play ja kansai

環境の切り替えplay id の機構を使う

conf/application.conf

%mymac.db=mem

%prod.db=mysql...

11年8月6日土曜日

Page 48: Play ja kansai

テスト・CI以下が組み込まれており、テスト・CIもしやすい

JUnit

HtmlUnit + Selenium

H2 (インメモリDB) ※1.1.1以前まではHSQLDB

フィクスチャ

Coberturaプラグイン

11年8月6日土曜日

Page 49: Play ja kansai

Jenkins勉強会でも発表させていただきました

11年8月6日土曜日

Page 50: Play ja kansai

フィクスチャPlay! のテンプレートタグが書ける

つまりGroovyも書ける(ハズ)

11年8月6日土曜日

Page 51: Play ja kansai

依存関係管理Play1.2からの新機能

Mavenリポジトリを使って推移的依存関係解決

内部ではivyを使ってる(Gradleと一緒?)

下記のように実行出来る

$ play deps

$ play auto-test --deps

11年8月6日土曜日

Page 52: Play ja kansai

依存関係管理外部リポジトリも使える

私は社内Mavenリポジトリを指定してます

conf/dependencies.ymlの例

11年8月6日土曜日

Page 53: Play ja kansai

repositories: - Shanon: type: http artifact: "http://ts-development3.shanon.co.jp/repo/SsApi/[artifact]/[revision]/[artifact]-[revision].[ext]" contains: - SsApi -> SsApiCommon 0.1

11年8月6日土曜日

Page 54: Play ja kansai

play auto-test はまり道play サーバが起動してからFirephoque(HtmlUnit)が起動しないといけない

auto-test コマンド内で、logs/system.out の特定文字列を監視してる

log4j を使ってると system.out に出力されなくなる!

気をつけて使いましょう

11年8月6日土曜日

Page 55: Play ja kansai

play auto-test はまり道私は下記のようにしています

log4j.properties を2つ用意

conf/application.conf を下記のように設定

application.log.path=log4j.properties

%test.application.log.path=log4.properties.autotest

11年8月6日土曜日

Page 56: Play ja kansai

Jenkins play-plugin要望受付中

軽くデモ

11年8月6日土曜日

Page 57: Play ja kansai

その他の (・∀・)イイネ!!API書きやすい(renderXML, renderJSON)

メールもコントローラで書く

マルチパートも簡単に書け管理しやすい

セキュリティもOK

CSRF対策も組み込みで対応

Websocket!

11年8月6日土曜日

Page 58: Play ja kansai

Play! の (>_<)キモイネ!!

11年8月6日土曜日

Page 59: Play ja kansai

キモかわいいところ

Controller内部でExceptionをGoToに使ってる

play.classloading.Enhancerパッケージ

LocalVariablesNamesEnhancer

ControllersEnhancer

ContinuationEnhancer

11年8月6日土曜日

Page 60: Play ja kansai

この後も…今日は Play! について語らいましょう!

11年8月6日土曜日

Page 61: Play ja kansai

11年8月6日土曜日


Recommended