Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Google Apps Scriptを使いこなさない方法
Search
kondo_script
September 26, 2023
Programming
1
930
Google Apps Scriptを使いこなさない方法
WE PROVIDE THE APIS "AS IS"!
kondo_script
September 26, 2023
Tweet
Share
More Decks by kondo_script
See All by kondo_script
React Nativeで 防衛戦をする方法
efbmzwyk999
0
89
Other Decks in Programming
See All in Programming
tool ディレクティブを導入してみた感想
sgash708
1
150
エンジニアのための”最低限いい感じ”デザイン入門
shunshobon
0
130
ライブ配信サービスの インフラのジレンマ -マルチクラウドに至ったワケ-
mirrativ
2
270
250830 IaCの選定~AWS SAMのLambdaをECSに乗り換えたときの備忘録~
east_takumi
0
210
decksh - a little language for decks
ajstarks
4
21k
ワープロって実は計算機で
pepepper
2
1.4k
AIエージェント開発、DevOps and LLMOps
ymd65536
1
350
AIでLINEスタンプを作ってみた
eycjur
1
200
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
390
『リコリス・リコイル』に学ぶ!! 〜キャリア戦略における計画的偶発性理論と変わる勇気の重要性〜
wanko_it
1
600
物語を動かす行動"量" #エンジニアニメ
konifar
14
5.5k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
180
Featured
See All Featured
Site-Speed That Sticks
csswizardry
10
790
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Designing for humans not robots
tammielis
253
25k
Automating Front-end Workflow
addyosmani
1370
200k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Being A Developer After 40
akosma
90
590k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
BBQ
matthewcrist
89
9.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Transcript
Google Apps Scriptを 使いこなさない方法 Yuuki Kondo
名前:近藤 裕輝(こんどう ゆうき) 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で議事録をいい感じに運用する ▪ ちょっとしたプロトタイプのAPI Google 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の中の人も(たぶん)考えているのでGoogle Apps Scriptはある程度動く安定して動く ◦ とはいえ、APIを使う側は突然壊れても文句言えない
卒業する計画を立てながら使う • 業務知識を含むコードのポータビリティを確保する ◦ ドメインのコードがGoogle Apps Scriptに依存しないようにする ◦ 部分的にCloud Functionに移行してユニットテストを書く
卒業する計画を立てながら使う • プロトタイプの場合でもシステムからgoogle workspaceやGoogle Apps ScriptのAPIを呼ばない ◦ 可能な限り出力したjsonやcsvに依存するようにする ◦ どうしてもやらなければいけない時はcloud
functionなどでラッ プして呼び出す(特にiOS/Androidアプリ) ▪ APIとして作っておけば後で差し替えできる ▪ 最終責任時点を意識して技術の決定を遅らせる
まとめ兼感想 • なんだかんだでGoogle Apps Scriptは業務で使われてしまう • 用法・用量を守って使う分には便利 ◦ 合言葉はWE PROVIDE
THE APIS "AS IS"!!!!!! • とはいえ本質的な解決にはならないので剥がせる剥がそう • ファジーでシンプルなツールだからこそ設計と運用が重要 ◦ プログラミングの原理原則を意識・活用できて楽しい ◦ それ以上につらかったけどな!!!! おわり