kickflow Tech Blog

株式会社kickflowのプロダクト開発本部によるブログ

手動テストを渡すだけでE2Eが完成する仕組みを作りました

手動テストを渡すだけでE2Eが完成する仕組みを作りました
手動テストを渡すだけでE2Eが完成する仕組みを作りました

こんにちは、kickflow QAチームのyanagiyaです。

今回は、テスト管理ツールに登録したテストケースを起点に、Playwright のE2Eテストを書いてPRを出すところまでを Claude Code に任せるスキルを作りました。
あわせて、E2E専用のテナントを用意し、どのテストをどのテナントで動かすかをスクリプトに決めさせるようにしています。

本記事では、このスキルを作った経緯と仕組み、運用しながら見直した点を紹介します。

続きを読む

Fable 5と私|Claude Codeのメモリ運用3か月

こんにちは。2026年7月にkickflowに入社した、エンジニアのpesoです。

前回、Claude Codeを教官役にした入社研修の話を書きました。その中に、Claudeへの訂正を「メモリに保存してもらった」と一行だけ書いた箇所があります。今回は、その保存先の話です。

  • Fable 5が来て、置き場所を作るまで
  • CLAUDE.mdの先に、何を作ったか
  • ある場合と無い場合で、何が違うか
  • 育つノートと、育たないノート
  • 自分が育つと、相棒も育つ
  • We are hiring!
続きを読む

ビルドは成功、フォントは壊れていた

新規事業本部でエンジニアをしている渡辺です。

本記事では、本番環境でボタンの文字が細く描画されるようになった不具合について、原因特定から再発防止、さらに修正後に生じたパフォーマンス劣化を潰すまでの記録をまとめます。

ひとことで言えば、ビルド時の外部通信が一度失敗しただけで、ビルドは成功したまま成果物だけが壊れていた、という話です。学びが多かったのは原因そのものよりも、「失敗してくれなかったこと」がなぜここまで検知を遅らせたのかという点でした。

  • 1. 何が起きたのか
  • 2. 前提となるフォント配信の構成
  • 3. 調査
    • 3-1. CSS は正しかった
    • 3-2. 日本語サブセットが丸ごと無かった
    • 3-3. なぜ 500 だけ細く見えたのか
    • 3-4. 真因はビルドログにあった
  • 4. 障害の連鎖
  • 5. 対策1: セルフホスト化と、そこで生まれたパフォーマンス劣化
    • 5-1. ビルド時に外部へ HTTP しない構成へ
    • 5-2. 「どれだけ重くなるのか」を先に測る
    • 5-3. unicode-range で分割する
    • 5-4. 可変フォント1本に統合する
    • 5-5. 効果
  • 6. 対策2: 成果物検証でデプロイを止める
  • 7. 学び
  • We are hiring!
続きを読む

Claude Codeを教官役にした入社研修の話

こんにちは。2026年7月にkickflowに入社した、エンジニアのpesoです。

kickflowには、入社した最初の1週間で取り組む技術研修があります。RailsとNuxtで小さなWebサービスをゼロから作る、いわゆる「作って学ぶ」形式の研修です。

  • 答えの書かれていない研修と、AIというジレンマ
  • 「教官は手を出さない」というルール
  • 実際の1週間
    • 資料と現実のバージョン差を埋めてくれる
    • ミスは、自分で踏むから身につく
    • 実務の定石が「ついで」に入ってくる
  • 成果 = あなた × AI
  • 研修で本当に鍛えられたのは、Railsではなかったかもしれない
  • 鬼教官は、もう手元にいる
  • We are hiring!
続きを読む

AI機能の品質評価を自動化する:機械採点と LLM-as-a-Judge の役割分担

シャチは群れで役割を分け、波を起こす係と仕留める係が連携して狩りをする
シャチは群れで役割を分け、波を起こす係と仕留める係が連携して狩りをする

こんにちは、kickflow QAチームの川村です。

kickflowにはチケット要約や計算式生成、入力補助といったAI機能が増えてきました。
これらの品質をどう担保するかは、従来のテストとは別の難しさがあります。AI機能は同じ入力を与えても出力が毎回同じとは限らないため、同じ入力には同じ結果が返ることを前提に「期待値と一致するか」を1回だけ検証する従来の自動テストでは、揺れを含んだ品質を測れないのです。

そこでkickflowでは、AI機能を本番と同じ経路で実際に何度も呼び出し、その出力を採点して評価指標として記録する評価(eval)フレームワークを構築しました。
この記事では、その仕組みと、実際にAIを呼んで初めて見えてきたこと(テスト基盤の統合バグと、プロダクト本体の品質課題)、そして機械採点とLLM-as-a-Judgeをどう使い分けたかを紹介します。
さらに、完成後初めてのモデルアップデートで実際にevalを使い、定義した品質基準を満たしたまま、より低価格なモデルへ更新できると判断した事例も紹介します。

続きを読む

kickflow のシリアライザを Alba に移行しました

kickflow でエンジニアをしている川島です。

2026年7月、kickflow の全 API レスポンスを支えるシリアライザ約190ファイルを、ActiveModelSerializers(以下 AMS)から Alba へ一斉に切り替えました。

この記事では、大規模な置き換えを壊さずに進めるために何をしたかを、時系列で紹介します。

続きを読む

Disk I/O Budget 枯渇と監視を作り直した話

新規事業本部でバックエンドエンジニアをしている渡辺です。
本記事では、検証用の Preview 環境で起きたDB障害の調査と、監視を作り直すまでの記録をまとめます。 ひとことで言えば、DB が急に詰まってログインなどが不安定になった障害です(本番の実ユーザーへの影響はありません)。 学びが多かったのは復旧よりも、主要メトリクスが正常に見えて原因特定に遠回りした過程でした。

  • 1. 前提となるアーキテクチャ
    • Disk I/O Budget という別軸のリソース上限
  • 2. 何が起きたのか(症状)
  • 3. なぜ「DB は正常」と読み違えたか
  • 4. ログとメトリクスを時系列で突き合わせる
  • 5. 仮説としての障害の連鎖
    • 確度の整理
  • 6. 実施した対応と、残した課題
  • 7. 監視を異常が判断できる形に作り直す
    • Before / After
  • 8. おわりに
続きを読む