WE PROVIDE THE APIS "AS IS"!
Google Apps Scriptを使いこなさない方法Yuuki Kondo
View Slide
名前:近藤 裕輝(こんどう ゆうき)twitter: @kondo_script所属:株式会社オトバンク職業:TypescriptとTDDだいすきエンジニアインフラ/サーバ/フロント/アプリを広く薄く趣味:スパゲッティを料理すること自己紹介
オーディオブックですきま時間にインプット
今日のテーマ
ようするにGoogle Apps Scriptとの付き合い方
● Google Workspaceからシュッとつかえるjavascriptランタイム○ 環境構築不要ですぐ使える■ その割に高性能なエディタ○ APIがシュッと作れる○ トリガ機能でバッチが作れる○ 無料で使えるGoogle Apps Script とは
● Google Workspaceの各アプリのAPIを簡単に呼び出し / 統合できる● 実務でも割と使う○ 使用例(体験談)■ Google Spread Sheetsで簡単な社内ツールを組む● slackと連携してちょっとした社内の運用改善● 会計請求業務効率化■ Google Formの結果をゴニョゴニョする■ Google Docsで議事録をいい感じに運用する■ ちょっとしたプロトタイプのAPIGoogle Apps Script とは
最高か???
・・・作った直後はね
● バージョン管理や単体テストが(ほぼ)できない○ ローカルでgasのコードが書けるclaspというツールはあるがメンテ止まってる(非推奨)● トリガやら権限やらの設定が属人化前提の作りになっている● Google Workspaceのアプリの内容と密結合しがち● 業務に合わせているうちに機能が肥大化しがちなにがつらいのか
● APIクオータが実際にはなにも保証していないなにがつらいのか利用規約ではこんな一文も。。。
なにがつらいのかWE PROVIDE THE APIS "AS IS".訳:動いてなければ動かないですね
なにがつらいのか
結論Google Apps Scriptはダイソー
ここで一つ困ったことベンチャー企業ダイソーで買い物しがち問題
使いこなさないように使う● 動かなくなるものとして使う● ハックしないで使う● 卒業する計画をたてながら使う
動かなくなるものとして使う● リスクを周知して期待値調整○ どんなに小さな機能でも動かないとパニックになりがち■ 人類は業務が不自由になることに耐えられない● 特に引き継ぎはできないものと考える○ 検証環境作るのが不可能になりがち○ テストがないのですべてレガシーコードです(TDD過激派)
ハックしないで使う● Google Apps Scriptをで凝ったものを作るときはだいたい技術選定が間違っている○ 「ハックするメリット > 後のメンテナンスコスト」になる事はほぼない(n=3くらいの経験則)○ google workspaceをハックすることになるので、情シスの仕事とコンフリクトしたりする● hyrumの法則に引っ張られてないか気をつけよう
hyrumの法則あるAPIに十分な数のユーザーがいるとき、APIを作った者自身が契約仕様として何を約束しているかは重要ではない。作られたシステムが持つあらゆる観察可能(observable)な挙動に関して、それに依存するユーザーが出てくるものである。 「Googleのソフトウェアエンジニアリング」より引用
hyrumの法則● 要するに○ 人類は保証されてない仕様に依存した実装をしがち■ ex)リファレンスに書かれていないエラーをハンドリングした実装○ APIを作る側はそれに気をつけてメンテしよう■ と、googleの中の人も(たぶん)考えているのでGoogleApps Scriptはある程度動く安定して動く○ とはいえ、APIを使う側は突然壊れても文句言えない
卒業する計画を立てながら使う● 業務知識を含むコードのポータビリティを確保する○ ドメインのコードがGoogle Apps Scriptに依存しないようにする○ 部分的にCloud Functionに移行してユニットテストを書く
卒業する計画を立てながら使う● プロトタイプの場合でもシステムからgoogle workspaceやGoogleApps ScriptのAPIを呼ばない○ 可能な限り出力したjsonやcsvに依存するようにする○ どうしてもやらなければいけない時はcloud functionなどでラップして呼び出す(特にiOS/Androidアプリ)■ APIとして作っておけば後で差し替えできる■ 最終責任時点を意識して技術の決定を遅らせる
まとめ兼感想● なんだかんだでGoogle Apps Scriptは業務で使われてしまう● 用法・用量を守って使う分には便利○ 合言葉はWE PROVIDE THE APIS "AS IS"!!!!!!● とはいえ本質的な解決にはならないので剥がせる剥がそう● ファジーでシンプルなツールだからこそ設計と運用が重要○ プログラミングの原理原則を意識・活用できて楽しい○ それ以上につらかったけどな!!!!おわり