seasarで動いている webサービスcacooの裏側java cloud meeting tokyo 2010 x seasar...

47
Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ 縣俊貴・吉澤毅

Upload: others

Post on 07-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Seasarで動いているWebサービスCacooの裏側

株式会社ヌーラボ縣俊貴・吉澤毅

Page 2: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

受託開発

Page 3: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

アジェンダCacoo って何?

Cacoo アーキテクチャ

Cubby で拡張

デザイナーさんと協業

レスポンスの改善

Page 4: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Cacooって何?

Page 5: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Page 6: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Page 7: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Page 8: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Page 9: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

リアルタイムコラボレーション

Page 10: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

エクスポート

アップロード

何のため?

Page 11: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Cacooで解決!

Page 12: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Page 13: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Page 14: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Page 15: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

国内 43%!

海外 57%

44,000ユーザー

120ヵ国2010年6月現在

Page 16: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Cacoo アーキテクチャ

http://www.flickr.com/photos/kiwi/24658003

Page 17: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Cacoo を支える OSS プロダクト

Page 18: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Cacoo を支える OSS プロダクト

Page 19: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

開発のすすめかた•シンプルにつくる• Skype で打ち合わせ• Backlog のタスク、Wiki、 開発中の Cacoo でイメージを共有

Page 20: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Cubby で拡張

http://www.flickr.com/photos/17258892@N05/2588347668

Page 21: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Cubby•Web App フレームワーク•シンプルで小さい(薄い)•設定ファイルをほとんど使わない• REST っぽい URI サポート•コミッターが社内にいる

Page 22: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

AOP を使わずに拡張していく

Plugin

• invokeAction

• invokeActionResult

• invokeRequestProcessing

• invokeRouting

• invokeValidation

Page 23: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Cacoo 拡張実例

Page 24: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

認証@Auth@Protocol(value = HTTPS, redirect = true)

@Path("diagrams")public class DiagramsAction

extends BaseAction {

Page 25: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

プロトコル@Auth@Protocol(value = HTTPS, redirect = true)

@Path("diagrams")public class DiagramsAction

extends BaseAction {

URL 変更に柔軟に対応

Page 26: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

http://www.flickr.com/photos/liberato/2275622210/

HEAD メソッド対応

Page 27: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

レシピ1. AbstractPlugin を継承したクラス作成2. 拡張したいポイントをオーバーライド3. /META-INF/services/org.seasar.cubby.plugin.Plugin 作成4.クラス名を記述 (FQCN)

plugins.HeadSupportPlugin

Page 28: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

public class HeadSupportPlugin extends AbstractPlugin {

@Override public PathInfo invokeRouting(final RoutingInvocation invocation)

throws Exception { final PathInfo pathInfo = super.invokeRouting(invocation); if (pathInfo != null) { return pathInfo; }

final HttpServletRequest request = invocation.getRequest(); if (!request.getMethod().equals(RequestMethod.HEAD.name())) { return null; }

final PathResolver pathResolver = invocation.getPathResolver(); final String path = invocation.getPath(); final PathInfo headPathInfo =

pathResolver.getPathInfo(path, RequestMethod.GET.name(), request.getCharacterEncoding());

return headPathInfo; }}

Page 29: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Cubby

拡張しやすい

綺麗な URI を作成できる

JSON を返す API を簡単に作成

Page 30: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

デザイナーさんと協業

http://www.flickr.com/photos/fncll/145149313/

Page 31: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Mayaa•HTML テンプレートエンジン•HTML/XHTML で記述•テンプレート切り替え

デザイナーさんとの協業多言語対応

Page 32: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

1.プロトタイプ

使いやすさを追求

Page 33: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

2.イメージをつくる

フィードバックをたくさんする

Page 34: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

3.HTML/CSS 制作

id/class のルール重要

Page 35: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

4.Mayaa で仕上げる

動的なコンポーネントを含めてもらう

Page 36: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

5.多言語対応

Page 37: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Mayaa

最初がハマりやすい

公式ドキュメントを参照すでにメーリングリストで質問されている

HTML コーダーが修正しやすい

プログラマーが歩み寄る

Page 39: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

レスポンスの改善

http://www.flickr.com/photos/dougww/979176911

Page 40: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

通信速度、距離の問題

Page 41: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

サーバーキャッシュ

Ehcache

Page 42: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

ブラウザキャッシュ

Page 43: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

タイムスタンプ<img src="/account/yoshizawa/image/20x20?t=1275242889248" />

<script src="/js/lib/cacoo.js?1.23" type="text/javascript"></script>

サボりがちなものの効果大

Page 44: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Mayaa 応用<script src="/js/lib/cacoo.js?1.23" type="text/javascript"></script>

InjectionResolver を拡張し、 pom.xml のバージョンを設定

Hudson でリリースモジュールを作成し、バージョン上げ漏れを発生させない

Page 45: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

回線速度やレイテンシの問題

日本国内

海外

EC2+CloudFront

0 5 10 15 20

2

20

0.7

cacoo.swfのロード時間(秒)

Page 46: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

CacooはSeasarプロダクトを基盤として動作しています。

まとめ

Seasarを使うことによってサービス開発に集中できました。

Seasarを使って魅力的なサービスをじゃんじゃんつくっちゃいましょう!

Page 47: Seasarで動いている WebサービスCacooの裏側Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010 Seasarで動いている WebサービスCacooの裏側 株式会社ヌーラボ

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

ご清聴ありがとうございました。