【iOS 27】AI にツールを持たせる — OCRTool・バーコード・端末内検索

【iOS 27】AI にツールを持たせる — OCRTool・バーコード・端末内検索

iOS 27で新しく追加されたFoundation Modelsのシステムツール3つについて、その仕組みと活用方法を紹介します。AIに「ツール」を持たせることで、アプリの実装がどう変わり、何ができるようになるのかをまとめました。
2026.09.15

はじめに

こんにちは。リテールアプリ共創部の Yahiro です。

iOS 27 では、Foundation Models にシステムツールが3つ追加されました。AI に「ツール」を渡しておくと、必要になったときに AI が自分で呼び出してくれる、という仕組みです。

今回は、それについて記載していきます。

この記事でわかること

  • 「ツールを持たせる」とは何をすることなのか
  • iOS 27 で用意された3つの標準ツール
  • 端末の中を検索して答えるという使い方
  • ツールにも枠(コンテキスト)を使うということ

「ツールを持たせる」とは

これまでの作り方だと、たとえばレシートの画像から合計金額を取り出すには、こういう段取りをアプリ側で書く必要がありました。

iOS 27 では、こうなります。

「このレシートの合計金額は?」と聞けば、AI が「文字を読む必要がある」と判断して、自分で読み取ります。

コードで見ると、こうなります。

import FoundationModels
import Vision

let session = LanguageModelSession(tools: [OCRTool()])

let response = try await session.respond {
    "このレシートの合計金額は?"
    Attachment(image)
}

いつどのツールを使うかはモデルの判断です。

iOS 27 で用意された3つのツール

ツール できること
OCRTool 画像の中の文字を構造化されたテキストとして取り出す
BarcodeReaderTool バーコードや QR コードを読み取り、内容と種別を返す
SpotlightSearchTool アプリが Spotlight に登録したデータを AI が探して、それを根拠に答える

上の2つは Vision フレームワークが裏で動いています。アプリ側で OCR の実装を持つ必要がなくなるということです。Vision の文字認識は現在 26 言語に対応しています。

いちばん大きいのは「端末の中を検索して答える」

AI に「最新の情報」や「うちの社内の情報」を答えさせるには、その情報を探して渡す仕組みが要ります。一般には RAG と呼ばれる作りですね。

iOS 27 では、端末の中で完結する形でこれが用意されました。Spotlight のインデックスを AI が検索して、その結果を根拠に答えます。

こちらも、渡し方は同じです。

import CoreSpotlight
import FoundationModels

let session = LanguageModelSession(tools: [SpotlightSearchTool()])

let response = try await session.respond(to: "去年行ったハイキングはどれ?")

端末の中のモデルと組み合わせれば、社内文書やアプリ内のデータを、外に出さずに「聞ける」ようになります。

ただし、事前に Spotlight への登録が必要です

AI が探せるのは、アプリが Spotlight に登録したコンテンツだけです。端末に入っているものが何でも引けるわけではありません。その方法は別の記事にまとめる予定です。

ツールの説明も枠を食う

ツールをモデルに持たせるとき、「このツールは何ができて、どう呼ぶか」という説明もプロンプトと同じ枠に入ります。 ツールを増やすほど、本文に使える枠が減ります。

とくに端末内検索はできることが多いので、説明も大きくなります。SpotlightSearchTool は検索能力の一式をまるごとモデルに提示するため、Apple 自身が「オンデバイスモデルはコンテキストが小さいので、絞ったガイダンスを使うのがよい」と説明しています。

この辺は、別の記事でまたまとめようと思います。

  • ツールは必要なものだけ持たせる。 「あれもこれも」はオンデバイスでは成立しにくい
  • 大きいツールは絞る。 全部入りのまま使わない
  • 必要な場面だけ持たせる。 全部持たせない

自分でツールを作ることもできます

標準の3つ以外に、自作のツールも渡せます。

作り方は Tool プロトコルに準拠した型を用意するだけですが、ポイントはツールに書いた説明文が、そのままモデルに渡るという点です。

struct WeatherTool: Tool {
    let name = "getWeather"
    let description = "指定された都市の天気を返す"
    // 引数の定義と、呼ばれたときの処理が続く
}

description と、引数に付ける説明を読んで、AI が「このツールを使うべきか」「どんな引数で呼ぶか」を判断します。裏を返すと、この説明が長いほど枠を食います。 自作のツールは説明を自分で書けるので、小さく作れば消費も小さく済みます。

実装の詳細は、別の記事で扱います。

まとめ

「読み取る」ならツール、「様子を判断する」なら画像入力。 文字や商品コードのように正確さが要るものは、ツールに任せるほうが確実です。

ツールを持たせるほど枠が減る。 扱いたいデータ量と、持たせたいツールの数は、トレードオフになります。

AI がいつツールを使うかは、確実ではありません。 ツールを使うかはAIが判断するので、持たせ方や制御は考える必要があります。

最後に

ツールを持たせることで、AIに多彩な動きをさせることができます。これらはコンテキスト量を考えながら実装しないといけないので、次回以降の記事で実際に検証してみようかなと思います。

参考


AI白書2026 配布中

クラスメソッドが独自に行なったAI診断調査をもとに、企業のAI活用の現在地を調査レポートとしてまとめました。企業規模別の活用度傾向に加え、規模を超えてAI活用を進める企業に共通する取り組みまで、自社の現在地を捉えるためのヒントにぜひ。

AI白書2026

無料でダウンロードする

この記事をシェアする

DevelopersIO 2026

関連記事