毎日の英語学習、カード作りが面倒くさくないですか?

IT

英語学習にAnkiを使っている方は多いと思います。でも、カードを作る作業って地味に大変じゃないですか?

わたしが実践しているルーティンはこうです。

まずAndroidの音声認識を使って英語を喋ります。うまく言えなくてもとりあえず喋る。それをテキスト化して、ChatGPTに食わせて自然な英語に書き換えてもらいます。

これが意外と良いんです。自分がたどたどしく言おうとしていた表現が、ネイティブが自然に使う形に整えられて返ってきます。「あ、こう言えばよかったのか」という発見の連続です。この”自然に書き換えられたフレーズ”こそが、覚えるべき瞬間英作文の素材になります。

そこで重要だと思ったフレーズにアスタリスク(*)を付けて、Googleドキュメントに蓄積しています。日本語訳と英語フレーズをセットで記録する形で、Ankiの「日本語→英語」カードとして使うイメージです。

このルーティンを続けたところ、英語の瞬発力がかなり上がってきた実感があります。

ただし、問題がありました。

Ankiへの登録作業がとにかく面倒くさい。日本語訳を考えて入力して、英語フレーズをコピペして、テキストファイルにまとめて、Ankiにインポートして…という作業を月1回まとめてやっていたのですが、それすらだんだん億劫になってきました。

「これ、自動化できないかな?」

そう思って試行錯誤した記録をまとめました。結論から言うと、生成AIとGoogleのスクリプト(GAS)を組み合わせることで、ボタン一つで自動化できました。ただし、そこに至るまでの道のりが笑えるくらい大変だったので、その話も含めてお伝えします。


やりたかったこと

やりたかったことはシンプルです。

  1. Googleドキュメントに毎日書いている英語日記から、アスタリスクを付けたフレーズを自動で拾う
  2. Claude APIが文脈を読んでフレーズの範囲を判断し、日本語訳を生成
  3. タブ区切りのテキストファイルに自動で蓄積
  4. そのファイルをAnkiにインポート

ポイントはフレーズの範囲判断です。アスタリスクは文の途中につけているので、どこで終わるかを人間が判断しているような感覚でAIに読み取ってほしかった。これがプログラムだけでは難しく、生成AIが必要な理由です。


まずGeminiで試みて…17回失敗しました

最初はGeminiとGASの組み合わせで挑戦しました。

MCP(AIとツールを連携させる仕組み)を経由してGoogleドキュメントを読み込もうとしたのですが、これが全く動かない。Geminiに修正を頼むたびに「今度こそ完璧です!」と自信満々に答えてきます。でも動かない。

「今度こそ完璧!」を17回繰り返しました。

結局、根本的な設計の問題でした。GASはGoogleドキュメントを直接読めるのに、わざわざMCPを経由しようとしていたんです。Geminiはそこを指摘せずひたすら修正を繰り返していました。

Geminiを見限り、Claude APIに切り替えることにしました。


Claudeで作り直した仕組み

仕組みはこうなっています。

【ボタンを押す】
 ↓
GAS(Googleのスクリプト)
 ↓ 日記ドキュメントを直接読み込む
 ↓ 前回処理した日付以降の日記だけ抽出
 ↓ Claude APIに送る
Claude API
 ↓ アスタリスク付きフレーズを判断・日本語訳生成
 ↓ タブ区切りで返す
GAS
 ↓ Googleドライブのテキストファイルに追記
【完了】

MCPは不要でした。GASがGoogleドキュメントを直接読んで、Claude APIに渡すだけ。シンプルに考えれば良かったんです。


また詰まった:モデル名問題

Claudeに切り替えてもすんなりとはいきませんでした。

最初に指定したモデル名(claude-sonnet-4-20250514)が存在しなかったらしく、APIがプロンプトをそのままオウム返しして返してきました。日本語訳どころか指示文がそのままテキストファイルに書き込まれる珍事が発生。

正しいモデル名は claude-haiku-4-5-20251001


さらに詰まった:見出し問題

モデル名を直したら今度は「英語フレーズを抽出しました:」という見出し行がClaudeの出力に混入するようになりました。

プロンプトに「見出しを出力しないで」と書いても、書き方によっては無視されてしまいます。試行錯誤の末、GAS側でタブ文字を含む行だけをフィルタリングするという方法で解決しました。

const lines = rawText.split('\n').filter(line => line.includes('\t'));
return lines.join('\n');

データ行には必ずタブが入っていますが、見出し行にはタブが入りません。この特性を利用しました。


完成した運用フロー

最終的な毎日の運用はこれだけです:

  1. 英語日記を書く(Googleドキュメント)
  2. スマホのブラウザでURLを開いてボタンを押す(5秒)
  3. 週1回、テキストファイルをAnkiにインポート(3分)

ボタンを押すだけで、前回処理した日付以降の日記から自動でフレーズが抽出されます。処理済みの日付も自動で記録されるので、重複して処理されることもありません。


費用はどのくらい?

Claude APIは従量課金です。日記1回分(数百〜千文字程度)の処理なら、1回あたり約0.1〜0.3円程度。毎日使っても月100円以下のイメージです。

AnthropicのコンソールでAPIキーを発行し、クレジットをチャージして使う形になります。


まとめ:生成AIで自動化するときのポイント

この経験から学んだことをまとめると:

  • 設計をシンプルにする:できるだけ直接つなぐ。余計な経由点を増やさない
  • モデル名は公式ドキュメントで確認:間違えると謎の動作をします
  • AIへの指示(プロンプト)だけで解決しようとしない:コード側でフィルタリングする方が確実なこともあります
  • Geminiに17回「完璧」と言わせない:早めに別の手段を検討しましょう(笑)

英語学習の継続には仕組み化が大事です。カード作りの手間が減った分、復習に時間を使えるようになりました。ぜひ試してみてください。

コメント

タイトルとURLをコピーしました