$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

RSGT 2026に「QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する」というプロポーザルを出しました

プロポーザル出しました。聞いてみたいなという人がいればプロポーザルのサイトにLikeなどぜひ〜。

confengine.com

話そうとしている内容

QAフローが大変で開発したもののリリースに時間がかかってしまうという悩みはありませんか?

クラスター株式会社では障害を最小に抑えるため厚いQAフローを運用していました。このフローによってサービスの可用性品質は非常に高い一方で、開発を終えたものをリリースするまで最低でも10日かかるという課題がありました。

ソフトウェアエンジニアの立場からこの課題を解決するため、、障害数をコントロールした上でリリースまでの期間を最短化する方法を模索・提案し、改善を進めました。具体的に次のことを一つずつ進めました。

  • 事業の特性を理解して達成したい品質基準を決める
  • 開発フローの制約条件を理解する
  • 達成したい品質条件や制約条件を満たすように、QAフローおよびその周辺の開発フローを再検討する
  • QAメンバーと一緒に、QAのregressionテストのテストケースや、テストすべき内容を決め直す
  • 決定した理想系に向けて移行計画を作る
  • 3ヶ月かけて、理想系まで移行する

改善の結果、以前は開発終了からリリースまで10日必要だったものが、今は最短で5日ほどでリリースできるようになりました。さらに新しいフローになった後も顕著な障害増加はなく、可用性品質をコントロールできている状況を作り出せました。

本セッションでは、私がQAフローの運用の最適化を行なった具体的な経験を紹介し、QAフローを最適化する時、もしくはQAフローを新しく始めたい時に何が大切かをお伝えします。

ドキュメントを参照し類似を自動検索させることで、AIによるコード生成の精度を上げる

最近Claude Codeのスラッシュコマンドなど、AIによるコード生成をさせる時、ドキュメントを参照するだけより、ドキュメントを参照した後に類似を自動検索させた方が生成の精度が上がると感じた。今回はその方法を紹介する。

ドキュメントだけで生成すると細かいニュアンスで気になることが多い

コード生成をさせる時、何も無しでいきなり生成するよりも、コーディング規約やデータベース設計ガイドラインなど、チームで決めたルールを読み込ませてから生成する方が精度が上がると言われている。LLMの特性上、何もルールがないよりチームルールを明示することで、それに近いものが生成されるのは自明だ。

一方それだけだと「だいたい合ってるんだけど、細かいところで気になるなあ」と感じることが多かった。たとえば書き方がプロジェクト内の他の場所と少し違うなど。

ドキュメントを参照した後に類似を自動検索させる

「だいたい合ってるけど違う」となる理由は、ドキュメントではプロジェクトのルールのサマリーをしたものになっていて、細かいニュアンスまで含められていないからと考えた。確かに自分たちで実装する時も、ルールのドキュメントを参考にした後に、周辺の類似部分をコードリーディングしてから、この書き方と合わせようなどとその都度柔軟に意思決定をしていることが多い。

では同じような流れで、ドキュメントを参照した後に、これから生成しようとしているコードに似たものを自動検索させて、その後にコード生成をさせたら精度上がるのでは?と思ったので試してみた。このようにすることで、体感値ではあるが、かなり精度が上がった。

たとえば以下はデータベースのALTER TABLE文を生成するためのスラッシュコマンド。ポイントは、自分で類似ファイルを渡すのではなく、これから作ろうとしている内容の類似ファイルを自動で検索させること(手順の3の部分)。

---
allowed-tools: Read, WebFetch, TodoWrite, Grep, WebSearch, Search
description: データベースマイグレーションファイルを作成
---

あなたはMySQLの専門家としてデータベースマイグレーション作成を行います。

## 手順
1. $ARGUMENTS に書かれた要件を理解する
2. DBの設計ガイドラインである @docs/db-guideline.md を読み込む
3. 既存のマイグレーションファイルから似ているマイグレーションを5件読み込む
    - `migrations/` ディレクトリで似たような変更をしているファイルを5件ほど調べ、書き方のルールを確認
    - 以下のことなどを特に確認:
        - インデント
        - どのようなALTER TABLE形式が好まれるか
        - 命名規則
        - 型の扱い
        - NULL許可の扱い
        - DEFAULTの書き方
        - COMMENTの書き方
4. ガイドラインと類似実装を参考にマイグレーションファイルを作成
    - MySQL 8の構文に従って正確なSQLを記述

