指標

AIがどのように適用されたか、自動化された作業、手作業で残った作業、推定時間削減、注意点をまとめます。

  • 総開発時間:約1.5時間(コンセプトから本番準備完了まで)
  • イテレーション回数:22回(UIの洗練、マッピングロジック、およびパフォーマンス向上)
  • 手動検証サイクル:6つの主要ラウンド(キャレットとHUDのブラウザ互換性の確保)
  • 解決された重要なバグ:3件(複雑な contenteditable の選択デッドロックを含む)

重要なバグの深掘り

開発中に直面した技術的な壁と、それをどう乗り越えたかを詳しく解説します。

  • キャレットのジッター:contenteditable エディタの `innerHTML` をプログラムで置き換えると、カーソルのネイティブ位置が失われます。DOM更新の「前」に文字オフセットを計算し、更新「後」にミリ秒単位の精度で復元するカスタムの **Recursive Text-Node Walker** を実装することで解決しました。
  • 正規表現の形式ミス:「シングルパス」へのリファクタリング中、サイレントな `SyntaxError` に遭遇しました。辞書のカテゴリによって、単純な文字列配列のものと `[パターン, 提案]` のペアのものが混在していたためです。堅牢なフォーマット・ノーマライザーを導入して修正しました。
  • ステータスのデッドロック:テキストが削除された際やエンジン読み込み失敗時に、UIが「Analyzing...」のまま固まるUXバグが発生しました。エッジケースでも UI が「System Ready」を維持できるよう、必須の早期リターンと状態リセットを実装しました。

環境の壁

自動化されたブラウザ・サブエージェントから 503 Capacity Error が継続的に発生したため、ローカルの Python HTTP サーバーを使用した高頻度の手動検証サイクルに切り替えました。AIファーストのワークフローであっても、ローカルの `http://localhost` は開発者の最も信頼できる味方であることを再認識しました。

テクニカルブログの未来を築く:AIと共に「Perception Engine」を共作する方法

大量生産されるAI「スロップ」—ありふれた、インスピレーションの欠けたコンテンツが溢れる時代に、テクニカルライターはどう差別化を図るべきか? その答えはAIを使わないことではなく、高度なパフォーマンス基準を強制する優れたツールと共に書くことです。

前回のセッションで、私はAIと協力し、2026年の Medium スタイルのエコシステム向けに特別に設計されたプロフェッショナル仕様のテクニカルブログ用ツール AI Perception Master を構築しました。

これは、私たちがそれをどう構築したか、どのような技術的な壁を乗り越えたか、そして思考のスピードで複雑なUXを構築することがどのような体験であるかの物語です。

ビジョン:実体、人間性、そしてスキャナビリティ(読み流しやすさ)

目標はシンプルながら野心的でした。単に文法をチェックするだけでなく、テキストの Perception(知覚) を測定するエディタを作ることです。私たちは以下の3つの柱に焦点を当てました:

  1. 実体(Substance): 「なぜ(論理的根拠)」が存在するか、それとも単なる手順の羅列か?
  2. 人間性(Humanity): 声が本物で親しみやすいか、それとも取扱説明書のようか?
  3. スキャナビリティ(Scannability): 読者が3,000字のディープダイブを「文の疲労」を感じることなく消化できるか?

主な機能の概要

  • インタラクティブ・スキャナビリティ・マップ: リアルタイムの SVG 「鼓動」グラフ。クリックで該当箇所へジャンプでき、ランドマークや見出しを自動抽出します。
  • 疲労分析グロー: 読者の離脱を招きやすい高疲労エリア(複雑な文)がオレンジや赤に光って警告します。
  • スマート HUD ステータス: 執筆中にライブでアドバイス(例:「Substance Needed」や「Readability Fatigue!」)をくれる文脈対応ライト。
  • シングルパス O(N) エンジン: 5,000字の長文でも遅延なく動作する $O(N)$ パフォーマンス最適化。

技術的な深掘り:スキャナビリティ・マップ

アプリの「ヒーロー」機能は インタラクティブ・スキャナビリティ・マップ です。サイドバーに配置されたこの動的な SVG アークは、記事のリズムをリアルタイムで追跡します。

🧩 骨格のマッピング

H1-H3 ヘッダーを識別し、アーク上の鮮やかで輝く垂直の目盛りとしてマッピングする堅牢な抽出エンジンを実装しました。これにより、一目で記事の「構造的な骨格」を確認できます。

🔥 疲労分析ロジック

「テキストの壁」症候群を防ぐため、疲労分析器(Fatigue Analyzer) を構築しました。長い文が多すぎると、マップのセグメントがオレンジ(警告)または赤(高疲悩)に光ります。

[!TIP] 技術的な実装: 過去3つの文をチェックするスライディング・ウィンドウ・アルゴリズムを使用しました。単語数が継続的に20語を超えると、書き手の注意を引くためにセグメントが「きらめき」ます。

パフォーマンスの課題:「シングルパス」アーキテクチャ

