SlideShare a Scribd company logo
1 of 62
Googleクラウドサービスを利用したシステム構築

        2012/03/21, DT Corp
         Naomichi Yamakita
アジェンダ


1. 調査の趣旨

2. Google App Engine

3. Google Apps & Google Apps Script

4. 総括
1.調査の趣旨
調査目的


-       Webサービスを構築する上で開発効率を向上させる手法を検討する

    -    開発効率とコスト削減を検討する上で、調査対象として挙がった技術は
         クラウドコンピューティング

    -    今回はクラウドの中でも特にスケーラビリティの高いGoogle App
         Engine、Google Appsを調査した
クラウドの定義


-   インターネットをベースとしたWebサービスの総称

-   ユーザはデータやソフトウェアの場所を意識せず、必要に応じて(クライア
    ントの環境に依存せず)サービスを利用することができる

-   無料、もしくは利用した分だけ支払う形態が多い
クラウドの種類。言葉自体は覚える必要なし


-       SaaS型(Software as a Service)

    -     ソフトウェアをWebサービスとして提供

    -     Google Apps、Microsoft Online Services、Evernote等

-       PaaS型(Platform as a Service)

    -     仮想化されたサーバ環境を提供

    -     Google App Engine、Amazon S3等

-       HaaS型(Hardware as a Service)

    -     インターネット経由のハードウェアやインフラを提供

    -     Amazon EC2等
Google App EngineとGoogle Appsの違い


-       Google App Engine

    -     Webアプリケーションを公開可能なホスティングサービス

-       Google Apps

    -     Gmail、カレンダー、ドキュメント等、Googleが提供するWebアプリ
          ケーションを独自ドメインで使える

    -     「Google Apps Script」を用いてアプリケーションの自動化や外部リ
          ソースとの連携が可能
2.Google App Engine
Google App Engine(GAE)とは


-       Googleが提供するクラウド環境

    -    GAE上でWebサービスを構築することができる

    -    類似サービスにはAmazon S3、Microsoft Azure等がある

-       対応言語はJava、Python、Go

-       開発者はGAEが提供するSDKを利用してサービスを構築する

    -    Eclipseを使うことで開発からテスト・デプロイまで一元して管理するこ
         とが可能

-       インスタンス時間ベースの課金

    -    リソース(CPUや転送量)を消費した分だけ課金
GAEを使うメリット


-       自社データセンタの運用コスト削減

    -    月間500万PV、500MBまでのストレージは無償で利用可能

    -    仮想化されたインフラを使うため、サーバの構築や運用が不要となる

    -    管理コンソール(負荷状況、ログビューワ等)が提供されている

-       サービスはGoogleが提供するインフラ上で稼働する

    -    Googleのインフラが持つパフォーマンスとスケーラビリティは世界最高
         レベル

    -    サービスに対するリクエストが増えると自動的にインスタンスを増や
         し、無制限にスケールアウトを行う
GAEの管理画面
GAEの管理画面


インスタンスの管理




   アプリケーションのバージョン管理




    データの管理



                         稼働状況のサマリー
パフォーマンスとインスタンスの管理
パフォーマンスとインスタンスの管理


  アプリケーションのパフォーマンスを制御




             アイドルインスタンスの最大数を設定




       新しいインスタンスを生成するまでの待機時間を設定
今までのスケールアウト技法


-       Web・アプリケーションサーバの負荷分散

    -        並列に台数を追加

-       DBサーバの負荷分散

    -        レプリケーション

         -    更新処理でマスタに負荷が集中する

    -        クラスタリング

         -    台数が増えるほど同期の処理コストが高まる

    -        パーティショニング

         -    プログラムのロジックが複雑になる
Googleのスケールアウト技術
Googleのスケールアウト技術
Googleのスケールアウト技術



             インスタンスは自動的に増える




  クライアントへの応答速度は変わらない
GAEが提供する機能


