Apple Foundation Models は、軽量だけど結構使える
一般的なローカルLLMが「大きなモデルを常時RAMにどんと居座らせる」のに対し、AFMは「圧縮された1つの核だけをOS深層に控えさせ、必要な瞬間だけ極小アダプタを瞬時に着脱して終わったら捨てる」というOSネイティブならではのアプローチをとっています。そのため、8GB〜16GBといった最小構成のMacでもシステムの軽快さを損なわずに動作します。
このリファレンスの読み方
fm は、Macに入っているAppleのAIをターミナルから使うコマンドです。このリファレンスでは、次の順番で説明します。
- 目的に合う使い方を選ぶ
- 文字で質問・会話する
- ファイルを作成・読み込み・安全に書き直す
- 画像を渡し、画像について続けて質問する
- JSONやAPIなどの発展的な使い方
各項目は「シチュエーション → 利用例 → 解説」の順です。
1. 最初に知っておこう
fm でできること
- わからない言葉を説明してもらう
- 文章を要約、翻訳、校正してもらう
- メールなどの返信案を作ってもらう
- 文章を目的別に分類してもらう
- 画像の説明や文字の読み取りをしてもらう
- 決まった形のJSONを作ってもらう
基本的な処理はMac上で行われ、APIキーは必要ありません。
[!NOTE]
macOS 27以降と、Apple Intelligenceに対応したMacが必要です。モデル、言語、地域の準備状況によっては利用できません。
最初に使い方を選ぼう
fm には、目的の異なる2つの基本的な使い方があります。
| やりたいこと | 選ぶコマンド | 画像も渡せる? |
|---|---|---|
| 1回質問する | fm respond |
渡せる |
| 対話画面で会話を続ける | fm chat |
直接は渡せない |
| 画像について1回質問する | fm respond --image |
渡せる |
| 画像について何回か質問する |
fm respond --image と会話記録 |
渡せる |
[!IMPORTANT]
fm chatの中へ画像を直接添付する機能は、現在のmacOS 27.0版にはありません。画像を使うときはfm respond --imageを選びます。続けて質問したい場合は、会話をファイルに保存して再開します。
fm とファイルの関係
fm は文章を扱えますが、普通の文書ファイルを直接作成・編集する専用機能はありません。ファイルの読み書きには、ターミナルの機能を組み合わせます。
入力ファイル ── < ──> fm ── > ──> 出力ファイル
│
└─ AIが文章を考える
| 記号 | 意味 | 例 |
|---|---|---|
< |
ファイルをコマンドへ渡す | fm respond < question.txt |
> |
結果を保存する。既存内容は上書き | fm respond '質問' > answer.txt |
>> |
結果をファイルの最後へ追加する | fm respond '質問' >> notes.txt |
\ |
コマンドを次の行へ続ける | 後の例を参照 |
'...' |
空白を含む文や名前をひとまとまりにする | 'My File.txt' |
[!WARNING]
>の右側にある同名ファイルは上書きされます。大切なファイルでは、必ず別名へ保存してください。
空白を含むファイル名は 'My Report.txt' のように囲みます。別のフォルダーにあるファイルは ~/Documents/report.txt のように場所を含めて指定します。
2. 利用できるか確認する
シチュエーション
自分のMacで fm が使えるか確かめたい。
利用例
fm available
System model available と表示されれば利用できます。初回に利用条件への同意を求められた場合は、次を実行します。
fm license
解説
available は「利用できますか?」という意味です。同意状態は fm license --status で確認できます。
初回は、下記の様なメッセージが表示され、sudo fm license の実行が求められます。
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').
3. AIに1回質問する
シチュエーション
授業で出てきた「光合成」を、わかりやすく説明してほしい。
利用例
fm respond '光合成を中学生にもわかるように説明してください'
解説
respond はAIに1回質問して答えてもらうコマンドです。基本形は fm respond '質問やお願い' です。
答え方も指定できます。
fm respond \
--instructions '中学生向けに3つの箇条書きで答えてください' \
'地球温暖化とは何ですか?'
--instructions は答え方の指示です。短く -i とも書けます。
4. AIと続けて会話する
シチュエーション
数学について質問した後、さらに質問を続けたい。
利用例
fm chat --instructions 'あなたは中学生向けの数学の先生です'
会話を終えるときは Control-D、直前の会話を続けるときは次を使います。
fm chat --continue
解説
chat はAIと何回も会話するコマンドです。セッションは ~/.fm/sessions/ に保存されます。
ファイルを扱う
5. AIの答えから新しいファイルを作る
シチュエーション
光合成の説明を作り、photosynthesis.md へ保存したい。
利用例
fm respond --no-stream \
-i '見出しと箇条書きを使ったMarkdownで書いてください' \
'中学生向けに光合成を説明してください' \
> photosynthesis.md
内容を確認します。
cat photosynthesis.md
解説
-
fm respondがAIから回答を得ます。 -
--no-streamは、答えの完成後にまとめて出力します。 -
>が出力をファイルへ保存します。 -
catはファイルの内容を表示します。
つまり、fm が中身を作り、シェルの > がファイルを作ります。
6. ファイルを読み込んで要約する
シチュエーション
長い report.txt の大事なところだけを読みたい。
利用例
画面に表示する場合:
fm respond -i '大事な点を5つにまとめてください' < report.txt
summary.txt に保存する場合:
fm respond --no-stream \
-i '大事な点を5つにまとめてください' \
< report.txt \
> summary.txt
解説
report.txt → fmが要約 → summary.txt
< が元の文章を読み込み、> がAIの答えを別ファイルへ保存します。元の report.txt は変更されません。
7. ファイルを安全に書き直す
シチュエーション
draft.txt の誤字を直したいが、元の文章も残したい。
利用例
まず別名へ保存します。
fm respond --no-stream \
-i '意味を変えずに誤字を直し、修正後の本文だけを返してください' \
< draft.txt \
> draft-new.txt
違いを確認します。
diff -u draft.txt draft-new.txt
問題がなければ置き換えます。
mv draft-new.txt draft.txt
解説
diff -u は2つのファイルの違いを表示し、mv はファイルを移動または改名します。安全な手順は「別名で保存 → 差を確認 → 置き換え」です。
次のコマンドは実行しないでください。
# 危険: 入力と出力が同じ
fm respond < draft.txt > draft.txt
シェルが先に draft.txt を空にするため、元の内容を失う可能性があります。
8. 英語のファイルを翻訳する
シチュエーション
english.txt を読みやすい日本語にして保存したい。
利用例
fm respond --no-stream \
-i '中学生にも読みやすい自然な日本語へ翻訳してください' \
< english.txt \
> japanese.txt
解説
翻訳専用コマンドはなく、respond へ翻訳するよう指示します。人名、数字、日付などは元の英文と見比べてください。
9. 返信案を作る
シチュエーション
受け取ったメールを received-mail.txt に保存したので、丁寧な返信案を作りたい。
利用例
fm respond \
-i 'このメールへの丁寧な返信案を作ってください。返信本文だけを返してください' \
< received-mail.txt
3種類の候補を作る場合:
fm respond \
-i '短い返信、丁寧な返信、フレンドリーな返信の3案を作ってください' \
< received-mail.txt
解説
fm がメールアプリから自動的に本文を読むわけではありません。コピーして保存した本文など、利用者が渡した文章を基に返信案を作ります。送信前に、名前、日時、約束の内容を必ず確認してください。
10. 文章を分類する
シチュエーション
messages.txt に書かれた項目を「学校」「家庭」「趣味」に分けたい。
利用例
fm respond \
--use-case content-tagging \
-i '各項目を「学校」「家庭」「趣味」に分類してください' \
< messages.txt
解説
--use-case content-tagging は、文章へ分類用のタグを付ける作業に適した設定です。fm が通知やメールを自動取得するのではなく、渡した文章だけを分類します。
11. 答えと会話記録を使い分ける
シチュエーション
読むための文書と、後で続きを質問する会話記録を使い分けたい。
利用例
答えだけを文書にする:
fm respond --no-stream '勉強計画をMarkdownで作って' > study-plan.md
会話記録を保存する:
fm respond --save-transcript session.json '勉強計画を考えて'
続きを質問する:
fm respond \
--resume session.json \
--save-transcript session-2.json \
'数学の時間を増やしてください'
解説
| 方法 | 保存内容 | 目的 |
|---|---|---|
> study-plan.md |
AIが出した答え | 読む文書を作る |
--save-transcript |
質問と答えを含む会話 | 後で会話を続ける |
--save-transcript は、普通の文書を作る機能ではありません。
画像を扱う
画像では、最初に次の使い分けを覚えましょう。
文字だけで連続会話 ──> fm chat
画像を渡す ──> fm respond --image
画像について続ける ──> --save-transcript と --resume
12. 画像を1枚渡して質問する
シチュエーション
flower.jpg に何が写っているか、1回質問したい。
利用例
fm respond \
--image flower.jpg \
--text 'この画像を説明してください'
説明を保存する場合:
fm respond --no-stream \
--image flower.jpg \
--text 'この画像を説明してください' \
> flower-description.txt
解説
--image で画像、--text で質問を指定します。
-
--image flower.jpg: AIへ渡す画像 -
--text '...': 画像についての質問 -
> flower-description.txt: AIの答えを保存
説明を保存しても元の画像は変更されません。別のフォルダーにある画像は、場所を含めて指定します。
fm respond \
--image ~/Pictures/flower.jpg \
--text 'この花の色と形を説明してください'
13. fm chat へ画像を渡せるか
シチュエーション
fm chat を開始し、その会話中に画像を添付したい。
利用例
現在の fm chat には --image がないため、次の形では実行できません。
# 使用できない例
fm chat --image flower.jpg
代わりに fm respond を使います。
fm respond \
--image flower.jpg \
--text 'この画像を説明してください'
解説
fm chat は文字による対話用、fm respond --image は画像入力用です。
画像ファイル名を文字として入力するだけでは、画像の中身は渡りません。
flower.jpgを説明して
この文字だけでは、AIが flower.jpg の画像データを読んだことにはなりません。
14. 画像について続けて質問する
シチュエーション
画像の説明を聞いた後、「どこが重要?」「別の画像との違いは?」と質問を続けたい。
利用例
最初の画像と会話を保存します。
fm respond \
--image flower.jpg \
--text 'この画像を説明してください' \
--save-transcript image-chat.json
保存した会話の続きを質問します。
fm respond \
--resume image-chat.json \
--text '画像の中で特に重要な部分はどこですか?' \
--save-transcript image-chat-2.json
別の画像を加えて比較します。
fm respond \
--resume image-chat.json \
--image another-flower.jpg \
--label second \
--text '最初の画像との違いを説明してください' \
--save-transcript comparison.json
解説
-
--save-transcript: 質問と答えを会話記録として保存します。 -
--resume: 保存した会話の続きから質問します。 -
--label second: 追加画像へ名前を付けて区別しやすくします。
これは fm chat の画面内で会話する方法ではありませんが、コマンドを1回ずつ実行して画像について会話を続けられます。更新後の会話も残すには、毎回 --save-transcript を指定します。
15. 写真の文字やバーコードを読む
シチュエーション
プリントの文字や商品のバーコードを読みたい。
利用例
OCRで文字を読む:
fm respond \
--image worksheet.jpg \
--tool ocr \
-i '読めない文字は推測せず[不明]と書いてください' \
'画像内の文章を読んでください'
バーコードを読む:
fm respond --image package.jpg --tool barcode \
'バーコードの値を教えてください'
解説
OCRは画像内の文字を読み取る技術です。--tool ocr と --tool barcode は同時にも指定できます。画像がぼやけていると正しく読めないことがあります。
発展的な使い方
16. トークン数を調べる
シチュエーション
AIへ送るファイルがどれくらいの長さか知りたい。
利用例
fm count-tokens --quiet < report.txt
解説
トークンはAIが文章を読むときの小さな単位です。--quiet を付けると数字だけを表示します。
17. 決まった形のJSONを作る
シチュエーション
文章から名前と年齢を取り出し、JSONファイルにしたい。
利用例
設計図を作ります。
fm schema object \
--name Person \
--string name --description '名前' \
--integer age --description '年齢' \
> person-schema.json
設計図を使ってJSONを作ります。
fm respond --no-stream \
--schema person-schema.json \
'山田太郎さんは14歳です' \
> person.json
解説
schema は出力形式の設計図です。--string は文字列、--integer は整数を表します。必須にしない項目には、宣言の直後へ --optional を付けます。
18. 別のプログラムからAIを使う
シチュエーション
自作プログラムからWeb APIとして fm を使いたい。
利用例
サーバーを起動します。
fm serve --host 127.0.0.1 --port 1976
別のターミナルで確認します。
curl http://127.0.0.1:1976/health
解説
serve は fm をAPIサーバーとして起動します。APIはプログラム同士の窓口です。終了は Control-C です。初めて使う場合は、外部から接続される可能性がある --host 0.0.0.0 を使わないでください。
まとめ
よく使うコマンド
| やりたいこと | コマンド例 |
|---|---|
| 利用確認 | fm available |
| 質問 | fm respond '質問' |
| 会話 | fm chat |
| 画像について質問 | fm respond --image photo.jpg --text '説明して' |
| 画像について質問を続ける | fm respond --resume image-chat.json --text '続きの質問' |
| 答えを保存 | fm respond --no-stream '質問' > answer.txt |
| ファイルを要約 | fm respond -i '要約して' < report.txt |
| 安全に校正 | fm respond --no-stream -i '校正して' < old.txt > new.txt |
| 翻訳 | fm respond -i '日本語に翻訳して' < english.txt |
| 返信案 | fm respond -i '返信案を作って' < mail.txt |
| 分類 | fm respond --use-case content-tagging -i '分類して' < text.txt |
| OCR | fm respond --image photo.jpg --tool ocr '文字を読んで' |
| バーコード | fm respond --image photo.jpg --tool barcode '値を読んで' |
| トークン数 | fm count-tokens --quiet < report.txt |
| ヘルプ | fm --help |
学習・ファイル操作の安全チェック
-
>の右側のファイルが上書きされてもよいか - 入力と出力が同じファイル名になっていないか
- 元ファイルやバックアップを残しているか
- AIの出力に間違いがないか確認したか
- 個人情報や秘密を不用意に入力していないか
- 宿題の答えをそのまま提出せず、自分でも考えたか
- 医療、法律、お金の重要な判断をAIだけに任せていないか
困ったとき
fm: command not found
sw_vers で確認してください。fm はmacOS 27以降に入っています。
モデルを利用できない
fm available --model system
Apple Intelligenceが有効か、モデルのダウンロード、対応言語・地域、fm license --status を確認します。
コマンドの使い方を忘れた
fm --help
fm respond --help
fm chat --help
fm schema object --help