記事が長くなるにつれ、エディタにラグが発生し始めました。キーストロークごとに、辞書内の すべての単語に対して何百もの正規表現スキャンがトリガーされていたためです。5,000字のブログ投稿では、これはパフォーマンスの死を意味しました。

解決策: エンジン全体を Universal $O(N)$ Scanner にリファクタリングしました。 辞書内の 全パターン(約500以上)を1つの巨大な Union Regex(和集合の正規表現) に統合しました。ドキュメントを何百回もスキャンする代わりに、エンジンは正確に 1回 だけスキャンします。

Two-Pointer Linear Renderer と組み合わせることで、激しくタイピングしている間でも 60fps を維持できるようになりました。

AIとの共同開発体験:思考のスピードで構築する

この過程で最も魅力的だったのは、AIとの「ペアプログラミング」のダイナミズムでした。

  1. プロトタイピングのスピード: まっさらな index.html から全機能搭載の SVG ベース知覚エンジンまで、わずか一つの午後で到達しました。
  2. キャレット・ジャンプの解決: 最も手強かったバグの一つは、AIが DOM を更新するたびにカーソルが行頭に飛んでしまう現象でした。カスタムの Recursive Text-Node Walker を実装し、ミリ秒単位の精度で復元することで解決しました。
  3. スマート HUD: ステータス・インジケーターを スマート HUD に進化させました。単に「Ready」と言うだけでなく、下書きの内容をインテリジェントにフラグ立てします。

解決された重要なバグの詳細

AI駆動の開発は常に直線的ではありません。手作業による精密な修正を必要とした3つの「高い」壁にぶつかりました:

  1. キャレットのジッター: contenteditable エディタの innerHTML をプログラムで置き換えると、カーソルのネイティブ位置が失われます。DOM更新の「前」に文字オフセットを計算し、更新「後」にミリ秒単位の精度で復元するカスタムの Recursive Text-Node Walker を実装することで解決しました。
  2. 正規表現の形式ミス:「シングルパス」へのリファクタリング中、サイレントな SyntaxError に遭遇しました。辞書のカテゴリによって、単純な文字列配列のものと [パターン, 提案] のペアのものが混在していたためです。堅牢なフォーマット・ノーマライザーを導入して修正しました。
  3. ステータスのデッドロック: テキストが削除された際やエンジン読み込み失敗時に、UIが「Analyzing…」のまま固まるUXバグが発生しました。エッジケースでも UI が「System Ready」を維持できるよう、必須の早期リターンと状態リセットを実装しました。

環境の壁

自動化されたブラウザ・サブエージェントから継続的に 503 Capacity Error が発生しました。これにより、ローカルの Python HTTP サーバーを使用した高頻度の手動検証サイクルに切り替えることを余儀なくされました。AIファーストのワークフローであっても、ローカルの http://localhost は開発者の最も信頼できる味方であることを再認識しました。

数字で見るプロジェクト

このレベルのツールを構築するには、通常数日かかります。エージェンティックAIを導入した結果は以下の通りです:

  • 総開発時間: 約1.5時間(コンセプトから本番準備完了まで)
  • イテレーション回数: 22回(UIの洗練、マッピングロジック、およびパフォーマンス向上)
  • 手動検証サイクル: 6つの主要ラウンド
  • パフォーマンス最適化: シングルパス正規表現へのリファクタリングにより 100倍の高速化を達成
  • 解決された重要なバグ: 3件

最後に

AI Perception Master は単なるアプリではありません。人間の創造的なビジョンが AI の実行スピードと出会ったときに何が可能になるかの証です。読者の「知覚」に焦点を当てることで、テクニカルコンテンツが深く人間的で、高度に構造化され、実体豊かなものであり続けることを保証するツールを構築しました。

コードを見たいですか? プロジェクトは公開されており、バニラ JS コアでプレミアムかつ高性能なツールを構築できることを証明しています。

Related blog posts

入力や出力を見ずにプロンプトを調整する

入力や出力を見ずにプロンプトを調整する

入力と出力を見ずにプロンプトを調整することは可能か? 入力と出力を知らずにプロンプトを調整するというのは、質問を知らずに正しい答えを書き下すような愚かな話に聞こえるかもしれない。

Read More
AIエージェント導入の再考:技術だけでなく職務設計から始める

AIエージェント導入の再考:技術だけでなく職務設計から始める

企業がAI導入を加速する中、主要LLMベンダーのMCP(モデル制御プラットフォーム)やA2A(エージェント間連携)などのフレームワークが活用されています。これらはAIエージェントの協調や文脈理解を支援しますが、ビジネス中心ではなくLLM中心です。

Read More
MCP:AIの世界とのインターフェース標準化—能力交渉は未解決

MCP:AIの世界とのインターフェース標準化—能力交渉は未解決

MCPはUSB-Cプロトコルのような標準化を目指していますが、LLM間の知識やコンテキストウィンドウの違いは根本的な障壁です。単に機能リストの交換を標準化するだけでは十分ではありません。

Read More