私は、誰かと対話をしている時だと確信しています。
一人で黙々とテキストを読み進めるのは、時に限界がありますよね。
「これってどういう意味だろう」と口に出し、誰かに説明したり、問い返されたりする. そうした会話のプロセスがあって初めて、知識は自分の血肉になる。
学びとは本来、もっと動的で、もっと双方向なもののはずなんです。
でも、そんな理想的な話し相手が、いつでも隣にいてくれるわけではありません。
「これだけAIが進化しているのだから、その役割を任せられないだろうか」——そう思ったのが、このアプリ開発のきっかけでした。
PC画面を共有しながらリアルタイムで会話できる「AI家庭教師アプリ」。
作ってみたら学習効率が劇的に変わったので、その開発の裏側をシェアします。
そもそも、なぜ作ったのか
一言で言うと、学びを孤独な作業から、豊かな対話へアップデートするためです。
人は、誰かと議論したり教え合ったりする時、驚くほど理解が深まります。
もし隣に家庭教師がいて、自分と同じ画面を見ながら気軽に壁打ちができたら——学びはもっと加速するはず。
そう直感したのが始まりでした。
ただテキストを読み上げるだけのAIではなく、自分がいま見ている画面の内容をその場で理解し、共に対話してくれるパートナーが欲しかったのです。
既存ツールじゃダメだった理由
最初はChatGPTやGeminiの公式ツールをそのまま使えばいいと思っていました。しかし、実際に学習に取り入れようとすると、エンジニアとして見過ごせない課題がありました。
1. 「スクショを撮る」という手間の積み重ね
一つは、画面の内容を伝えるための「同期」の手間です。
ブラウザベースのツールだと、質問のたびにスクリーンショットを撮ってアップロードしなければなりません。この小さな手間の繰り返しが、深い集中を必要とする学習において致命的なノイズになる。
また、PCでの常駐利用を想定したデスクトップアプリが存在しないことや、試験運用ツールの不安定さもネックでした。
勉強の最中に「接続が切れました」と表示され、再設定に手を動かす。道具の機嫌取りにリソースを割くのは、本末転倒だと感じていました。
システム構成:リアルタイム性を支える裏側
「ポチッと起動して、すぐに話し始める」。
この体験を実現するために、以下のシステム構成を組みました。
1. Gemini Multimodal Live API による双方向ストリーミング
システムの核は、Googleの Gemini Multimodal Live API です。
従来の「リクエストを送ってレスポンスを待つ」HTTPベースのやり取りではなく、WebSocketベースの常時接続による双方向ストリーミングを採用しています。
こちらの声が途切れた瞬間にAIが考え始め、数秒後には声で返ってくる。この「対話のテンポ」こそが、学習パートナーとしての生命線です。
2. 1fpsの「視覚同期」ループ
ユーザーにスクショを撮らせないために、バックグラウンドで mss ライブラリを使い、1秒に1回の頻度で画面を自動キャプチャし続けています。
この画像データをリアルタイムにGeminiへ送り込むことで、AIは常にユーザーの視線を追いかけている状態になる。
「今ここを読んでるんだけど…」という指示代名詞が通じるのは、この1fpsの同期があるからです。
3. VAD(音声活動検知)による非同期ステータス管理
GUI側には自作のVADロジックを組み込みました。
マイクからの音圧を監視し、「ユーザーが話し始めた」「話し終わった」というタイミングを検知して、音声データを適切に制御します。
また、画面上のインジケーターの色を切り替えることで、AIの状態を可視化。
非対面ゆえの「聞こえてる?」という不安を解消しています。
デザインとUX:エンジニアのモチベーションを飼い慣らす
機能と同じくらいこだわったのが、UIデザインです。customtkinter を使い、「Catppuccin Mocha」風のダークテーマで構築しました。
一見、機能とは関係ないように思えますが、UXにおいてはこれが重要でした。
自分の好きなエディタに近い質感のツールがデスクトップに居座っている。その愛着が、毎日アプリを立ち上げる心理的ハードルを下げてくれることに気づいたのです。
格闘したのは、Windows OS特有のオーディオスタックの挙動です。デバイス名の文字化けなど、泥臭いトラブルもAIと二人三脚で修正ロジックを書いて乗り越えました。
今後の展望
動くプロトタイプはできましたが、まだ改良したい点は残っています。
- 会話ログの文字起こし保存が未実装。復習用に、何を学んだかをテキストで残せるようにしたい
- UIの洗練。まだ「開発者ツール」感が拭えないので、もっと愛着の湧くインターフェースに仕上げたい
もし反響があれば、技術的な実装の詳細(コード解説)についても書きたいと思います。
まとめ
学びの本質は対話にある。
このアプリを通して体験したのは、AIを「検索エンジン」としてではなく「共に思考を深める鏡」として使う、新しい学習の形です。
プログラミングができる私たちにとって、理想の環境は買うものではなく、自らの手で作るもの。
作る過程自体が新たな学びになり、完成すれば一生モノの相棒が手に入ります。
もし今の学習環境に満足していないなら、自分の手で最強のパートナーを書き出してみてはいかがでしょうか。
それでは、今日もAI先生と深い対話を楽しんできますね。


コメント