第3回 | 育てた相棒に、英語を教わる。Term-gotchi の tg_talk を会話練習モードに育てた開発記 | UNIX Cafe

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

第3回 | 育てた相棒に、英語を教わる。Term-gotchi の tg_talk を会話練習モードに育てた開発記 | UNIX Cafe

Term-gotchi 第3回は、会話機能 tg_talk を軽い英語教材として育てる編です。時間帯やコマンド文脈に応じた台詞、英英辞典風の説明、2ターンの会話例、theme と tone による整理を通して、shell の日常に英語学習をそっと溶かし込む面白さを紹介します。

前回は、Term-gotchi に成長記録や分岐進化を足して、「育てて終わりにしない」ための仕組みを作りました。

tg_history で振り返れるようになり、sagebuilder への分岐も入って、相棒としての輪郭はかなりはっきりしてきました。

でも、最初からこのアプリにはもうひとつの狙いがありました。

それが、英語学習の手触りを terminal の日常に溶かし込むことです。

README にも最初から English-learning flavor と書いてはいたのですが、正直に言うと、第2回までの tg_talk はまだそこまで届いていませんでした。

  • 英語ではあるけれど、教材としては弱い
  • セリフは出るけれど、何を学べばいいかが分からない
  • 会話のトーンや使いどころまでは見えない
  • しかも日本語訳を入れると、英語ではなく日本語を読んでしまう

そこで第3回では、tg_talkただの flavor text ではなく、軽い英語教材として機能するものに育てました。

今回は、Term-gotchi の会話機能をどうやって日常会話寄りにし、開発現場で使いやすい表現を増やし、英英辞典っぽい補助情報を持たせ、学習の視点で整理できるようにしたかを、実装の流れに沿って紹介します。

目次

最初の tg_talk は、英語ではあっても教材ではなかった

第2回までの tg_talk は、状態に応じて短い英語を返す仕組みでした。

例えば、

  • 空腹なら snack 系の台詞
  • mood が低ければ励まし系の台詞
  • form ごとに口調が少し違う

というように、相棒としての雰囲気は出ています。

でも、英語教材として見ると足りない部分がありました。

一番大きかったのは、何を学んだらいいのかが残らないことです。

例えば take a look という表現が出ても、これは casual なのか、同僚に使って自然なのか、check this out とどう違うのか、どう返したら会話として成立するのかが見えません。

ただ英文が出るだけだと、「読む」ことはできても「使える」ところまでは行きにくい。

ここで必要だったのは、生成 AI で長文会話を作ることではなく、短い表現に文脈を付けることでした。

まずはセリフを、時間帯とコマンド文脈で変えるようにした

最初にやったのは、tg_talk の出力そのものを増やすことでした。

それまでの分岐は、form と hunger / health / mood が中心でしたが、そこに vocab_level、時間帯、直近コマンドのカテゴリを足しました。

これで、例えば同じ元気な状態でも、

  • 朝に git を使ったあと
  • 午後に rgls を使ったあと
  • 夜に npmcargo を使ったあと

で、出てくる台詞が変わるようになります。

例えばこんな方向です。

  • take a look at the diff
  • kick off the build
  • follow that clue
  • ship it
  • keep the momentum going

この時点で、英語の中身がかなり「terminal の英語」「開発現場の英語」に寄ってきました。

しかも、ただ technical な単語を並べるのではなく、アメリカ英語の職場会話っぽい言い回しを増やしたのがポイントです。

例えば、

  • Sounds good.
  • One sec.
  • I'm on it.
  • Could you take a look?
  • We're in a good groove.

のような、短くて実際によく出る返しを混ぜるようにしました。

英語教材として考えるなら、こういう「頻出だが教科書っぽくない表現」がかなり重要です。

日本語訳は、理解を助ける前に日本語脳を呼び戻してしまった

次にぶつかったのが、補助説明の出し方でした。

最初は、学習用に Meaning: を日本語で付けていました。