## 重要な注意点
- **規約の遵守**: ドキュメントに書かれた規約を必ず守る
- **一貫性**: 既存コードとの一貫性を保つ
- **確認**: 生成したコードがプロジェクトのスタイルに合っているか確認

それでは $ARGUMENTS に従ってマイグレーションファイルの生成を始めましょう。

いろんなケースで同じ考え方が使える

この「ドキュメントを参照した後に類似を自動検索させる」という考え方は、いろんなケースで使えると思う。たとえばブログ記事で自分と似た文章を書かせるところで応用すると、こういう形になる。

CLAUDE.md

記事を書くときは必ず @WRITING.md を参照してください。
また書こうとしている記事の内容から、それに似た最近の記事をランダムに数記事ピックアップし、

- 構成を参考にしてください
- 文体をできる限り模倣してください

記事は shibayu36.hatenablog.com/ ディレクトリ配下に入っています。

まとめ

今回は、ドキュメントを参照した後に類似を自動検索させることで、コード生成や文章生成の精度を上げる方法を紹介した。体感値ではあるが、かなり細かい部分が気にならなくなったので、一度試してみて欲しい。

AI駆動開発大阪支部で「詳しくない分野でのVibe Codingで困ったことと学び」を発表してきました

AIコーディング関連で知見も溜まってきたので、「詳しくない分野でのVibe Codingで困ったことと学び」という発表をしてきました。発表資料を共有します。

speakerdeck.com

オンラインで3年ぶり、オフラインで6年ぶりの発表だったっぽい...久々で緊張しましたが、良い発表の機会を作ってくれた運営の皆さまありがとうございました!

以下、スライドを文字起こししたものです。

スライド文字起こし

今日話すこと

  • Vibe Codingで、サーバーサイドエンジニアが経験のないiOSアプリを作った
  • その中で困ったことと学びを紹介

初iOSアプリ開発のきっかけ

  • その日やる気を出すためだけのシンプルなTODOアプリが欲しかった
  • Vibe Codingによって、開発経験のないiOSアプリも簡単に高速に開発できるのでは?

実際に作ってリリースした!

  • Daily Do
  • AIをフル活用し、Vibe Codingで作り切れました

詳しくない分野でも簡単だった?困らなかった?

  • 簡単ではない!困りまくる!とにかく騙される!

どのように騙されたか

(1) 毎回一貫性のないアーキテクチャを提案される
  • コード生成ごとに違う方法を提案される
    • Viewだけで気合いでやる
    • やりすぎなClean Architecture
  • 基礎知識がないので判断つかない
(2) 古いやり方を提案される
  • データバインディングとして、最近はObservableがよく使われる
  • しかし、古いObservableObjectを提案される
  • 基礎知識がないので気づかない
(3) 問題に対して間違った対処を提案される
  • iCloud同期が本番でだけうまくいかない問題
  • このファイルのこの行を消すとうまくいくと提案
  • 消してみるとすべてが動かなくなる
  • 基礎知識がないので明らかにおかしい対応に気付けない

回り道をして、結局多くの時間を取られている...

困ってみての学び

0->1を作るための基礎知識だけは学ぶしかない

  • Vibe Codingは真似は得意だが、0->1は不安定で騙されやすい
  • 大変でも基礎知識は時間をとって学ぶ
  • たとえば
    • 良いアーキテクチャ
    • 今使うべき公式API
    • linterなどツールチェイン

幸い、AIの力で高速に基礎知識は学べる

(1) 自分専用書籍を作る
  • Deep Researchで特定の領域の詳しいまとめを作らせる
    • 例: SwiftUIのViewのライフサイクルを知りたい
  • 本を何冊か読むよりピンポイントに学べる

↓事例

(2) 自分専用ハンズオンを作る

↓事例

基礎さえ理解すれば高速になる

  • 基礎は頑張るしかないが、
  • 基礎さえ理解できていれば、AIをコントロールし、結果的にVibe Codingが高速になる
    • CLAUDE.mdで、理解したアーキテクチャを指示
  • 一度やれば同じ分野は一瞬に

まとめ

  • 詳しくない分野でのVibe Codingでは、言われているほど簡単でなく、回り道が多かった
  • 基礎知識だけは学ぶしかないが、AIを使って高速に学べる
  • 基礎さえ理解すればAIをコントロールし、高速に開発できる
  • Vibe Codingを扱うために、最初は基礎に時間をかけましょう