Slide 1

Slide 1 text

Google Apps Scriptを 使いこなさない方法 Yuuki Kondo

Slide 2

Slide 2 text

名前:近藤 裕輝(こんどう ゆうき) twitter: @kondo_script 所属:株式会社オトバンク 職業:TypescriptとTDDだいすきエンジニア インフラ/サーバ/フロント/アプリを広く薄く 趣味:スパゲッティを料理すること 自己紹介

Slide 3

Slide 3 text

オーディオブックで すきま時間にインプット

Slide 4

Slide 4 text

今日のテーマ

Slide 5

Slide 5 text

ようするに Google Apps Scriptとの 付き合い方

Slide 6

Slide 6 text

● Google Workspaceからシュッとつかえるjavascriptランタイム ○ 環境構築不要ですぐ使える ■ その割に高性能なエディタ ○ APIがシュッと作れる ○ トリガ機能でバッチが作れる ○ 無料で使える Google Apps Script とは

Slide 7

Slide 7 text

● Google Workspaceの各アプリのAPIを簡単に呼び出し / 統合できる ● 実務でも割と使う ○ 使用例(体験談) ■ Google Spread Sheetsで簡単な社内ツールを組む ● slackと連携してちょっとした社内の運用改善 ● 会計請求業務効率化 ■ Google Formの結果をゴニョゴニョする ■ Google Docsで議事録をいい感じに運用する ■ ちょっとしたプロトタイプのAPI Google Apps Script とは

Slide 8

Slide 8 text

最高か???

Slide 9

Slide 9 text

・・・作った直後はね

Slide 10

Slide 10 text

● バージョン管理や単体テストが(ほぼ)できない ○ ローカルでgasのコードが書けるclaspというツールはあるがメン テ止まってる(非推奨) ● トリガやら権限やらの設定が属人化前提の作りになっている ● Google Workspaceのアプリの内容と密結合しがち ● 業務に合わせているうちに機能が肥大化しがち なにがつらいのか

Slide 11

Slide 11 text

● APIクオータが実際にはなにも保証していない なにがつらいのか 利用規約ではこんな一文も。。。

Slide 12

Slide 12 text

なにがつらいのか WE PROVIDE THE APIS "AS IS". 訳:動いてなければ動かないですね

Slide 13

Slide 13 text

なにがつらいのか

Slide 14

Slide 14 text

結論 Google Apps Scriptはダイソー

Slide 15

Slide 15 text

ここで一つ困ったこと ベンチャー企業 ダイソーで買い物しがち問題

Slide 16

Slide 16 text

使いこなさないように使う ● 動かなくなるものとして使う ● ハックしないで使う ● 卒業する計画をたてながら使う

Slide 17

Slide 17 text

動かなくなるものとして使う ● リスクを周知して期待値調整 ○ どんなに小さな機能でも動かないとパニックになりがち ■ 人類は業務が不自由になることに耐えられない ● 特に引き継ぎはできないものと考える ○ 検証環境作るのが不可能になりがち ○ テストがないのですべてレガシーコードです(TDD過激派)

Slide 18

Slide 18 text

ハックしないで使う ● Google Apps Scriptをで凝ったものを作るときはだいたい技術選定 が間違っている ○ 「ハックするメリット > 後のメンテナンスコスト」になる事はほぼな い(n=3くらいの経験則) ○ google workspaceをハックすることになるので、情シスの仕事 とコンフリクトしたりする ● hyrumの法則に引っ張られてないか気をつけよう

Slide 19

Slide 19 text

hyrumの法則 あるAPIに十分な数のユーザーがいるとき、API を作った者自身が契約仕様として何を約束して いるかは重要ではない。作られたシステムが持 つあらゆる観察可能(observable)な挙動に関し て、それに依存するユーザーが出てくるもので ある。
 「Googleのソフトウェアエンジニアリング」より引用

Slide 20

Slide 20 text

hyrumの法則 ● 要するに ○ 人類は保証されてない仕様に依存した実装をしがち ■ ex)リファレンスに書かれていないエラーをハンドリングし た実装 ○ APIを作る側はそれに気をつけてメンテしよう ■ と、googleの中の人も(たぶん)考えているのでGoogle Apps Scriptはある程度動く安定して動く ○ とはいえ、APIを使う側は突然壊れても文句言えない

Slide 21

Slide 21 text

卒業する計画を立てながら使う ● 業務知識を含むコードのポータビリティを確保する ○ ドメインのコードがGoogle Apps Scriptに依存しないようにする ○ 部分的にCloud Functionに移行してユニットテストを書く

Slide 22

Slide 22 text

卒業する計画を立てながら使う ● プロトタイプの場合でもシステムからgoogle workspaceやGoogle Apps ScriptのAPIを呼ばない ○ 可能な限り出力したjsonやcsvに依存するようにする ○ どうしてもやらなければいけない時はcloud functionなどでラッ プして呼び出す(特にiOS/Androidアプリ) ■ APIとして作っておけば後で差し替えできる ■ 最終責任時点を意識して技術の決定を遅らせる

Slide 23

Slide 23 text

まとめ兼感想 ● なんだかんだでGoogle Apps Scriptは業務で使われてしまう ● 用法・用量を守って使う分には便利 ○ 合言葉はWE PROVIDE THE APIS "AS IS"!!!!!! ● とはいえ本質的な解決にはならないので剥がせる剥がそう ● ファジーでシンプルなツールだからこそ設計と運用が重要 ○ プログラミングの原理原則を意識・活用できて楽しい ○ それ以上につらかったけどな!!!! おわり