Daisuke Majima (MLBoy)
買い切りのアプリにAI機能を足すとき、悩ましいのがAPI代です。ユーザーが代金を払うのは一度でも、従量課金のAPIへの支払いは、その後も使われるたびに続きます。
録音の文字起こしや、共有する文章から名前を伏せる機能なら、何度でも気軽に使ってほしい。それなのに「一人何回まで使えるか」「月額プランを作るか」と、便利にする話が料金プランの話にまで広がってしまいます。
こうした機能をユーザーの端末で動かせれば、利用のたびに発生する推論API代はかかりません。アプリの保守やモデルの配布・更新には費用が残りますが、使われる回数と推論サーバーへの支払いを切り離せます。
そのための選択肢の一つが、AppleのCore AIです。対応するモデルをMacやiPhoneで動かせる仕組みで、Appleはモデルの変換レシピと、Swiftから実行するためのコードも公開しています。AppleのCore AI Models
たとえば、共有する文章から名前や連絡先を伏せる機能は、こんな形にできます。
GLiNER2というモデルが、サンプルの英語文から9件を見つけ、[PERSON]や[EMAIL]などに置き換えています。2026年7月の実機デモで、後述する0.4.1の検証とは別の記録です。実装例
共有ボタンの手前にこの処理を入れておけば、ユーザーが自分で名前やメールアドレスを探して消す手間を減らせます。元の文章を推論サーバーへ送らず、端末内で共有用のコピーを作るわけです。見落としに備えて、最後に伏せた箇所を確認できる画面を用意しておきます。
一日に何度使っても、その処理のための推論API代は増えません。こういう機能なら、買い切りアプリにも追加しやすくなります。
その分、計算を引き受けるのはユーザーのMacやiPhoneです。名前を伏せるだけで長く待たされたり、共有ボタンを押した途端に大きなダウンロードが始まったりすれば、便利な機能には感じられないでしょう。
だから、普段共有する長さの文章で、待ち時間やメモリ消費を確かめておきたいところです。初回の取得量やバッテリーへの負担も見たうえで、標準機能にするか、必要な人だけが後から追加する形にするかを決めます。サーバー代を減らすことと、ユーザーが快適に使えることを、一緒に考える必要があります。
モデル選びでは、まずAppleの端末内モデルで足りるかをFoundation Modelsで試せます。そこで必要な仕事ができるなら、独自のモデルを追加する手間も省けます。
別のモデルを選びたい場合に使えるよう、私が公開しているのが CoreAIKit と Core AI model zoo です。
zooには、変換済みモデルと、対応端末・変換レシピ・モデルごとの検証記録をまとめています。CoreAIKitは、選んだモデルをSwiftから取得し、キャッシュして、アプリの処理へつなぐ部分を担当します。先ほどの名前や連絡先を伏せる処理も、CoreAIOpsモジュールのCoreAI.redactとして呼べます。
モデルの紹介を読んだら、実際にアプリで扱う入力を試してみてください。日本語でも意図どおりに動くか、長い文章で待たされないか、名前の表記が変わっても拾えるか。デモで動いた処理を、自分のアプリで繰り返し使える機能にするための確認です。端末ごとの計測にはDeviceMark、仕組みを調べるにはCore AIの本も使えます。
試す入口は、CoreAIKitのREADMEです。小型のQwenを使う導入例で、Macでは初回に約352 MBをダウンロードします。ネット接続は必要ですが、Pythonでのモデル変換や推論APIキーの準備は要りません。
公開版0.4.1を新しいプロジェクトから取得し、初回ダウンロードから会話の二往復、日本語出力まで確認しました。環境は2026年9月9日時点のM4 Max、macOS 27 beta、Xcode 27 beta 5。iPhoneや新しいSDKでの実行は、この検証に含めていません。動作条件と結果
同じ版のチャット回答と音声生成は、33秒の実機動画でも見られます。こちらは取得済みモデルでの実演で、ビルドと初回ダウンロードの時間を省いています。
名前を伏せて共有する、録音を文字で読み返す。そんな日々の小さな作業を、使うたびに残り回数を気にせず済ませられる。端末内のAIを使えば、そういう便利さを買い切りのアプリにも足していけます。
