Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
1 of 50

GCPUG Shonan GAS & GAE

4

Share

Download to read offline

GASとGAE

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

GCPUG Shonan GAS & GAE

  1. 1. GASとGAE 〜その他GAEをだらだらと〜
  2. 2. お前、誰よ
  3. 3. 何やってる?
  4. 4. http://www.kabuku.co.jp
  5. 5. アジェンダ 1. 今日のゴール 2. 私とGAEとGAS 3. GASとは 4. GAEとGASの連携 5. 別の連携 6. 時間があったらオレオレGAEのTips
  6. 6. 今日のゴール • GASを知らない人 – GASをとりあえず知る – 帰ったら触る • GAEを知らない人 – GASをとりあえず知る – 帰ったら触る • どっちも知ってる人 – 連携する利点を知る • もう連携してる人 – 違う解を知る ゴール 私と GAS 連携 別 その他
  7. 7. 私と GASと GAE
  8. 8. 私と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 連携 別 その他
  9. 9. つまり
  10. 10. 雑食
  11. 11. 私とGAS • GASとは2010年12月ゴロから – GASは2009年8月 – 一応2014年からGDE – 正直最近GASよりもGCPのほうが(ゲフンゲフン • 2013年10月ぐらいからExpert • 幾つかのライブラリーを出してる ゴール 私と GAS 連携 別 その他
  12. 12. GASとは?
  13. 13. GAS • Google Apps Script –通称GAS、ガス、ギャス –海外圏ではApps Script • Googleが提供する – サーバサイドスクリプト実行環境 & 開発ツール • 2009年発 • 開発言語:JavaScript ゴール 私と GAS 連携 別 その他
  14. 14. 使 い 所
  15. 15. GASの使い所 • 小さいタスクの自動化 –定期レポート –マスターデータメンテ • DBは触れないユーザでもSpreadsheetsはされる • Spreadsheetsのほうで集計して別の場所に入れる –小さい運用フロー • 管理画面作るほどじゃないけど… • 軽いノリでなんかを作る ゴール 私と GAS 連携 別 その他
  16. 16. 特 徴
  17. 17. 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)); }
  18. 18. GASの特徴 • 開発環境不要 –すべてブラウザ上で開発可能 • https://script.google.com ゴール 私と GAS 連携 別 その他
  19. 19. GASの特徴 • 無料 –まじで無料 –メール送信数など一部制限あり –逆に金で解決は無理 ゴール 私と GAS 連携 別 その他
  20. 20. GASの特徴 • 実行スピードは速くない –書き方によってかなり変わる • 70倍以上違う時もある • 最近は開発環境側で指摘してくれる –最大6分しか動かない –普通のJSのスピード間隔じゃないほうが良い ゴール 私と GAS 連携 別 その他
  21. 21. GASの特徴 • 自動化 – 時間指定やイベントドリブンで動かせる • 時間指定 • 定期実行 – 分毎、日毎、週毎(曜日指定)、月毎 • Spread Sheetsの表示/更新 • Google Formに回答 • Google Sitesのリンク • Google Docsを表示 • メニューからクリック – UIも持てる ゴール 私と GAS 連携 別 その他
  22. 22. デ モ
  23. 23. GASとGAE 連携
  24. 24. 連携 • GASとGAEは幾つかの方法で連携できる –1 –2 –3 –4 ゴール 私と GAS 連携 別 その他 HTTPS ( &OAuth2) HTTPS Execution API Log Subscribe
  25. 25. HTTPS ( &OAuth2)
  26. 26. • 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" } }); }
  27. 27. • GASからGAE –認証する場合はOAuth Tokenをつける –GAEはoauthモジュールで認証 • Application(GAS側)を限定するならclient-idで絞 る ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)
  28. 28. • GASからGAE with OAuth2 – GAS側コード – Session.getActiveUser()でoauth scopeを設定 – ScriptApp.getOAuthToken()でtoken取得 ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)
  29. 29. • GASからGAE with OAuth2 – GAE側コード – OAuth2認証を使う ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)
  30. 30. HTTPS
  31. 31. • GAEからGAS 1 –GAS側にHTTPで呼び出す口を作る ゴール 私と GAS 連携 別 その他HTTPS
  32. 32. • GAEからGAS 1 – GAE側からurlfetchで呼びだす – 認証は…(ゲフンゲフン • 方法がないので基本secret keyでやる • ゴール 私と GAS 連携 別 その他HTTPS
  33. 33. • GAEからGAS 1 – 認証 • 厳密にはGAS->GAE同様の方法もある GAS側 • ゴール 私と GAS 連携 別 その他HTTPS
  34. 34. • GAEからGAS 1 – 認証 • 厳密にはGAS->GAE同様の方法もある GAE側 • ゴール 私と GAS 連携 別 その他HTTPS
  35. 35. Execution API
  36. 36. • GAEからGAS –GASのExecution APIを利用する • 資料作るのがアレだったので昔のBlogを… – http://qiita.com/soundTricker/items/1bcfc5c9e80d29a7 ae4b • Execution APIではService Accountが使えないの で結構めんどいかも ゴール 私と GAS 連携 別 その他Execution API
  37. 37. • GAE Pub/Sub GAS –単純にGAEの何かしらをふっくしてGASで 処理したいのであれば Pub/Subを使うパター ンも有る –GAE -> (Log) -> Cloud Logging -> Pub/Sub - > GASのパターン –適用例 • BigQueryにデータ突っ込む • エラーログをSlackに流す ゴール 私と GAS 連携 別 その他
  38. 38. • GAE Pub/Sub GAS –http://qiita.com/soundTricker/items/a9569b5e d71d15429444 ゴール 私と GAS 連携 別 その他
  39. 39. 別連携
  40. 40. 別の方法 • 直接APIコール – ぶっちゃけ普通にAPIコールをすればよい • そのほうが後々汎用性高いよ • Datastore弄りたいなら – GASからCloud Datastore API 呼べるよ • Cloud Functions – 最後の例はCloud Functionsで置き換えられるよ – GAE -> (Log) -> Cloud Logging -> Pub/Sub -> Cloud Functions のパターン – めんどくさいから実際に動いてるコード見せるお ゴール 私と GAS 連携 別 その他
  41. 41. その他
  42. 42. その他 • 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 連携 別 その他
  43. 43. 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プリンター/フィラメント使いたい放題の福利厚生付き

×