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
The JSON generator tool based on Google Spreads...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
takuoki
December 18, 2018
Technology
790
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The JSON generator tool based on Google Spreadsheets
takuoki
December 18, 2018
Other Decks in Technology
See All in Technology
ABEMA の Datadog × OTel 基盤、 中から見るか? 外から見るか?
tetsuya28
0
110
Microsoft Build Keynoteふりかえり
tomokusaba
0
120
AI活用を推進するために ファインディが下した、一つの小さな決断
starfish719
0
280
AIプラットフォームを運用し続けるための可観測性
tanimuyk
4
1.2k
価格.comをAI駆動で全面刷新する ー 30年分の技術的負債を返し、次の30年の土台をつくる ー / AI Engineering Summit Tokyo 2026
tkyowa
52
58k
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
310
AIにフローを作らせようとして挫折した話
hamatsutaichi
0
240
Ruby::Boxでできること、Refinementsでできること
joker1007
3
410
MCP Appsを作ってみよう
iwamot
PRO
4
280
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
530
エンジニアリング戦略の作り方 / Crafting Engineering Strategy
iwashi86
15
5k
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
340
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
210
KATA
mclloyd
PRO
35
15k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
570
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
600
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
320
Marketing to machines
jonoalderson
1
5.4k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Unsuck your backbone
ammeep
672
58k
Transcript
Goでテスト仕様書からJSONファイルを 自動生成するツールを作ったよ - The JSON generator tool for tests 2018-12-18
golang.tokyo #20 LT Takuo OKI
About me 2 • もともと7年くらいSIer。 • いまはVELTRAという旅行関連の会社でGoを書いています。 • 技術ブログを気まぐれに書いています。 Let’s
search “veltra engineering blog”! GitHub: takuoki Twitter: takuokl ←”i”じゃなくて”l”!
Do you write tests? テスト、書いてますか?
Unit test is so good! 4 Goはユニットテストが簡単に書けて、メンテナンスもしやすい。
How about integration test? 5 インテグレーションテストについてはあまり資料がない。。 例)APIのリクエストとレスポンスをまるごと確認したい。 → データが大きいのでGoのソースに テストデータを書くわけにもいかない。。
I’ve created a tool for such cases! 6 Google Spreadsheetに書いたテストケースから、
JSONファイルを作成するツール”testmtx”を作った! JSONファイルをGoで読み込めば、”go test”でテストもできる! Google Spreadsheet JSON files for test testmtx
How to write spreadsheet 7
How to write spreadsheet 8 JSONのプロパティ定義を書く
How to write spreadsheet 9 テストケース毎のデータを埋める ※1列=1テストケース
How to write spreadsheet 10 object型やarray型は"*new"と書く
How to write spreadsheet 11 1テストケースで複数の JSONファイルを作成 { "num_key": 101,
"string_key": "string value 101", "bool_key": true, "object_key": { "key1": 201, "key2": "string value 201" }, "array_key": [ { "key3": 301, "key4": "string value 301" }, { "key3": 401, "key4": "string value 401" } ] } { "status": “success”, "code": 200 }
How to output files 12 コマンドラインツールで、シートIDを指定すればOK! • 設定ファイルで、シートIDのエイリアスを定義できる。 • Google
Sheets APIを使用しているので、OAuth認証が必要。 $ testmtx out -s 1Zs2HI7x8eQ05ICoaBdv1I1ny_KtmtrE05Lyb7OwYmdE output completed successfully!
Supplemental features 13 • JSONのプロパティ定義をいちから書くのは面倒なので、 Goの構造体を読み込んでテキスト出力できる。 • プロパティ定義の階層を調整できる。 • 設定ファイルで対象外のシートを指定できる。
• YAMLも一応サポートしている。
Conclusion 14 • Goでのツールの実装について ◦ ASTを初めて触って楽しかった! • 良かった点 ◦ テストデータが膨大になっても、なんとかメンテナンスできる。
◦ 単純にJSONを吐き出すツールなので汎用的(テスト以外でも可)! • 気になる点 / 反省点 ◦ Sheet自体はGit管理外なので、ブランチころころ変えてると気になる。 ◦ テストのツールなのにテストコードをかけていない!! • その他 ◦ 反応があったら改善するモチベーションに! https://github.com/takuoki/testmtx
End