でも、実際に眺めてみると、これは思った以上に英語の流れを切ります。

英語のセリフを読んだあとに日本語訳が出ると、理解は確かに楽になります。ただ、その瞬間に思考の主導権が日本語へ戻ってしまいます。

これは短い学習には便利でも、「英語で英語を受け取る」練習としては弱い。

そこで第3回では、Meaning:英英辞典っぽい短い英語説明に切り替えました。

例えば、

  • Used when you want to look at something for a short time.
  • Useful when someone notices an important detail and you want to investigate it further.
  • Good for talking about scope, focus, and using effort well.

のように、訳ではなく英語でニュアンスを説明する形です。

これで、読み手は日本語に戻らずに phrase、usage、nuance を英語のまま受け取れるようになります。

しかも、難易度は vocab_level に応じて変わるようにしました。

  • basic: 短く平易な説明
  • intermediate: 用途が分かる自然な説明
  • advanced: 少し抽象度の高い説明

つまり、相棒の成長に合わせて、英語の説明文そのものも育つようにしたわけです。

Phrase だけでなく、Example の2ターン会話が必要だった

単語や言い回しを覚えるだけなら Phrase: があれば十分です。

でも実際の会話では、「そのフレーズをどう返すか」が分からないと使えません。

そこで追加したのが Example: です。

最初は 1 文だけの例文にしていたのですが、これだと usage は分かっても会話の流れは見えません。

最終的には、次の形にしました。

Example:
A: Could you take a look at this file with me?
B: Sure. Let me check this out.

この 2 ターン形式にしたことで、どう切り出すか、どう受けるか、どの程度くだけていいかが一気に分かりやすくなりました。

英語学習として見ても、これはかなり効きます。

なぜなら、単語単位ではなく会話の往復として頭に入るからです。

しかも、この A:B: は固定ではありません。

同じ Phrase: でも、提案っぽく入る、相談っぽく入る、確認っぽく入る、など、複数パターンが回るようにしました。

例えば take a look / check this out でも、

  • Could you take a look at this file with me?
  • Do you want to take a quick look at this?
  • Would you mind looking at this with me for a second?

のように入り口を変えられます。

これで「同じ意味のことを、少し違う空気で言う」練習ができます。

ThemeTone を付けると、暗記ではなく整理になる

今回かなり良かった追加が、Theme:Tone: です。

Theme:

これは、その表現が何の種類のコミュニケーションかを示します。

例えば、

  • casual attention-directing phrases
  • polite review requests
  • scope control and prioritization
  • signal-versus-noise thinking

のように、「何をしている英語か」を短く示します。

Tone:

こちらは、その表現の距離感や温度感です。

  • casual
  • polite
  • confident
  • cautious
  • collaborative
  • focused

などを表示します。

この 2 つが入ると、英語学習の質がかなり変わります。

なぜなら、take a look / check this outcould you take a look? / want to take a pass? のような似た表現でも、何をするフレーズなのか、どれくらい casual / polite なのかが見えるようになるからです。

要するに、

  • Phrase は表現そのもの
  • Theme は使用場面
  • Tone は距離感
  • Meaning はニュアンス
  • Example は実際の往復

という役割分担です。

ここまで揃うと、tg_talk は単なるセリフ集ではなく、かなり実用寄りの micro lesson になります。

生成 AI ではなく、rule-based にしたのにも理由がある

この改善を見て、「ここは AI で会話生成したほうが早いのでは」と思う人もいるかもしれません。

もちろん、その方向もあります。

ただ、今回あえて rule-based で積んだのには理由があります。

1. terminal の軽さを保ちたかった

Term-gotchi は、日常の shell に自然に乗ってほしいアプリです。毎回 API を叩くような重さや不安定さを、いきなり前提にはしたくありませんでした。

2. 学習用には、制御できる繰り返しが強い

自由生成は楽しいですが、教材としては振れ幅が大きくなります。その点、rule-based なら phrase の難易度、tone の分類、example の長さ、語彙レベルをかなり制御しやすい。

