GCPUG Shonan feat.GAE Vol.1 その2

GCPUG ShonanでGAEシリーズの1回目が開催されました。その2 GASとGAEを書きました。

2016/3/2

個人的な話になりますが、GCPUG Shonanの管理者をやらせて頂いています。
今回は、Google App Engine シリーズの1回目ということで、茅ヶ崎で開催しました。

3つのセッションの内、2つ目を書いてみたいと思います。

登壇者

@soundtrickerさん です。

Google Developer Expertの一人です。

GCPのサービスもかなり数が増えましたが、その殆どを扱える凄い方です。

特にGoogle Apps Script(GAS)については日本で右に出る人はいません。間違いなくいません。

そして、今回のテーマでもある、Google App Engineについてもかなり早い段階から触っており、その知識は圧巻です。

というわけで、僕自身もGAEとGASを経由してSpreadsheetをクライアントとして使うことが多いんですが、そんな感じの内容を紹介して頂きたいと思いお願いしてみました。

スライド

スライドは、こちらです。

月に何回登壇しているかわからないくらい、色々なところで登壇している様な気がしますが、毎回しっかり作り込んでくれます。

しかも、僕がお願いしていた時に考えていたレベルを遥かに超えていました。
ありがとうございます!

内容について

さて、前置きはこの辺にして、内容について概要を記載してみたいと思います。

GASについて

前半は、GASについて簡単に紹介して頂きました。

前のセッションでは、簡単に初められるGAEを紹介して頂いていましたが、ここでは、ほぼ3行(というか実質1ステップ)で、メール送信が出来るというGASの真骨頂から入りました。

このあたりは、本当にすごいですね。Excelマクロの変りとして始まったApps Scriptですが、Googleのサービスと簡単に繋がるということで、これだけ可能性が広がるのは凄いと思います。

そして、

  • 全てブラウザで開発が出来る(コード補完ができるエディタも提供されている)
  • 完全無料

と言ったあたりが大きな特徴です。

そんなGASですが、もちろん弱みも有ります。

  • 実行速度が遅い

全体的に実行速度が遅いGASですが、間違えないで欲しいのは、凄く遅い場合には、殆どがロジックのせいです。

GASは、Spreadsheetの1セルを操作するのに、一つのAPIを呼び出します。このあたりは、GAEのAPI呼び出しにも共通するところなのですが、APIの呼び出しを増やせば劇的に遅くなります。

ほとんどのAPIには、それを考慮してまとめて処理をしてくれるメソッドも用意されているので、極力API呼び出しを減らしましょう。

GAEとGASの連携(OAuth2)

この章は、@soundtrickerさんの凄さは大体知っているつもりだった僕ですが、これだけの隠し玉を持っているとは思っていませんでした。

基本的には、

  • GASで、Get、Postのリクエストを受けられるようにして、GAEから呼び出す。
  • GAEで、Get、Postのリクエストを受けられるようにして、GASから呼び出す。

要は、それぞれノーガードのエンドポイントを作ってやり取りすると言うものです。

もともと、GASは、非常に長いURLが設定されるので、まあそんなに知らない人がアクセスすることはないでしょう。

GAEもそういったURLにしてしまうのがお手軽ですね。

そうは言っても、もう少しセキュリティに気を使わないとお客さんには提供できないですよね。

そんな時は、Googleもサービス同士という利点でしょうか、GAS、GAEそれぞれで、access_tokenを使う方法があるそうです。

スライドの P31 からです。これは、初めて知りました。

なかなかお手軽な感じで、書き方さえ知っていれば行けそうです。

GAEとGASの連携(Execution API)

昨年、GASに Excecution API というものが増えました。

この機能については、以前@soundtrickerさん がQiitaに詳しく書いているのでそちらで。

スライドにもありますが、GAEからの呼び出しでも、普通にOAuth2認証が必要になるので、結構面倒です。あまりオススメは出来ないですね。

もちろん、そのあたりのコーディングが苦ではない人には、とても便利に使える機能です。

Pub/Sub

そして、 Cloud Pub/Sub を使って連携する方法。

僕は、Pub/Subを使ったことがないので、コメントのしようがありませんが、便利そうです!(思います。きっと。)

こちらも、詳しくは、@soundtricker さんのQiitaの記事があるので、こちらをご参照下さい。

その他の連携

もし、GoogleのAPIをお気軽に使いたい程度であれば、ほとんどの Googleのサービスには、APIが用意されています。

例えば、GAEからのGmailを使ったメール送信をお気軽にやりたい。ということであれば、Gmail APIを呼び出すことで使えます。

GASから、Datastoreを使いたい。ということであれば、Cloud Datastoreで直接使うことも出来ます。

そして、最近発表された、Cloud Functions を使うという選択肢もあります!

というわけで、GASは、とても手軽で無料で、便利なのですが、他の選択肢もあるよ。というお話でした。

GAE便利機能

最後に、GAEの便利機能を紹介いただきました。

基本的にPython専用のですが、最初に紹介されている app identify は、他の言語でも相当する機能があり、使い所がありそうです。

最後に

@soundtrickerさん GCPUG Shonanでは、前回は、Dockerについてのセッションを対応頂き、2回目の登壇ありがとうございました。

今のところ、全てで登壇頂いています。本当に、お忙しい中毎回クオリティの高いセッションをありがとうございます。

これからもよろしくお願いします!

By nuki_pon

Related articles

--- AD ---