【iOS27】FoundationModels入門①(環境確認・呼び出し・画像添付)

【iOS27】FoundationModels入門①(環境確認・呼び出し・画像添付)

AFM3をXcodeのPlaygroundで実際に動かしてみました。環境確認から、プロンプトの渡し方、システムプロンプトの指定、そして画像入力まで、実装の流れを紹介します。
2026.09.25

はじめに

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

前回までの記事では、AFM3(Apple Foundation Models 3)の基本的な概念を紹介してきました。
今回はその実践編として、実際にコードを書いて動かしてみます。

この記事でわかること

  • 実行環境がAFM3に対応しているかの確認方法
  • FoundationModelsでプロンプトを渡す方法
  • instructionsでシステムプロンプトを指定する方法
  • 画像の渡し方

検証環境

この記事では、以下の環境で検証しています。

  • Mac mini(2024)
  • Apple M4
  • メモリ 16GB
  • macOS GoldenGate 27.0
  • Xcode 27.0

環境の確認

まずは、実行環境がAFM3に対応しているかを確認しましょう。
基本的には、以下のように SystemLanguageModel の availability で確認できます。

import Playgrounds
import FoundationModels

#Playground {
    let model = SystemLanguageModel.default

    switch model.availability {
    case .available:
        print("対応しています")

    case .unavailable(.deviceNotEligible):
        print("このデバイスでは使用できません")

    case .unavailable(.appleIntelligenceNotEnabled):
        print("このデバイスではApple Intelligenceが有効になっていません")

    case .unavailable(.modelNotReady):
        print("モデルの準備が完了していません。少し待ってから再度実行してください")

    case .unavailable(let reason):
        print("その他の理由で利用できません: \(reason)")
    }
}

実行すると、以下のように「対応しています」と表示されました。

スクリーンショット 2026-09-25 19.17.12

続いて、コンテキストサイズも確認してみましょう。
WWDCで紹介されていたコードを使います。

import Playgrounds
import FoundationModels

#Playground {
    let model = SystemLanguageModel.default
    print(model.contextSize)
}

結果は 8192 でした。Core3 Advancedなので、公称値どおりですね。

スクリーンショット 2026-09-25 19.19.25

AFM3を呼んでみる

環境の確認ができたので、さっそくプロンプトを渡してみましょう。
試しに、Apple Intelligenceに今日の運勢を占ってもらいます。

import Playgrounds
import FoundationModels

#Playground {
    let session = LanguageModelSession()

    let response = try await session.respond(to: "今日の運勢を吉か凶で教えて")

    print(response.content)
}

スクリーンショット 2026-09-25 19.22.52

今日の運勢は吉のようです。よかった。

このように、FoundationModelsをimportしてプロンプトを渡すだけで、オンデバイスのモデルを呼び出せます。簡単ですね。

instructionsでシステムプロンプトを渡す

AFM3では、instructions を渡すことでシステムプロンプトを指定できます。やってみましょう。

import Playgrounds
import FoundationModels

#Playground {
    let session = LanguageModelSession(instructions: "あなたは神社の神主です。厳かな感じで回答してください。")

    let response = try await session.respond(to: "今日の運勢を吉か凶で教えて")

    print(response.content)
}

スクリーンショット 2026-09-25 19.29.34

ちゃんと厳かな口調になっていますね。身が引き締まります。
神の恵みは静けさの中にあるそうです。

画像を渡してみる

今回の目玉である、画像の入力を試してみましょう。

WWDCでは折り紙の鶴の画像を渡していましたが、私はあいにく鶴を折れるほど器用ではありません。
そこで、ちょうど手元にあった広島護國神社のおみくじの写真を渡してみます。

IMG_9632

import AppKit
import Playgrounds
import FoundationModels

#Playground {
    let session = LanguageModelSession()
    let imagePath = "/path/to/IMG_9632.heic"

    guard let nsImage = NSImage(contentsOfFile: imagePath),
          let cgImage = nsImage.cgImage(forProposedRect: nil, context: nil, hints: nil) else {
        print("画像の読み込みに失敗しました")
        return
    }

    let response = try await session.respond {
        "これは何?"
        Attachment(cgImage)
    }

    print(response.content)
}

スクリーンショット 2026-09-25 19.35.03

いいですね。ちゃんと「広島護國神社のおみくじ」だと認識してくれました。

まとめ

FoundationModelsをimportするだけでサクッと呼び出せるので、AFM3の実装は思ったより簡単でした。
次回以降は、ツールを渡したり、Private Cloud Computeを使ったりしてみたいと思います。


AI白書2026 配布中

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

AI白書2026

無料でダウンロードする

この記事をシェアする

DevelopersIO 2026

関連記事