汎用APIサーバの構築
                  h_mori




13年3月24日日曜日
自己紹介
              • 森 英寿(プログラマ)
                 hidetoshi.mori
                 @h_mori

               SOICHA/TweetMe
               ATND暦/生存連絡



13年3月24日日曜日
お題


         • 簡単にBBSを作る



13年3月24日日曜日
開発の流れ
              1. APIインターフェースの定義
              2. サーバ環境の構築
              3. サーバモジュールの開発・デプロイ
              4. スタブの作成
              5. iOSクライアントの実装
              6. 結合テスト




13年3月24日日曜日
(´・ω・`)

               大変ですよね

         データを同期したいだけなのに・・・




13年3月24日日曜日
システムの特性

         • レコード単位でデータが独立している
         • トランザクション制御は不要
         • データはどんどん肥大化する


13年3月24日日曜日
RESTfulな設計
         •    ステートレスな通信

         •    HTTP操作をリソース単位のCRUDで扱う

              GET、POST、PUT、DELETEメソッド

              サーバの処理はFetch/Insert/Update/Deleteのみ




13年3月24日日曜日
例
         •    GET /records

         •    GET /records?limit=20&orderby=createdAt

         •    POST /records
                  BODY:{ "user":"h_mori", "message":"hello" }

         •    DELETE /records/00000001




13年3月24日日曜日
サーバ構築

              ビジネスロジックが無いのに

               サーバ開発は野暮だよね




13年3月24日日曜日
jsonengine
         • AppEngineで動作するJSONストレージ
         • スキーマレスDB
         • 設置はデプロイして設定するだけ
         http://code.google.com/p/jsonengine/



13年3月24日日曜日
メリット

         • サーバ開発が全く不要
         • NSJSONSerializationと親和性が高い


13年3月24日日曜日
デメリット
         • ドキュメントサイズに制限がある
              1ドキュメント1MB、500文字以下

         • ソートキー、不等号条件を同時に2つ以
              上指定できない

         • 認証が苦手(AppEngineでBASIC認証等)

13年3月24日日曜日
参考

         http://d.hatena.ne.jp/h_mori/20121126/1353887013
         https://github.com/hmori/JsonEngineTest




13年3月24日日曜日

汎用apiサーバの構築

  • 1.
    汎用APIサーバの構築 h_mori 13年3月24日日曜日
  • 2.
    自己紹介 • 森 英寿(プログラマ) hidetoshi.mori @h_mori SOICHA/TweetMe ATND暦/生存連絡 13年3月24日日曜日
  • 3.
    お題 • 簡単にBBSを作る 13年3月24日日曜日
  • 4.
    開発の流れ 1. APIインターフェースの定義 2. サーバ環境の構築 3. サーバモジュールの開発・デプロイ 4. スタブの作成 5. iOSクライアントの実装 6. 結合テスト 13年3月24日日曜日
  • 5.
    (´・ω・`) 大変ですよね データを同期したいだけなのに・・・ 13年3月24日日曜日
  • 6.
    システムの特性 • レコード単位でデータが独立している • トランザクション制御は不要 • データはどんどん肥大化する 13年3月24日日曜日
  • 7.
    RESTfulな設計 • ステートレスな通信 • HTTP操作をリソース単位のCRUDで扱う GET、POST、PUT、DELETEメソッド サーバの処理はFetch/Insert/Update/Deleteのみ 13年3月24日日曜日
  • 8.
    • GET /records • GET /records?limit=20&orderby=createdAt • POST /records BODY:{ "user":"h_mori", "message":"hello" } • DELETE /records/00000001 13年3月24日日曜日
  • 9.
    サーバ構築 ビジネスロジックが無いのに サーバ開発は野暮だよね 13年3月24日日曜日
  • 10.
    jsonengine • AppEngineで動作するJSONストレージ • スキーマレスDB • 設置はデプロイして設定するだけ http://code.google.com/p/jsonengine/ 13年3月24日日曜日
  • 11.
    メリット • サーバ開発が全く不要 • NSJSONSerializationと親和性が高い 13年3月24日日曜日
  • 12.
    デメリット • ドキュメントサイズに制限がある 1ドキュメント1MB、500文字以下 • ソートキー、不等号条件を同時に2つ以 上指定できない • 認証が苦手(AppEngineでBASIC認証等) 13年3月24日日曜日
  • 13.
    参考 http://d.hatena.ne.jp/h_mori/20121126/1353887013 https://github.com/hmori/JsonEngineTest 13年3月24日日曜日