TALES iOS アプリ で Foundation Modelをつかってみた
おはようございます。waturaです。
9/16 にリリースした TALES iOSアプリ記事です。
TALESアプリはiOS 26以降をターゲットにしたアプリです。Apple Foundation Model に期待したり、今後iOSのデファクトUIになっていくであろうLiquid Glassをフルで使うためにiOS 26以降を対応にしてもらいました。
最新OSのBeta機能をアプリに速攻で組み込めるという経験はきっと今後はないだろうなぁとおもいます。
Foundation Modelをつかってみるためにやったこと
まずは、適当に動くscriptをつくっていろいろ入力して、反応をみる。ということをしました。
import FoundationModels
import Foundation
func execute(prompt: String, body: String) async throws {
let languageModel = SystemLanguageModel.default
guard languageModel.isAvailable else {
print("モデル使用不可")
return
}
let session = LanguageModelSession(instructions: prompt)
let response = try await session.respond(to: body)
print("---")
print("response: \(response.content)")
}
let body = """
昔々あるところにおじいさんとおばあさんがいました。おじいさんは山にしば刈りに、おばあさんは皮に選択をしにいきました。
"""
let prompts = [
"""
Answer in Japanese.
Make list of misuses and typos.
""",
]
for prompt in prompts {
print("--------------------------------")
print("instruction: \(prompt)")
for i in 0..<5 {
try await execute(prompt: prompt, body: body)
}
}
bodyとpromptsをいじって、ふーん。って楽しむためのスクリプトです。今のコードだと、誤字脱字,誤用チェックみたいなことできないかなぁと試したときのコードになります。
全く同じbodyとpromptsで5回実行してみると、毎回ぜんぜん違う結果が返ってきました。
しょぼすぎて絶望する
Tales アプリでは「感想」を聞くモードがあります。開発初期に試したとき,エラーがかえって来すぎて、絶望しました。
エラーの理由が、不適切な文言の利用みたいな感じのものでした。与えているのは日本語の文章で、Claude を使って適当につくってもらった幼児向けお話でした。
どこをどう読んでも不適切な文言みたいなものはなかったのですが、エラーが出ていました。
内部的に英語に翻訳して、勝手に不適切ワードを生成しているのではないかという予想をたてました。なので、日本語で処理をするとプロンプトに追加したところ、少しだけ安定しました。
が、残念なことにもともと限りなく低かった精度はそこからさらに低下しました。
とりあえずデバッグ画面を作る
どうしようもないよねぇ。Apple がなんとかしてくれるのを期待して、デバッグ画面をとりあえずつくって、アプリ内で試せるようにしました。
基本的にはコードは上記のものと大差ないものを、 Claude Code に画面つくって!丸投げしてつくってもらいました。
Foundation Modelデバッグ画面
これがあれば、 MacOS 26環境を用意しなくても、 iOS 26だけで動かせるようになりました。 TestFlight配信もしていたので、非エンジニアの人がプロンプトを考えるというのにも使えるようになりました。
もっと、コードについてかけるかなぁと思ったんですが、やっていることがほぼ、上記スクリプトなので説明することがない!!!みたいなかんじになっています。
ちなみに、デバッグ画面をつくっているとき、ログ画面をつくってみたり、チャット形式に対応させてみたりとかいろいろデバッグ画面を充実させていたんですが、メンテ大変だなぁとおもい、一回シンプルに実行するだけの画面にもどしています。
高度なデバッグ画面のメンテとか、工数をかける場所でもまったくないですしね。
とりあえず、いろいろためして分かったこととしては
日本語で指示を出すよりも英語で指示を出すほうが得意
勝手に翻訳してNGワード判定になるときがある
NG判定地味に厳しい
長文をわたすと全部わすれて、もとの長文に似た長文をかえしてくる
まるでChatGPTすごいぞ!って話題になりはじめたころの性能で、現代のコプラ対応しました!というような状態でした。
今後の改善
現在の Foundation Model は単発実行しかしていません。これを、分割して、適切なコンテクストサイズになるようにしてみたり、チャット的につかえるようにしたり、もっといろいろな使い方が出来ないか試してみたいと思っています。
TALES 気になった方はぜひいれてみてください
小説が読める・投稿できる物語投稿サイトTALES(テイルズ) TALES(テイルズ)は、小説や物語を誰でも自由に投稿し、無料で読める新しい小説投稿アプリです。 https://ta apps.apple.com