[go: up one dir, main page]

SlideShare a Scribd company logo
Media	
  Technology	
  Labの紹介	


           RECRUIT	
  
           黒田 樹	
  
Media	
  
Technology	
  
Labs
MediaTechnologyLabs(MTL)	
  
           はリクルートのR&D部門	


リクルートのシードを担う	
  
実証実験機関



R&D	
                     カンパニー
              事業開発         人材!
                           !
                           進学!
              準カンパニー!      !
                           住宅!
                           !
                           結婚!
                           !
                           自動車!
                           !
                           ライフスタイルetc.!
最小2人構成で、プラン
ナー&エンジニアーがタッ
グを組んで、サービスを企
画&開発&運用していく。	
  
(スタートアップ)	
  
毎月1回MTL内ビジネスコ
ンテストを実施。	
  
Play勉強会資料(MTLブログ用)
Play勉強会資料(MTLブログ用)
Play勉強会資料(MTLブログ用)
Play勉強会資料(MTLブログ用)
Play勉強会資料(MTLブログ用)
Play勉強会資料(MTLブログ用)
Play勉強会資料(MTLブログ用)
Play勉強会資料(MTLブログ用)
Play勉強会資料(MTLブログ用)
h5p://a5acca.fm
h5p://a5acca.fm	


  A5acca	
  最高!
Play2.0+Javaで	
  
サービスを本番
稼働させた話	
  
          @i2key	
  
            	
  
    ※以後の発表内容は会社は関係なく	
  
私の個人的な見解・思考・思想に基づくものになります。	
  
@i2key	
  
元SIer	
  
Java屋	
  
最近ObjC
皆様	
  
音楽は好きですか?	
  
普段どんな曲を	
  
聴いていますか?	
  
あなたのプレイリ
ストは懐メロばか
りになっちゃあい
ませんか?
学生の頃に比べると明ら
かに、新しい音楽へ出会
う機会が減っている。
毎日が忙しく、音楽
 に出会う場
 (クラブ、フェス、ライ
 ブハウス、カラオケ
 等)
 にいかなくなった。




h?p://jigokuno.img.jugem.jp/20090624_1292358.gif
毎日が忙しく、音楽に
出会う番組
(ドラマ、音楽番組、CM
等)
を見なくなった。




       h?p://jigokuno.img.jugem.jp/20090922_1475978.gif
•  時間がないので音楽を探すのはオンラインば
   かり。
 –  しかし、オンラインは思いのほか能動的に動かない
    と探せない。(TVやラジオの反対)
 –  音楽番組を見てたころは、いつの間にか流行の音
    楽が耳に入っていたなぁ。
音楽のランキング番組を見てたように、
受動的に音楽聴きたいなー。
どうせ聴くなら、友達が聴いてる曲を知りたい。	
  
そんな思いを解決してくれます。
	
  
そう、この「A5acca」ならね。
h?p://www.google.co.jp/imgres?num=10&um=1&hl=ja&biw=1623&bih=832&tbm=isch&tbnid=aaEe9GiNRXBbqM:&imgrefurl=h?p://seiga.nicovideo.jp/seiga/im1343303&docid=pxtVREKFNTjFM&imgurl=h?p://
lohas.nicoseiga.jp/thumb/1343303i&w=450&h=600&ei=-­‐WD-­‐
T8GwPOfEmQWCn52OBQ&zoom=1&iact=hc&vpx=445&vpy=130&dur=1282&hovh=259&hovw=194&tx=88&ty=102&sig=102960426298510789252&sqi=2&page=1&tbnh=	
  
160&tbnw=119&start=0&ndsp=33&ved=1t:429,r:2,s:0,i:73
h?p://livedoor.blogimg.jp/coodoo/imgs/5/a/5ae655d9.jpg
h?p://jigokuno.img.jugem.jp/20090119_824857.gif
デモンストレーション
Play導入の経緯
System	
  Integrator	
  

 元SIer	
  
Architect
官公庁系システム
数百億円規模
エクセル駆動開発  
      推進  
 \エクセル方眼紙バンザーイ/	
  
          	
  
    エクセル方眼紙から	
  
どーんとJavaソースを自動生成して	
  
         ばーん
人  海  戦  術
大規模開発脳	
  
