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
890
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
87
Other Decks in Programming
See All in Programming
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
930
iOS 26にアップデートすると実機でのHot Reloadができない?
umigishiaoi
0
130
Is Xcode slowly dying out in 2025?
uetyo
1
280
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
2
18k
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
3
780
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
2.2k
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
120
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
0
180
VS Code Update for GitHub Copilot
74th
2
650
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
530
ふつうの技術スタックでアート作品を作ってみる
akira888
1
890
Discover Metal 4
rei315
2
140
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Fireside Chat
paigeccino
37
3.5k
Visualization
eitanlees
146
16k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Embracing the Ebb and Flow
colly
86
4.7k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
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"!!!!!! • とはいえ本質的な解決にはならないので剥がせる剥がそう • ファジーでシンプルなツールだからこそ設計と運用が重要 ◦ プログラミングの原理原則を意識・活用できて楽しい ◦ それ以上につらかったけどな!!!! おわり