-       独自ドメイン

    -    既定ドメインは {service_name}.appsot.com

-       Googleアカウントを用いたユーザ認証

-       自動スケーリングと負荷分散

-       永続ストレージ(後述)

    -    ファイルシステムの概念がない

-       フル機能を兼ね備えた開発プラットフォーム

-       スケジューリングされたタスク
GAEのデメリット


-       既存のアプリケーションコードはGAE上で動作しない

    -    RDBMSが提供されていないため、データの管理はGoogleが提供する
         「BigTable」を使う

-       ソケット通信やスレッドは利用できない

-       懸念点

    -    顧客情報はクラウド上に預ける必要がある

    -    サービスが環境に依存する
クラウドサービス自体に障害が起こることも!
クラウドサービス自体に障害が起こることも!
クラウドサービス自体に障害が起こることも!
クラウドサービス自体に障害が起こることも!
クラウドサービス自体に障害が起こることも!
事態は改善しつつある
事態は改善しつつある
事態は改善しつつある
事態は改善しつつある
永続ストレージ BigTable


-       BigTableはGoogleが開発したストレージサービス

-       分散型KVS

-       強力なクエリエンジンやトランザクション機能を持つ

    -    クエリ操作はGQL(Google Query Language)を用いる

    -    GQLはテーブル間の結合を敢えてサポートしていない

-       GAE上で稼働する全てのアプリは1つのBigTableで管理されている

-       GFS(Google File System)の恩恵によってファイル欠損の可能性は極め
        て低い
2011年10月、Google Cloud SQLを発表
Google Cloud SQLの概要


-   MySQLとほぼ同等の機能を持つデータベースを提供

-   JDBCとDBアクセスAPIをサポート

-   2012年3月現在はプレビューリリースの段階
サービスを公開するまでの手順


1. 開発言語の選定

 ‣   今回はJava(JSP、Servlet)を使用
     JVM上でPHPやRubyを実行することも可能

2. 開発環境の構築

 ‣   Eclipse + Google Plugin for Eclipse(GAE SDK)

3. アプリケーションの開発

4. ソースのコンパイルとデプロイ

 ‣   Eclipseで一元管理
GAE/Jの開発環境(Eclipse)
GAE/Jの開発環境(Eclipse)




          ソースコンパイル後にGAEにデプロイ




App Engine SDK
GAE + HTML5でゲストブックアプリを構築してみた
GAE + HTML5でゲストブックアプリを構築してみた




              with Fbootstrap!
デモンストレーション


1. アプリケーションの作成

 ‣   https://appengine.google.com/

2. 開発環境の紹介

 ‣   サンプル: HelloWorld

 ‣   コンパイルとデプロイ、動作確認

 ‣   サンプル: コメント投稿

3. 管理画面の紹介
クラウドサービスの比較



サービス            メリット                  デメリット

        •無償利用可能                   •対応言語が少ない
        •開発環境が整備されている             •言語の機能制限がある
        •Google Data APIが利用可能     •他のサービスへの移植が困難


        •対応言語が多い
                                  •HA、監視機能が不足
        •RDBMSが使える
                                  •サービスが統合されていない
        •開発環境は任意


        •対応言語が多い
                                  •利用できるまでに時間がかかる
        •RDBMSが使える
                                  •開発環境が限定されている
        •VisualStudioや.netを使用可能
3.Google Apps & Google Apps Script
Google Appsとは


-       Googleが提供するWebサービスを独自ドメインで使える

-       基本無償で利用可能(機能制限あり)

-       スマートフォンや携帯にも対応

-       提供されるサービスの一例

    -    Gmail

    -    Googleカレンダー

    -    Googleドキュメント

    -    Googleサイト
Google Appsの管理画面




独自ドメインを設定(DNSにCNAMEを追加)
Google Apps Script(GAS)とは


-       Googleのサービスを自動化するサーバサイドJavaScript

    -    Excelのマクロに似ている

