MacBook Pro M4 Max 128GBを活用できそうになってきた
2026年6月現在、ローカルLLMを利用して仕事・プライベート問わず色々なことができる環境がある程度整ってきています。自分に合った使い方をすれば役に立つ、ツールとして利用できる環境がようやく見えてきたという気がしています。もともとローカルLLMをそれなりに試せそうだとう話が出てきていたのがMac StudioのM3 Ultraが出たしたあたりだったように記憶していますが、その値段から簡単には手が出せないものではあるものの、色々と紹介記事を読むにつけ面白い時代になったと思っていました。そんな中、2024年10月にM4のMacBook Proの発表がありました。M4 MacBook Proのラインアップには128GBのメモリーを積んだM4 Maxがでることが明らかになり、発表から発売日までの間にメモリー128GBがあればローカルLLMも”動く”ということが俄かに囁かれ出しました。それまでMacBook Pro M1 Max 64GBを使用してきていてそのパフォーマンスの良さになんの不満もなかったのですが、このメモリー容量差と、ローカルLLMを動かす際のM1 MaxとM4 Maxとのパフォーマンス差がそれなりにあることが喧伝されるにつれそわそわし出すことに。気がつけば、気絶して清水の舞台から飛び降り、なんとか致命傷で済むレベルでMacBook Pro M4 Max 128GBを発売初日にお迎えしていました(24回ローンですが)。某アニメ好きな私としてはM4世代になったらその名前からして買うしかないと思っていたことも大きいのですが(RE:BOOTがそろそろか)。
ただし購入当初はLM Studioなど使って色々と試して見たものの、まぁわかっていたことですがバリバリ活用するには厳しいかなぁという肩透かし感が大きかったことも事実です。通常使用には当然のことながらストレスフリーなわけですが、あえてM1 Maxから買い換えたことを正当化することができるレベルでの違いを感じれるほど使い倒す用途が自分にはなかったとう感じです。
そんな中、去年の中頃、gpt-oss-120bが出たあたりから個人的な評価の潮目が変わってきつつあります。時間はかかるものの、それなりの精度のものを整理してアウトプットとしてまとめる用途には使えるかなという印象を持ちだしました。そして先月ごろDwarfStar 4の存在を知り、これに衝撃を受けました。初めてM4 Max 128GBの実力を活かせるのでは、と(すでにM5 Maxありますが、前述の通り”M4″に意味を見出しているので知ったことではない)。同時に、今までなんら興味のなかったClaude Code(OpenClawしかり)から利用することで資料作成のアシスタント的に使えるかもと思い環境を作ってみたところ、相変わらず時間はかかるもののまずまずのアプトプットを出してくれる感触を得ました。その際にVS Codeのdevcontainer上にClaude Codeを入れて必要そうなMCP Serverも利用する環境に整備して活用できるようになったので、その環境を簡単に紹介しておこうと思った次第です。
DwarfStar 4をローカル環境に導入する
まずはこれがないと始まりません。DwarfStar 4の説明や紹介については色々なところんあるので省略します。Salvatore Sanfilippoという方がご自身の興味で始められたことがDwarfStar 4のgitに記載されているので、一読することをお勧めします。
一時程ではないものの、精力的に結構な頻度で更新されているので、時々pullしておくのが良いかと思います。導入自体は驚くほど簡単で、gitに記載のある通りでコーヒー飲んでいる間にモデルのq2-q4-imatrixのダウンロード含めて終わっているというところです。
また、こちらの記事にある通り、LaunchAgentで常駐化しています。
なお、ds4-serverのオプションとして、「–power 70」を追加して約70%の制限をつけてました。ds4のページにある通り、デフォルトは「–power 100」でフルスロットルで動かしますが、少しセーブして動かすことでMacBook Proへの負荷が減るため、寿命にも良いかなと思って設定しています。フルで動かしたとしてもそこまで早いわけではないので、これで様子を見ています。
VS Codeの設定を行う
続いてVS Code側の設定を行います。
1. VS Codeのローカル環境に拡張機能を追加する
私の環境ではVS Codeのローカル側に通常入れている拡張機能は、Japanese Language Pack for Visual Studio Code(ms-ceintl.vscode-language-pack-ja)と、Dev Containers(ms-vscode-remote.remote-containers)だけとなります。
2. VS Codeのdevcontainer側に必要なディレクトリ・ファイルを作成する

