SlideShare a Scribd company logo
1 of 21
Download to read offline
GWT+Objectifyで
ラクラクGAEアプリ開発
  越智 洋司@おちラボ




   2011.12.18 京都GTUG年忘れ勉強会資料
自己紹介
• とりあえず京都GTUGスタッフ
    (あんまり手伝えてませんが)

• 本業:近畿大学理工学部教員
   (「おちラボ」で検索してください)

• 特技:GWT(正式には「グィット」と読むらしい)
  2010年5月の京都GTUG勉強会にてお話


        2011.12.18 京都GTUG年忘れ勉強会資料
今日のお話

○GWTについてのちょっとした話
  ・GWT再入門
  ・ラボでの利用小話

○Objectifyの紹介




          2011.12.18 京都GTUG年忘れ勉強会資料
GWTとは
• Google Web ToolKitの略

• JavaScriptアプリケーションをJavaで記述
  → JavaコードをJavaScriptへ変換
  (JavaScriptが嫌いな紳士・淑女の皆様にオススメ)

• UI周りの記述はXMLにより表現可能
  (UiBinderという機能)

• サーバとのAjaxなやり取りがRPCの感覚でできる
  (GWT-RPCという機能)
              2011.12.18 京都GTUG年忘れ勉強会資料
Javaで記述




EclipseやNetbeansなどのJavaIDEで書ける
        2011.12.18 京都GTUG年忘れ勉強会資料
UI周りはXMLで
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
          xmlns:g="urn:import:com.google.gwt.user.client.ui">
          <ui:style>
                     .important {
                              font-weight: bold;
                     }
          </ui:style>
          <g:HTMLPanel>
                     Hello,
          <g:TextBox></g:TextBox>
          <g:Button styleName="{style.important}" ui:field="button" >OK</g:Button>
          <g:Button>Cancel</g:Button>
          </g:HTMLPanel>
</ui:UiBinder>


       Javaコードを一切書くことなくUI実装が可能
       (デザインとロジックが完全に区別)    2011.12.18 京都GTUG年忘れ勉強会資料
Ajaxな通信がRPC感覚で
                  〜GWT-RPC〜
 サーバ側
public Car getCar(Person user) throws IllegalArgumentException {
                      :
                      :
                      :
}

クライアント側
RemoteService.getCar(user, new AsyncCallback<Car>() {
        public void onFailure(Throwable caught) {

         }
         public void onSuccess(Car result) {

         }
});
                           2011.12.18 京都GTUG年忘れ勉強会資料
おちラボでの利用実績・小話(1)
• 2009年夏からGWT採用 (前年度までJSF)

• JavaScriptベースのAjaxアプリに
  手をつけたことが1度だけあり。
  → いいものはできた、、、、
     が、スパゲティソースコードだったという悲劇

• GWTを導入することで
  → Javaだけ教えればいい!
    (多言語を習得する時間がない)
          2011.12.18 京都GTUG年忘れ勉強会資料
おちラボでの利用実績・小話(2)

私自身の個人的な印象
→ 学生が作ったアプリの再利用性が高まった


学生のウケはどうか?
→ネットでの情報、書籍不足に若干の不満がある

    国内ではいまいち流行ってない?!
       2011.12.18 京都GTUG年忘れ勉強会資料
GWTは熱い!(海外では)
Google IO 2011 でもGWTは積極的に紹介されている
  –   GWT + HTML5: A web developers dream!
  –   HTML5 Showcase for Web Developers: The Wow and the How
  –   GWT + UI Designer: Enterprise Web UIs Made Easy!
  –   Using GWT and Eclipse to Build Great Mobile Web Apps
  –   High-performance GWT: best practices for writing smaller, faster
      apps
  –   Highly Productive GWT: Rapid Development with App Engine,
      Objectify, RequestFactory, and gwt-platform
  –   Kick-Ass Game Programming with Google Web Toolkit
  –   Building Game Development Tools with App Engine, GWT, and
      WebGL
  –   Fireside Chat with the GWT and Cloud Tooling Team
  –   GWT's UI overhaul
                                                        他、多数、、、
                        2011.12.18 京都GTUG年忘れ勉強会資料
そしてGAE
クライアントをGWTしたのならサーバも、、、


                    昨年度までは
                    Tomcat, Glassfish
                    MySQL+ Hibernate

・今年からGAEでの運用を想定した開発方針へ
・データベースもDatastoreに
                 Objectify の採用
        2011.12.18 京都GTUG年忘れ勉強会資料
Objectifyとは
  (objectify-appengineが正式名称)
• GAEのDatastoreにアクセスするためのAPI

• GWT-RPCとの親和性も良い

• 記述が簡単、シンプルなメソッド

• 高機能、高速処理

• GoogleIO2011でも紹介
 Highly Productive GWT: Rapid Development with App Engine,
 Objectify, RequestFactory, and gwt-platform
                  2011.12.18 京都GTUG年忘れ勉強会資料
GWTとの親和性の良さとは?
     (GWT-RPCの制約に対応)
          Entity


                                               DataStore

         GWT-RPC                   Objectify
Client                   Server

   ・Client側でObjectifyのEntity定義が可能
   ・DTOなしにClient-DataStore間の授受
                   2011.12.18 京都GTUG年忘れ勉強会資料
記述が簡単
         ~EntityはPOJOで~

class Car implements IsSerializable {
   @Id private String vin;
   private String color;