-       GASを利用してGoogle Appsを自動化できる

    -    Google Appsを使用していなくても利用可能

-       開発環境はWebブラウザ

    -    デバッガやロガーのほか、簡単なバージョン管理機能を持つ
GASでできること


-   業務の自動化

-   Googleサービスとサードパーティ製品の連動

-   スプレッドシートにおけるカスタム関数の作成

-   UIの作成
GASの言語仕様


-       言語はJavaScript。ただしブラウザオブジェクトは使えない

    -    Window、Event、Document等

-       サーバサイドJavaScriptのため、クロスドメイン制約がない

-       外部のWeb APIが使用可能

    -    XML、JSON、SOAP、OAuth等に対応

-       スプレッドシートの操作はVBAに似ている

-       イベントドリブンやcronのような定期実行が可能

-       JDBC API経由で外部RDBMSに接続可能
Hello World!
Hello World!



alert()関数は使えないため、GAS APIが
  提供するメッセージ表示関数を使う
Googleアカウントがあればすぐ利用可能
Googleアカウントがあればすぐ利用可能




    スプレッドシートの「ツール」から起動
GASの開発環境(エディタ)
JDBCライクにSQLを発行可能




            GASの開発環境(エディタ)
                        自動補完にも対応
GASの開発環境(GUIビルダー)
GASの開発環境(GUIビルダー)




 IDEのようにGUIを設計できる
GASが提供するAPI


                Base           Cache         Calendar


                Charts         Contacts      DocsList


                Document       Domain        Finance


                Gmail          Groups        Jdbc
 Default API
                Language       Lock          Mail


                Maps           Properties    Sites


                Sorp           Spreadsheet   UI


                UriFetch       Utilities     Xml


                UrlShortener   Prediction    Tasks
APIs Services
                AdSense
GASが提供するAPI


                Base                Cache                 Calendar
                               グラフを描画
                Charts               Contacts             DocsList

                                                    RDBMSに接続
                Document             Domain              Finance


                Gmail                Groups               Jdbc
 Default API
                           データの永続化
                Language             Lock                 Mail

                                                   スプレッドシートの操作
                Maps                 Properties         Sites


                Sorp                 Spreadsheet          UI


                UriFetch             Utilities            Xml
                                                           独自UIの設計
                                 HTTP通信を行う
                UrlShortener         Prediction           Tasks
APIs Services
                AdSense
                         短縮URLの生成
デモンストレーション


-   GUIの設計と外部Web APIの呼び出し

-   アンケートフォーム機能

-   JDBCを利用したデータ集計

-   Browsera APIを利用したキャプチャ管理アプリケーション
GASを利用したデータ集計


-       スプレッドシートが利用できるため、Webアプリケーションにおける売上管
        理や登録・利用状況といったデータ集計機能と非常に相性が良い

    -    データの表示とグラフ化

    -    並び替え、フィルタリング

    -    データのCSVダウンロードやExcel形式への変換

-       異なるアプリケーションのデータ集計機能を一元管理することができる

    -    開発にかかるコストが削減可能

-       Google Appsを使ったデータ集計は今後の開発で導入したい
外部連携でできること


-       TwitterやfacebookをはじめとしたWeb APIと連携可能

-       外部から取得したデータをGoogle Appsと連携させた様々なサービスが考
        えられる

-       例えば…

    -        Twitterのタイムラインから任意ユーザのアクティビティを取得

         -    スプレッドシートで集計

         -    自動更新されるBOTサイトを構築(Googleサイト)

    -        facebookのイベントをGoogleカレンダーに自動同期させる

    -        「いいね!」「Twitter」等のボタンのカウントを集計
4.総括
サービスを構築する上で苦労した点


-       Googleのサービスは常に進化している

    -    機能やドキュメントが不足気味

    -    Web APIの特質上、仕様変更が多い

