KINTO Tech Blog
QA

Vibe Coding:Playwrightで中古車テストデータ生成を自動化!作業時間を大幅短縮した話

Cover Image for Vibe Coding:Playwrightで中古車テストデータ生成を自動化!作業時間を大幅短縮した話

はじめに

QAグループのWebチームのroです。
実際のQA案件業務においては、中古車のテストデータを大量に生成する必要がありますが、その手順は複雑で注意点も多く、作業には多くの時間を要していました。
この課題を解決するため、Playwrightを活用し、中古車データ生成の全工程を自動化しようと思っています。
この取り組みを社内の「Vibe Coding」イベントにおいて実施し、Vibe Codingの手法を用いて中古車データ自動生成用のPythonスクリプトを実装しました。

Vibe Codingとは?

Vibe Codingとは、生成AIと人間のエンジニアが協働して行う新しい開発スタイルです。
AIが「コード生成」や「調査」といった重い作業を引き受け、人間は「品質の検証・改善」に集中することで、高品質かつ効率的な開発を行えます。
Vibe Codingは、以下3つの特徴があります:
自由度が高い:テーマやルールが緩く、各自好きな技術や課題に取り組める
交流の場:普段関わらないメンバーとも一緒に作業でき、知識やスキル共有のきっかけになる
モチベーション向上:一人でやるよりも集中しやすく、楽しみながら成果を出せる

中古車データ自動作成のスクリプトの流れ

図

中古車データ自動作成のスクリプトのシステム構成図

図

スクリプト実装中に頑張ったこと

実際に中古車データ自動作成用のスクリプトを実装中、いくつかの課題に直面しましたが、試行錯誤と視点の転換を重ねることで、最終的に問題を解決することができました。

1. S3バケットに中古車契約の情報ファイルをアップロードする
S3バケットに中古車契約の情報ファイルをアップロードする手順があります。これまで、この手順は中古車チームに依頼して操作してもらっていました。今回は、この手順も自動化するために、事前に中古車チームとクラウドチームに相談し、S3へのアクセス権限を付与していただきました。S3の接続権限を得たことで、Pythonを用いてS3へのファイル自動アップロードを実現できるようになりました。
コードの例:

 # SSOでログイン済みのプロファイルを指定
 session = boto3.Session(profile_name="your_profile_name")

 # S3クライアント作成
 s3 = session.client("s3")

 # アップロード先情報
 bucket_name = "your-bucket-name"
 local_file_path = r"path/to/your/local/file.txt"
 s3_object_key = "path/to/s3/object.txt"

 try:
     s3.upload_file(local_file_path, bucket_name, s3_object_key)
 print(f"{local_file_path} を S3バケット '{bucket_name}' の '{s3_object_key}' にアップロードしました。")
 except Exception as e:
     print(f"アップロードに失敗しました: {e}")

2. 輸送依頼のExcelファイルの自動生成
本来は、サイトから輸送依頼用のExcelファイルをダウンロードし、その中から不要な内容を削除したうえで、中古車契約の情報を再入力し、再度サイトへアップロードする必要がありました。しかし、この煩雑な手順は時間がかかるうえ、ミスが発生しやすいという課題がありました。今回、Pythonを活用することで、不要な内容を自動削除し、必要な情報を抽出してExcelへ自動記入し、最後にサイトへ自動アップロードすることが可能になりました。これまで手作業で行っていた面倒な作業から解放できました!
コードの例:

# 元のCSVファイルパス
folder = r"C:\Users\×××\Downloads"
pattern = os.path.join(folder, "req_000550_4*.csv")
files = glob.glob(pattern)

# 正規表現で「req_000550_」+19桁の英数字に一致するファイルを抽出
regex = re.compile(r"req_000550_[0-9A-Za-z]+\.csv$")
target_files = [f for f in files if regex.search(os.path.basename(f))]

input_file = target_files[0]
#print(f"対象ファイル: {input_file}")

# ===== CSV読み込み =====
df = pd.read_csv(input_file, header=None)

# ===== セル更新 =====
df.iloc[1, 1] = display_text1  # B2
df.iloc[1, 2] = display_text3_formatted  # C2
df.iloc[1, 3] = display_text2  # D2

# G2, H2, I2, J2 → 列番号は G=6, H=7, I=8, J=9(0始まり)
today_str = datetime.now().strftime("%Y%m%d")
for col in [6, 7, 8, 9]:
    df.iloc[1, col] = today_str

# ===== 保存ファイル名作成 =====
safe_display_text3 = display_text3.replace(":", "-").replace(" ", "_")
new_filename = f"req_000550_{safe_display_text3}.csv"
output_file = os.path.join(folder, new_filename)

# ===== CSV保存 =====
df.to_csv(output_file, index=False, header=False, encoding="utf-8-sig")
print(f"更新完了: {output_file}")

await page.get_by_role("button", name="輸送状況を登録する").click()
new_filename = f"req_000550_{safe_display_text3}.csv"
filePath = rf"C:/Users/×××/Downloads/{new_filename}"
route = os.path.abspath(filePath)
async with page.expect_file_chooser() as fc_info:
    await page.get_by_role("button", name="受付状況更新ファイル(CSV形式 UTF-8/CRLF/BOMあり) prepended action").click()
file_chooser = await fc_info.value
await file_chooser.set_files(route)
await page.get_by_role("button", name="アップロードする").click()
await page.get_by_role("button", name="OK").click()

3. 各システム間におけるデータ反映時間の把握
1つの中古車データに対して、あるシステム上での操作が完了した後、一定の時間を待たなければ、他のシステムで次の操作を行うことができません。この待機時間の管理は容易ではありませんが、自動化スクリプトを活用することで、正確に待機時間を把握し、時間になれば自動的に次の操作へ進めることが可能になりました。これにより、業務効率が大幅に向上しました。

感想

今回の成果物は、今後の案件業務に活用できそうです。
従来200台の中古車データの作成に約2ヶ月かかっていたが、自動化により工数を削減することを期待できそうです。

成果

図

今回は、中古車データ生成の自動化を実現しただけでなく、今後につながる有益な経験と発想を得ることができました。
この経験を活かし、今後のQA業務においても、自動化できる業務をさらに発掘し、段階的に実現していきたいと考えています。

おわりに

今回のVibe Coding Weekでは、中古車データの自動作成のチャレンジを実施し、短期間で成果を得ることができました。
今後も自動化、AIに力を入れて、データ自動作成だけではなく、テスト設計、テスト実施も自動化にしていきたいと思います。

Facebook

関連記事 | Related Posts

We are hiring!

【QAエンジニア(リーダークラス)】QAG/東京・大阪・福岡

QAグループについて QAグループでは、自社サービスである『KINTO』サービスサイトをはじめ、提供する各種サービスにおいて、リリース前の品質保証、およびサービス品質の向上に向けたQA業務を行なっております。QAグループはまだ成⾧途中の組織ですが、テスト管理ツールの導入や自動化の一部導入など、QAプロセスの最適化に向けて、積極的な取り組みを行っています。

【ITビジネスアナリスト】/業務システム開発部/名古屋

業務システム開発部について業務システム開発部は、KINTOの事業運営に必要なシステムを開発し、その運用を統合的に管理することで、効率的な体制を構築している組織です。部門のミッションは、複数のプロダクト間での業務プロセスの整合性を担保しつつ、KINTO全体の業務プロセスの最適化、高度化を担うことです。

イベント情報