2013.01.18 G*Workshop GGX 2012 Report

  • 1,656 views
Uploaded on

Groovy&Grails eXchange 2012@ロンドン 報告! …

Groovy&Grails eXchange 2012@ロンドン 報告!
2013/01/18開催のG*ワークショップ 2013新春SPでの発表資料です。

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,656
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
8
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 2013/01/18 G*WorkshopGroovy&Grails eXchange2012 @London 報告! http://skillsmatter.com/event/groovy-grails/groovy-grails-exchange-2012
  • 2. Who am I ? NTTソフトウェア Grails推進室 Grails Advocate 須藤 悠
  • 3. About meGrailsを用いたファイルアップローダ作成http://www.ntts.co.jp/publish/column/tec/java_02/JGGUGサポートスタッフ(2012/11/23~)Grailsドキュメント和訳https://github.com/nttsoft/grails-doc-src-ja/network/members
  • 4. NoteずっとTrack2(Grails関連)にいました。Track1(Grails以外のG*)を期待してた人ごめんなさい。本資料の写真は以下の公開アルバムからの引用です。- 2012.12.13-14 GGX 2012 London - http://www.flickr.com/photos/y___u/sets/72157632240118573/- Skills Matters Groovy & Grails eXchange - http://www.flickr.com/photos/skillsmatter/sets/72157632277265626/本資料の写真以外の画像は元スライドからの引用です。
  • 5. Note本発表の資料はこちらhttp://bit.ly/GGX2012report各発表のスライド・ビデオへのリンク集のみhttp://bit.ly/GGX2012abst旅行記とGGX2013の紹介http://bit.ly/GGX2012tour
  • 6. Day 12012/12/13Photo http://instagram.com/p/TK_QY_GwQL/
  • 7. Groovy Keynote - Guillaume Laforge Photo from http://www.flickr.com/photos/y___u/8270793291/ Slide: http://www.slideshare.net/glaforge/groovy-2-and-beyond https://speakerdeck.com/glaforge/groovy-2-dot-0-and-beyond Video: http://skillsmatter.com/podcast/groovy-grails/keynote-speech
  • 8. Groovy KeynoteGroovy エコシステムの新しい仲間GVM: Groovy enVironment Managerhttp://gvmtool.net/複数バージョンの開発環境を管理する、RVMのG*版Groovy, Grails, Griffon, Gradle, Vert.x をサポートLinux, MacOS, Cygwin, Solaris, FreeBSD で使えるよ
  • 9. Groovy KeynoteGroovy 2.0 のトピック:- モジュール性の向上とcoreの小型化- 静的型チェックとCompileStatic- JDK 7対応開始(invoke dynamicとproject coin) - indy対応はまだ完全ではない日本語ではGuillaumeの書いた記事の翻訳版がInfoQにhttp://www.infoq.com/jp/articles/new-groovy-20
  • 10. Groovy KeynoteGroovy 2.0 については他にも…プログラミングGROOVY別冊: 第8章 Groovy 2.0の新機能http://bit.ly/8Groovy2Groovy2.0 の新機能 疾きこと CompileStatic のごとしhttp://www.slideshare.net/uehaj/new-feature-of-groovy20-gworkshop
  • 11. Groovy KeynoteCompileStatic のパフォーマンス 元スライドから引用
  • 12. Groovy Keynote今後の Groovy のロードマップ 元スライドから引用
  • 13. Groovy KeynoteGroovy 2.1:- invoke dynamicサポートを完全に- @DelegatesTo(DSLの静的型チェック)- Type checker extension(静的型チェックのカスタマイ ズ)- Alias annotation(アノテーションでinterfaceのチェック)
  • 14. Groovy KeynoteGroovy 3.0:- MOP2(新しいMeta-Object Protocol)Groovy 4.0:- Antlr 4 を使った新しい文法- JDK 8 ラムダ式
  • 15. Grails For Hipsters - Robert Fletcher Photo from http://www.flickr.com/photos/skillsmatter/8284468042/ Slide: http://www.slideshare.net/rfletcher/grails-for-hipsters Video: http://skillsmatter.com/podcast/groovy-grails/grails-for-hipsters
  • 16. Grails For HipstersGrails + Vert.x なアプリ Hipsteroid のデモhttps://github.com/robfletcher/hipsteroid複数ウインドウで作業するとそれぞれ同期されるアプリ 元スライドから引用 元スライドから引用
  • 17. Grails For HipstersHipsteroid アプリの構成要素- Grails 2.1.2- Vert.x- MongoDB- ImageMagick- CoffeeScript- LESS- Handlebars
  • 18. Grails For Hipsters操作のミラーリングには UrlMappings とCoffeeScript(hipsteroid-router.coffee) を利用LESS+CoffeeScript は CodeKit を使って CSS+JS にhttp://incident57.com/codekit/Handlebars プラグインいいよ!http://grails.org/plugin/handlebars
  • 19. Grails For HipstersHipster ってなんJARO?【名】 〈俗〉進んでいる人、流行に敏感な人◆1930年代から存 在した言葉だが、1950年代になりジャズファンを指す 言葉として使われるようになった。 ヒップスター◆インディーロックなどを聴き、本や芸術 などについて語る人たち。独特な服装をしている。http://eow.alc.co.jp/search?q=Hipster
  • 20. Grails Platform Core - Marc Palmer Photo from http://www.flickr.com/photos/y___u/8271858922/ Slide: https://speakerdeck.com/marcpalmer/using-grails-platform-core Video: http://skillsmatter.com/podcast/groovy-grails/using-grails-platform-core
  • 21. Grails Platform CoreGrailsプラグインすてき!- 多くのユーザを惹きつける- そうしてより良いプラグインができていくGrailsはフレームワークで、プラットフォームではないが…- もっと便利な機能も内包してくれると嬉しい- Low maintenance を目指したい
  • 22. Grails Platform Coreナイスなプラグインの紹介- email-confirmation admin UI あるよ- resources mode UI つくりましょう(本体に統合済み)- fresh-security SpringSecurityのラッパー、UIとmail confirmation- weceem イベント処理とUIの統合としてなかなか良い
  • 23. Grails Platform CorePlatform-Core プラグイン作ったよ!http://grails.org/plugin/platform-core- Configuration API- Security API- UI Extensions- Navigation API- Events APIをまとめたもの
  • 24. Grails Platform Corecompile ":platform-core:1.0.RC4“で導入可能- 4つのAPI- 35(以上)のタグリブ- 20(以上)の動的メソッドとプロパティ- 2つのArtefact、1つのBean群、1つのGrailsコマンドなどを内包している※Artefact についてはここ: http://grails.org/Developer+-+Artefact+API
  • 25. Grails Platform Core- Configuration API プラグイン名つきのConfig名前空間、Configのマージ Configのバリデーションとデフォルト値設定- Security API 基本的なセキュリティ機能の抽象化- UI Extensions タグとヘルパプロパティとファンクションのセット- Navigation API ナビゲーションのためのArtefactとDSL、それにタグリブ- Events API 任意のイベントの実装を接続できる標準的なイベントバス アプリ内でのメッセージングのための軽量デフォルトプロバイダ
  • 26. Grails Platform Core時間切れになっちゃったけどほんとにすげーんだぜ!> grails update-header コマンドも用意してあるよみなさんのプラグインもmigrateしてくれると嬉しいなチートシート用意してあるよhttp://bit.ly/platform-core-cheatSPOKEnPHOTO をローンチしたよ(※iOSアプリ)http://www.spoketechnologies.com/spokenphoto/
  • 27. Using Spring In Grails - Burt Beckwith Photo from http://www.flickr.com/photos/y___u/8270792917/ Slide: http://www.slideshare.net/burtbeckwith/under-the-hood-using-spring-in-grails- 15633030 Video: http://skillsmatter.com/podcast/groovy-grails/under-the-hood-using-spring-in-grails
  • 28. Using Spring In GrailsTest や Resources で Service を利用する際の- 参照・設定する例- Transactional にする例トランザクション処理に関わるヘルパメソッドSpring SpEL を使った複雑な依存性の設定
  • 29. Using Spring In GrailsBeanのスコープBeanのinit()やdestroy()やafterPropertiesSet()BeanポストプロセッサBeanエイリアスSpring MVC の機能の使い方
  • 30. Using Spring In Grailsオライリーの Programming Grails を執筆Early Release したよhttp://shop.oreilly.com/product/0636920024750.do
  • 31. Theming & UIs With Grails Platform UI - Marc Palmer Photo from http://www.flickr.com/photos/y___u/8271858922/ Slide: https://speakerdeck.com/marcpalmer/themeing-and-uis-with-grails-platform-ui Video: http://skillsmatter.com/podcast/groovy-grails/theming-and-user-interfaces-with- grails-platform-ui
  • 32. Grails Platform UIGrailsでの rapid development のためにout of the box でイケてる画面を用意できる機構が必要themetrust.com や themeforest.net を見てみてWordpress みたいなテーマ欲しいよねUIセットとテーマは分かれているべきテーマは複数のUIセットをまとめたものと考える
  • 33. Grails Platform UIPlatform-UI プラグインhttp://grails.org/plugin/platform-uiPlatform-Core 環境において- UIセットの変更- テーマの変更が可能になるようにしたものBootstrap-Theme / Bootstrap-UI プラグインを利用Resources プラグインと連携する
  • 34. Grails Platform UIruntime ":platform-ui:1.0.RC3“runtime ":bootstrap-theme:1.0.RC3“runtime ":bootstrap-ui:1.0.RC4“で導入可能- 55(以上)のタグリブ- 2つのBean- 4つのGrailsコマンドを内包している
  • 35. Grails Platform UIUIセットはGSPテンプレート+Resourcesで実現テーマはSiteMesh+GSPテンプレート+Resources2つのタグリブで階層的に記述する- <theme:layoutZone>- <theme:zone>テーマ設定は default/config/set at runtime が可能リクエストごとにテーマを変えることもできる
  • 36. Grails Platform UIGrails.org のサイトを例に、GSPでzoneを組み立てる例 元スライドから引用 元スライドから引用
  • 37. Grails Platform UIUIセットやテーマをつくるのはGrailsコマンドで> grails create-ui-set> grails fork-ui-set> grails create-theme> grails fork-theme
  • 38. Grails Platform UIチートシート用意してあるよhttp://bit.ly/platform-ui-cheatデモとしてShowcaseアプリ用意してあるよhttps://github.com/grailsrocks/grails-platform-ui-showcasePlatform-UIのテーマチャレンジ開催してるよhttp://bit.ly/platform-ui-challenge
  • 39. Grails Platform UIテーマチャレンジの作例:昔Geocitiesにあったサイト風 Photo from http://www.flickr.com/photos/y___u/8389051645/
  • 40. Grails Platform UIテーマチャレンジの作例:昔Geocitiesにあったサイト風 Photo from http://www.flickr.com/photos/y___u/8389051833/
  • 41. Leveraging Social Media In Grails - Bobby Warner Photo from http://www.flickr.com/photos/y___u/8270792817/ Slide: http://www.slideshare.net/burtbeckwith/under-the-hood-using-spring-in-grails- 15633030 Video: http://skillsmatter.com/podcast/groovy-grails/under-the-hood-using-spring-in-grails
  • 42. Leveraging Social MediaOAuthのライブラリ- Signpost OAuth 1.0a (not 2.0)- SpringSecurity OAuth 1.0a + 2.0- Scribe OAuth 1.0a + 2.0 spring-security-oauth プラグインはこれを利用- Google OAuth 1.0a + 2.0 Grailsプラグインは無い
  • 43. Leveraging Social MediaOAuthのAPIラッパーは- 特定のOAuthプロバイダ用ライブラリ- OAuthプロバイダ非依存のフレームワークにわかれるGrailsではoauthプラグイン(Scribeを利用)が最もシンプルでよくメンテナンスされてる2つ以上のOAuthネットワークを使うなら、spring-social-*プラグインがオススメ
  • 44. Park Bench Discussion Photo from http://www.flickr.com/photos/y___u/8271858798/ Video: http://skillsmatter.com/podcast/groovy-grails/park-bench-discussion-3650
  • 45. Day 22012/12/14Photo http://instagram.com/p/TLOKgImwWL/
  • 46. Grails Keynote - Graeme Rocher Photo from http://www.flickr.com/photos/y___u/8303330738/ Video: http://skillsmatter.com/podcast/groovy-grails/grails-keynote
  • 47. Grails KeynoteGrails.org 新しくなったよ!Grails 2.0/2.1 の新機能の紹介- インタラクティブモード、自動リロードの強化、dbconsole- UIとエラーリポートの向上、HTML5 Scaffolding、jQuery- バインド変数によるcontrollerアクション- 新しいAPI PageRenderer, LinkGeneration- Resoucesプラグイン統合を始めとした静的リソース関連- GORM/Hibernate関連、テスト関連- Mavenプラグイン 2.1、Cacheプラグインの統合 . . .
  • 48. Grails KeynoteGrailsのロードマップ Photo from http://www.flickr.com/photos/y___u/8390137070/
  • 49. Grails KeynoteGrails 2.2 の新機能:- Groovy2.0対応 - TypeChecked, CombileStatic, invoke dynamic ...- 名前空間サポート - Service や Domain Class の名前空間がプラグイン名を使って 衝突しないようになるよ - UrlMappings や g:link でプラグイン名を指定できる- Criteria における sqlProjection の機能追加
  • 50. Grails KeynoteGrails 2.2 の新機能:- Forked Mode(Forked Tomcat Execution) - grails.project.fork.run=true で使えるようになる - JVMのパラメータをカスタマイズできる - あとは普通に run-app - 停止のための grails stop-app コマンド追加
  • 51. Grails KeynoteGrails 2.3:- Data Binding - platform-core events の統合 http://github.com/grails/grails-core/wiki/Data-Binding- REST Improvements - PUT/POST/DELETE/GET/PATCH/HEAD . . . etc - REST scaffolding- REST client / GORM for REST - Rest-Client-Builder プラグインの統合 http://grails.org/plugin/rest-client-builder
  • 52. Grails KeynoteGrails 2.3:- 非同期処理 - より高いレベルのプログラミングモデルを用意したい - ダイナミックファインダーのコールバック? - 将来的にはDetachedCriteria?- Hibernate 4 化 / Hibernate設定の充実- Encoding / Escaping の向上
  • 53. Grails KeynoteGrails 3.0:- Gradle対応- Grailsプラグインプラットフォーム- Grailsアプリケーションプロファイル- バイナリプラグインのランタイムリロード
  • 54. Debugging Grails Database Performance - Tom Dunstan Photo from http://www.flickr.com/photos/y___u/8302275931/ Slide: http://www.slideshare.net/energizedwork/debugging-grails-database-performance Video: http://skillsmatter.com/podcast/groovy-grails/debugging-grails-database- performance
  • 55. Debugging Grails Database PerformanceMiniprofiler プラグインの紹介http://grails.org/plugin/miniprofilerhttps://github.com/tomdcc/grails-miniprofiler 元スライドから引用
  • 56. Debugging Grails Database PerformanceProfiler プラグインはログを書き出してくれるが、Grails(GORM)でデータにアクセス可能な箇所が多すぎる- Controller- Service- View- TagLib . . . etc最終的にフェッチにどれだけかかったのか分かりづらい場合も
  • 57. Debugging Grails Database PerformanceView で 10 SQL を発行し 754 ms かかる例でのデモクエリとかかる時間が一覧され見やすいクエリを Service にまとめたら 24 ms に短縮された<miniprofiler:javascript /> タグを挿入すれば使える表示するプロファイル結果はAjaxで受け取っているIntelliJ では、コマンドキー押しながらスワイプで文字のサイズ変えられるよ
  • 58. Contributing Back To Grails - Bobby Warner Photo from http://www.flickr.com/photos/y___u/8270792817/ Slide: https://github.com/bobbywarner/ggx2012/blob/master/ggx-contributing-back-to- grails.pdf?raw=true Video: http://skillsmatter.com/podcast/groovy-grails/contributing-back-to-grails
  • 59. Contributing Back To GrailsGrails に貢献しよう!Mail, JIRA, Github, Hudson(Jenkins) が使われてるよgrails-core は cherry-pick は使わない方針全ての branch は定期的に master に merge される5件の簡単な修正を Live Pull-Requesting で実践!
  • 60. Reactive Grails Event Oriented Architecture - Stephane Maldini Photo from http://www.flickr.com/photos/y___u/8303328584/ Slide: http://www.slideshare.net/StphaneMaldini/eventsggx Video: http://skillsmatter.com/podcast/groovy-grails/reactive-grails-event-oriented- architecture-made-easy
  • 61. Reactive GrailsGrailsでイベントバスを使う場合の選択肢- Spring-Events プラグイン- Routing プラグイン (Apache camel)- Falcone-Util プラグイン (メンテされてない)そこで Platform-Core プラグインですよ!
  • 62. Reactive Grailsevent(mailRegistration,user)とか書けばノンブロッキングなイベントをトリガできる.waitFor()を付ければブロッキングな呼び出しにすることもできる@grails.events.Listenerを使ってイベントを受けるメソッドを定義
  • 63. Reactive GrailsEvents-SI プラグイン- Spring Integration をベースにDSLで記述- RabbitMQ を通してイベント送るのも楽ちん! 元スライドから引用 元スライドから引用
  • 64. Reactive GrailsEvents-Push プラグイン- JavaScript でイベントを Listen したい- Atmosphere ベースGrails-Vertx プラグインも計画中!
  • 65. Securing Grails Applications - Burt Beckwith Photo from http://www.flickr.com/photos/y___u/8270792917/ Slide: http://www.slideshare.net/burtbeckwith/securing-grails-applications Video: http://skillsmatter.com/podcast/groovy-grails/securing-grails-applications
  • 66. Securing Grails ApplicationsGrailsでのセキュリティ対策 A to Z、必読!セキュリティリスクと対策を網羅してあるOWASP: Open Web Application Security Projectでもチートシート公開したよ!(まだ中身ないけど)https://www.owasp.org/index.php/Grails_Secure_Code_Review_Cheat_SheetDont trust the users!
  • 67. Securing Grails ApplicationsSQLインジェクション対策- わかってると思いますがプレースホルダ使いましょうXSS対策- grails.views.default.codec="html" 使いましょう- <% %> 使うときは気をつけて- <%=person.value%> みたいな使い方はしないように
  • 68. Securing Grails Applicationssession fixation対策- grails.plugins.springsecurity. useSessionFixationPrevention=trueinsecure direct object reference対策- .get(id) は id を知られても問題ないオブジェクトに限る こと- ACLの@PreAuthorizeを使っても良い- hdiv プラグインもあるよ
  • 69. Securing Grails Applicationshdiv: http data integrity validatorhttp://hdiv.org/hdiv プラグインで Grails 2.3 からサポート予定!https://github.com/burtbeckwith/grails-hdiv/http://repo.grails.org/grails/plugins-releases/org/hdiv/
  • 70. Securing Grails ApplicationsCSRF対策- XSS対策をした上で、更新処理にはPOSTメソッドを使 う- リンクとフォームに生成トークンを使う- hdivを使うsecurity misconfiguration- 不要なものは消すこと- デフォルトパスワードは危険 . . . etc
  • 71. Securing Grails Applicationsfailure to restrict url access- grails.plugins.springsecurity.rejectIfNoRule=true を忘れると 大変!insufficient transport layer protection- grails.plugins.springsecurity. auth.forceHttps=trueunvalidated redirecs and forwards- ?nextPage=/hoge みたいなGETパラメータがあるとき =http://othersite.com/ みたいなことをやりやすい
  • 72. Building An Ecommerce Business With GR8 - Domingo Suarez Torres Photo from http://www.flickr.com/photos/y___u/8302273751/ Video: http://skillsmatter.com/podcast/groovy-grails/building-an-ecommerce-business- with-gr8-technologies-in-latin-america
  • 73. Building An Ecommerce Business With GR8メキシコのEコマースサービス clickOnero についてのお話規模:- 20万~30万 visits/day- 1500万 PV/day- 8万 concurrent user参考: とらのあなが1200万PV/day(2011年の記事)http://www.itmedia.co.jp/news/articles/1109/07/news070.html
  • 74. Building An Ecommerce Business With GR8ver 1.0:Grails, MySQL, Tomcat, ehcache/terracotta, RabbitMQ4人でつくったJava → Grails への転向、Grailsの簡潔さに感動!テストのカバレッジ低かった、CIも無しコントローラにたくさんのコードがあったりGORMのクエリがイケてなかったり
  • 75. Building An Ecommerce Business With GR8使ったGrailsプラグイン- Rabbitmq- Spring-Security- Rendering- Quartz- Feeds- Export . . . EtcJavaMelodyのダッシュボードでいろいろ見れて嬉しかったJDBCに入ってきたクエリとかLogstalgia でログを可視化した
  • 76. Building An Ecommerce Business With GR8ver 2.0:single pageにしたchaplin/backbone.js を使って3コンポーネントに分割- API :Grails, Tomcat(JSONだけしゃべる、GSP無し)- Admin :Grails, Tomcat- Hipstore:静的HTML, chaplin, Apache httpd, CoffeeScript, pushstate, require.js, handlebars, jQ uery, underscore, bootstrap, jake, . . .etc
  • 77. Building An Ecommerce Business With GR8Spock と Jasmine を使ってテストケースを作成Jenkins も使うようにしたPushstate でURL書き換えブックマークとかソーシャルメディアにも対応可能ですげー便利Googleのクローラが変なパラメータ付きでやってくる!Zombie.js でサイトを巡回し、生成されたページを静的コンテンツとして利用WebサーバもDBサーバも負荷は減ったしリンクのシェアはできるようになったしいいことずくめ
  • 78. Thanks.Copyright(C) 2013 NTT Software Corporation All Rights Reserved.記載されているロゴ、システム名、製品名は各社および商標権者の登録商標あるいは商標です。