-       GASに関しては開発環境が発展途上

    -    GUIビルダーは機能が中途半端

    -    ソースコードの自動補完が一部効かない

    -    リファクタリングしにくい

    -    モジュールの管理が面倒
Googleクラウドの良い点


-       導入が比較的容易

-       世界最高レベルのインフラを利用できる

    -    今後サーバエンジニアの役割は変わっていく(であろう)

-       GASは開発環境を問わない

-       Googleのサービスは常に進化している

    -    常に時代に適応した技術がすぐに使える

    -    機能が日々改善している

    -    単純に面白い
これからやってみたいこと


-   Google Data APIの活用

-   GASを利用したWebアプリケーションのデータマイニング

-   クラウド環境におけるWebアプリケーションの構築と運営

More Related Content

Viewers also liked

Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 SummerGoのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 SummerHirokazu Fukami
 
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Takuya Ueda
 
How to make GAE adapt the Great Firewall
How to make GAE adapt the Great FirewallHow to make GAE adapt the Great Firewall
How to make GAE adapt the Great FirewallHayato Yoshikawa
 
Ginとbindataで作るシングルバイナリWebApp
Ginとbindataで作るシングルバイナリWebAppGinとbindataで作るシングルバイナリWebApp
Ginとbindataで作るシングルバイナリWebAppAkihiko Horiuchi
 
[Golang] Go言語でサービス作ってる話
[Golang] Go言語でサービス作ってる話[Golang] Go言語でサービス作ってる話
[Golang] Go言語でサービス作ってる話株式会社YEBIS.XYZ
 
Java?ruby? そろそろgoで行ってみませんか?
Java?ruby? そろそろgoで行ってみませんか? Java?ruby? そろそろgoで行ってみませんか?
Java?ruby? そろそろgoで行ってみませんか? Kenichi Hoshi
 
Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践Takuya Ueda
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangYoshiki Shibukawa
 
Golangによるubicの試作
Golangによるubicの試作Golangによるubicの試作
Golangによるubicの試作kn1kn1
 
Goのシンプルさについて
GoのシンプルさについてGoのシンプルさについて
Goのシンプルさについてpospome
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 

Viewers also liked (11)

Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 SummerGoのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
 
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
 
How to make GAE adapt the Great Firewall
How to make GAE adapt the Great FirewallHow to make GAE adapt the Great Firewall
How to make GAE adapt the Great Firewall
 
Ginとbindataで作るシングルバイナリWebApp
Ginとbindataで作るシングルバイナリWebAppGinとbindataで作るシングルバイナリWebApp
Ginとbindataで作るシングルバイナリWebApp
 
[Golang] Go言語でサービス作ってる話
[Golang] Go言語でサービス作ってる話[Golang] Go言語でサービス作ってる話
[Golang] Go言語でサービス作ってる話
 
Java?ruby? そろそろgoで行ってみませんか?
Java?ruby? そろそろgoで行ってみませんか? Java?ruby? そろそろgoで行ってみませんか?
Java?ruby? そろそろgoで行ってみませんか?
 
Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
 
Golangによるubicの試作
Golangによるubicの試作Golangによるubicの試作
Golangによるubicの試作
 
Goのシンプルさについて
GoのシンプルさについてGoのシンプルさについて
Goのシンプルさについて
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 

Similar to Googleクラウドサービスを利用したシステム構築

WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebKensaku Komatsu
 
Google Apps Script活用事例 Tokyo GAS 2013春
Google Apps Script活用事例 Tokyo GAS 2013春Google Apps Script活用事例 Tokyo GAS 2013春
Google Apps Script活用事例 Tokyo GAS 2013春Junya Sato
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践真吾 吉田
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践de:code 2017
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Yuki Hattori
 
Web サーバー管理者のための Azure App Service 再入門
Web サーバー管理者のための Azure App Service 再入門Web サーバー管理者のための Azure App Service 再入門
Web サーバー管理者のための Azure App Service 再入門Osamu Monoe
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe APImaruyama097
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APImaruyama097
 
