個人用AIアシスタントを、課金APIに頼らず作ってみている話(開発ログ #1)

執筆者:

カテゴリ:

普段のAI関連の作業のほとんどは、Claude CodeやChatGPTのようなクラウドサービス経由です。それとは別に、自分専用の、ローカルで動くAIアシスタントを作り始めました。この記事は、その実装の進み具合を残す記録です。

なぜ作ろうと思ったか

クラウドのAIサービスは便利ですが、使うたびに料金がかかります。日常的に話しかける相手として使うなら、従量課金に依存しない形にしたいと考えました。

そこで、次の方針で作ることにしました。

  • 従量課金APIを追加しない。無料で使えるローカルのAIモデル(Ollama経由のQwenなど)を基本にする
  • 天気・為替・暗号資産の値など、外部データは無料のAPIから取得する
  • 音声でのやり取りに対応する(認識→文章生成→読み上げ)

今の画面

対話画面。JARVISに話しかける初期状態

中央のコアが今の状態を表し、下の対話欄でやり取りします。モードは3つ用意していて、それぞれ役割・使うモデルを分けています(補佐役、分析役、対話役、という分担です)。ダッシュボード表示(天気・タスク・家電・予定を1画面にまとめる機能)も別タブで用意していますが、地域設定・認証キーがまだの項目があり、今回は割愛します。

今できていること・できていないこと

できていること

  • 対話画面と、状態をまとめて見るダッシュボードの2画面構成
  • 画面サイズが違っても崩れないレイアウト(実機で確認済み)
  • 声に反応する画面の動き(実際に声を出している間だけ表示が変化することを確認済み)
  • 天気・為替・暗号資産の値の取得
  • カレンダーの予定を読み取り専用で表示する経路(今後7日分。予定の作成・変更はしない設計)

まだのこと

  • スマート家電(赤外線リモコン経由)の実機操作(認証キー未設定のため)
  • マイクでの聞き取りの実機確認
  • 複数画面を同時に開いたときの同期の実機確認

この先やろうと思っていること(ラフな順番)

実装ロードマップ。4つのステップを横並びで示す図

1. 天気・カレンダーなど、外部データ連携を一通り実際に動く状態にする
2. 音声まわり(聞き取り・読み上げ)を実機で確認する
3. スマート家電の操作を、実際に1件動かしてみる
4. 複数画面(メイン画面+別ウィンドウ)の同期を確認する

大きな設計変更よりも、すでにある機能を「動くことを確認した」状態にすることを優先しています。作ったつもりで終わらせない、というのが今回のテーマです。

追記(9/15): 家電連携が半分だけ進んだ

Nature Remo(赤外線リモコン経由でエアコン等を操作できるサービス)のアクセストークン接続に成功しました。ただし、まだ「操作」までは届いていません。

できたのはここまでです。

  • アクセストークンでの接続
  • 温度・湿度・照度のセンサー値の取得

個別の家電を操作しようとすると、画面には「この家電の専用操作は未対応。Natureアプリをご利用ください」と表示されます。接続とセンサー取得はできても、信号を送って家電を動かす部分はまだ実装できていない、という状態です。

あわせて、仕様として次の注記も見つけました。

赤外線信号の送信受付は、実機の動作確認とは異なります。

つまり、信号を送るAPIが「受け付けました」と返しても、それだけでは実際にエアコンが反応したかは分からない、ということです。ここは前回の記事で書いた「動いているのを確認した、とは別の話」と同じ壁だと感じています。

個別家電の操作には、もう一段仕組みを足す必要がありそうです。次の更新で進捗を書きます。

追記(9/16): 環境データの記録を、別の小さな仕組みに切り出した

家電まわりの続きです。温度・湿度・照度のセンサー値を、1時間おきにスプレッドシートへ記録する仕組みを、本体とは別のGoogle Apps Scriptプロジェクトとして作り直しました。

やったことは次の通りです。

  • センサー値の取得先(Nature Remo Cloud API)から、温度・湿度・照度を取得する処理を実装
  • 認証キーは、コードやシートに直接書かず、スクリプトのプロパティ機能に保存する形にした
  • 複数台の対応、センサーが無い機種でのエラー処理、記録上限(5万行)、最新値だけを見るシートを追加
  • 直近のデータをまとめて見られる簡易ダッシュボードの画面も実装(まだ外部には公開していない)
  • 本体側(対話アプリ)にも、照度と最終観測時刻を表示するようにし、家電のカードから記録シートを開けるようにした

テストは33件中33件合格、コードの反映も完了しています。

ただし、まだ「動いている」とは言えません。 認証キーの入力、Googleへの初回許可、定期実行の有効化が済んでいないため、実際のデータはまだ1件も記録されていません。これも、前回書いた「実装できた」と「動くのを確認した」の距離そのものです。

このシリーズの続き

注記

この記事は E.D.E.N. 開発ログの1本目です。以降の進捗は、この記事への追記ではなく番号付きの新しい記事として公開しています。画面の中身(カレンダーの予定・地域設定など)は、公開前に個人情報が写り込んでいないか確認したうえで掲載しています。

コメント

コメントを残す

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