    // アクセッサメソッドは必要
}


                   たったこれだけでいい!
              2011.12.18 京都GTUG年忘れ勉強会資料
シンプルなメソッド
•   get() ・・・IDによる検索
•   put() ・・・追加、修正
•   delete() ・・・削除
•   query() ・・・検索

Objectify ofy = ObjectifyService.begin();
ofy.put(new Car("123123", "red"));
Car c = ofy.get(Car.class, "123123");
ofy.delete(c);

                  2011.12.18 京都GTUG年忘れ勉強会資料
軽量かつ強力
           (以下抜粋)
• 設定ファイルなし(configファイルなど不要)
  (jarファイルを放り込むだけで動く)

• 軽量かつ高速(らしい)

• memcacheとの自動連携機能がある(らしい)

• EntityGroupの操作も容易

• Indexの制御も容易


                     その他できることが豊富
            2011.12.18 京都GTUG年忘れ勉強会資料
おちラボでの利用実績・小話
 □現状、学生には教え始めたところ
 (私自身も勉強中)

 □学生のウケはどうか?
  → ネットでの情報が少なすぎる。。。
    という不満の声がチラホラと


まだ1年経ってませんので判断は時期尚早かと。。

        2011.12.18 京都GTUG年忘れ勉強会資料
GWT+GAE with Objectifyを勧める理由(1/2)

□GAEが正式版としてリリース
 (無料枠で使える枠が少なくなった?)

     Googleの狙い(意図)は何か?



神は言っている、、、
ここ(GAEのサーバ)で処理をするんじゃないと、、、
           2011.12.18 京都GTUG年忘れ勉強会資料
GWT+GAE with Objectifyを勧める理由(2/2)

 そもそものDataStore(KVS)の思想
 → 従来のRDBの思想とは違う
   (非正規化の形で格納)

                                つまり、、、

「クライアント側にデータを渡してそこで処理しろ」
 →今までサーバ側(Java)でやってたことを
  クライアント側でやれ!
           2011.12.18 京都GTUG年忘れ勉強会資料
そこでGWT+Objectifyの出番ですよ

クライアント側の処理の増加
= JavaScriptでの処理の増加 (><)
◎GWTを利用すれば、、、
 複雑なコードの記述、オブジェクティブな構成
   Javaの記述のしやすさがカバー

◎Objectifyを利用すれば
→ 速やかにデータを授受できる
        2011.12.18 京都GTUG年忘れ勉強会資料
今日のまとめ
Objectify + GAEで2012年こそ
GWTの爆発的な普及が来る!




        2011.12.18 京都GTUG年忘れ勉強会資料
                                    よいお年を!

More Related Content

Similar to Gwt+objectifyでラクラクGAEアプリ開発

[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜Ryo Sasaki
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradlekimukou_26 Kimukou
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャShiroyagi Corporation
 
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なことTakao Sumitomo
 
gcpでデータ分析
gcpでデータ分析gcpでデータ分析
gcpでデータ分析Tomohiro Takase
 
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatchJun Inose
 
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルにHiroko Tamagawa
 
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockJJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockNobuhiro Sue
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門kashew_nuts
 
PythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEGPythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEGJun Okazaki
 
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所Kotaro Ogino
 
Isomorphic Architecture & Interface
Isomorphic Architecture & InterfaceIsomorphic Architecture & Interface
Isomorphic Architecture & InterfaceJxck Jxck
 
Google Apps Script 概要
Google Apps Script 概要Google Apps Script 概要
Google Apps Script 概要Y OCHI
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Takashi EGAWA
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
実践!Django + GraphQL 実装
実践!Django + GraphQL 実装実践!Django + GraphQL 実装
実践!Django + GraphQL 実装ssuseraf19bf
 
Google Web Toolkit(GWT)入門
Google Web Toolkit(GWT)入門Google Web Toolkit(GWT)入門
Google Web Toolkit(GWT)入門Yuki Naotori
 

Similar to Gwt+objectifyでラクラクGAEアプリ開発 (20)

[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
[Okta x Jamf合同新年会] Okta Workflowsによるノーコード業務改善 〜Jamf APIを使ってMac端末情報を自動収集してみよう〜
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
 
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
 
gcpでデータ分析
gcpでデータ分析gcpでデータ分析
gcpでデータ分析
 
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch
 
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
 
Azuremoku2_build_2018
Azuremoku2_build_2018Azuremoku2_build_2018
Azuremoku2_build_2018
 
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockJJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
PythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEGPythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEG
 
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
 
Isomorphic Architecture & Interface
Isomorphic Architecture & InterfaceIsomorphic Architecture & Interface
Isomorphic Architecture & Interface
 
Google Apps Script 概要
Google Apps Script 概要Google Apps Script 概要
Google Apps Script 概要
 
Google Product
Google ProductGoogle Product
Google Product
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
 
Scalaで実装するGC
Scalaで実装するGCScalaで実装するGC
Scalaで実装するGC
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
実践!Django + GraphQL 実装
実践!Django + GraphQL 実装実践!Django + GraphQL 実装
実践!Django + GraphQL 実装
 
Google Web Toolkit(GWT)入門
Google Web Toolkit(GWT)入門Google Web Toolkit(GWT)入門
Google Web Toolkit(GWT)入門
 

Recently uploaded

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Recently uploaded (9)

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

Gwt+objectifyでラクラクGAEアプリ開発