Smart store servlerless-20191030-40min
Smart store servlerless-20191030-40minSmart store servlerless-20191030-40min
Smart store servlerless-20191030-40minMicrosoft Azure Japan
 
2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~Takeshi Shinmura
 
Foss4g2012 MapGuide Hands-On
Foss4g2012 MapGuide Hands-OnFoss4g2012 MapGuide Hands-On
Foss4g2012 MapGuide Hands-OnOsamu Inoue
 
次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説kumo2010
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた日本マイクロソフト株式会社
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから真吾 吉田
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解Monaca
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1hideaki honda
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2Yushi_Takagi
 
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送Google Cloud Platform - Japan
 

Similar to Googleクラウドサービスを利用したシステム構築 (20)

WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWeb
 
Google Apps Script活用事例 Tokyo GAS 2013春
Google Apps Script活用事例 Tokyo GAS 2013春Google Apps Script活用事例 Tokyo GAS 2013春
Google Apps Script活用事例 Tokyo GAS 2013春
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発
 
Web サーバー管理者のための Azure App Service 再入門
Web サーバー管理者のための Azure App Service 再入門Web サーバー管理者のための Azure App Service 再入門
Web サーバー管理者のための Azure App Service 再入門
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe API
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline API
 
Smart store servlerless-20191030-40min
Smart store servlerless-20191030-40minSmart store servlerless-20191030-40min
Smart store servlerless-20191030-40min
 
2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~
 
Foss4g2012 MapGuide Hands-On
Foss4g2012 MapGuide Hands-OnFoss4g2012 MapGuide Hands-On
Foss4g2012 MapGuide Hands-On
 
次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
 
Google Product
Google ProductGoogle Product
Google Product
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2
 
XDev2010 WindowsAzure
XDev2010 WindowsAzureXDev2010 WindowsAzure
XDev2010 WindowsAzure
 
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
 

Recently uploaded

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~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...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (14)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~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...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

