先日、時価140万円のMacBook Proを買ったという記事を書いたばかりな気がしますが、その舌の根も乾かぬうちにMacBook Neoを買ったという記事です。
100万円(時価140万円)するMacBook Proを買った
先日MacBook Proを購入して古いM1Maxを売却しにじゃんぱらに伺いました。そのとき売られていたのがMacBook Neoでした。512GBのTouch ID付きモデルで9万8千円。USキー。付属品一切なし。外装に傷複数あり。
現在だと137,800円で販売されているモデルですね。販売から四半期程度しかたっていないのになかなかのくたびれ具合です。気がついたらM1Maxを売却したお金が半分以上消えて、Neoをお持ち帰りしていました。
さて、Proの対極に位置するNeoをなぜ購入したのかについてです。表題にもあるとおりMacBook Neoはシンクライアント端末として非常に優秀だと考えています。
Neoのスペックについて軽く振り返ってみましょう。RAMは8GBしかなく、拡張性もUSB-Cが2ポートのみ(しかも1つはUSB 2.0)です。チップはA18 Pro。つまり私が使っているiPhone 16 Proと同じスマホ用SoCです。(しかも、GPUはiPhoneより1コア少ない選別落ち品です)
これでmacOSが動くのかと一抹の不安はあります。RAMが8GBしかないPCなんてChromeを起動すればほかに何ができるというのでしょうか。
ただ、このNeoをシンクライアント端末と考えると非常に魅力的です。重量は1.3kgとMacBook Airと同じ重量で(比較的)軽量です。文字書きとSSHとリモートデスクトップができれば良いのでRAM 8GBでも余裕でしょう。ブラウジングにChromeは使わずSafariとします。
とはいえ、最強スペックのMacBook Proがあるのであればシンクライアントなんてことをせずにそれを持ち歩けば良いのでは?という意見もあるでしょう。最強スペックのMacBook Proを買った理由が圏外でもローカルLLMを起動しながら作業ができるようにするためなのですからなおさらです。
実際に買ってみて気づいたのですが、140万円のノートパソコンを持ち歩くのは怖いです。こんなもの毎日鞄に入れて持ち歩くのは狂気の沙汰です。新幹線でおちおちトイレにも行けません。治安が良い日本でもドキドキなのに海外にこんなもの持ち出せません。なぜ買って実際に持ち運ぶまでなぜこの問題に気づけなかったのか……(購入後に値段が40万円上がったという情状酌量の余地はあります)
というわけで、最強のMacBook Proには引きこもっていただくことになりました。そんなとき10万円を切る価格で良い感じのMacBook Neoが見つかったのでシンクライアント端末として使ってみよう!と考えました。
どのようにシンクライアント端末として使っているのか後述しますが、結論はこの作戦は大当たりでした。とくにCodexのDotsなどが誕生しLLMを効率よく駆動させるのに大きな画面も高性能な端末も不要になったのも大きいです。
ネットワーク
外出先から自宅のリソースにアクセスするためには基本的にVPNが必要です。我が家では過去に記事にしたTailscaleが導入されており、自宅のポート開放不要でお手軽VPN接続が可能です。
Apple TVでお手軽にVPNサーバーを構築
またTailscaleが死んだとき用としてWireGuardでVPSとUniFiのルーターを接続しているので、VPSにWireGuard接続するバックアップルートも残しています。
Tailscale自体は自宅内で3台のサーバーでSubnet Routerを有効にして動作しているのですべて落ちることは基本ありません。
ここからは外出先から自宅のローカルIPにアクセスする手段がある前提で記述しています。
リモートデスクトップ
まず、リモートデスクトップの環境をどう構築するかについてです。
Windowsへの接続
Windowsであれば純正のリモートデスクトップが大変優秀かつ、電源が入っていればログインから行えるので利便性は高くおすすめです。
我が家のWindowsは過去記事で紹介したNanoKVM PCIeが搭載されていますので、こちらで電源投入を行うことができます。電源投入後にログイン画面が出たらリモートデスクトップで接続しています。
サーバーラックマウント用の自作PCケース『RM41-506』を買った
UnityなどGPU描画が多く、FPSも要求される作業ではParsecを利用しています。
最近WindowsはローカルLLMをStrataで立ち上げ、非検閲なQwen3.8-Flash-Nextで自宅宛に脆弱性診断させたり等で利用しており、基本は起動させて以降あまり作業にはリモートデスクトップを利用していません。後述のCodexリモートが優秀なため人間が作業するタイミングも減ってきております。
Macへの接続
Macへの接続には非常に悩みました。Mac標準のリモートデスクトップはVNCとなっており、帯域をかなり食います。操作性もお世辞にも良いとはいえません。
様々なリモートデスクトップツールを試した結果、一番良いのがJump Desktopでした。一時、iPadからMacをリモートデスクトップするツールとして流行っていたイメージがあります。
Jump Desktop | Fast, Secure Remote Desktop for Any Computer
Jump Desktopは、操作される側(サーバー)は無料、操作する側(クライアント)はOSごとに有料となっています。Mac版は買い切りで6000円くらいでした。
Jump Desktopは複数プロトコル対応のリモートデスクトップツールで、VNCとRDPをサポートしています。優秀なのがJump DesktopオリジナルのFluid 2.0というプロトコルです。狭帯域でも的確に解像度を切り替え、車での移動中であっても快適に作業ができてしまうほどです。
Retina対応、4:4:4クロマサブサンプリングも対応しているので帯域が20Mbpsほどあれば文字の滲みはほぼなく、添付のようにローカルと変わらない品質で描画してくれます。(さすがにスクロールや動画はリモートデスクトップらしい絵になってしまいますが)
Jump Desktopはプロトコルも優秀ですが、アプリの出来も優秀です。Cmd等の修飾キー入力が手元で反応することなく、しっかり接続先で反応します。スクリーンショットのショートカットも接続先側で反応するので本当にリモート作業している感がなく利用できます。
またJump DesktopはNAT越えを自動で行ってくれます。つまり、ポート開放もVPNも不要でインストールするだけで利用可能です。Chrome リモートデスクトップ的な使い勝手ですね。昨今のセキュリティ事案を見るとここが便利なのか脆弱性なのかは意見が分かれるところですが……。なお、NAT越えを無効にしてダイレクト接続のみにするオプションは企業向けの月額課金制になっています。有料機能としてかゆいところに手が届く設定だなと思いました。
Jump Desktop利用中のIMEの切り替えに関しても後述のちょっとした技が必要ですが、USキーユーザーは皆さん使っていると思うCmd左、Cmd右で英日切り替えが可能です。
IMEの設定
私はATOKを利用しているので、ATOKでの切り替え方法案内となりますが『かわせみ4』でも使えることは確認しているので、大抵のIMEであればこの方法でIMEの切り替えを行えると思います。
クライアント側設定
まず、クライアント(接続元)側にKarabiner-Elementsをインストールします。(USキーを使っていれば大抵インストール済みでしょう)
Karabiner-Elements
Complex Modificationsで下記のルールを追加します。これはJump DesktopとParsecを起動している時のみ左Cmdを押すとCtrl+Shift+Eを入力し、右Cmdを押すとCtrl+Shift+Jを入力するルールです。
Jump Desktopのbundle_identifiersが2種類記載されているのはApp Store版とWeb版で異なるためです。
{
"description": "右Cmd→日本語、左Cmd→英数(アプリ別)",
"manipulators": [
{
"conditions": [
{
"bundle_identifiers": [
"^tv\\.parsec\\.www$",
"^com\\.p5sys\\.jump\\.mac\\.viewer$",
"^com\\.p5sys\\.jump\\.mac\\.viewer\\.web$"
],
"type": "frontmost_application_if"
}
],
"from": {
"key_code": "right_command",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "right_command" }],
"to_if_alone": [
{
"key_code": "j",
"modifiers": ["control", "shift"]
}
],
"type": "basic"
},
{
"from": {
"key_code": "right_command",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "right_command" }],
"to_if_alone": [{ "key_code": "japanese_kana" }],
"type": "basic"
},
{
"conditions": [
{
"bundle_identifiers": [
"^tv\\.parsec\\.www$",
"^com\\.p5sys\\.jump\\.mac\\.viewer$",
"^com\\.p5sys\\.jump\\.mac\\.viewer\\.web$"
],
"type": "frontmost_application_if"
}
],
"from": {
"key_code": "left_command",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "left_command" }],
"to_if_alone": [
{
"key_code": "e",
"modifiers": ["control", "shift"]
}
],
"type": "basic"
},
{
"from": {
"key_code": "left_command",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "left_command" }],
"to_if_alone": [{ "key_code": "japanese_eisuu" }],
"type": "basic"
}
]
}
サーバー側設定
接続される側の設定です。Hammerspoonというアプリケーションをインストールします。これは特定のショートカットキーでIMEの切り替えを行うことができるアプリです。
メニューバーからConsoleを起動します。
hs.inspect(hs.keycodes.methods())
このコマンドで利用可能なIME一覧がでてきます。私の場合はATOKを入れているので下記のように返ってきました。
{ “英字 (ATOK)”, “カタカナ(ATOK)”, “全角英字(ATOK)”, “ひらがな(ATOK)”, “半角英字(ATOK)” }
これが確認できたら、メニューバーからOpen Configを選択して設定ファイルを開きます。
local function switchInput(method)
local ok = hs.keycodes.setMethod(method)
print("入力切替:", method, "結果:", ok)
hs.alert.show(ok and method or "切替失敗")
end
hs.hotkey.bind({"ctrl", "shift"}, "j", function()
switchInput("ひらがな(ATOK)")
end)
hs.hotkey.bind({"ctrl", "shift"}, "e", function()
switchInput("英字 (ATOK)")
end)
上記を上書きしてReload Configすると設定が反映されます。
上記のコードで、Ctrl+Shift+EとCtrl+Shift+Jを押されたときにIME設定が指定どおりに切り替わるようになります。(ATOK英字の方は全角スペースを2つ含んでいることに注意してください。)
ATOKではデフォルトでCtrl+Shift+Eが単語登録ショートカットキーになっているので、ATOKの「キー・ローマ字カスタマイザ」で単語登録ショートカットキーを削除してください。(確かデフォルトで2種類登録されていたので消してももう片方のショートカットキーで起動可能です)
ちなみに、ATOKはデフォルトで英字の置き換えがF10とCtrl+@になっています。このタイミングでCtrl+「に変えておくと便利です。(特にFnキーがないキーボードなどで)
なお、かなりの頻度で切り替わらないことがあります。OS上のメニューバーでは切り替わっているのに入力は切り替わってないという現象です。Electron系のアプリでかつIMEの切り替えの直後に入力を行うと発生しやすいイメージです。別のアプリでIME切り替えすると反映されます。
SSH接続
SSH接続に関してはあまり特殊なことはありません。私の環境では踏み台を2つ用意しています。
まず自宅内用です。自宅はHomeとServerでVLANが分かれており相互に疎通できません。そのため、OpenWrtが入っている2ポートルーターを使って踏み台を構築しています。SSH接続やServer領域にあるサービスについてはポート転送ですべて踏み台経由でアクセスします。
GL.iNet GL-MT2500を利用して踏み台を構築しました。現在は終売して新製品であるGL.iNet GL-MT5000が販売されています。これであれば全ポート2.5Gbps、CPU性能も上がっているのでよりポート転送の帯域を確保できそうです。(とはいえ、1Gbpsの踏み台で速度的に困ったことはないですが)
GL.iNet GL-MT5000 Brume 3 有線VPNセキュリティゲートウェイ Wi-Fiなし | 最大1100Mbpsのハードウェアアクセラレーション対応VPN、2.5GbEポート×3とマルチWANフェイルオーバー、VPN難読化、1GB DDR4搭載OpenWrt
外出先でVPN不要でアクセスできる系統も用意しています。クラウド上の踏み台インスタンスを経由してアクセスするルートです。(昨今のセキュリティ事情を考えると廃止を検討していますが)
新幹線など安定しない環境だとTailscale等を挟むより直接踏み台SSHした方が安定するのでこの方式を残しています。昨今、直接コンソールを開くこともなくなってきたので廃止してCodexのDotsに依頼する方式にしても良いかもしれません。
新幹線からのSSHといえばQUICでSSHの通信をカプセル化するquicssh-rsというものがあり、劣悪な通信環境での安定性を上げられます。過去にVS Code等で運用しているとquicssh-rsのゾンビプロセスがいっぱいできてしまったので使っていませんが、現在ならLLMで不具合ログを投げて改善することができそうなのでまた使っても良いかもしれません。
ちなみに踏み台の切り替えですが、SSHのConfig設定で特定のサブネットに属するネットワークインターフェイスがあるかどうかで踏み台の接続先を変更できる記述方法があるのでおすすめです。
Codexのリモート
このNeoをシンクライアントにしようと思った最大の理由です。Codexのリモートは事前ペアリングしておけば非常に強力です。電波環境が悪くともテキストデータであれば軽いため、Codexに指示を出してその結果をテキストで受け取るだけですみ、リモートであることに気付かないくらい快適な作業手段になっています。
また最近はDotsがリリースされたため、ある程度自走でAgentに指示を出してくれやりとりが楽になりました。
MacBook Neoレビュー
ここからはNeo自体のレビューを書いていきます。
メモリ負荷
実際にMacBook Neoを2ヶ月程度使っています。まず一番の困りごとはやはりメモリです。
基本メモリプレッシャーはwarning状態です。Chromeは利用せずSafariを使ってメモリ使用量削減を行っていますが、YouTubeを1つ開けばそれだけでメモリ1GB以上を持っていきます。
またIMEでATOKを使っているのもリソース食いになっています。標準かもしくは『かわせみ』あたりにすれば200MBくらい削減できると思います。
使っていて重さを感じる部分があるか?と問われれば多くはありません。快適に動作しています。Safariで別タブに移動するときに突っかかるくらいでしょうか。リモートデスクトップも快適です。
ディスプレイ
非常に快適です。ベゼルは太いですがノッチがないのでメニューバーの管理に別にアプリを入れる必要がなくUXが良いです。 アンチグレアフィルムを貼っていますが、正直MacBook ProのNano Textureと使い勝手は変わらないですね……品質はもちろんNano Textureの方が良いですが。
雑にティッシュとかで掃除できる利便性の方が良いです。
バッテリー
圧倒的に良いです。Neoのバッテリー容量は36.5Wh、Proの72.4Whと比べると半分程度です。(同じ重量のAirで53.8Whあるのでもう少しスペックを上げてほしいという気持ちはあります)
容量は少ないですが消費電力は圧倒的に少ないためかなり長持ちします。作業中4Wくらいしか消費しません。輝度最大で10W程度でしょうか。さすがiPhone用SoCです。4Wの消費電力も半分以上はディスプレイのバックライトじゃないでしょうか?
そのため充電なしでも8時間程度作業できると思います。Proの場合は消費電力が40W(ピークだと100W)とかなので4時間くらいで切れてしまうんですよね……
また5W程度の消費電力ということはその辺のUSB-Aの充電ポートでも作業しながら多少の充電が可能です。喫茶店にType-Cが生えていれば18Wくらい受電できるので充電も余裕です。飛行機やバスなどではType-Aしかないものが多いので心強いです。そもそも持ちが良いので充電ができない環境でも気にしなくなったのが一番大きいですね。
ほか、外観
キートップが白色なのも好きです。AirやProはどのカラーでも黒色のキートップですがNeoは本体カラーに合わせたキートップになります。黒色のキートップは指紋やテカリが目立つんですよねぇ……。Proのシルバーモデルでは白色キートップにしてほしいです。
タッチパッドが昔懐かしの押し込むタイプですが、こちらはあまり気にならないですね。3本指でドラッグを行えるように設定していれば押し込む機会もなく快適です。
入出力はUSB-Cポートが2つしかなく、さらに1つはUSB 2.0相当ではありますが、これも困っていません。1つは充電、もう1つはiPhoneやモバイルルーター、イーサネットの通信用で、他に接続したいものがありません。右側にポートがない方が困ることが多いです。電車でケーブルが飛び出ていると隣の人に迷惑になるかな?と思うときがあります。
雑記
そんなこんなでNeoは非常に役に立っています。自宅にいてもリモートデスクトップで作業しているくらいこの構成が好きです。大画面でテレビをだらだら見ながらNeoでDotsに指示出しして作業をさせるなどAgent AI全盛時代に非常にマッチした作業環境です。
こうなるとM5 MaxはMacBook Proでなくても良かったのでは?Mac Studioの方が廃熱に余裕があるのでこちらの方が良かった可能性はあります。まぁ私が購入時した時にはMac Studioは出ていなかったわけですし、値上げの価格であえば購入できてなかったので当時としては最善の選択をしたと思います。
強いて言うのであればMacBook Proは16インチにしておけば良かったかもしれません。主な理由としては放熱に余裕があること。そして画面サイズでNeoとProで宅内の棲み分けができたかもしれないことです。自宅内ではProをメインに使いつつ外出先のみNeoにするなど。Proを14インチで買ってしまったのでProの画面を開くことがありません……もう2ヶ月クラムシェル状態から開いてません……
将来M10を買うのであればStudioか16インチかどちらかになると思います。その時にはインフレと円安で400万円くらいになってるかもしれませんが。
参考リンク