3. 使い回しの効く「型」を先に作りたかった

Phrase / Theme / Tone / Meaning / Example という枠組みができると、あとは中身を増やしていけます。

この枠組みは、AI を入れる前段としても有効です。先に lesson format を決めておくことで、将来生成を混ぜても品質基準がぶれにくくなります。

今回の変更で、tg_talk は「会話練習の入り口」になった

第3回の変更で、tg_talk はかなり性格が変わりました。

前までは、今の状態を英語で少し喋る程度の機能でした。

今は、

  • form や気分による相棒らしさ
  • 時間帯やコマンド文脈に応じた台詞
  • workplace English の phrase
  • 英英辞典っぽい nuance
  • 2ターンの会話例
  • themetone による学習整理

をまとめて返せます。

しかも、内容は固定ではなく、少しずつ回ります。

毎回同じ英語を読むだけではなく、似た意味の言い換え、少し違う質問の入り方、少し違う返し方が混ざることで、「英語を pattern として覚える」方向に寄せられました。

これは terminal アプリとしても面白いし、教材としてもかなり相性が良いと思っています。

普段の gitrgcargo のあとに、英語の micro dialogue が 1 つ出る。そのくらいの軽さなら、勉強として構えずに続けられます。

13:01 UNIX_Cafe % tg_talk
Sounds good. What do you want to tackle next?
Phrase: deliberate step / thoughtful move
Theme: careful decision language
Tone: careful
Meaning: Good for pushing back against random experimentation in favor of one intentional step.
Example:
A: Do you want to try a bunch of small changes?
B: Not really. I think one thoughtful move is better.

次は、phrase を増やすより「切り替え」を育てたい

今回で、phrase の土台はかなりできました。

なので次に面白くなりそうなのは、単純に候補数を増やすこと以上に、

  • 同じ意味で casual / polite を切り替える
  • 同じ場面で short / longer reply を切り替える
  • form ごとの personality と学習難易度をもう少し密接に結びつける

あたりです。

つまり、英語表現を増やすだけでなく、どう使い分けるかまで相棒に持たせたい。

Term-gotchi は育成アプリとして始めましたが、ここまで来ると「小さな会話ドリルが shell の中に住んでいる」感触が出てきました。

相棒として育ち、ログとして残り、しかも少し英語が身に付く。第3回では、その方向に大きく舵を切れた気がします。

次回は、Git と GitHub で育てます

ここまでで、Term-gotchi は機能としてもログとしても、だいぶ厚みが出てきました。

そうなると次に気になるのは、この変更の積み重ねを、どう安全に残して共有するかです。

第2回で CHANGELOG.md に開発の流れを残したように、ここからは git と GitHub を使って、Term-gotchi の成長そのものをバージョン管理していきます。コミットの粒度、履歴の残し方、他のマシンへの配布まで、これまでの「壊さず小さく育てる」やり方を、そのまま Git の世界に持ち込む予定です。

次回は、その Git / GitHub 編としてお届けします。

最初から読みたい方へ

今回は、Term-gotchi の tg_talk を軽い英語教材として育てました。

その出発点となる第1回では、zsh の中で育つ小さな相棒アプリとして、Term-gotchi を最初に動かすところまでを紹介しています。安全なシェル設計、.zshrc への追加方法、状態ファイルの扱いなど、今回の会話機能の土台になる部分です。

👉 第1回「ターミナルで育つ相棒を作ろう。zsh製ミニ育成アプリ『Term-gotchi』開発記」へ戻る

コマンドやスクリプトを、もう少し深く学びたい方へ

UNIX Cafeの記事でコマンドやシェルスクリプトに触れてみて、「本でもう少し整理して学びたい」と感じた方に向けて、Linux学習に役立つ本をレベル別・用途別にまとめました。

Linux学習におすすめの本|コマンド・シェルスクリプト・サーバーまで

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

目次