
【iOS 27】Attachment で画像をプロンプトに添付する — Foundation Models の画像入力
はじめに
こんにちは。リテールアプリ共創部の Yahiro です。
前の2本では、動く端末と一度に渡せる量という制約側を書きました。ここからは、できることのほうに進みます。
まずは画像です。iOS 27 の Foundation Models framework で、写真をそのままプロンプトに添えて質問できるようになりました。文章を渡して答えてもらうだけでなく、「これ何?」と見せて聞けるということです。
この記事でわかること
- 写真を渡して聞けるようになったこと
- トリミングやリサイズの前処理が要らなくなること
- 大きい画像を渡すときの注意
写真を渡せる様になった
やることは単純で、プロンプトに文章と画像を並べて渡すだけです。
コードで見ると、こうなります。
import FoundationModels
let response = try await session.respond {
"この写真に何が写っていますか?"
Attachment(image)
}
文章と画像を、同じように並べて書くだけです。画像を前処理してどこかに送る、といった行はありません。
「この画像の文字を書き出して」「この図面のどこがおかしいか」。文章で聞くのと同じ感覚で、画像について質問できます。
複数の画像を渡すときは、Attachment(image).label("チラシ") のようにラベルを付けて区別できます。
トリミングもリサイズも要りません
WWDC26 のセッションでは、あらゆるサイズとアスペクト比の画像をサポートすると説明されています。特定の形にトリミングしたり、余白を足したりする必要はありません。
これまで画像を機械学習モデルに渡すときは、モデルが期待する解像度に合わせる前処理がほぼ必須でした。それが要らないので、カメラから撮ったものをそのまま渡せます。
渡せる形式も幅があります。UIImage、NSImage、CGImage、Core Image の型、CVPixelBuffer、そしてファイル URL。アプリで画像を持っている形のまま、だいたいそのまま渡せます。
大きい画像は枠と時間を食います
制限がないわけではありません。セッションでは、はっきりこう注意されています。
任意の画像サイズを使えますが、注意点があります。大きな画像ほどトークンを消費し、レイテンシが増加します。
一度に渡せる量には上限があります。画像もその同じ枠を使います。文章と違って「何文字だから何トークン」という感覚が働きにくいのが、厄介なところです。
ただ、感覚に頼らなくて済むようにもなっています。iOS 27 では、応答が実際に何トークン使ったかを取得できます。
print(response.usage.input.totalTokenCount)
枠の大きさ自体も SystemLanguageModel().contextSize で取れるので、「この画像を渡すと枠の何割を使うのか」は、推測ではなく実測で確かめられます。
最後に
Attachment で画像を渡すのは簡単でした。文字列と同じように並べて書くだけです。
そのうえで押さえておきたいのは、
- 画像が端末から出ない。 写真を扱う機能の前提が変わる
- トリミングもリサイズも要らない。 前処理が減る
- ただし大きい画像は枠と時間を食う。 枚数とサイズは設計で決める
このあたりかなと思います。










