リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: WordSmith
チェック結果のテキストレポート出力機能の追加
## 1. 目的
文体チェックの結果をそのまま他者に共有したり、後から見直したりするニーズに応える。現状は画面上でしか確認できないため、上司への提出・チームレビュー・自己振り返りに使いにくい。チェック結果を整形済みテキスト(.txt)としてダウンロードできるボタンを追加する。
## 2. 具体的な仕様
### 2-1. UIの追加箇所
- チェック結果パネルの下部に「レポートをダウンロード」ボタン(📄アイコン付き)を追加する。
- ボタンはチェック実行後(検出件数が0件でも)に活性化する。チェック未実行時はグレーアウト&disabled。
- スマホでは結果パネル末尾に全幅ボタンとして配置する。
### 2-2. 出力ファイルの仕様
- ファイル名: `wordsmith_report_YYYYMMDD_HHMMSS.txt`(クライアント側でDateオブジェクトから生成)
- 文字コード: UTF-8(BOMあり、Windowsメモ帳でも文字化けしないよう対応)
- 出力内容(順序固定):
```
===== WordSmith チェックレポート =====
生成日時: 2025-07-10 14:32:05
使用プリセット: ビジネスメール
読みやすさスコア: 78 / 100
----- 入力テキスト(先頭200文字) -----
(テキストを200文字でカット、超過時は「…(以下省略)」を付記)
----- チェック結果サマリー -----
総検出件数: 5件
・ですます/である調混在: 2件
・長文(80字超): 1件
・ら抜き言葉: 1件
・重複表現: 1件
----- 検出箇所の詳細 -----
[1] ら抜き言葉
該当箇所: 「食べれる」
推奨候補: 「食べられる」
位置: 3文目
[2] ですます/である調混在
該当箇所: 「〜である。」
推奨候補: 「〜です。」
位置: 5文目
…(以下、検出順に続く)
===== END OF REPORT =====
```
- 「位置」はテキストを句点・改行で分割した文番号(1始まり)で表現する。
- 言い換えサジェストがない検出項目(候補なし)は「推奨候補: (なし)」と記載する。
### 2-3. 実装方法
- PHPもサーバー通信も不要。JavaScriptのみで完結する。
- `Blob`オブジェクトに文字列を格納し、`URL.createObjectURL`+動的`<a>`タグのclickで即時ダウンロードさせる。
- BOM付きUTF-8は `new Blob(['\uFEFF' + content], {type: 'text/plain;charset=utf-8'})` で対応する。
- 既存のチェック結果オブジェクト(検出配列・スコア・プリセット情報)をそのまま参照してレポート文字列を生成するため、チェックロジック本体を変更しない。
## 3. 既存機能との整合
- チェックロジック・ハイライト・言い換えサジェスト・ビフォーアフター比較・履歴保存はすべて変更なし。
- ボタンをDOMに追加するだけで既存レイアウトへの影響は最小限(結果パネル末尾への追記のみ)。
- プリセット切り替えや再チェック時はボタンを再度disabledに戻し、新しいチェック完了後に再活性化することで誤った旧データのダウンロードを防ぐ。
文体チェックの結果をそのまま他者に共有したり、後から見直したりするニーズに応える。現状は画面上でしか確認できないため、上司への提出・チームレビュー・自己振り返りに使いにくい。チェック結果を整形済みテキスト(.txt)としてダウンロードできるボタンを追加する。
## 2. 具体的な仕様
### 2-1. UIの追加箇所
- チェック結果パネルの下部に「レポートをダウンロード」ボタン(📄アイコン付き)を追加する。
- ボタンはチェック実行後(検出件数が0件でも)に活性化する。チェック未実行時はグレーアウト&disabled。
- スマホでは結果パネル末尾に全幅ボタンとして配置する。
### 2-2. 出力ファイルの仕様
- ファイル名: `wordsmith_report_YYYYMMDD_HHMMSS.txt`(クライアント側でDateオブジェクトから生成)
- 文字コード: UTF-8(BOMあり、Windowsメモ帳でも文字化けしないよう対応)
- 出力内容(順序固定):
```
===== WordSmith チェックレポート =====
生成日時: 2025-07-10 14:32:05
使用プリセット: ビジネスメール
読みやすさスコア: 78 / 100
----- 入力テキスト(先頭200文字) -----
(テキストを200文字でカット、超過時は「…(以下省略)」を付記)
----- チェック結果サマリー -----
総検出件数: 5件
・ですます/である調混在: 2件
・長文(80字超): 1件
・ら抜き言葉: 1件
・重複表現: 1件
----- 検出箇所の詳細 -----
[1] ら抜き言葉
該当箇所: 「食べれる」
推奨候補: 「食べられる」
位置: 3文目
[2] ですます/である調混在
該当箇所: 「〜である。」
推奨候補: 「〜です。」
位置: 5文目
…(以下、検出順に続く)
===== END OF REPORT =====
```
- 「位置」はテキストを句点・改行で分割した文番号(1始まり)で表現する。
- 言い換えサジェストがない検出項目(候補なし)は「推奨候補: (なし)」と記載する。
### 2-3. 実装方法
- PHPもサーバー通信も不要。JavaScriptのみで完結する。
- `Blob`オブジェクトに文字列を格納し、`URL.createObjectURL`+動的`<a>`タグのclickで即時ダウンロードさせる。
- BOM付きUTF-8は `new Blob(['\uFEFF' + content], {type: 'text/plain;charset=utf-8'})` で対応する。
- 既存のチェック結果オブジェクト(検出配列・スコア・プリセット情報)をそのまま参照してレポート文字列を生成するため、チェックロジック本体を変更しない。
## 3. 既存機能との整合
- チェックロジック・ハイライト・言い換えサジェスト・ビフォーアフター比較・履歴保存はすべて変更なし。
- ボタンをDOMに追加するだけで既存レイアウトへの影響は最小限(結果パネル末尾への追記のみ)。
- プリセット切り替えや再チェック時はボタンを再度disabledに戻し、新しいチェック完了後に再活性化することで誤った旧データのダウンロードを防ぐ。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (wordsmith))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「WordSmith」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=wordsmith
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/wordsmith/
ご利用ありがとうございます!
ご要望いただいた「WordSmith」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=wordsmith
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/wordsmith/
ご利用ありがとうございます!
Echo
Iris