『そのゲームで言語学習』を自動化する。Python×EasyOCRで挑む翻訳ツール自作とポートフォリオ構築の軌跡

Video Games for Language Learning (VGLL) のシステム概念図。ゲーム画面からの入力が、OCRとNLPのフィルターを経て、認知的ストレスという橋渡しにより脳と学習ログ(Ankiカード)に定着する流れを抽象化。

「このゲームで言語学習できないか?」

プレイ中に何度も辞書を引くたび、物語のテンポは止まり、没入感は削がれていく。辞書を片手にプレイする……それも悪くはないけれど、「そういうものさ」と割り切るには、自分の中の好奇心が強すぎた。

「もっとスマートに、物語の没入感を守りながら『学習』まで完結できないか?」

この連載は、そんな私の「欲張りな願望」を叶えるための、Pythonによる画面翻訳ツール自作記録です。

ゲーム×言語学習=楽園、のはずだった

「ゲームをプレイするだけで、語学学習もできる。これぞ一挙両得じゃないか?」

そう思い立って、意気揚々と洋ゲーを起動したのが2時間前のこと。手元には辞書、画面には知らない英単語の羅列。 「まずは辞書を引いて、意味を確認して、それから物語に戻る」 最初はそう決めていた。だけど、物語が進まない。単語を調べるたびに思考が止まり、没入感が粉々に砕けていく。

——2時間経過。

ゲームのプレイ画面はほとんど変わっていない。物語を心から楽しんでいるわけでもなければ、かといって学習が進んでいる実感もない。 「……やめだやめだ!」

キーボードを叩きつけたくなるほどの無力感。 「物語のテンポを止めず、かつ学習効果を最大化するアシストツール。……世の中にそんな都合のいいものはないのか?」

あるはずがない。なら、自分で作るしかない。

【プロジェクト要件定義:Video Games for Language Learning】

Video Games for Language Learning (VGLL) のデータ処理パイプラインを示すフローチャート。ゲーム画面入力から、キャプチャ、OCR(EasyOCR)、NLP(spaCy)、データ構造化、そしてAnki/CSV出力に至るまでの技術的な流れを可視化。
VGLL技術スタック:ゲーム画面から学習データ抽出・加工、そして外部連携(Anki)に至るまでの処理フロー。

本プロジェクトにおける要件定義をここに記す。

ゲーム体験を損なうことなく、日々のプレイを「学習のきっかけ」へと変換し、その軌跡を記録すること。あえて「認知的ストレス」を実装に組み込むことで、脳の深い部分に言語を刻み込むこと。

以上の設計思想に基づき、以下の通り要件を定める。

1. プロジェクト概要

ゲームプレイ中の没入感を維持しつつ、「英語の語順で理解する脳」を育成するための、完全ローカル・オフライン動作の言語学習アシスタントツール。

2. コアコンセプト(核となる思想)

  • 完全ローカル・オフライン駆動: 外部API、ネットワーク依存を排除し、コストゼロ・低負荷・プライバシー保護を実現する。
  • 「認知的ストレス」の活用: 完璧な機械翻訳を与えず、辞書ベースのヒント提示を行うことで、あえて脳に「考える負荷(認知的ストレス)」を与え、学習効果を最大化する。
  • 英語脳の育成: 英語の語順のまま単語を紐解き、脳内で意味を組み立てるプロセスをUIでサポートする。

3. 機能要件

  • トリガー機能: ホットキー(F12等)によるキャプチャ開始。
  • Raw Context Capture: OCR(EasyOCR等)を用いたゲーム画面からの英文抽出。
  • Vocabulary Extraction: spaCy等によるトークン化と活用形(原形)の抽出。
  • Dictionary Mapping: ローカル辞書データベースを用いた訳語マッピング。
  • Translation Log: CSV形式での学習ログ蓄積(原文・抽出単語・訳語候補・タイムスタンプ)。
  • 辞書選択・設定機能: ユーザーの学習レベルに合わせて、辞書ソースや表示スタイル(訳語の表示有無等)を選択できるカスタマイズ性。

4. 学習ログのデータ構造

Video Games for Language Learning (VGLL) の利用イメージモックアップ。ゲーマーがゲームに没頭するPCデスク環境で、ゲーム画面の一部がオレンジ色の枠でキャプチャされ、それが物理的なAnkiカードとメモとしてデスク上に変換・定着されている様子。
VGLL使用風景:デジタルなゲーム体験から、認知的ストレスを経て、アナログな学習資産へと変換されるエコシステム。

後続のAnki連携を考慮し、以下の構造で保存する。

フィールド内容
timestamp取得日時
contextOCRで取得した元の英文(文脈)
words単語ごとの解析データ
translations複数の訳語候補(辞書参照)

技術スタックとその選定理由 (Tech Stack & Justification)

本プロジェクトでは、完全ローカル駆動、低コスト、そして高い拡張性を両立させるため、以下の技術を選定した。

  • 言語:Python
    • 理由: 語学学習ツールとしての柔軟なデータ処理に加え、EasyOCRspaCy といった強力な自然言語処理(NLP)エコシステムが充実しているため。また、将来的なUI構築(Streamlit等)やAnki連携への移行が最もスムーズであると判断。
  • OCRエンジン:EasyOCR
    • 理由: Google Cloud Vision APIのようなクラウド型APIを選択せず、ローカル環境で完結するオープンソースを選定。ゲーム画面というノイズの多い環境下でも、安定した文字認識精度を誇り、かつオフラインで動作することが最大の決め手。
  • NLP(単語解析):spaCy
    • 理由: 単純なトークン分割に留まらず、単語の原形(lemma)抽出や品詞判定を高速に行うため。これにより、ゲーム特有の活用形が含まれる英文からでも正確に辞書マッチングを行うことが可能となる。
  • データ永続化:CSV / SQLite
    • 理由: 高度なデータベース管理システムを導入せずとも、Ankiへのインポートが容易なCSV形式を採用し、将来的にデータ量が増大した場合はSQLiteへシームレスに移行できる柔軟性を確保。サーバーコストをゼロに抑え、ユーザー自身のPC内に「学習資産」を蓄積できる。

まとめと今後の展望 (Conclusion & Future Work)

本プロジェクト「Video Games for Language Learning」は、ただの翻訳ツールではない。ゲーム体験と語学学習を高度に融合させ、機械に頼らず自らの脳で言語を解釈する「英語脳」を構築するためのプラットフォームだ。

今回定義した要件と技術スタックは、すべて「没入感」と「能動的な学習」を最優先に設計している。今後はこの設計図を基に、以下のステップで実装を加速させていく。

  1. プロトタイプ構築: スクリーンショットとOCR連携によるテキスト抽出の実装。
  2. 学習ログの最適化: 辞書データとのマッチングと、Anki連携を見据えたデータ構造の完成。
  3. UI/UXのブラッシュアップ: ユーザーのストレスを学習の触媒に変える、設定画面の実装。

「不便を愛し、技術で体験をハックする」。 このプロジェクトを通じて、言語学習の新しい形をエンジニアとして切り拓いていきたい。次回の更新では、OCR実装の第一歩となるコードと、実際に画面から文字を抽出した際の「技術的知見」を共有する予定だ。

今後の開発の足跡に、ぜひ期待していてほしい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントは日本語で入力してください。(スパム対策)