🥨

【QA業務効率化】テストデータ作成の“一手間”を解消!GSSを経てAIとWebアプリを作った話

に公開

皆さん、こんにちは!
この記事はBitkey Developers Advent Calendar 2025 12日目の記事です。
Software QAチームの たなしん@tanashin が担当します。

突然ですが、皆さんは日々の業務で、「この作業、もっと効率化できないかな?」と考えることはありませんか?
便利な既存のWebツールや、自作のExcel/GSS(スプレッドシート)を使ってみても、「あと一歩、ここが面倒なんだよな…」という“一手間”に気づいてしまう…。

私は普段、QA(品質保証)エンジニアとしてソフトウェアのテストを担当しているのですが、テストデータを作成する際、まさにそうした“あと一歩”の壁に直面していました。

具体的には、予約システムのテストなどで用いる「エポックタイム」を計算する作業です。 詳しくは後述しますが、複数の時刻を同時に算出する必要がある、少し特殊なケースでした。

この記事は、

  • テストに必要な「複数の時刻を一気に計算する」ことができない壁にぶつかった私が、
  • Google スプレッドシート(GSS)で「第一形態」の計算表を自作し、
  • でも、そのGSSの「“一手間”」に悩み、
  • 最終的にAI(Gemini)と「自分専用Webアプリ」を作って、すべての課題を解決するまでの、“ツール改善”の全記録です。

コード知識がほぼゼロの私でも、AI(Gemini)と「仕様書づくり」から始めることで、GSSの“一手間”を解決する自分専用のWebアプリが作れました。
皆さんの「あと一歩、ここが面倒なんだよな…」を解決するヒントになれば幸いです。


「エポックタイム変換サイト」が持つ「壁」

さて、私が「自分専用」のツール開発に踏み出すきっかけとなった、「既存の変換サイト」が持つ「壁」について、お話しします。

私がやりたかったのは、ある予約システムのテストにおいて、「基準時刻から○分後の、予約A・B・Cの時刻」というように、複数の時刻を一気に計算することでした。
しかし、既存サイトの多くは「1つの時刻」を入力し、「1つの結果」を得る、というシンプルな作りになっています。


実際に使っていたWebアプリ

これが最大の壁でした。
そのため、テストシナリオとして「予約A」「予約B」「予約C」(3予約×開始/終了=計6個)の時刻データを用意したい場合、

  1. (自分で)予約Aの開始時刻を計算し、サイトに入力して「変換」
  2. (自分で)予約Aの終了時刻を計算し、サイトに入力して「変換」
  3. (自分で)予約Bの開始時刻を計算し、サイトに入力して「変換」
    ...という作業を、6回繰り返す必要がありました。


検証ケースの例1


検証ケースの例2

もちろん、できないことはありません。実際、私も最初はそうやっていました。
ですが、テストのたびにこの作業を行うのは非常に手間がかかり、「この作業、なんとかならないか…」と常々感じていたのです。


第一形態:「GSS計算表」を作る

先ほどお話しした「壁」(複数の時刻を一気に扱えない)を突破するため、私が次に着手したのが、Google スプレッドシート(GSS)で「自分専用」の計算表を作ることでした。
これが、私の「ツール改善」における「第一形態」です。

既存の変換サイトでは不可能だった、複数を一気に計算することを、GSSで実現しました。

具体的には、以下の仕組みです。

  1. 基準時刻(NOW()関数などで取得)を基に、
  2. 「予約Aは5分後、予約Bは30分後...」というように、「何分後か」を入力するセルを用意し、
  3. それらの開始時刻・終了時刻、そしてエポックミリ秒を(関数で)計算させる


GSS(第一形態)

このGSS(第一形態)のおかげで、

  • 「予約A(5分後)と予約B(30分後)が重複していないか?」
  • 「日付を跨ぐケース(例:深夜0時越えの予約)の計算は正しいか?」

といった複雑な検証ケースも、一目で確認できるようになりました。
既存サイトで手作業を6回繰り返していた、あの「手間」から解放されたのです。

これで「既存サイト」が持っていた壁は、完全に乗り越えました。このGSSは、これはこれで、非常に便利だったのです。
ですが、このGSSにも「新たなる課題」がありました。


GSS計算表が持つ「3つの“一手間”」

このGSS(第一形態)は非常に便利でしたが、使っているうちに、GSS“特有”の“一手間”が気になり始めました。具体的には、次の3つです。

計算の起点にしていたNOW()(現在時刻)関数は、シートを開き直したり、何かを編集したりするたびに自動で更新されてしまいます。
便利な機能ですが、今回の「計算」においては、「あれ、さっきの計算結果と変わっている!」となってしまいます。
そのため、計算結果を後で使いたい時は、「とりあえず」その値をコピーし、「値のみ貼り付け」で固定しておく、という一手間が発生していました。

「値のみ貼り付け」で固定した「時刻」のセルを、さあコピーしよう、とクリックすると、GSSが「日付かな?」と気を利かせて「カレンダーピッカー」を起動するのです。
「いや、今はそれがしたいんじゃない...」
この“おせっかい”な親切機能が、作業のテンポをコンマ数秒、奪っていきました。

この計算表は、シナリオA、シナリオB、日またぎパターン、今調べたい時...というように、テストしたいパターン(検証ケース)別にタブ(シート)を分けて管理していました。
これは整理術としては正しいのですが、タブ名を設定していても視認性が悪く、目的のタブを探してクリックするのが、ほんの少し手間に感じていたのです。


転機:「(GSSの“一手間”)、Webアプリなら解決できるかも?」

