厳格なセキュリティポリシー、社内コードのコンプライアンス、または秘密保持契約(NDA)のもとで開発を行うエンジニアにとって、機密ソースコードや社内インフラの構成情報をOpenAI(GPT-4o)やAnthropic(Claude 3.5 Sonnet)などのクラウド型LLMへ送信することは固く禁じられているケースが少なくありません。しかし、キーボード中心のデスクトップAIによるショートカット作業を諦めると、コードのリファクタリングやGitコミット作成、ドキュメント生成などの生産性が大きく低下してしまいます。
macOS上でオープンソースの軽量ランタイム「Ollama」を動かし、デスクトップランチャー「Raycast AI」と直接連携させることで、一切の外部通信を行わない「完全オフライン・データ漏洩ゼロ」の開発環境を構築できます。Raycastの直感的なUI(Quick AI、AI Chat、カスタムAI Commands)を活かしつつ、推論処理はすべてApple Siliconの統合メモリ(Unified Memory)上で実行されるため、安全かつ高速なローカルAIアシスタントが手に入ります。
アーキテクチャとデータ境界:外部漏洩ゼロの仕組み
企業のセキュリティ監査をクリアするうえで、データの通信経路を正確に把握しておくことは不可欠です。
- ローカルループバック通信:Raycastにローカルモデルを設定すると、プロンプトはマシン内のOllamaデーモン(デフォルトでは
http://localhost:11434)へ直接HTTPリクエストとして送信されます。モデルの重みはMacのRAM/VRAMにロードされ、MetalによるGPUアクセラレーションで推論され、結果がRaycast画面へストリーミング表示されます。 - 第三者への送信やログ記録なし:入力したコードやプロンプトはRaycastのサーバーにも外部のAI事業者にも一切送信されません。
- 完全なオフライン稼働とクレジット不要:モデルを一度ダウンロードすれば、機内モードや完全なオフライン環境でも動作します。また、ローカルモデルのテキスト生成でRaycast AIクレジットを消費することはありません。
ハードウェア要件とおすすめコーディングモデル選定
ローカルモデルの処理性能はMacの統合メモリ(UMA)の容量に直結します。XcodeやVS Code、Dockerなどの開発ツールと並行して快適に動かすため、搭載メモリに応じたモデルサイズを選ぶことが重要です。
| 統合メモリ(RAM) | 推奨モデル | 量子化とメモリ占有量 | 開発用途と強み |
|---|---|---|---|
| 16 GB | qwen2.5-coder:7b;llama3.1:8b;mistral:7b | Q4_K_M(約 4.7 GB - 5.2 GB 占有) | 関数の説明、正規表現の作成、ドキュメント生成、Gitコミットメッセージ作成。システムの空きメモリを圧迫しません。 |
| 32 GB - 36 GB | qwen2.5-coder:14b;deepseek-coder-v2:16b;gemma2:9b | Q4_K_M / Q5_K_M(約 9 GB - 11 GB 占有) | 高精度なリファクタリング、複数ファイルの単体テスト作成、アーキテクチャ設計の相談、複雑なBash/Pythonスクリプト。 |
| 64 GB - 128 GB+ | qwen2.5-coder:32b;llama3.3:70b(64GB+ Q4);codellama:34b | Q4_K_M / Q8_0(約 20 GB - 42 GB 占有) | 深いセキュリティ監査、メモリリーク・脆弱性の検出、複雑なアルゴリズムの設計。クラウド最上位モデルに近い推論性能を発揮します。 |
コンテキスト長の仕様:Raycastでは、メモリの枯渇を防ぎ安定した応答速度を維持するため、ローカルモデルのコンテキスト長を最大64kトークンに制限しています。
ステップ別セットアップ手順
ステップ1:Ollamaのインストールとモデルの取得
macOSではHomebrewまたは公式サイトのインストーラーからOllamaを導入できます。
# 方法A: Homebrewでインストール
brew install --cask ollama
# 方法B: ollama.com からDMGファイルをダウンロードし /Applications に配置
インストール後、一度Ollamaアプリを起動してメニューバーアイコンが表示され、環境変数が通っていることを確認します。
次に、ターミナルでコーディング向けオープンソースモデルをダウンロードします。
# プログラミング特化の定番モデルを取得
ollama pull qwen2.5-coder:7b
ollama pull llama3.1:8b
# インストール済みモデルの確認
ollama list
ターミナルで動作確認を行います。
ollama run qwen2.5-coder:7b "移動平均を計算するPython関数を書いてください"
ステップ2:Raycast AIでローカルモデルを有効化
RaycastにはOllamaとのネイティブ統合機能が標準搭載されています(※Raycast Pro機能):
⌥ Space(または設定したホットキー)を押してRaycastを起動します。⌘ ,を押して Raycast Settings を開きます。- 上部メニューから AI タブを選択します。
- Models & Providers を開き、スクロールして Local Models セクションを表示します。
- インストールされているOllamaが自動検出されます。先ほど取得したモデルが表示されない場合は、Sync Models をクリックします。
- Raycast上から直接モデルを導入することも可能です。Install Ollama Model にモデル名(例:
qwen2.5-coder:7b)を入力し、Install をクリックします。
補足:Raycastからローカルモデルを呼び出すと、バックグラウンドで自動的にOllamaデーモンが立ち上がるため、ターミナルを開きっぱなしにする必要はありません。
ステップ3:リモートの社内Ollamaサーバーを指定する場合(オプション)
オフィス内のLANやプライベートVPN環境にあるハイスペックMac StudioやLinux GPUマシンに推論を任せる場合:
- リモートサーバーのOllamaをLAN内IPにバインドします(環境変数
OLLAMA_HOST=0.0.0.0:11434)。 - Raycastの Settings → AI → Models & Providers → Local Models で Ollama Host 欄を探します。
- 社内IPアドレス(例:
http://192.168.1.50:11434)を入力します。 - Sync Models をクリックします。これで社内ネットワーク経由でローカル推論が実行されます。
プライバシー強化:セキュリティチェックリスト
機密情報を扱う場合、以下のRaycast設定をあらかじめ確認・調整しておくことを推奨します。
- AI Chatのクラウド同期(Cloud Sync)をオフにする:
- Settings → Cloud Sync に進みます。
- クラウド同期をオンにしていると、AIチャットの履歴が暗号化されてRaycastのバックエンドへ同期されます。社内ポリシーでチャット履歴のクラウド保管が一切禁止されている場合は、AI同期を無効化するか定期的にチャット履歴を削除してください。
- AIパーソナライゼーション(AI Memory)を無効化する:
- Settings → AI → Personalization で Memory を確認します。
- Memory機能が有効になっていると、過去の会話履歴を要約するためにバックグラウンドでRaycastホストのクラウドモデルが呼び出される場合があります。完全なエアギャップ(隔離)を保つには、Memoryをオフにします。
- クラウド限定ツールの利用を避ける:
- Raycast内の画像生成ツールなど一部の機能はクラウドサーバー側で処理されます。日常のコーディング支援ではテキストおよびコード処理のみに留めてください。
- 不具合報告(Send Feedback)時にコードを含めない:
- フィードバック送信を行うと、デバッグ情報として直前のチャットスレッドが送信されます。機密情報が含まれる画面からはフィードバック送信を行わないよう注意してください。
開発を加速するカスタムAIコマンド活用法
ローカルモデルをセットアップしたら、日々の反復作業をショートカット化できます。
1. 安全なAI Chatでの相談
⌘ ⌥ Space で AI Chat を起動し、モデル選択メニューからローカルモデル(例: Local: qwen2.5-coder:7b)を選択します。社外秘のテーブル定義や内部API仕様、エラーログを貼り付けても、データがMac外に出る心配はありません。
2. 開発向けカスタムAIコマンドの作成
Raycast Settings → Extensions → AI → AI Commands で Create AI Command をクリックし、よく使うプロンプトを登録します。
- Git Commitメッセージの自動生成:
- Prompt:
以下の git diff に基づいて、Conventional Commits 仕様に準拠した簡潔なコミットメッセージを作成してください。タイトルと箇条書きの本文のみを出力し、余計な説明文は省いてください: - Input:Selected Text または Clipboard
- Model:
Local: qwen2.5-coder:7b - Action:Paste into Active App または Copy to Clipboard
- Prompt:
- コードのセキュリティ診断・脆弱性チェック:
- Prompt:
以下のコードを検証し、メモリリーク、SQLインジェクション、XSS、競合状態、ハードコードされた認証情報の有無を調査してください。重要度順に指摘し、具体的な修正コードを提案してください: - Input:Selected Text
- Model:
Local: qwen2.5-coder:14b - Action:Show in Chat
- Prompt:
- 型定義とTSDocドキュメントの付与:
- Prompt:
実行時の動作を変更することなく、以下のコードに厳密なTypeScript型注釈とTSDocコメントを追加してください: - Input:Selected Text
- Model:
Local: qwen2.5-coder:7b - Action:Replace Selected Text
- Prompt:
無料プラン向け代替手段:コミュニティ拡張機能
Raycastの「Local Models」ネイティブ統合はRaycast Proの機能です。無料版Raycastをお使いの場合でも、Raycast Storeのコミュニティ拡張機能を経由してOllamaを利用できます。
- Raycastで Store を検索して開きます。
- Ollama AI 拡張機能を検索してインストールします。
- 拡張機能の設定でAPI URLを
http://localhost:11434に指定します。 - Ollama Chat コマンドなどで利用します。グローバルなQuick AIポップアップほどの統合度はありませんが、ローカルオフラインというプライバシー上のメリットは全く同じです。
トラブルシューティング
- 「Ollama is not installed」と表示される:
Ollamaアプリが
/Applicationsに存在するか、またはターミナルのPATHにollamaが含まれているか確認してください。Finderから一度手動でOllamaを起動した後、Raycast設定で Sync Models を押します。パスが特殊な場合は、Ollama Host に明示的にhttp://localhost:11434と入力します。 - ダウンロードしたモデルがピッカーに表示されない:
ターミナルで
ollama listを実行し、モデルが正しくダウンロードされているか確認します。その後、Raycastの Settings → AI → Models & Providers → Local Models で Sync Models をクリックし、Manage Models 内でモデルのチェックボックスが有効になっているか確認してください。 - 応答が遅い、またはシステムが重くなる: モデルのサイズがMacの空き統合メモリを超過し、SSDへのスワップが発生している可能性があります。16GBメモリのMacでは14Bや32Bのモデルを避け、7Bまたは8BのQ4量子化モデルを使用してください。不要なブラウザタブやメモリ消費の激しいアプリを終了してから実行してください。