Column

長期インターンで取り組んだWordPress診断ツール開発 — 7月の振り返り

5月のブログでは、Walking Skeleton(Week 1)とフィンガープリント検出(Week 2)までを振り返りました。
6月からは スコアリング・ダッシュボード・Excel・営業レビュー、7月前半は 分析画面の完成・最終承認・引き継ぎドキュメント まで進め、9週間の Phase 1 MVP を一区切りつけました。

この記事では、6月以降 に自分が担当した範囲と、インターンを通じて学んだことを振り返ります。

前回(5月)からの続き

時期内容(前回ブログまで)
Week 1(5/18–5/22)モノレポ、core / storage / CLI、CI
Week 2(5/25–5/29)テーマ・プラグイン検出、マージ、10サイト実測

6月以降の流れは、5月に作った検出結果を スコア → 画面 → レポート につなげていくフェーズです。

プロジェクトの全体像(6月時点〜)

  1. CSV / URL から対象サイトを読み込む
  2. ワーカーが HTML を解析し、Finding を返す(Intern B 担当領域が拡大)
  3. スコアリング(減点ルール・商材マッピング・営業推奨フラグ)
  4. SQLite に保存し、ダッシュボード と Excel / PDF で営業が使える形にする

私(Intern A)は引き続き Frontend + Datapackages/scoringpackages/storage の一部、apps/web 全画面、Excel 出力、Week 9 の引き継ぎドキュメントを担当しました。

Week 3–4(6/1–6/12)— スコアリングとサマリ画面

Week 3 で packages/scoring を実装しました。

  • カテゴリ別100点満点の減点方式(security / performance / maintenance / ssl)
  • 重み付き総合スコア(例:security 0.35)
  • Finding ID → 推奨商材(セキュリティ対策、保守契約 など)のマッピング
  • 総合60点以下、または Critical 検出で 営業推奨 フラグ

Week 4 では Next.js ダッシュボードの サマリ画面 を仕上げました。

  • KPI 4枚(総診断数、営業推奨数、本日の診断数、平均スコア)
  • スコア分布ヒストグラム、カテゴリ別問題発生率
  • 直近10件のテーブル

まだモックデータ中心でしたが、「営業が一目で状況を把握する」画面の骨格ができた週でした。

Week 5–6(6/15–6/26)— 一覧・詳細・実データ・Excel

Week 5 でダッシュボードの主要画面を拡張しました。

画面内容
/scans検索、フィルタ、ソート、20件/ページ、CSV エクスポート
/scans/[id]タブ、レーダーチャート、Finding、PDF ボタン(スタブ)

5ワーカーが揃い、リストから詳細まで一連の流れがデモできる状態になりました。