プロジェクト毎に複数のdevcontainer環境を利用していますが、基本的には同じでだいたいこんな感じです。skillsの中身はProjectに応じて変更しますが、メモを残すスキルは大体入れています。また、「yamaha-NW-icons.xml」というのはdrwoioのアイコン用に作成したもので、ヤマハのアイコン・外観写真ダウンロードページからネットワーク構成図の作成用アイコンをダウンロードして、drawioのページでsvg形式の図形を追加してそのままExportさせたXMLファイルを利用しています。それぞれのファイル類については色々と参考サイトがあるのでそれらを見ていただくとして、ちょっとメモを残しておいた方が良さそうなところだけ記載します。と言ってもSearXNG用設定のところだけです。
3. SearXNG用設定
私が調べたところ本家のSearXNGを使っていないが殆どでした。どうもWebのインターフェースからしか使えないなどの情報があったのですが、Claude CodeのMCP Serverとしての利用では問題なく使えたので、本家のものを使いました。
用意されていたインストールガイド、Installation containerに従ってインストールを行えばほぼすんなりいくかと思います。
せっかくdocker composeを使うので、それなりにコンテナー毎にディレクトリを分けるなどを行うのもいいのですが、個々のプロジェクトであまりコンテナーを複数使うことがないこともあり、シンプルな構成としています。SearXNGに関連するところでは、下記となります。
3.1. .devcontainer/.env
インストールガイドにある通り、.env.exapmelをダウンロードしてきてそれをそのまま.envにリネームして使っています。
% cd << ProjectDirectory >>
% cat .devcontainer/.env
# Read the documentation before using the `docker-compose.yml` file:
# https://docs.searxng.org/admin/installation-docker.html
#
# Additional ENVs:
# https://docs.searxng.org/admin/settings/settings_general.html#settings-general
# https://docs.searxng.org/admin/settings/settings_server.html#settings-server
# Use a specific version tag. E.g. "latest" or "2026.3.25-541c6c3cb".
#SEARXNG_VERSION=latest
# Listen to a specific address.
#SEARXNG_HOST=[::]
# Listen to a specific port.
#SEARXNG_PORT=8080 環境に応じてポート番号を変えるなどはここで行えます。
3.2 core-config
core-configディレクトリもインストールガイドに従って作成しておきます。この中にsettings.ymlファイルを配置するのですが、これは自動で配置されるものを利用するか、先に作成して置いておいても良いかと思います。先に配置しておいた場合、上書きはされないようです。
% cd << ProjectDirectory >>
% mkdir -p ./.devcontainer/core-config/
% vi ./.devcontainer/core-config/settings.yml
% cat ./.devcontainer/core-config/settings.yml
use_default_settings: true
server:
secret_key: "ultrasecretkey" # 環境に合わせてOpenSSLでハッシュ値作成などして変更してください。
search:
default_lang: "ja"
formats:
- html
- json3.3 docker-compose.yml
私の環境では、devcontainer内のClaude Codeから、devcontainer外、ローカル環境でLaunchAgentで常駐化しているDwarfstar 4に繋げるため、Claude Codeを入れているコンテナー側には「external_links」で「host.docker.internal:host-gateway」を明示的に指定しています。これでコンテナー内からローカル環境(ホスト側)のDwarfstar 4には「http://host.docker.internal:8000」でつながります。
% cat ./.devcontainer/docker-compose.yml
services:
workspace:
build:
context: ..
dockerfile: .devcontainer/Dockerfile
environment:
PYTHONPATH: /workspace
volumes:
- ..:/workspace
command: sleep infinity
networks:
- searxng-net
external_links:
- host.docker.internal:host-gateway
core:
container_name: searxng-core
image: docker.io/searxng/searxng:${SEARXNG_VERSION:-latest}
platform: linux/arm64
ports:
- ${SEARXNG_HOST:+${SEARXNG_HOST}:}${SEARXNG_PORT:-8080}:${SEARXNG_PORT:-8080}
env_file: ./.env
volumes:
- ./core-config/:/etc/searxng/:Z
- core-data:/var/cache/searxng/
restart: unless-stopped
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
- searxng-net
valkey:
container_name: searxng-valkey
image: docker.io/valkey/valkey:9-alpine
command: valkey-server --save 30 1 --loglevel warning
restart: always
volumes:
- valkey-data:/data/
networks:
- searxng-net
networks:
searxng-net:
driver: bridge
volumes:
core-data:
valkey-data:% 「container_name」はなくても良いのですが、複数プロジェクトのコンテナーを立ち上げた際の見通しが悪くなりそうなのが嫌なのでつけています。
3.4 .mcp.json
「.mcp.json」についてもSearXNGに関するところだけピックアップして記載します。前記したように、この環境の場合SearXNGのコンテナー名が「searxng-core」になるため、同じネットワーク「searxng-net」内にある別コンテナー「workspace」にあるClaude Codeから使用する場合はホスト名「searxng-net」で通信可能なので、下記のようになります。
% cat .mcp.json
{
"mcpServers": {
"searxng": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-searxng"
],
"env": {
"SEARXNG_URL": "http://searxng-core:8080"
},
"description": "SearXNG"
},
"oreilly": {
"type": "http",
"url": "https://api.oreilly.com/api/content-discovery/v1/mcp",
"headers": {
"Authorization": "Bearer << Token >>"
},
"description": "O'REILLY MCP"
}
}
}O’REILLYのMCP Serverも利用しているので、ついでに記載しておきました。「<< Token >>」部分はO’REILLYのMCP Serverと通信するのに必要となるもので、O’REILLYのサービスに登録していると取得できます。ちなみに私は1年間有効のACMのメンバーシップに入っているので、ACM Learning Center経由でO’REILLYのサービスを利用しています。
これでmacOSでVS Codeのdevcontainer上にClaude Code及びSearXNG MCP Server環境を構築し、ローカルのDwarfStar 4を利用することが可能になりました。何回も書きますが、サブスクリプション使わずにこの環境でやる場合には時間がかかるものの、ちょっとしたリサーチ、まとめをするのには重宝しています。
とりとめのないまとめ
そもそも私のような立ち位置の人は何らかのLLM系のサブスクリプションを利用しているかと思いますが、そいうのが嫌いでして、できる限りローカル環境でやれるようにして、その範囲内でできることをするというスタンスです。サブスクリプションのコストの方がMacBook Pro M4 MAX 128GB(今ならM5ですね)を購入するよりも安いとは思いますが、それでも嫌なものは嫌、ってことで。
O’REILLYのサブスクが嫌じゃないのはリターンが明確でして、膨大な技術書を流し読みできるというメリットが大きいんですよね。それと内容に対する信頼感でしょうか。LLM系の場合、ローカル環境でもそれなりに使えるのでサブスク環境であればさらに使えるのでしょうが、いつこっそり変更されるかもわからない、料金もいつ変わるかわからない、どんどん世代が変わる、何より信頼することが個人的には難しいのですよね。もっとバリバリ使いこなしている方からすれば箸にも棒にもかからない卑小な考え方なのでしょうか、中には同じような感覚の方もおられるかと思うので、本記事がどなたかの役に立てば幸いです。
にしてもタイトル長いな。

