ホーム > タグ > gae

gae

[勉強会]DevLOVE HangarFlightのメモ

気がつけば先々週の出来事ですが,, 青山オラクルセンターで開催されましたDevLoveのイベントに参加してきましたので、参加セッション3つのメモを備忘録としてまとめておきます。
*参加セッション
+【闇】「RIAとユーザーエクスペリエンス(闇編)」
+【開発】「コードで学ぶ ドメイン駆動設計 入門
+【アーキテクチャ】「Google App Engineの勘所」
*RIAとユーザーエクスペリエンス(闇編)
-@take3000 – http://twitter.com/#!/take3000 – http://classmethod.jp/
-FlexやSilverlight, AjaxなどのRIAな技術が一般的になりつつあり、ユーザが求めるUIの質もあがってきている。
-RIA開発でスピード感のある開発ができることになって、コストを圧縮できるようになってきた。でも未だにユーザエクスペリエンスが軽視されていてそれにコストを費やすということをしていないのが現状。
-ユーザエクスペリエンス(UX)とは「速く」「間違わない」ということ
-UXは設計の段階で専門の知識を持った人(デザイナとか)に考えてもらう必要がある。
-UXは戦略にも活かせる。例えばyouRoomはバージョンアップによって有料会員登録したくなるようなUIになった。
*コードで学ぶドメイン駆動設計 入門
-@j5ik2o – http://twitter.com/#!/j5ik2o
-[DDD][Java] DEVLOVE HangarFlight で話したスライド&ソースコードCommentsAdd Star – http://d.hatena.ne.jp/j5ik2o/20101221/1292934554
ドメインとは、属性だけではなく振る舞いを持っている。また、不変と可変を明確にすることでバグの少ないコード設計ができる。・・・というところまで理解したのですが、詳しくはまだ正直DDDとはということを理解しきれていません>< ソースコードを公開してくださったので、そちらを実際に呼んで消化してから別の機会にまとめたいと思います。。
*Google App Engineの勘所
-@shin1ogawa – http://twitter.com/#!/shin1ogawa – http://www.topgate.co.jp/
-Google App Engineで動いているウェブサービス
–2009衆院選公式サイト
–[google:Buyなう]
–[google:スポーツSNS LaBOLA]
–[google:Chan-Toru beta]
–mixi系ソーシャルアプリ
**勘所
-基本ファイルアクセスやスレッド処理、ソケットの使用は禁止
-JDK内でも使用できないライブラリもある(AWTとか使えない)
-複数のVMで動くことが前提なので、それを意識したコードを書かないといけない
-依存モジュール内でも制約がある
-JDOやJPAを勉強するとGAEのデータストアを扱えるというのはGoogle様による罠。だいたいの人がハマってしまう。「インデックス」と「エンティティグループ」という考えをまず理解することが大事。(GAEのデータストアはBigTableの上にデータストアという概念を構築したもの)
-GAEを金を払えさえすれば、自由に使えるという訳ではない。「分単位」の制限はあるし、API制限もある。
-Slim3というデファクトスタンダードなフレームワークがある。
-HTMLは静的で扱い、JSONやGWTでデータを返すのが一般的。
-一定の確率で失敗するのはGAEの仕様である。
–1/1000の確率でデータアクセスに失敗する。
–コントローラの大元などでハンドリングしてあげる。
–GAEでWebサービスの調子が悪くなっているのはGAEが落ちているんじゃなくてアプリが落ちていると考える。
**お金の儲け方
-Googleアプリケーションのプラットフォーム
–Google Apps(300万企業ユーザが使用)
–Google Apps Marketplace(企業向け)
—100$で開発者登録ができる(iPhoneアプリ開発と同じ感じ)
—Apps拡張アプリを開発して販売できる
—アプリ売上の8割が利益
–Chrome Marketplace(コンシューマー向け)
–Chrome Web Store
-エンドユーザーに近いマーケットが沢山ある。
**狙いにくいところ
-特定社内向け業務アプリの提案
–クラウド、GAEの説明が大変。広い層をターゲットにする方が向いている。
**チャンスを活かそう
-生産性の高さがハンパない
–だからこそ敷居を超えれば簡単。アプリケーション開発に集中できる。
-スモールスタートしやすい。
-自動スケールアウト
-GAEはGoogle Apps, Marketplace向けアプリ開発との親和性が高い
*Togetterのまとめ
-2010/12/18 DEVLOVE HangarFlight – Winter Sortie – [http://togetter.com/li/80353]

Rails初心者でもたぶん動かせるRails on GAEの環境設定(for MacOSX)

いやーRails初心者の僕がとんでもなくはまったので備忘録としてまとめておきます。
以下、Macの標準の開発環境からGAEでRailsが動くまで。

  1. Google App Engineのアカウント取得、アプリケーション名の登録
    1. ここからGoogle App Engine 専用のアカウントを取得する。
    2. 新規アプリケーションを作成し、アプリケーションIDを発行してもらう。
  2. Railsのアップデート(2.3.3取得)
    1. rails_on_gaeプラグインのテンプレートを使用する場合、Railsのバージョンは2.3でなければいけないので、古ければバージョンアップする。
      1. gemをupdateしてからrailsのインストール。

        sudo gem update
        sudo gem install rails

      2. バージョンの確認

        rails -v
        => Rails 2.3.3 とでればOK
         

  3. MacのデフォルトのJavaのバージョンの変更
    1. Javaのバージョンが標準だと、J2SE5.0(32bit)なので、J2SE6.0(64bit)に変更します。
    2. アプリケーション=>ユーティリティ=>Java Preferences.appを開き、Javaアプリケーションで使用するJavaのバージョンの最優先するバージョンをJ2SE6.0(64bit)に変更。
  4. jrubyの取得
    1. MacPorts経由でjrubyのインストール。MacPortsがインストールされていない場合はこちらをご参考に(http://d.hatena.ne.jp/hakobe932/20061208/1165646618)

      sudo port install jruby
      jruby -v
      => jruby 1.3.1 (ruby 1.8.6p287) (2009-07-25 6586) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_13) [x86_64-java] とでればOK

  5. warblerの取得
    1. warファイルを作成するツールwarblerをインストールします。

      sudo jruby -S gem install warbler

  6. Google App Engine java sdkの取得
    1. 適当なディレクトリにSDKを配置する

      rkdir tmp  # 適当にtmpディレクトリなどを作る
      cd tmp
      wget http://googleappengine.googlecode.com/files/appengine-java-sdk-1.2.1.zip
      unzip appengine-java-sdk-1.2.1.zip 

    2. binディレクトリにパスを通しておく
      1. ユーザのルートディレクトリにて.zshrcファイルを開き、以下のテキストを記述する

        export GAEJ_HOME=tmp/appengine-java-sdk-1.2.1
        export PATH=$PATH:$GAEJ_HOME/bin

      2. ユーザのルートディレクトリにて以下のコマンドを実行。

        source /.zshrc

  7. Railsアプリの作成
    1. アプリケーションを作成する適当なワークスペースへ移動し、以下のコマンドを実行する。アプリケーション名はGoogle App Engineの管理画面で作成したアプリケーションIDを指定する。

      rails アプリケーション名 -m http://gist.github.com/103256.txt

    2. ここでひとつ、作成された アプリケーションルート/config/enviroment.rbファイルの一行目に以下の内容を記述。これがないとエラーがでちゃいます。

      require ‘lib/appengine-api.jar’
      ….

  8. warファイルの作成
    1. アプリケーションルートで以下のコマンドを実行し、warファイルを作成する。

      jruby -S warble war

    2. すると アプリケーションルート/tmp にwarファイルが作成されます。中身は特に何も入ってないけど、実行すればRailsのホーム画面はでますので確認はできます。
  9. 開発環境での実行
    1. 早速からっぽのアプリケーションを開発環境で動作確認してみます。以下のコマンドを実行します。

      dev_appserver.sh tmp/war

    2. 実行するとデフォルトでは http://0.0.0.0:8080/ で動いているかと思います。確認してみましょう。
  10. GAE環境での実行
    1. 開発環境で動作確認ができたら、GAEの環境にデプロイしてみます。以下のコマンドを実行します。

      appcfg.sh update tmp/war

以上で、僕の環境ではなんとか動きました。後は、中身を思いのままに実装するだけです。また、今回のRails on GAEの設定はすべてあんどうさんのサイトを参考に作成しました。大変助かりました。ありがとうございます!
http://d.hatena.ne.jp/technohippy/20090428#1240939733
http://d.hatena.ne.jp/technohippy/20090409/1239217083
http://gihyo.jp/dev/serial/01/ruby/0016      # あんどうさんが書かれたgihyoの記事です。

Home > Tags > gae

Search
Feeds
Meta

Return to page top