Englishesは、「英文をGPTで構文色分け → 保存 → 過去ログ表示 → TTSで読み上げる」英語学習アプリです。
that節・so ... that・関係代名詞・分詞構文など、塊で読めるようになりたい構文を GPT API に解析させて色分けし、
そのまま保存・復習・音声再生まで一気通貫で行えるようにしました。
英文を一語一語追うのではなく、「構文のまとまり」で読む癖をつけたい。 そのために、英文を入力するとGPTが構文ブロックを抽出し、 アプリ内でブロックごとに色分けして表示する仕組みを作りました。
解析した結果はRoomデータベースに保存され、後から過去ログとしていつでも開けます。 各ログはTTS(TextToSpeech)で読み上げもできるので、 「視覚的な構文の塊」と「音声」を同時に使って、論文やニュース記事を読む力を底上げしていくことを目指しています。
Androidアプリ(Kotlin)がユーザーの入力文を受け取り、 GPT APIに構文解析を依頼します。返ってきたJSON形式のブロック情報を、 アプリ内でSpannableStringに変換して色分け表示。 同時に、原文・ブロック情報・タイムスタンプをRoom DBに保存します。 TTSモジュールは、表示中の英文を読み上げ、カーソル位置と連動してブロックを強調表示できます。
so ... that, not only A but also B, that節、分詞構文、関係詞節などを「塊」として認識したいので、
GPTに対して「英文を構文ブロックに分割し、各ブロックの種類と文字位置を返す」ようなプロンプトを設計しました。
返却フォーマットは、[{ type: "THAT_CLAUSE", start: 10, end: 35 }, ... ] のようなJSON配列で、
App側はこの位置情報をもとに、TextView内の対応部分をハイライトします。
構文ブロックごとに色やスタイルを変えるために、AndroidのSpannableStringを使用しています。
that節は薄い青、関係代名詞は緑、so ... that構文はオレンジ、など構文の種類ごとに色を固定することで、
新しい英文でも一瞬で「どこからどこまでが同じ役割か」が視覚的にわかるようにしました。
単なる一時表示ではなく、「構文付き英文ノート」を増やしていくイメージで設計しています。 解析済みの英文は、原文・構文ブロック・補足メモ・日付などと一緒にRoom DBへ保存。 後から「so ... that構文を復習したい」「この論文の一節だけ見直したい」と思ったときにすぐに検索・再表示できます。
AndroidのTextToSpeechを使って、表示中の英文を読み上げます。
再生位置(読み上げ中のインデックス)に応じて、
現在読んでいる構文ブロックを少し濃い色で強調することで、
「耳で聞きながら構文の塊を追う」感覚を作っています。
将来的には、再生スピード・リピート回数・シャドーイングモードなども追加予定です。
実際の論文の一文や、TOEIC / 英検レベルの長文を入力し、 構文ブロックの色分けが読みやすさにどう影響するかを確認しました。
現在のプロトタイプでは、1文ごとの解析を前提にしているため、
段落レベルの長めのテキストでは挙動を調整中です。
また、GPTの応答コストを抑えるために、
「構文ブロックとして特に覚えたいものだけに絞るプロンプト」の設計も課題です。
英文入力 → GPT解析 → 色分け表示 → ログ保存 → TTS再生までの流れを録画したデモ動画です。
将来的には、構文の色分けに加えて、 自分の音読を録音してスペクトログラムや発音スコアと紐づけることで、 「読む・聞く・話す」が一つのノート上で循環するようなアプリにしたいと考えています。
構文カバレッジ・UX・コストの3軸で改善を進めます。
構文を色分けする仕組み自体はシンプルですが、
「どの構文を、どの色で、どのくらい主張させるか」を決めるのは意外と難しく、
自分の英語観そのものが試されている感覚がありました。
ただ、色分けされた英文を眺めていると、
中高で積み上げてきた文法知識が「視覚的なパターン」として再整理されていく手応えがあり、
自分自身のリーディングにもかなり効いていると感じています。