狠狠撸

狠狠撸Share a Scribd company logo
骋础厂と骋础贰
?その他GAEをだらだらと?
お前、谁よ
GCPUG Shonan GAS & GAE
何やってる?
GCPUG Shonan GAS & GAE
http://www.kabuku.co.jp
GCPUG Shonan GAS & GAE
GCPUG Shonan GAS & GAE
GCPUG Shonan GAS & GAE
アジェンダ
1. 今日のゴール
2. 私とGAEとGAS
3. GASとは
4. GAEとGASの連携
5. 別の連携
6. 時間があったら????GAEのTips
今日のゴール
? GASを知らない人
– GASをとりあえず知る
– 帰ったら触る
? GAEを知らない人
– GASをとりあえず知る
– 帰ったら触る
? どっちも知ってる人
– 連携する利点を知る
? もう連携してる人
– 違う解を知る
ゴール 私と GAS 連携 別 その他
私と
GASと
GAE
私とGAE
? GAEとは2009年07月ゴロから
–GAE/Pが2008年4月(preview)
–GAE/Jが2009年4月
? 言語とフレームワークとなんか色々
– Java -> サーバ構築 -> テスター & VBA -> C(CGI) -> SAStruts+Maven+Jenkins -> GAE ->
GWT + JS -> slim3 -> GAS(expert) -> Android -> CoffeeScript+Grunt -> AngularJS -> 営業
-> AWS+chef+Ansible -> Go -> TypeScript+CircleCI+Docker ->
GCP + Docker -> Python
※プロジェクトじゃなくてマジで触ってたもの限定
ゴール 私と GAS 連携 別 その他
つまり
雑食
私とGAS
? GASとは2010年12月ゴロから
– GASは2009年8月
– 一応2014年からGDE
– 正直最近GASよりもGCPのほうが(????????
? 2013年10月ぐらいからExpert
? 幾つかのライブラリーを出してる
ゴール 私と GAS 連携 別 その他
骋础厂とは?
GCPUG Shonan GAS & GAE
GAS
? Google Apps Script
–通称GAS、ガス、ギャス
–海外圏ではApps Script
? Googleが提供する
– サーバサイドスクリプト実行環境 & 開発ツール
? 2009年発
? 開発言語:JavaScript
ゴール 私と GAS 連携 別 その他
使
い
所
GASの使い所
? 小さいタスクの自動化
–定期レポート
–マスターデータメンテ
? DBは触れないユーザでもSpreadsheetsはされる
? Spreadsheetsのほうで集計して別の場所に入れる
–小さい運用フロー
? 管理画面作るほどじゃないけど…
? 軽いノリでなんかを作る
ゴール 私と GAS 連携 別 その他
特
徴
GASの特徴
? 簡単
–3行でメール送信
–数行でGoogleサービス連携
ゴール 私と GAS 連携 別 その他
function myFunction() {
MailApp.sendEmail("gcpug@example.com", "テストタイトル", "本文");
}
function myFunction() {
var data = SpreadsheetApp.openById(id).getSheetByName("顧客名簿
").getRange("A2:D2").getValues()[0];
var email = data[0];
var name = data[1];
var subject = data[2];
var body = data[3];
MailApp.sendEmail(email, subject, body.replace(/name/mg, name));
}
GASの特徴
? 開発環境不要
–すべてブラウザ上で開発可能
? https://script.google.com
ゴール 私と GAS 連携 別 その他
GASの特徴
? 無料
–まじで無料
–メール送信数など一部制限あり
–逆に金で解決は無理
ゴール 私と GAS 連携 別 その他
GASの特徴
? 実行スピードは速くない
–書き方によってかなり変わる
? 70倍以上違う時もある
? 最近は開発環境側で指摘してくれる
–最大6分しか動かない
–普通のJSのスピード間隔じゃないほうが良い
ゴール 私と GAS 連携 別 その他
GASの特徴
? 自動化
– 時間指定やイベントドリブンで動かせる
? 時間指定
? 定期実行
– 分毎、日毎、週毎(曜日指定)、月毎
? Spread Sheetsの表示/更新
? Google Formに回答
? Google Sitesのリンク
? Google Docsを表示
? メニューからクリック
– UIも持てる
ゴール 私と GAS 連携 別 その他
デ
モ
骋础厂と骋础贰
連携
連携
? 骋础厂と骋础贰は幾つかの方法で連携できる
–1
–2
–3
–4
ゴール 私と GAS 連携 別 その他
HTTPS ( &OAuth2)
HTTPS
Execution API
Log Subscribe
HTTPS
( &OAuth2)
? GASからGAE
–UrlFetchApp を利用してHTTP経由で送る
–GASからGAEは基本この方法だけ
ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)
function myFunction() {
UrlFetchApp.fetch("https://app-id.appspot.com", {
method: "POST",
contentType: "application/json",
payload: {
"key": "value"
}
});
}
? GASからGAE
–認証する場合はOAuth Tokenをつける
–GAEはoauthモジュールで認証
? Application(GAS側)を限定するならclient-idで絞
る
ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)
? GASからGAE with OAuth2
– GAS側コード
– Session.getActiveUser()でoauth scopeを設定
– ScriptApp.getOAuthToken()でtoken取得
ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)
? GASからGAE with OAuth2
– GAE側コード
– OAuth2認証を使う
ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)
HTTPS
? GAEからGAS 1
–GAS側にHTTPで呼び出す口を作る
ゴール 私と GAS 連携 別 その他HTTPS
? GAEからGAS 1
– GAE側からurlfetchで呼びだす
– 認証は…(????????
? 方法がないので基本secret keyでやる
?
ゴール 私と GAS 連携 別 その他HTTPS
? GAEからGAS 1
– 認証
? 厳密にはGAS->GAE同様の方法もある
GAS側
?
ゴール 私と GAS 連携 別 その他HTTPS
? GAEからGAS 1
– 認証
? 厳密にはGAS->GAE同様の方法もある
GAE側
?
ゴール 私と GAS 連携 別 その他HTTPS
Execution
API
? GAEからGAS
–GASのExecution APIを利用する
? 資料作るのがアレだったので昔のBlogを…
– http://qiita.com/soundTricker/items/1bcfc5c9e80d29a7
ae4b
? Execution APIではService Accountが使えないの
で結構めんどいかも
ゴール 私と GAS 連携 別 その他Execution
API
GCPUG Shonan GAS & GAE
? GAE Pub/Sub GAS
–単純にGAEの何かしらをふっくしてGASで
処理したいのであれば Pub/Subを使うパター
ンも有る
–GAE -> (Log) -> Cloud Logging -> Pub/Sub -
> GASのパターン
–適用例
? BigQueryにデータ突っ込む
? エラーログをSlackに流す
ゴール 私と GAS 連携 別 その他
? GAE Pub/Sub GAS
–http://qiita.com/soundTricker/items/a9569b5e
d71d15429444
ゴール 私と GAS 連携 別 その他
别连携
別の方法
? 直接APIコール
– ぶっちゃけ普通にAPIコールをすればよい
? そのほうが後々汎用性高いよ
? Datastore弄りたいなら
– GASからCloud Datastore API 呼べるよ
? Cloud Functions
– 最後の例はCloud Functionsで置き換えられるよ
– GAE -> (Log) -> Cloud Logging -> Pub/Sub -> Cloud
Functions のパターン
– めんどくさいから実際に動いてるコード見せるお
ゴール 私と GAS 連携 別 その他
その他
その他
? app_identify
– appengineでappengine周りの情報を取るモジュール
– access_tokenを取得できる 素敵
? google.appengine.ext.admin.application
– ローカルで動いているadmin画面が本番でも使える
– Pyhtonだとinteractiveコンソールが使える マジ素敵
? Cloud Playground
– appengine(python)用のweb playground
– あれどうだったけをちょろく試すのに便利
– https://cloud-playground.appspot.com/playground/
ゴール 私と GAS 連携 別 その他
We are hiring
人材募集中フロントエンド http://www.kabuku.co.jp/jobs/front-end-developer
バックエンド http://www.kabuku.co.jp/jobs/backend-developer
C/C++プログラマ http://www.kabuku.co.jp/jobs/cg-cad-programmer
※ 3Dプリンター/フィラメント使いたい放題の福利厚生付き

More Related Content

GCPUG Shonan GAS & GAE