Googleクラウドサービスを利用したシステム構築

  • 2. アジェンダ 1. 調査の趣旨 2. Google App Engine 3. Google Apps & Google Apps Script 4. 総括
  • 4. 調査目的 - Webサービスを構築する上で開発効率を向上させる手法を検討する - 開発効率とコスト削減を検討する上で、調査対象として挙がった技術は クラウドコンピューティング - 今回はクラウドの中でも特にスケーラビリティの高いGoogle App Engine、Google Appsを調査した
  • 5. クラウドの定義 - インターネットをベースとしたWebサービスの総称 - ユーザはデータやソフトウェアの場所を意識せず、必要に応じて(クライア ントの環境に依存せず)サービスを利用することができる - 無料、もしくは利用した分だけ支払う形態が多い
  • 6. クラウドの種類。言葉自体は覚える必要なし - SaaS型(Software as a Service) - ソフトウェアをWebサービスとして提供 - Google Apps、Microsoft Online Services、Evernote等 - PaaS型(Platform as a Service) - 仮想化されたサーバ環境を提供 - Google App Engine、Amazon S3等 - HaaS型(Hardware as a Service) - インターネット経由のハードウェアやインフラを提供 - Amazon EC2等
  • 7. Google App EngineとGoogle Appsの違い - Google App Engine - Webアプリケーションを公開可能なホスティングサービス - Google Apps - Gmail、カレンダー、ドキュメント等、Googleが提供するWebアプリ ケーションを独自ドメインで使える - 「Google Apps Script」を用いてアプリケーションの自動化や外部リ ソースとの連携が可能
  • 9. Google App Engine(GAE)とは - Googleが提供するクラウド環境 - GAE上でWebサービスを構築することができる - 類似サービスにはAmazon S3、Microsoft Azure等がある - 対応言語はJava、Python、Go - 開発者はGAEが提供するSDKを利用してサービスを構築する - Eclipseを使うことで開発からテスト・デプロイまで一元して管理するこ とが可能 - インスタンス時間ベースの課金 - リソース(CPUや転送量)を消費した分だけ課金
  • 10. GAEを使うメリット - 自社データセンタの運用コスト削減 - 月間500万PV、500MBまでのストレージは無償で利用可能 - 仮想化されたインフラを使うため、サーバの構築や運用が不要となる - 管理コンソール(負荷状況、ログビューワ等)が提供されている - サービスはGoogleが提供するインフラ上で稼働する - Googleのインフラが持つパフォーマンスとスケーラビリティは世界最高 レベル - サービスに対するリクエストが増えると自動的にインスタンスを増や し、無制限にスケールアウトを行う
  • 12. GAEの管理画面 インスタンスの管理 アプリケーションのバージョン管理 データの管理 稼働状況のサマリー
  • 14. パフォーマンスとインスタンスの管理 アプリケーションのパフォーマンスを制御 アイドルインスタンスの最大数を設定 新しいインスタンスを生成するまでの待機時間を設定
  • 15. 今までのスケールアウト技法 - Web・アプリケーションサーバの負荷分散 - 並列に台数を追加 - DBサーバの負荷分散 - レプリケーション - 更新処理でマスタに負荷が集中する - クラスタリング - 台数が増えるほど同期の処理コストが高まる - パーティショニング - プログラムのロジックが複雑になる
  • 18. Googleのスケールアウト技術 インスタンスは自動的に増える クライアントへの応答速度は変わらない
  • 19. GAEが提供する機能 - 独自ドメイン - 既定ドメインは {service_name}.appsot.com - Googleアカウントを用いたユーザ認証 - 自動スケーリングと負荷分散 - 永続ストレージ(後述) - ファイルシステムの概念がない - フル機能を兼ね備えた開発プラットフォーム - スケジューリングされたタスク
  • 20. GAEのデメリット - 既存のアプリケーションコードはGAE上で動作しない - RDBMSが提供されていないため、データの管理はGoogleが提供する 「BigTable」を使う - ソケット通信やスレッドは利用できない - 懸念点 - 顧客情報はクラウド上に預ける必要がある - サービスが環境に依存する
  • 30. 永続ストレージ BigTable - BigTableはGoogleが開発したストレージサービス - 分散型KVS - 強力なクエリエンジンやトランザクション機能を持つ - クエリ操作はGQL(Google Query Language)を用いる - GQLはテーブル間の結合を敢えてサポートしていない - GAE上で稼働する全てのアプリは1つのBigTableで管理されている - GFS(Google File System)の恩恵によってファイル欠損の可能性は極め て低い
  • 32. Google Cloud SQLの概要 - MySQLとほぼ同等の機能を持つデータベースを提供 - JDBCとDBアクセスAPIをサポート - 2012年3月現在はプレビューリリースの段階
  • 33. サービスを公開するまでの手順 1. 開発言語の選定 ‣ 今回はJava(JSP、Servlet)を使用 JVM上でPHPやRubyを実行することも可能 2. 開発環境の構築 ‣ Eclipse + Google Plugin for Eclipse(GAE SDK) 3. アプリケーションの開発 4. ソースのコンパイルとデプロイ ‣ Eclipseで一元管理
  • 35. GAE/Jの開発環境(Eclipse) ソースコンパイル後にGAEにデプロイ App Engine SDK
  • 38. デモンストレーション 1. アプリケーションの作成 ‣ https://appengine.google.com/ 2. 開発環境の紹介 ‣ サンプル: HelloWorld ‣ コンパイルとデプロイ、動作確認 ‣ サンプル: コメント投稿 3. 管理画面の紹介
  • 39. クラウドサービスの比較 サービス メリット デメリット •無償利用可能 •対応言語が少ない •開発環境が整備されている •言語の機能制限がある •Google Data APIが利用可能 •他のサービスへの移植が困難 •対応言語が多い •HA、監視機能が不足 •RDBMSが使える •サービスが統合されていない •開発環境は任意 •対応言語が多い •利用できるまでに時間がかかる •RDBMSが使える •開発環境が限定されている •VisualStudioや.netを使用可能
  • 40. 3.Google Apps & Google Apps Script
  • 41. Google Appsとは - Googleが提供するWebサービスを独自ドメインで使える - 基本無償で利用可能(機能制限あり) - スマートフォンや携帯にも対応 - 提供されるサービスの一例 - Gmail - Googleカレンダー - Googleドキュメント - Googleサイト
  • 43. Google Apps Script(GAS)とは - Googleのサービスを自動化するサーバサイドJavaScript - Excelのマクロに似ている - GASを利用してGoogle Appsを自動化できる - Google Appsを使用していなくても利用可能 - 開発環境はWebブラウザ - デバッガやロガーのほか、簡単なバージョン管理機能を持つ
  • 44. GASでできること - 業務の自動化 - Googleサービスとサードパーティ製品の連動 - スプレッドシートにおけるカスタム関数の作成 - UIの作成
  • 45. GASの言語仕様 - 言語はJavaScript。ただしブラウザオブジェクトは使えない - Window、Event、Document等 - サーバサイドJavaScriptのため、クロスドメイン制約がない - 外部のWeb APIが使用可能 - XML、JSON、SOAP、OAuth等に対応 - スプレッドシートの操作はVBAに似ている - イベントドリブンやcronのような定期実行が可能 - JDBC API経由で外部RDBMSに接続可能
  • 47. Hello World! alert()関数は使えないため、GAS APIが 提供するメッセージ表示関数を使う
  • 49. Googleアカウントがあればすぐ利用可能 スプレッドシートの「ツール」から起動
  • 51. JDBCライクにSQLを発行可能 GASの開発環境(エディタ) 自動補完にも対応
  • 54. GASが提供するAPI Base Cache Calendar Charts Contacts DocsList Document Domain Finance Gmail Groups Jdbc Default API Language Lock Mail Maps Properties Sites Sorp Spreadsheet UI UriFetch Utilities Xml UrlShortener Prediction Tasks APIs Services AdSense
  • 55. GASが提供するAPI Base Cache Calendar グラフを描画 Charts Contacts DocsList RDBMSに接続 Document Domain Finance Gmail Groups Jdbc Default API データの永続化 Language Lock Mail スプレッドシートの操作 Maps Properties Sites Sorp Spreadsheet UI UriFetch Utilities Xml 独自UIの設計 HTTP通信を行う UrlShortener Prediction Tasks APIs Services AdSense 短縮URLの生成
  • 56. デモンストレーション - GUIの設計と外部Web APIの呼び出し - アンケートフォーム機能 - JDBCを利用したデータ集計 - Browsera APIを利用したキャプチャ管理アプリケーション
  • 57. GASを利用したデータ集計 - スプレッドシートが利用できるため、Webアプリケーションにおける売上管 理や登録・利用状況といったデータ集計機能と非常に相性が良い - データの表示とグラフ化 - 並び替え、フィルタリング - データのCSVダウンロードやExcel形式への変換 - 異なるアプリケーションのデータ集計機能を一元管理することができる - 開発にかかるコストが削減可能 - Google Appsを使ったデータ集計は今後の開発で導入したい
  • 58. 外部連携でできること - TwitterやfacebookをはじめとしたWeb APIと連携可能 - 外部から取得したデータをGoogle Appsと連携させた様々なサービスが考 えられる - 例えば… - Twitterのタイムラインから任意ユーザのアクティビティを取得 - スプレッドシートで集計 - 自動更新されるBOTサイトを構築(Googleサイト) - facebookのイベントをGoogleカレンダーに自動同期させる - 「いいね!」「Twitter」等のボタンのカウントを集計
  • 60. サービスを構築する上で苦労した点 - Googleのサービスは常に進化している - 機能やドキュメントが不足気味 - Web APIの特質上、仕様変更が多い - GASに関しては開発環境が発展途上 - GUIビルダーは機能が中途半端 - ソースコードの自動補完が一部効かない - リファクタリングしにくい - モジュールの管理が面倒
  • 61. Googleクラウドの良い点 - 導入が比較的容易 - 世界最高レベルのインフラを利用できる - 今後サーバエンジニアの役割は変わっていく(であろう) - GASは開発環境を問わない - Googleのサービスは常に進化している - 常に時代に適応した技術がすぐに使える - 機能が日々改善している - 単純に面白い
  • 62. これからやってみたいこと - Google Data APIの活用 - GASを利用したWebアプリケーションのデータマイニング - クラウド環境におけるWebアプリケーションの構築と運営

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. ・今回主に調査したのはGoogle Apps\n\n
  5. ・今回主に調査したのはGoogle Apps\n\n
  6. ・EC2は従来のレンタルサーバ同様SSHでログイン可能。違いは時間単位で課金が発生する点。\n・今回主に調査したのはGoogle Apps\n\n\n
  7. \n\n
  8. \n
  9. \n
  10. ・SSHでのログインや、アプリケーションのインストールはできない。\n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. ・障害が起こるとこちらでは何もできない可能性も。\n
  18. ・障害が起こるとこちらでは何もできない可能性も。\n
  19. ・障害が起こるとこちらでは何もできない可能性も。\n
  20. ・障害が起こるとこちらでは何もできない可能性も。\n
  21. ・障害が起こるとこちらでは何もできない可能性も。\n
  22. ・GFS(分散ファイルシステム)はファイルを複数のラックにコピーすることでサーバ障害による欠損を極限まで低下させている\n
  23. ・GFS(分散ファイルシステム)はファイルを複数のラックにコピーすることでサーバ障害による欠損を極限まで低下させている\n
  24. ・GFS(分散ファイルシステム)はファイルを複数のラックにコピーすることでサーバ障害による欠損を極限まで低下させている\n
  25. ・GFS(分散ファイルシステム)はファイルを複数のラックにコピーすることでサーバ障害による欠損を極限まで低下させている\n
  26. \n
  27. ・試しに申し込みしてみたが、インスタンスの動作が不安定なので今回は見送った。\n
  28. ・PHPの動作は完全互換でない\n
  29. \n
  30. ・左ペインに「App Engine SDK」がある\n
  31. ・アプリケーションに独自ドメインcloud.nekonyandayo.comを割り当てた\n・今回はゲストブックアプリケーションを作成したのでドメインはguestbook.cloud.nekonyandayo.comとした\n
  32. \n
  33. \n
  34. ・自社メールサーバを独自ドメインを使用してGmailに置き換えることも可能。自社でメールサーバを運用する必要がなくなる。\n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. ・GUIビルダーでは生成できない機能もあるため、まだ開発途上といった感じ。\n実際にはエディタで開発する方が現実的\n
  43. \n
  44. ・Browsera API Alphaを使用。データはXMLで返されるが、GASのXML Serviceで解析可能\n http://www.browsera.com/api_help/test_runs\n
  45. ・PHPを知らなくてもデータ集計機能が作れる\n
  46. \n
  47. \n
  48. ・様々なAPIが用意されてるとは言え、JavaやPHPのような柔軟性はまだ無い。その点を補う上で外部APIは使える\n・まだまだ利用者が少ないため、公式ドキュメント以外で探したい機能の文書が見つからないことがある(iOS SDKが出始めた頃と同じ)\n・仕様変更が多いため、Webで文献を見つけてもその通り動かないことは多々ある\n
  49. \n
  50. \n