先ほど挙げた「3つの“一手間”」。
GSSを使っている以上、ある程度は仕方がないことかもしれません。
そう思いながらも、ふと「既存の変換サイトみたいな、手軽なWebアプリが作れないかな?」という考えがよぎりました。
GSS(第一形態)の「複数を一気に計算する」という強みは活かしつつ、GSS特有の「3つの“一手間”」が無いツールです。

とはいえ、私にはWebアプリ(HTML/CSS/JavaScript)を一から書き上げるスキルはありません。
そこで私は、GSSの関数を作った時のように、Geminiの力を借りることにしました。

いきなり「作って」と言うのは無謀です。
そこで私は、まずGeminiにこう依頼しました。

コードが書けなくても、「何をしたいか」という「仕様(=やりたいことリスト)」を(日本語で)AIと一緒に考えることなら、私にもできます。
AIを「優秀なアシスタント(兼プログラマー)」として扱い、対話を始めたのです。


「自分専用Webアプリ(最終形態)」の誕生

Geminiとの「仕様書」作りの対話は、非常にスムーズでした。
私が「こういう計算がしたい(=GSSの強み)」と伝えると、GeminiはそれをWebアプリの「機能」として見事に翻訳し、仕様書をまとめてくれたのです。


恥ずかしくはありますが、GSSを見ながらツラツラと指示を出したものがこちら


提案してくれた仕様書案


提案してくれた画面設計

そして、その「仕様書」を元に、GeminiがHTML/CSS/JavaScriptのコードを生成。
私はそのコードを(ほぼ読めませんでしたが)実行しました。

この“実行”は、難しくありません。
やったことは、Geminiに言われた通り「index.html」(骨組み)、「style.css」(見た目)、「script.js」(動き)という3つのファイルを作って、それぞれに指定されたコードをコピペしただけです。
あとはindex.htmlファイルを(Chromeなどの)ブラウザで開くだけでした!


最初に作成したWebアプリ

ここから自分が見やすく、使いやすいツールにするように微修正を始めました。

もちろん、最初はうまく動かなかったり、表示が崩れたりもしました。
AIが生成したコードをコピペし、動かしてみて、うまくいかない部分はまたAIに直してもらう...。その繰り返しでしたが、「ここの余白を詰めて」「この部分の動きを直して」といった“使い勝手”に関する「微修正」を、日本語で対話しながら、理想のツールへと仕上げていきました。


Geminiとの微修正のやりとり

また「微修正」の対話の中で、私はGeminiにふと「機能追加」の相談もしてみました。


プリセット機能についての相談

Geminiは「プリセット機能」(プルダウンメニュー)として、その機能を実装してくれたのです。

こうして、GSS(第一形態)が持っていた「3つの“一手間”」は、この「最終形態」でこう解決されました。

1. NOW()の罠(自動更新) → 「反映ボタン」で解決
Webアプリなら、勝手に更新されることはありません。「反映ボタン」を押した時だけ計算が実行されます。「とりあえず値コピー」という一手間は、不要になりました。

2. カレンダーの罠(おせっかい) → 「コピーボタン」で解決
計算結果はシンプルなテキストボックスに表示され、GSSのような「カレンダーピッカー」は起動しません。さらに「コピーボタン」も設置し、小さなストレスはゼロになりました。

3. タブを探す手間(視認性) → 「プリセット機能」で解決
さて、GSSの「タブを探す手間」ですが、これはWebアプリ化でよりスマートな形で解決されました。


第一形態(GSS)。タブでシナリオを管理していた


最終形態(Webアプリ)。「保存機能」の相談が「プリセット」になり、結果的にタブ探しの手間も解決した。

GSS(第一形態)で「タブ」として管理していた各シナリオ(パターンAや日またぎケースなど)を、この「プリセット」に登録することで、GSSでタブを探すあの“一手間”も、シンプルに解決しました。
「保存機能」の相談が、「よく使う設定をすぐ呼び出せる」便利な機能(プリセット)として実装された結果、GSSの一覧性の課題も解消されるという、興味深い結果になりました。

こうして、GSSの「複数を一気に計算する」という強みはそのままに、GSSの「3つの“一手間”」を解消した、「自分専用Webアプリ(最終形態)」が完成しました。


結論:GSSの“一手間”は、AIと「自分専用ツール」を作る“チャンス”だった

今回の私の「ツール改善」の旅を振り返ってみます。

  1. 既存ツール: 「複数を一気に計算する」ことができない壁にぶつかった。
  2. GSS(第一形態): 「計算の壁」を(AIの助けも借りて)自力で突破。しかし「GSS特有の一手間」という新たな課題に直面。
  3. AI自作アプリ(最終形態): GSSの「強み」を継承しつつ、「手間」をAI(Gemini)との協業(=仕様書作りの対話)で解決した。

もし、私がGSS(第一形態)の「一手間」に気づきながらも「まあ、こんなものか」と諦めていたら、この「最終形態」にはたどり着けませんでした。

この記事を読んでいる皆さんも、日々の業務で「(GSSやExcelの)この手間、なんとかならないかな…」と感じていることがあるかもしれません。
コード知識がゼロでも、心配ありません。

AI(Gemini)という優秀なアシスタントに対し、最初から完璧な「仕様書」を用意する必要はありません。
(GSSやExcelの)「この使い勝手が悪い」「ここがやりづらい」といった“フワッとした相談”を元に、AIと“一緒”に「仕様書」を作っていけばいいのです。

その「一手間」こそが、「自分専用ツール」開発のチャンスに変わります。
皆さんも、AIとの“協業”で、日々の「手間」を解決する「自分専用ツール」を作ってみませんか?

Bitkey Developers

Discussion