Week 6 は 実データ結合 の週です。

  • pnpm report --excel で約200社分のワークブック出力
  • ダッシュボードを SQLite の実スキャン結果に接続(DB_PATH
  • 200件パフォーマンス検証、営業推奨フラグの Excel / 画面間の一貫性確認

「モックで見せる」から「本番に近いDBで見せる」へ進めたのが大きな転換点でした。

Week 7(6/29–7/3)— 分析画面・LLM表示・営業レビュー ★

Week 7 はダッシュボードを 営業レビュー品質 まで引き上げる週でした。

  • /analytics — 業種別平均スコア、カテゴリ問題率、推奨商材の円グラフ
  • 詳細画面に LLM 生成エグゼクティブサマリ の表示 UI
  • ライト / ダークモード、アクセシビリティの調整
  • 金曜:営業レビュー会に同席 — PDF とダッシュボード両方のフィードバック取得

Intern B の PDF ドラフトと並行して、ダッシュボード側の訴求ポイント(営業推奨バッジ、推奨商材列、日本語ラベル)を揃えました。

Week 8(7/6–7/10)— フィードバック反映と最終承認 ★

営業フィードバックを反映する 仕上げの1週間 です。

Day主な内容
36営業推奨バッジ、推奨商材列、日付ソート
37グラフ配色、スコア帯レジェンド、ダークモード可読性
38ローディングスケルトン、エラー / not-found
39200件バッチの自動検証
40最終営業承認デモ

pnpm verify:day36 〜 verify:day40smoke:day40 などで、デモ前の品質を自分で確認できるようにしました。

Week 9(7/13〜)— 引き継ぎドキュメント

コーディングは最小限にし、社内エンジニアが30分でセットアップできる ことを目標にドキュメントを整備しました。

Day成果物
41README(セットアップ→実行)、apps/web/DESIGN.md
42docs/dashboard/(画面構成・状態管理・データフロー)
43docs/scoring/(減点ルール・商材マッピング)

5月に「パッケージ境界を決める」ことに苦労したのと同じように、今回は 知識の境界をドキュメントに残す ことに力を入れました。

工夫した点

  1. 営業が使う前提で UI を設計したこと
    エンジニア向けの生データではなく、営業推奨・推奨商材・フィルタ・CSV など「次のアクション」が分かる画面を意識しました。
  2. スコア・フラグ・商材の一貫性
    Excel、SQLite、サマリ KPI、一覧フィルタ、詳細バッジで同じ値が出るよう、verify:day30 や sales-flag.test.ts で守りました。
  3. デモと引き継ぎのための自動検証
    日次の verify:dayNN / smoke スクリプトで、PR やデモ前に自分で回帰確認できるようにしました。
  4. Server Component と Client の切り分け
    データ取得は queries.ts + SQLite、フィルタ・チャート・テーマは Client に限定し、200件でも扱いやすい構成にしました。
  5. Intern B との並行開発
    ワーカー・LLM・PDF は B が主導し、私はスコアリングと画面で結果を「見える化」する役割に集中。インターフェース(型・DB)を早めに固めました。

成功した点

  1. 4画面のダッシュボード MVP を完成できたこと
    /summary/scans/scans/[id]/analytics まで、営業デモで使える品質に到達しました。
  2. 200件データでの動作確認
    一覧のページネーション、分析の集計、営業推奨45件フィルタなど、実運用に近い規模で検証できました。
  3. 営業レビューと最終承認フローへの参加
    Week 7・8 の会議でフィードバックを受け、UI とドキュメントに反映できました。
  4. スコアリングと商材マッピングの文書化
    docs/scoring/ に14ルールと5商材の対応を残し、後からルール変更しやすくしました。
  5. 9週間を通した PR・CI の習慣
    5月から続けた「小さな PR、テスト付き」が、後半の大きな画面追加でも破綻しにくかったです。

日本への思い

インターンを通じて、日本は「技術がきれいな国」という印象だけでなく、人と人の信頼でプロダクトが回る国 だと感じるようになりました。

設計書を読み、日本語の UI 文言を揃え、営業向けデモの手順を文書化し、丁寧にレビューをお願いする——その一つひとつが、お客様と営業の方への敬意につながっていると学びました。

メンターの方々は、答えをすぐに与えるのではなく、自分で整理してから相談する余白を残してくれました。その環境の中で、日本の仕事の進め方(品質・確認・記録を大切にする姿勢)を身近に感じられました。

これからも日本語を学び続け、日本で使われるプロダクトに貢献したいです。いつか日本のチームの一員として、同じように「使われるもの」を届けたいという思いが強くなりました。

6月〜7月のマイルストーン

時期内容
Week 3 終了スコアリング動作、ダッシュボード雛形
Week 4 終了サマリ画面
Week 5 終了一覧・詳細画面
Week 6 終了200件バッチ、Excel、実データダッシュボード
Week 7 終了分析画面、LLM UI、★営業レビュー
Week 8 終了フィードバック反映、★最終営業承認
Week 9README、docs/dashboard/docs/scoring/

GitHubリポジトリ: WordPress-site-detection-system

最後に

5月は「指紋を取る」土台、6〜7月は「スコアと画面で営業に届ける」フェーズでした。
Walking Skeleton のときと同じく、型 → DB → ロジック → 画面 → 検証 → ドキュメント と段階を踏んだおかげで、毎週デモ可能な状態を保てたと思います。

インターン全体を通じて、設計書を読み、パッケージ境界を決め、テストと PR で品質を守り、実データと営業の目で検証し、最後は次の担当者のために残す——プロダクト開発の一連の流れを体験できました。

矢部さん、江頭さん、チャンチャルさん、そして支えてくださった皆さまに感謝します。

以下、原文。

目次

English version

Below, the English version — continuation from the May post (Week 3 onward).

Building a WordPress Diagnostic Tool During My Internship — A July Retrospective

My previous post (Week 1–2) covered the Walking Skeleton and fingerprint detection. From June onward, I focused on scoring, the dashboard, Excel export, sales review, and in early July analytics polish, final approval, and handover docs — completing the 9-week Phase 1 MVP.

This post reflects on my work during June and July as Intern A (Frontend + Data).

Where May left off

PeriodScope (May blog)
Week 1Monorepo, core / storage / CLI, CI
Week 2Theme + plugin detectors, merge, 10-site live probe

June connected fingerprint results to scores → UI → reports.

Weeks 3–4 — Scoring and summary dashboard

Week 3: packages/scoring — category deductions, weighted total, product mapping, sales-recommendation flag (≤60 or any critical finding).

Week 4: Next.js summary screen — KPI cards, histogram, category chart, recent scans table.

Weeks 5–6 — List, detail, real data, Excel

Week 5: /scans (search, filters, sort, pagination, CSV) and /scans/[id] (tabs, radar, findings).

Week 6: Excel export for ~200 rows, dashboard wired to real SQLite (DB_PATH), performance and sales-flag consistency checks.

Week 7 — Analytics, LLM UI, sales review ★

  • /analytics — industry scores, category rates, product pie chart
  • LLM executive summary on detail screen
  • Light/dark mode and accessibility
  • Friday sales review — feedback on PDF + dashboard

Week 8 — Polish and final approval ★

Sales feedback applied: badges, chart colors, loading/error states, 200-row verification, final approval demo.

Week 9 — Handover documentation

README, apps/web/DESIGN.mddocs/dashboard/docs/scoring/ — goal: internal engineers can set up in ~30 minutes.

Points I put effort into (工夫した点)

  1. Sales-first UI — badges, product columns, filters, CSV for outreach priority
  2. Consistency across Excel, SQLite, and all dashboard surfaces
  3. Automated verify/smoke scripts before demos and PRs
  4. RSC vs client split for maintainability at 200 rows
  5. Clear pairing with Intern B on workers / LLM / PDF vs my scoring + UI layer

Points that went well (成功した点)

  1. Full 4-screen dashboard MVP at sales-demo quality
  2. 200-row verification (pagination, analytics, sales filter)
  3. Participation in Week 7–8 sales review and final approval
  4. Documented scoring rules and product mapping in docs/scoring/
  5. Sustained PR + CI habit from May through Week 9

My feelings toward Japan (日本への思い)

This internship showed me that working in Japan is not only about clean code — it is about trust, clarity, and respect in how teams build products together.

Preparing Japanese UI copy, demo runbooks, and careful review requests taught me that good engineering serves people downstream — sales staff and customers.

Mentors gave space to think before asking for help. I want to keep learning Japanese and contribute to products used in Japan. This experience strengthened my motivation to work more closely with Japanese teams in the future.

Final thoughts

May was “capture the fingerprint.” June and July were “deliver scores and screens to sales.” The same incremental approach — types → DB → logic → UI → verification → docs — kept us demo-ready every week.

Thank you to Mr.Yabe, Eto-san, Chanchal-san, and everyone who supported me.

目次