10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

macOS 27にはローカルLLMが入っている

10
Last updated at Posted at 2026-09-16

macOS 27にはローカルLLMが入っている

macOS 27には、Appleの言語モデルをTerminalから直接使える fm コマンドが入っています。

追加のアプリをインストールする必要はなく、APIキーもいりません。対応するMacなら、Terminalを開いて次の1行を入力するだけで会話を始められます。

fm chat

いわゆる「ローカルLLM」がOSに最初から入っている、と考えると分かりやすいと思います。ただし、Appleの公式な呼び方は「オンデバイスモデル」または「Apple Foundation Model」で、fm 自体はモデルではなく、それを利用するためのコマンドラインツールです。

今回の実機で確認できたモデルは AFM 3 Core Advanced、コンテキスト長は8,192トークンでした。初回設定や日本語での質問、画像入力など、実行結果を交えながら使い勝手を見ていきます。

検証日: 2026年9月17日
fm の機能はmacOSやモデルの更新によって変わる可能性があります。この記事では、手元のMacで確認できた結果を中心に紹介します。

Apple Foundation Models CLIのコマンド一覧と使用例を表示したTerminal

まずは初回設定

最初に fm available を実行したところ、ライセンスにまだ同意していないという警告が表示されました。

fm available
YOU HAVE NOT AGREED TO THE APPLE FOUNDATION MODELS CLI LEGAL NOTICE & TERMS.
Agreeing to the Apple Foundation Models CLI Legal Notice & Terms applies to every user on the machine, so it must be run as a privileged user (e.g. 'sudo fm license').

画面の案内どおり、次を実行します。

sudo fm license

sudo が必要なのは、同意がそのMacの全ユーザーに適用されるためとのこと。毎回 sudofm を起動するわけではありません。

今回は記事用に初回画面も残したかったので、最初は n で終了してスクリーンショットを撮り、その後もう一度実行して同意しました。普通に使うだけなら、内容を確認してそのまま進めれば大丈夫です。

fm availableの同意前の警告とsudo fm licenseで規約に同意した画面

1行で質問する

もっとも簡単なのは、fm respond に質問をそのまま渡す使い方です。

fm respond "Rubyで配列から重複を取り除く方法を簡潔に説明してください"

少し待つと、回答がTerminalへそのまま表示されます。

ChatGPTの画面を開かず、Terminalからさっと文章を整えたり、コードについて聞いたりできるのは意外と便利そうです。

fm respondでRubyの配列から重複を取り除く方法を質問した結果

続けて会話する

単発の質問ではなく、前の回答を踏まえて話を続けたい場合は fm chat を使います。

fm chat

fm chatで日本語の質問と回答を表示したTerminal

スクリーンショットについて質問する

AppleのWWDCセッションでは、--image で画像を渡す例も紹介されています。

fm respond \
  "このスクリーンショットに表示されている内容を説明してください" \
  --image Screenshot.png

画面に表示されているアプリを尋ねたり、画像内の情報を整理したりできます。テキストだけの小さなモデルという印象だったので、画像も渡せるのは少し意外でした。

画像入力に使ったニコラ・テスラの検索結果のスクリーンショット

fm respondの--imageに画像を渡し、内容の説明を得た結果

JSONで答えてもらう

スクリプトから使うなら、自然な文章よりJSONで返ってきた方が扱いやすいです。

fm schema で出力の形を作り、fm respond --schema に渡すと、指定した構造で結果を受け取れます。

fm schema object \
  --name AppsIdentified \
  --string app_names \
  --array > schema.json

fm respond \
  "このスクリーンショットに表示されている内容を説明してください" \
  --image Screenshot.png \
  --schema schema.json

例えば、Messages・Mail・Calendarが写った画像を入力した場合、出力形式は次のようになります。

{"app_names":["Messages","Mail","Calendar"]}

ローカルAPIとして起動する

fm には、モデルをローカルAPIとして利用するための serve コマンドも用意されています。

fm serve --help

これを使えば、Terminal以外のツールからAppleのモデルを呼び出せそうです。OllamaなどのローカルLLM環境を使ったことがある人には、この形の方が用途を想像しやすいかもしれません。

fm serve --helpに表示された起動例、オプション、APIエンドポイント

実際に動いているモデルを確認する

Foundation Modelsフレームワークから、現在使われているモデル名とコンテキスト長を確認できます。

swift -e 'import FoundationModels; let m = SystemLanguageModel.default; print(m.variant.displayName); print(m.contextSize)'

今回の実機では、次の結果になりました。

AFM 3 Core Advanced
8192

このMacでは AFM 3 Core Advanced が使われ、コンテキスト長は8,192トークンでした。

Appleのサポート情報では、Macで AFM Core Advanced を利用できる目安は、M3以降かつユニファイドメモリ12GB以上とされています。ただし、モデルやコンテキスト長は実機で確認するのが確実です。

8,192トークンはどのくらいか

8,192トークンには、質問だけでなく、会話履歴やモデルが生成する回答なども含まれます。8,192トークン分の文章を丸ごと貼れる、という意味ではありません。

短い質問、数百〜数千字程度の要約、小さなコード片、数往復の会話には十分使えそうでした。一方、長い会議録や大きな設計書、リポジトリ全体を一度に読ませるには小さく感じます。

ChatGPTやClaudeの大きなコンテキストウィンドウに慣れていると物足りなく感じますが、Mac上のちょっとした処理に使うモデルと考えれば、用途はありそうです。

最後に、少し意地悪な質問

先ほどの「なぜローマ帝国はスマートフォンを使っていたのですか?」という質問には、前提の誤りを指摘できていました。

それなら、と架空の作品名でも試してみます。

夏目漱石の小説『月曜日のペンギン』のあらすじを教えてください。

今度は「夏目漱石が1916年に発表した短編小説」として、あらすじまで説明してくれました。ペンギンが人間の家庭に迷い込み、家族の一員になるそうです。

スクリーンショット 2026-09-17 1.19.10.png

改善の余地はありそうですが、現時点のローカルLLMとしては必要十分ではないでしょうか。

参考資料

10
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?