モジュール
RP1029Logic.javaへのコ
ミットログが多すぎるから、この
モジュール作成者の品質に不
安がある(キリッ	
  
この開発者の作成したモジュー
ルの横並び確認をしなけれ
ば!!	
  
サイクロマチック複雑度は??
サイクロマチック複雑度と分岐
網羅(C1)のテストケース数は大
体近似できるから、それ以下
だったら試験不足です。	
  
はい、やりなおしー。	
  
凝集性がぁ〜。	
  
モジュール間結合度が〜。	
  
バグ密度は??	
  	
  
件/kstepで出してください。	
  
試験密度も添えてね。	
  
え?当然、	
  
カバレッジ100%でしょ?	
  
バグ改修はエクセル(方眼紙)を
修正して、そこからソースコード
を再生成してくださいネ。	
  
h?p://to-­‐a.ru/6CN9s2/img1
大規模開発のためのパラダイムで	
  
小規模開発の現場に入ってしまったため、	
  
前職と同等のアーキテクチャで	
  
サービス開発をはじめてしまった。	
  
非機能要件からのアーキテクチャ設計	
  
from	
  非機能要求グレード(IPA)抜粋	
•  可用性	
  
  –  継続性(稼働率)、耐障害性、災害対策、回復性	
  
•  性能・拡張性	
  
  –  TX処理量、性能目標、リソース拡張性、性能品質保証	
  
•  運用・保守性	
  
  –  通常運用(運用時間・バックアップ・運用監視)	
  
  –  保守運用、障害時運用、運用環境、サポート体制	
  
•  セキュリティ	
  
  –  前提条件・制約条件、セキュリティリスク、アクセス利用
     制限(認証、利用制限)、データ暗号化、不正追跡・監視、
     ネットワーク、Web対策	
  
初代Architecture	
h?ps	
               API	
  KEY                                                                    Twi?er	
                                                                  facade	
                      認証	
                                                                          APNS	
                                                 contro
                                                                                                   C2DM	
                     エラー                           ller	
                                dao	
              Port




                     処理	
         制
    SSL	
  




              変                   御	
                             facade	
                          O/R	
  
              換       JSON	
  
                                        制                                                          Mapper	
              	
  




                     JSONP	
            御	
                                              dao	
                 RDS	
                      XML	
                                                                        Pooling	
                      HTML	
                                   DIコンテナ               	
                                                            Tomcat	
     Apache	
  
                                                              JVM	
                                    Amazon	
  Linux	
  (MTL	
  Amazon	
  Image)	

              ビジネスロジック	
                      ミドルウェア	
              OS	
        FW	
             FW独自拡張	
              (機能毎に実装)
MTL	
  Java	
  Server	
  Architecture	
h?ps	
               API	
  KEY                                                                  Twi?er	
                                                                  facade	
                      認証	
                                                                       APNS	
                                                 contro
              非機能    エラー                           ller	
                                                            機能要件	
                       dao	
                                                                                                 C2DM	
              Port




                     処理	
         制
    SSL	
  




              変                   御                               facade	
               要件	
  
              換
                                   	
                                                             O/R	
  
                      JSON	
                                                                     Mapper	
                                        制
              	
  




                     JSONP	
            御	
                                              dao	
               RDS	
                      XML	
                                                                      Pooling	
                      HTML	
                                   DIコンテナ               	
                                                            Tomcat	
     Apache	
  
                                   非機能要件	
                    JVM	
                                    Amazon	
  Linux	
  (MTL	
  Amazon	
  Image)	

              ビジネスロジック	
                      ミドルウェア	
              OS	
      FW	
 FW独自拡張	
              (機能毎に実装)	
                                                      非機能要件をカバー
MTL	
  Java	
  Server	
  Architecture	
h?ps	
               API	
  KEY                                                                  Twi?er	
                                                                  facade	
                      認証	
                                                                       APNS	
                                                 contro
              非機能    エラー                           ller	
                                dao	
                                                                                                 C2DM	
              Port




                     処理	
         制
    SSL	
  




              変                   御                               facade	
               要件	
  
              換
                                   	
                                                             O/R	
  
                      JSON	
                                                                     Mapper	
                                        制
              	
  




                     JSONP	
            御	
                                              dao	
               RDS	
                      XML	
                                                                      Pooling	
                      HTML	
                                   DIコンテナ               	
                                                            Tomcat	
     Apache	
  
                                   非機能要件	
                    JVM	
                                    Amazon	
  Linux	
  (MTL	
  Amazon	
  Image)	

              ビジネスロジック	
                      ミドルウェア	
              OS	
      FW	
 FW独自拡張	
              (機能毎に実装)	
                                                      非機能要件をカバー
反省点	
•  大規模開発の設計思想を取り入れすぎたことによ
   り、フットワークの低下が発生。	
  
    –  インタフェースドリブンにし過ぎ	
  
        •  大規模開発では関係が疎になったモジュー
           ル設計のほうが、責務の所在が明確化し、
           品質が安定するが、開発者が少ない開発
           ではオーバーヘッドでしかない。	
  
  –  スピード感・イライラ感	
  
      •  確認にTomcat起動はキツい・・・	
  
  –  前工程での仕様フィックスを前提とした実装	
  
      •  テーブル定義の動的な変更に弱い	
  
          – Railsのマイグレーションとかうらやましい	
  
300人で2年かけて作っていた世界	
  
          	
  
         から	
  
          	
  
    2人で2ヶ月で作る世界	
  
300人で2年間で受託開発	
  
開発モデル	
  
 ウォーターフォール(工程毎に品質評価会議)	
	
  
開発方法論	
  
 契約による設計(高凝集性で低結合度)	
  
  ロールの過度な分割(業務SE、業務プログラマ、方式エンジニア)	
  
  インタフェースドリブンな実装(複数社がモジュール開発・結合)	
  
  疎結合による責務の所在の明確化 	
  
  テスタビリティの向上によるモジュール品質の担保	
  
 全社的に統一したフレームワークで品質・生産性の平準化	
  
	
  
ゴール感	
  
 リリースがゴール  
	
  
価値観	
  
 お客様に納品するためにはバグは許されない。	
  
 品質が大事で、	
  
 納期も大事で、コストも大事で	
  
 要件を全部満たすことも大事	
  

           h?p://www.town.kaminokawa.tochigi.jp/f_sangyousinkou/P2_ph_2.jpg
2人で2ヶ月で	
  
自社サービス開発	
  
開発モデル	
  
 ウォーターフォールではなく	
 アジャイルでもない何か	
 	
  
開発方法論	
  
 アジャイルのプラクティスもろもろ	
  
 要件の変更が多く	
  
 仕様フィックスはリリース直前	
  
	
  
ゴール感	
  
 リリースははじまり  
 ゴールは、サービスのヒット、マネタイズ	
  
	
  
価値観	
  
 リリース遅延=機会損失	
  
 ユーザに使ってもらってFBを即反映	
  
 バグってたら、急いで直してリリース	
  

  h?p://image.space.rakuten.co.jp/lg01/83/0000069883/72/imgcd88f518zikbzj.jpeg
つまり、自社サービスは	
  
よく変更が入�るし、	
  
よくリリースするし、	
  
速く開発したい	
  
品質は少しぐらい悪くても	
  
すぐ直せればいいよ
Javaなんてやってないで、	
  
        Railsやろうぜ!	
  
        Rubyをキメルと気もちいぜ!	
  




h?p://naglly.com/funny_japanese_t_thirt_13.jpg
Play勉強会資料(MTLブログ用)
Play勉強会資料(MTLブログ用)
2.0	
いずれ開発言語をJavaからScalaに移行したい
小規模	
  
          フットワーク	
  
大規模	
  
高品質
REST	
  APIサーバとして	
  
     Play!2.0を採用	
  
やることは、リクエストを受け
 取って、JSONを返すだけ
いいか?	
  
                リファレンス以上の内容は	
  
                出てこないぞ?	
  




h?p://naglly.com/funny_japanese_t_thirt_13.jpg
A5acca	
  Architecture	
h?ps	
               API	
  KEY                                    Manager	
             Twi?er	
                      認証	
                                                                APNS	
                                                 contro                    Model	
                     エラー                                                                 C2DM	
                                                   ller	
              Port




                     処理	
                                                                  	
  
    SSL	
  




              変                   制
              換                   御                              Manager	
                 	
  
                      JSON	
       	
                                                                                           	
  
              	
  




                                        制                                               Dynamo	
   Dyn
                                        御	
                            Model	
                                                                                          DB	
       amo	
                      HTML	
  
                                                                                        AWS	
  SDK	

                                                     Playframework	
  2.0	
     Apache	
  
                                                              JVM	
                                    Amazon	
  Linux	
  (MTL	
  Amazon	
  Image)	

              ビジネスロジック	
                      ミドルウェア	
              OS	
        FW	
   FW独自拡張	
              (機能毎に実装)
A5acca	
  Architecture	
h?ps	
               API	
  KEY                                                          Twi?er	

                                                    ←AOP的な	
  
                                                                   Manager	
                      認証	
                                                                APNS	
                                                 contro                    Model	
                     エラー                                                                 C2DM	
                                                   ller	
              Port




                     処理	
                                                    ことがしたい	
                               	
  
    SSL	
  




              変                   制
              換                   御                              Manager	
                 	
  
                      JSON	
       	
                                                                                           	
  
              	
  




                                        制                                               Dynamo	
   Dyn
                                        御	
                            Model	
                                                                                          DB	
       amo	
                      HTML	
  
                                                                                        AWS	
  SDK	

                                                     Playframework	
  2.0	
     Apache	
  
                                                              JVM	
                                    Amazon	
  Linux	
  (MTL	
  Amazon	
  Image)	

              ビジネスロジック	
                      ミドルウェア	
              OS	
        FW	
   FW独自拡張	
              (機能毎に実装)
A5acca	
  Architecture	
h?ps	
                  API	
  KEY   public	
  class	
  Global	
  extends	
  GlobalSeSngs	
  {	
                         Manager	
                 Twi?er	
                         認証	
                                       	
  @Override	
                                                                 APNS	
                                                      contro void	
  onStart(ApplicaVon	
  app)	
  { 	
  
                                                                    	
  public	
                                                Model	
                     	
  	
  
                                                                                                                                                   C2DM	
                エラー                                                ller	
ogger.info("A?acca	
  is	
  ready!!");	
  
                                                                    	
  	
  	
  	
  	
  	
  L
              Port




                処理	
                                                	
  	
  	
  	
  	
  	
  //	
  Init	
  DynamoDB.	
                                 	
  
    SSL	
  




         変               制                                          	
  	
  	
  	
  	
  	
  AmazonDynamoDBClientFactory.init();	
  
         換               御                                                                                              Manager	
                     	
  
                JSON	
    	
                                        	
  }	
                                                                           	
  
              	
  




                             制                                      	
  @Override	
                                                               Dynamo	
   Dyn
                             御	
                                    	
  public	
  AcVon	
  oModel	
                            nRequest	
            DB	
  
                HTML	
               	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (Request	
  request,	
  Method	
  acVonMethod)	
  {amo	
                                                                                                                                                  AWS	
  SDK	
 	
  
                                     	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //リクエスト実行時に処理を織り込める	
  
                                                                    	
   Playframework	
  2.0	
         	
  	
  
     Apache	
                                                       	
  	
  	
  	
  	
  return	
  super.onRequest(request,	
  acVonMethod);	
  
                                                                                                                 JVM	
                                                                    	
  }	
  
                           Amazon	
  Linux	
  (MTL	
  Amazon	
  Image)	
 	
  :	
  
                                                                    	
                                  	
         	
     	
      	
  
                                     }	
         ビジネスロジック	
              ミドルウェア	
                                                                                OS	
          FW	
    FW独自拡張	
         (機能毎に実装)
A5acca	
  Architecture	
                                          	
  	
  
                                          //メソッド単位にもインターセプターを設定可能	
  
                                         @With(VerboseAcVon.class)	
  
                                         	
  	
  	
  	
  public	
  staVc	
  Result	
  index()	
  {	
  
h?ps	
          API	
  KEY               	
  	
  	
  	
  	
  	
  	
  	
  CommonResult	
  result	
  =	
  new	
  CommonResult();	
                   Twi?er	
                                                                                                                     Manager	
                 認証	
                    	
  	
  	
  	
  	
  	
  	
  	
  result.setStatus("OK");	
  
                                         	
  	
  	
  	
  	
  	
  	
  	
  return	
  ok(Json.toJson(result));	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   APNS	
                                         	
  	
  contro
                                                                                                                           Model	
                                                 	
  	
  }	
                                                                                        C2DM	
                エラー
                                         	
   ller	
                  Port




                 処理	
                                                                                                                                 	
  
        SSL	
  




         変                 制             	
  
         換                 御             /**	
                                                                    Manager	
                           	
  
                 JSON	
     	
                                         	
  *	
  インターセプト用のAcqon例.	
                                                                                  	
  
                  	
  




                               制                                                                                                                 Dynamo	
   Dyn
                               御         	
  */	
                                                                       Model	
                                	
                                                                                                                   DB	
  
                 HTML	
                  public	
  class	
  VerboseAcqon	
  extends	
  Acqon.Simple	
  {	
   amo	
                                         	
                                                                                                      AWS	
  SDK	
                                         	
  	
  	
  	
  	
  	
  	
  	
  public	
  Result	
  call(H?p.Context	
  ctx)	
  throws	
  Throwable	
  
                                                                    Playframework	
  2.0	
     Apache	
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  //	
  必要に応じて前処理を実装	
                                                                                                            JVM	
                                                                                                               	
                                                                                                               //	
  ラップしているAcqonを呼び出し	
                             Amazon	
  Linux	
  (MTL	
  Amazon	
  Image)	
                                                                                                               return	
  delegate.call(ctx);	
  
                                         	
  	
  	
  	
  	
  	
  	
  	
  }	
  
         ビジネスロジック	
                ミドルウェア	
                                         }	
                                                                          OS	
     FW	
        FW独自拡張	
         (機能毎に実装)
A5acca	
  Architecture	
h?ps	
               API	
  KEY                                    Manager	
             Twi?er	
                      認証	
                                                                APNS	


                                        ←エラーハン	
  
                                                 contro                    Model	
                     エラー                                                                 C2DM	
                                                   ller	
              Port




                     処理	
                                                                  	
  
    SSL	
  




              変                   制
                                                                 Manager	
                 	
  

                                        ドリングしたい	
              換                   御	
                      JSON	
                                                               	
  
              	
  




                                        制                                               Dynamo	
   Dyn
                                        御	
                            Model	
                                                                                          DB	
       amo	
                      HTML	
  
                                                                                        AWS	
  SDK	

                                                     Playframework	
  2.0	
     Apache	
  
                                                              JVM	
                                    Amazon	
  Linux	
  (MTL	
  Amazon	
  Image)	

              ビジネスロジック	
                      ミドルウェア	
              OS	
        FW	
   FW独自拡張	
              (機能毎に実装)
A5acca	
  Architecture	
                               public	
  class	
  Global	
  extends	
  GlobalSeSngs	
  {	
  
                               	
                             	
                            	
        	
     	
  :	
  
h?ps	
          API	
  KEY                                    	
  @Override	
                                           Manager	
             Twi?er	
                 認証	
                                         	
  public	
  Result	
  onError(Throwable	
  paramThrowable)	
  {	
              APNS	
                                                              	
                            	
  contro
                                                                                                 //エラー処理記述//	
               Model	
                エラー                                           	
                            	
  return	
  Results.ok(Json.toJson(result));	
   C2DM	
                                                                                                   ller	
                 Port




                 処理	
                                         	
  }	
                                                                            	
  
       SSL	
  




         変                 制 	
  
         換                 御                                                                                           Manager	
                 	
  
                 JSON	
     	
                                	
  @Override	
                                                                    	
  
                 	
  




                                           制 	
  public	
  Result	
  onHandlerNotFound(String	
  paramString)	
  {	
                        Dynamo	
   Dyn
                                           御 	
     	
                                                                    Model	
                                                                                            	
  Logger.warn(“404	
  ERROR");	
                  DB	
   amo	
                 HTML	
                                       	
                            	
  return	
  Results.redirect("/");	
        AWS	
  SDK	
                                                              	
  }	
  
                                                              	
  	
                                Playframework	
  2.0	
     Apache	
                                                 	
  @Override	
  
                                                                                                                 JVM	
                                                              	
  public	
  Result	
  onBadRequest	
  
                             Amazon	
  	
  L	
  inux	
  (MTL	
  Amazon	
  Image)	
 paramString2)	
  {	
  
                               	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
  	
  	
  (String	
  paramString1,	
  String	
  
                                                              	
                            	
  Logger.warn(”404	
  ERROR");	
  
         ビジネスロジック	
                                           	
  ミドルウェア	
 esults.redirect("/");	
  
                                                                                            	
  return	
  R             OS	
      FW	
  FW独自拡張	
         (機能毎に実装)	
                                           	
  }	
  
                               }
A5acca	
  Architecture	
h?ps	
               API	
  KEY                                    Manager	
             Twi?er	
                      認証	
                                                                APNS	
                                                 contro                    Model	
                     エラー                                                                 C2DM	
                                                   ller	
              Port




                     処理	
                                                                  	
  
    SSL	
  




              変                   制
                                                                                           	
  

                                        ←Object	
  –	
  JSON	
  
              換                   御	
                            Manager	
                      JSON	
                                                               	
  
              	
  




                                        制                                               Dynamo	
   Dyn
                                        御	
                            Model	
                                                                                          DB	
       amo	

                                        Mappingしたい	
                      HTML	
  
                                                                                        AWS	
  SDK	

                                                     Playframework	
  2.0	
     Apache	
  
                                                              JVM	
                                    Amazon	
  Linux	
  (MTL	
  Amazon	
  Image)	

              ビジネスロジック	
                      ミドルウェア	
              OS	
        FW	
   FW独自拡張	
              (機能毎に実装)
A5acca	
  Architecture	
h?ps	
               API	
  KEY                                    Manager	
             Twi?er	
                      認証	
                                                                APNS	
                                                 contro                    Model	
                     エラー                                                                 C2DM	
                                                   ller	
              Port




                     処理	
                                                                  	
  
    SSL	
  




              変
              換
                                  制
                                  御	
                                        return	
  ok(Json.toJson(result));	
                                                       Manager	
                           	
  
                      JSON	
                                                               	
  
              	
  




                                        制                                               Dynamo	
   Dyn
                                        御	
                            Model	
                                                                                          DB	
       amo	
                      HTML	
  
                                                                                        AWS	
  SDK	

                                                     Playframework	
  2.0	
     Apache	
  
                                                              JVM	
                                    Amazon	
  Linux	
  (MTL	
  Amazon	
  Image)	

              ビジネスロジック	
                      ミドルウェア	
              OS	
        FW	
   FW独自拡張	
              (機能毎に実装)
A5acca	
  Architecture	
h?ps	
               API	
  KEY                                    Manager	
             Twi?er	
                      認証	
                                                                APNS	
                                                 contro                    Model	
                     エラー                                                                 C2DM	
                                                   ller	
              Port




                     処理	
                                                                  	
  
    SSL	
  




              変                   制
                                                                                           	
  

                                        	
  	
  	
  	
  	
  ↑	
  
              換                   御	
                            Manager	
                      JSON	
                                                               	
  
              	
  




                                        制                                               Dynamo	
   Dyn
                                        御	
                            Model	
                                                                                          DB	
       amo	
                      HTML	
  


     Apache	
  
                                        入力チェックしたい	
  Playframework	
  2.0	
                                                                                        AWS	
  SDK	


                                                              JVM	
                                    Amazon	
  Linux	
  (MTL	
  Amazon	
  Image)	

              ビジネスロジック	
                      ミドルウェア	
              OS	
        FW	
   FW独自拡張	
              (機能毎に実装)
A5acca	
  Architecture	
h?ps	
               API	
  KEY                                          Manager	
                           Twi?er	
                      認証	
                                                                                    APNS	
                                                     contro                     Model	
                     エラー                                                                                     C2DM	
                                                       ller	
              Port




                     処理	
                                                                                             	
  
    SSL	
  




              変          制 public	
  staqc	
  class	
  Hello	
  {	
  
              換                                                                                  Manager	
                         御 	
  	
  	
  	
  	
  	
  	
  	
  @Required	
  public	
  String	
  name;	
                   	
  
                JSON	
    	
                                                                                                                      	
  
              	
  




                             	
  	
  制	
  	
  	
  @Required	
  @Min(1)	
  @Max(100)	
  public	
  Integer	
  repeat;	
  
                                     	
  	
  	
                                                                    Dynamo	
   Dyn
                             	
  	
  御	
  	
  	
  public	
  String	
  color;	
   Model	
                                     	
  	
  	
                                             	
                                                                      DB	
  
                HTML	
       }	
                                                                                                amo	
                                                                                                                   AWS	
  SDK	
                             	
  
                             public	
  staqc	
  Result	
  sayHello()	
  {	
       Playframework	
  2.0	
     Apache	
                	
  	
  	
  	
  	
  	
  	
  	
  Form<Hello>	
  form	
  =	
  form(Hello.class).bindFromRequest();	
  
                                                                                               JVM	
                             	
  	
  	
  	
  	
  	
  	
  	
  if(form.hasErrors())	
  {	
  
                           Amazon	
  	
  Lreturn	
  badRequest();	
  
                             	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   inux	
  (MTL	
  Amazon	
  Image)	
                             	
  	
  	
  	
  	
  	
  	
  	
  }	
  else	
  {	
  
         ビジネスロジック	
   	
  	
  	
  	
  	
  	
  	
  ミドルウェア	
 =	
  form.get();	
   FW	
                                                         	
  	
  	
  	
  	
  Hello	
  data	
        OS	
         FW独自拡張	
         (機能毎に実装)	
                                         	
  	
  	
  	
  return	
  ok(Json.toJson(data));	
  
                             	
  	
  	
  	
  	
  	
  	
  	
  }}
Play!で	
  
        iOS開発が	
  
        こんなに便利!!
h?p://img5.blogs.yahoo.co.jp/ybi/1/83/95/dreamjapan04/folder/1564969/img_1564969_39575309_0?1201531988	
                                                                                                           (ステマ)	
  
iPhone	
  –	
  Server間	
  
のI/F仕様の	
  
ドキュメントレス化	
  
(ソースが設計書)	
  
@i2key	
                          @vulcaniz	




       iOS	

   Playでスタブ	
                          Play	
  
  Controller(空)	
                 Controller(実装)	
  
  Model(属性)	
                       渡す	
                                Model(属性+Validate)	
  
                      Model	
    DynamoDB(永続化)	
  
                                      もろもろ
テストが楽	
  
動かしながら実装できるのは楽	
  
Managerからやって積み上げる感じ	
  
その後コントローラー	
  
	
  
Junit準備がいらないからいきなり試験かけて楽	
  
	
  
	
  
DynamoのNoSQLがらく(SQLかくのだるい)	
  
TIPS	
  
h?p://gigazine.jp/img/2007/09/29/potechi_gomamayo/potechi_gomamayo03.jpg
Amazon	
  EC2	
  microでPlay!2.0が起
動しない。	
  
	
  
java	
  -­‐Xms512M	
  -­‐Xmx1536M	
  
でPlay!2.0はデフォルト起動される	
  
conf/routesの定義を変
更しても反映されない。	
  
 	
  
つ $	
  clean	
  
ステージングモードでの	
  
バックグラウンド実行がCTRL	
  -­‐	
  Dが
必要になっていて、スクリプトで自
動化できない。	
  
	
  
$	
  play	
  start	
  &	
  	
  
  ではなく	
  
$	
  play	
  clean	
  compile	
  stage	
  
$	
  target/start	
  &	
  
負荷試験でエラー
でまくった	
  
Thrown(	
  
akka.pa5ern.AskTi
meoutExcepVon:	
  
Timed	
  out)	
  
h?p://t3.gstaqc.com/images?q=tbn:ANd9GcRanRMXzrPAKMq1JheavSmik2E5pYk3pK69vCisdXBXfiSKaCuKpLWRnd3v
完全にTomcat脳というかJ2EE脳だったので、Play(Ne?y+Akka)の仕組みを理解して
いなかった。	
  
	
  
Hozumiさんの日記	
  
Ne?yの基本 h?p://d.hatena.ne.jp/fatrow/20110208/ne?y	
  
	
  
解決策は以下	
  
h?p://www.playframework.org/documentaqon/2.0.1/AkkaCore	
  
	
  
	
  
play	
  {	
  
	
  	
  	
  	
  akka	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  event-­‐handlers	
  =	
  ["akka.event.slf4j.Slf4jEventHandler"]	
  
	
  	
  	
  	
  	
  	
  	
  	
  loglevel	
  =	
  WARNING	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  actor	
  {	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  deployment	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /acqons	
  {	
  

                                                                         AcVon	
  Invoker	
  Actors	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  router	
  =	
  round-­‐robin	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  nr-­‐of-­‐instances	
  =	
  512	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
                                                                       Booooooooost!!	
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /promises	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  router	
  =	
  round-­‐robin	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  nr-­‐of-­‐instances	
  =	
  24	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  retrieveBodyParserTimeout	
  =	
  3	
  second	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  acqons-­‐dispatcher	
  =	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  fork-­‐join-­‐executor	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  parallelism-­‐factor	
  =	
  256.0	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  parallelism-­‐max	
  =	
  512	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  }
以上!!

More Related Content

Play勉強会資料(MTLブログ用)