Upgrade to Pro — share decks privately, control downloads, hide ads and more …

自作 PC で始めるローカル LLM を利用した Xcode のコード自動生成

Avatar for Mitsuharu Emoto Mitsuharu Emoto
August 31, 2026
10

自作 PC で始めるローカル LLM を利用した Xcode のコード自動生成

Avatar for Mitsuharu Emoto

Mitsuharu Emoto

August 31, 2026

More Decks by Mitsuharu Emoto

Transcript

  1. 自作 PC で始めるローカル LLM を利用した Xcode のコード自動生成 江本光晴 ゆめみ(アクセンチュア株式会社) Xcode

    26 から AI 機能が搭載され、Xcode はコー で組んだ Windows PC のベンチマークやコストを ド生成ができるようになりました。今や生成 AI は 比較しながら、ローカル LLM を運用できる現実的 開発に欠かせない存在です。一方で、そのコード なハードウェアについても考察します。 生成に利用されるクラウド型 AI サービスは、プラ ンによる利用上限や従量課金といったコスト、政 なお、本記事はすべてのクラウド LLM をローカル 治判断による影響などの課題があります。また、 LLM に置き換えを提案するものではありません。 学習無効に設定していても、ソースコードや設計 両者は共に同じ LLM ですが、性能や特性は異なり 情報は外部に送信されるため、セキュリティ要件 ます。お互いを理解し、それぞれが得意な領域で が厳しい秘匿案件での利用は難しいです。 棲み分けるための現実解を探求します。 それらの解決アプローチとして、本記事ではロー 対象読者 カル LLM(Large Language Model / 大規模言語 モデル)を利用した Xcode のコード自動生成を紹 介します。ローカル LLM はローカル環境内で LLM 推論するため、利用制限や情報漏洩を気にせず利 用できます。 しかし、ローカル LLM を Mac 上で動作させると、 大量のメモリや GPU リソースを消費します。本来 の目的である Xcode の開発パフォーマンスが低下 したら、意味がありません。Mac は購入後にメモ リや GPU などを増設できないため、エントリー やミドルモデルなどのスペックでは、ローカル LLM は十分に動作しません。 そこで、ローカル LLM を開発機の Mac ではなく、 Xcode 26 の AI コード生成機能を利用する方 ローカル LLM に興味がある方 自作 PC にも興味がある方 検証環境 項目 開発機 Xcode で利用する方法を説明します。さらに、筆 者の自作 PC 趣味を活かし、いくつかのパターン MacBook Pro 14 インチ M5 / メモリ 32GB / 2025 macOS macOS 26.5.1 Xcode Xcode 26.5.0 ローカル LLM LM Studio 0.4.18 実行環境 Ollama 0.31.1 別の PC で実行させます。その PC を LLM サー バーとしてローカルネットワーク上に構築して、 内容 gemma 4 (12B / 27B など) 検証モデル qwen 3.6 (27B / 35B など) ornith 1.0 (9B / 35B など)
  2. 免責事項 課金と利用制限 本記事は 2026 年 7 月上旬の情報を元にしていま 各サービスは契約プランごとに利用制限がありま す。これらの情報の運用は、ご自身の責任と判断 す。たとえば、一定期間あたりのリクエスト数や

    によって行なってください。運用の結果について、 トークン量に上限があります。その上限に達する 筆者は責任を負わないものとします。 と、一定時間待つ、追加クレジットを購入する、 上位プランに切り替えるなどの対応が必要になり 本記事に登場するシステムや製品などの名称は、 ます。また API を利用する場合は従量課金になり 一般に各社の商標または登録商標です。本記事 ます。コード生成のように長いコンテキストを頻 は、©︎、®︎や 繁に送るケースでは、想定以上に大きなコストが ™️などの表記を省略します。 Xcode 26 の AI コード生成機能 短時間で発生します。 今年 6 月に先行公開された Claude Fable 5 は、政 Xcode 26 から AI 機能が組み込まれました。これ 治的な判断から予定より早く公開停止されまし までサードパーティのエディタやツールに頼って た。AI 利用は、いくら課金していても、生殺与奪 いましたが、Xcode 単体で AI が利用できるように の権は他者(さらには国)に握られています。 なりました。プロジェクト構造や Swift のビルド 情報を Xcode 自身が把握しているため、コンテキ ストの受け渡しが自然に行われる点が強みです。 Intelligence の選択 利用モデルの制御 クラウドサービスのモデルは予告なくアップデー トされます。昨日までよいコードを生成していた のに、今日から微妙になったという経験をした方 Xcode 26 から Chat 機能、遅れて Xcode 26.3 か も多いのではないでしょうか。 ら Agent 機能が追加されました。Agent の登場に よって、より本格的なコード生成ができるように モデルのバージョンを固定できない、あるいは固 なりました。執筆時点で利用できる AI のモデルプ 定できても旧バージョンの提供はいずれ終了しま ロバイダは、Anthropic と OpenAI です。 す。一般的にバージョンが上がれば性能は向上し ますが、AI の内部は確率論であるため、期待した それら以外のモデルプロバイダを利用したい場 結果や精度が常に取得できるとは限りません。 合、Chat は接続先 URL(API)を設定して追加で きます。一方 Agent は、現時点でモデルプロバイ ダを追加する機能は用意されていません。既存の Agent の設定ファイルを編集して、Agent のバッ 外部ネットワークへの情報送信 これが最大の課題になるでしょう。多くのサービ クエンドに外部プロバイダが利用できます。 スは「入力データを学習に利用しない」という設 クラウド型 AI サービスの制約 トワークに送信しない」ではありません。 開発において、生成 AI は欠かせないです。主流の 推論するため、ソースコードや設計情報は外部の 生成 AI サービスはクラウドで提供されます。利便 推論サーバーに送信されます。これは契約や規約 性が高い一方で、次のような制約があります。 レベルでどう保護されていても、外部ネットワー 定を提供していますが、「入力データを外部ネッ クに送信されるという事象は回避できません。
  3. 顧客との契約でソースコードおよび関連情報の 本記事で取り上げるオープンウェイトモデルを紹 外部サーバーへ送信が禁止されている 介します。ここで B は Billion(10 億)であり、 金融・医療など、データの持ち出しに厳格な規 パラメータの数を示します。たとえば、30B

    は 制がある 300 億個のパラメータを意味します。 未発表プロダクトやサービスの情報漏洩リスク を最小化したい このような秘匿案件では、クラウド型 AI の利用が 承認されないケースは珍しくありません。AI を利 用すれば短時間で終わるタスクを長々と時間をか けて手作業で行う、AI 開発を味わってしまった現 在の開発者には苦行です。 ローカル LLM ローカル LLM とは、自身のローカル環境で動作す る大規模言語モデルです。一般公開されている オープンウェイトモデルをダウンロードして、 ローカル環境の CPU や GPU で推論します。 プロンプトや生成結果もローカルで完結するの で、ネットワークを遮断した環境でも動作する 何度利用しても制限はなく、追加コストはかか らない(PC パーツや電気代は除く) Gemma 4 Google が開発する軽量なモデル 2 です。8B、12B や 31B など種類が多い。指示追従性が高く、日本 語も堪能です。GPT-4.1 などに近い評価 3 です。 Qwen 3.6 Alibaba が開発するモデル 4 です。コーディング 性能に定評があり、国内 LLM のベースにも利用さ れます。Claude Sonnet 4.6 同等の評価 5 です。 Ornith 1.0 DeepReinforce が開発するコーディング特化のモ デル 6 です。Gemma 4 と Qwen 3.5 を元に開発さ れ、Claude Opus 4.7 同等と評価されています。 ローカル LLM の実行環境 自身が選択したモデルやバージョンを利用し続 ローカル LLM を動かすためのランタイムはいくつ けられる かありますが、本記事は代表的な2つを採用しま 量子化レベルやコンテキスト長など、細かなパ した。どちらも LLM をローカル環境で実行するた ラメータを自身で制御できる めのオープンソースの推論エンジン llama.cpp 7 ローカル LLM の性能 少し前のローカル LLM は、実用には難しい精度や を内部で実行しています。 ツール GUI が充実して、モデルの検 性能でした。しかし、ここ最近公開されたオープ ンウェイトモデルは、性能が大きく向上しまし た。依然として主要なクラウド LLM には及ばない 特徴 LM Studio 8 索・ダウンロード・サーバー 起動までマウス操作で完結す ものの、コード生成タスクをこなせる水準には到 る。初学者にお勧めです。 達しました。LLM のベンチマーク比較サイト 1 を 基本的に CLI ベースで操作し 参照すると、現在のローカル LLM のスコアは、ク ラウド LLM の前世代に近いレベルです。 Ollama 9 ます。 ollama run でモデ ルを実行する。サーバー用 途・自動化に向いている。
  4. これら両者は OpenAI 互換の API サーバー機能を 内蔵しています。Xcode 26 はこの互換 API に接続

    できるので、どちらを選択しても本記事の手順は 利用できます。 モデルのメモリ削減と負荷軽減 Chat にローカル LLM を設定する 先述どおり、Chat にローカル LLM を追加できま す。手順の途中で Internet Hosted がありますが、 これは後々説明します。 1. Xcode の Settings の Intelligence を開く モデルのパラメータが 32B(320 億)の場合、単 2. Add a Model Provider を選択する 純計算で 1 パラメータは 16 bit(2 byte)なので、 3. プロバイダ種別で Locally hosted を選び、次 約 64 GB のメモリが必要です。家庭用 PC には大 の内容を入力する きな負担です。そこで有効な技術が量子化です。 Port: LM Studio なら 1234、Ollama なら モデルの重みを低ビット化することで、メモリ使 11434(それぞれのポート初期値) 用量を抑えられます。一般的な Q4(4 ビット量子 Description: LM Studio や Ollama など任 化)は、品質劣化をできるだけ抑えつつ、メモリ 意の名前 を大きく削減できます。理論上は 1/4 ですが、実 際は KV キャッシュや実行時バッファなどがある ので、64 GB のモデルは約 21 GB になります。 さらに MoE(Mixture of Experts / 混合エキスパー ト)という技術があります。これはモデルの中に 複数の小さな専門家ネットワークを配置し、入力 に応じて必要な専門家だけで計算します。たとえ ば、総パラメータが 32B でも、計算に利用される のはその一部(仮に 8B など)になります。これ 4. Coding Assistant の画面右上のモデルセレク タで、登録したローカルモデルを選択する により、巨大モデル並みの賢さを維持しながら、 軽量モデル並みの計算コストになります。 Xcode とローカル LLM の接続 手元の Mac で LM Studio または Ollama を利用し てローカル LLM を立ち上げ、Xcode から利用しま す。ツールの詳しいインストールや利用方法はそ れぞれの公式サイトに譲りますが、次のようにす ればローカル LLM が利用できます。 LM Studio はマウス操作してモデルを選択する Ollama はターミナルからコマンドを打つ この手順で、ローカル LLM を Xcode で利用でき ます。チャットで「この画面でカウンターアプリ を作って」のように依頼すると、クラウド型と同 様にローカル LLM が対応します。 Agent にローカル LLM を設定する 新たに Agent を追加する方法は提供されていませ ん 。 ロ ー カ ル LLM を 利 用 す る 場 合 は 、 既 存 の ollama run qwen3.6 Agent の設定を変更することで、対応します。 Claude Agent の例を紹介します。
  5. 1. Xcode の Settings の Intelligence を開く 2. Claude Agent

    を選択する 3. Account で Authenticate with configuration file を選択する ローカル LLM の負荷 モデル qwen3.6 27B Q4(サイズ 16 GB)をマウ ントしたときのメモリ使用量を示します。 4. settings.json が編集できるようになる 図 1: ローカル LLM の利用時のメモリ 私の MacBook はメモリ 32 GB と個人利用は十分 なサイズですが、ローカル LLM を利用すると、メ モリのほとんどが消費されました。今回選択した モデルはローカル LLM では小さい方の部類です。 5. settings.json を次のように設定する つまり、購入時のカスタマイズでメモリを少し増 やした程度では、ローカル LLM には不十分です。 { "env": { "ANTHROPIC_AUTH_TOKEN": "lms tudio", "ANTHROPIC_BASE_URL": "http: //localhost:1234" } } ローカル LLM サーバー Mac は購入後にメモリ増設はできません。以前 あった破格な 512 GB モデルはなくなり、さらに 昨今の DRAM の価格高騰により、大容量メモリの Mac の入手は難しいです。そこで発想を変えて、 これで Claude Agent は Opus や Sonnet ではな く、指定したローカル LLM をバックエンドとして 利用します。Claude Agent はローカル LLM を利 用して、アプリを実装します。 そこで GitHub のリポジトリを検索する iOS アプ リの作成指示書を与えました。順調にアプリを開 発していましたが、作成途中でローカル LLM の推 論がクラッシュしました。 LLM の実行を開発機の Mac から切り離します。 アーキテクチャ 構成はシンプルです。ローカルネットワーク上に ローカル LLM 推論マシンを配置します。そのマシ ンは Mac とは異なり、スペックのカスタマイズ性 を持ちます。Mac の Xcode から、そのマシンの OpenAI 互換 API に接続します。このアプローチ の利点は次のとおりです。
  6. 開発機 Mac はメモリや GPU を LLM 推論で消費 せず、開発に専任できる ローカル LLM

    に最適な自作 PC 推論はすべて LAN 内で完結するので、外部送信 私は自作 PC を趣味としており、今回いくつかの しないという利点は維持される パターンで自作 PC を組みました。それらのベン LM Studio などは Windows / macOS / Linux を チマークから、最適な構成を考えます。 サポートするので、マシンを自由に設計できる 小中規模のローカル LLM なら、何とか個人で LLM にもっとも影響するパーツは GPU です。本 対応スペックを用意できる(要出典) 来は他パーツを固定して、GPU だけを入れ替えて 目的が増えて、大義名分で自作 PC を組める 計測するのが望ましいです。しかし、私の日常利 用と自作ポリシーにより、構成はそれぞれ異なり Xcode とローカル LLM サーバー Xcode とローカル LLM サーバーの接続は簡単で す。LM Studio と Ollama はサーバー機能を備え ます。ご了承ください。なお、スペックはそれぞ れミドルからミドルハイのレンジです。 検証機の比較 ています。両者とも設定からローカルサーバー機 能を有効にします。 自作した検証機の構成と計測結果を表1にまとめ ました。ゲームなどで日常利用してるメイン PC、 Chat は前述の手順にあった Internet Hosted で、 余剰パーツなどで組んだサブ PC たちです。また、 ローカル LLM サーバーのローカル IP アドレスと 今回のローカル LLM に向けて、私がこれなら十分 ポート番号( 192.168.100.38:1234 など)を だろうと組んだ検証機 10 もあります。それぞれ 指定します。API Key などの初期値は未設定なの Windows 11 を採用して、パーツは中古、アウト で、適当な値でよいです。 レットやジャンクなどを多用しています。本当は DDR5 のメモリ(RAM)を多く載せたかったので すが、昨今の価格沸騰で断念しています。 性能比較 各検証機において Ollama を利用して、次のモデ ルを同一プロンプトで 10 回実行しました。性能 指標の token/sec の平均値を計測しました。 図 2: Chat にローカル LLM サーバーを追加する Agent も同様に settings.json で localhost をロー カル IP アドレスに書き換えます。これにより、先 ほどクラッシュした Agent とローカル LLM は最 後まで実装できました(詳細は後述を参照)。 モデル P 量子化 サイズ gemma4 11 8B Q4_K_M 9.6 GB qwen3.6 12 35B Q4_K_M 24 GB gemma4 は、どの GPU の VRAM にも収まるので、 計算速度を比較します。qwen3.6 は VRAM に収ま る・収まらないが起こるケースで、大きなモデル を選択したときのパフォーマンスを比較します。
  7. 表 1: 検証機の構成と計測結果 構成 CPU RAM GPU A B C

    D E Intel Ryzen Ryzen Intel Intel i7 12700 7 5700X 7 7700 i7 13700 i5 14400 DDR4 DDR4 DDR5 DDR5 DDR4 64 GB 64 GB 32 GB 32 GB 128 GB Intel Radeon GeForce GeForce Radeon Arc B580 RX 9060 XT RTX 5060 Ti RTX 4070 Ti AI PRO R9700 12 GB 16 GB 16 GB 12 GB 32 GB(2 枚) 計測結果 (token/sec) gemma4 (9.6 GB) 70.47 60.95 96.36 105.12 58.25 qwen3.6 (24 GB) 32.86 20.85 63.87 53.79 74.39 評価 LLM のモデルは VRAM にマウントされますが、同 様に RAM にもマウントされます。たとえば 30 GB のモデルを読み込むと、VRAM と RAM はそれぞれ 30 GB 以上を消費します。また VRAM が十分なサ イズではない場合、VRAM は RAM とモデルデータ をやり取りするため、計算速度に影響します。 gemma4 はそのような速度低下が起こらない検証 です。やはりというか、前世代とはいえど RTX 4070 Ti が勝利です。予想外として、まだ歴史が浅 い Arc B580 が Radeon より速い結果は驚きでし 計算速度に関して評価しましたが、推論結果はど れも妥当な精度でした。この検証中で qwen3.6 に「Swift Concurrency について 200 文字で説明 して」と質問した結果の一例を記載します。 Swift ConcurrencyはSwift 5.5で導 入された現代的な並行処理モデルです。as ync/await構文により非同期処理を同期的 な記法で直感的に実装でき、コールバック 地獄を解消します。Actorによる共有状態 の安全な保護と構造化並行処理を採用し、 レースコンディションを防ぎながら高効率 な並列実行を実現。ネットワーク通信からU I更新まで、複雑な処理も安全かつシンプル に扱えます。 た。一方で qwen3.6 では、VRAM の大きさが結果 に 影 響 し ま し た 。 計 算 が 速 い GeForce よ り、 VRAM を多く積んだ AI PRO R9700 が勝ちました。 ローカル LLM で iOS アプリ実装 MacBook、検証機 E そして ornith 35b 13 を利用 予想どおりというべきか、利用したいモデルに対 して、ローカル LLM で iOS アプリを開発します。 して十分なサイズの VRAM を選択するのがよいで す。多少不足する場合は、速度で挽回できるコア Chat で一画面に対して実装指示する を選択しましょう。金額面から Arc が大穴でしょ Claude Agent のバックエンドとして、シンプ うか。なお、私は Radeon を愛用しています。 ルなアプリを実装する
  8. 実装 難易度の高い要求でなければ、ローカル LLM は実 Xcode で Chat および Claude Agent

    のバックエン ドに、ローカル LLM サーバーを設定しました。 装支援に活用できます。今はクラウドのトークン 消費を抑えるための補助的な利用が現実的です。 なお、実装中は検証機の GPU の消費電力とファ ン回転数がほぼ最大まで上がりました。LLM の計 算負荷の高さを実感しました。 まとめ 実装に利用した ornith は正直使えました。LLM のモデルとハードウェアは継続的に進化してお り、いずれは本格的な開発手段になるでしょう。 図 3: Chat に Ollama を設定した 私が愛用している Radeon は、計算用ドライバー の練度に伸び代があります。速度は劣るが、コス 今回は Ollama を利用するので、settings.json で トに魅力があり、今後も付き合っていきたい。 モデルも指定します。 { "env": { "ANTHROPIC_AUTH_TOKEN": "oll ama", "ANTHROPIC_BASE_URL": "http: //192.168.100.19:11434", "ANTHROPIC_MODEL": "ornith:3 5b" } } 紙面の都合上、実装結果は GitHub 14 の PR で公 開します。対照として、ローカルの qwen 3.6、ク ラウドの GPT-5 / Codex でも実装しました。 ローカル LLM の実装評価 ローカル LLM は、クラウドと比べると速度と品質 で見劣りしますが、ornith は健闘しました。 Chat は単純なタスクを問題なくこなせたため、短 く明確な指示には十分実用的だと感じました。 Agent は ornith では問題なかったですが、一般的 には分割して段階的に渡した方が安定します。 1. https://artificialanalysis.ai/models 2. https://ai.google.dev/gemma/docs/core/m odel_card_4?hl=ja 3. https://benchlm.ai/compare/gemma-4-31bvs-gpt-4-1 4. https://www.alibabacloud.com/ja/solution s/generative-ai/qwen?_p_lc=1 5. https://benchlm.ai/compare/claudesonnet-4-6-vs-qwen3-6-27b 6. https://deepreinforce.com/ornith_1_0.html 7. https://llama-cpp.com/ 8. https://lmstudio.ai/ 9. https://ollama.com/ 10. https://qiita.com/mitsuharu_e/items/92a3e ccb65d9b5c4ceca 11. https://ollama.com/library/gemma4:e4b 12. https://ollama.com/library/qwen3.6:35b 13. https://ollama.com/library/ornith:35b 14. https://github.com/mitsuharu/evaluatelocal-llms-for-ios-app