MacBook Airを味見

# はじめに
酒を飲んでいたら急にmacOSを使ってみたくなりました（意味不明）
MacBook Airをレンタルして使ってみた感想をベースに使用感を記します。実使用時間は1週間程度です。
普段使いのOSはWindowsなので、アプリケーションベースで異なるOSに対して相互連携可能であるかも見てみます。

# 前提条件
## ターゲットデバイス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1104731/0804951b-c773-4dcc-9e77-c32d7ff676a2.png)

- MacBook Air M3 （2024モデル）
- RAM: 8 GB
- ストレージ: 256 GB
- キーボード: 日本語配列
- OS: macOS Sonoma 14.7.2
- VM OS: Windows 11 Pro 24H2 (ARM64)
    - vCPU: 4
    - vRAM: 6 GB

## 筆者
- Windowsユーザ
- iPhoneユーザ
- Linuxを使う事もある（ほぼCLIしか使わない）
- キーボードは日本語109と英語101の両使い
- 家ではデスクトップPC、外出時にノートPCを持ち出す
    - クラウド経由でデータ同期している

つまり、Apple製品には馴染みがあるがmacOSだけは使わず、GUI/CLI双方に馴染みがあり、普通のキーボードが使える人です。

# 結論
- MacBook Airは消費電力が低く、ファンレスである点が魅力
    - ハードウェアが高評価である
    - 同じARM64アーキテクチャのPCもエネルギ性能に期待出来る
- Windowsとの連携は多少可能
    - 一応Appleのハードウェア上でWindowsアプリは動くがWineはオススメしない
- macOS特有のショートカットキーがウザい
    - キー変更とKarabiner-Elementsは必須である
    - IMEの違いは慣れれば使いこなせる
- x64_86アーキテクチャと比較すると初回投資は高価
    - MacBook Airはもちろん、ARM64 Windowsノートも比較的高価である
    - Apple製品は中古価値が高く、今後のリプレイスは安価になる可能性が高い

# 評価方法
普段使っているWindowsアプリがmacOSでも動くのか試してみました。
実行方法は下記です。
- [Wine](https://www.winehq.org/)
- VM
    - [Parallels Desktop評価版](https://www.parallels.com/jp/products/desktop/trial/)
    - [UTM](https://mac.getutm.app/)（仮想化モード）
- macOSネイティブ（対応アプリのみ）

対象アプリは下記です。
- SSHクライアント
- SQLクライアント
- .NET Frameworkおよび.NETベースのGUIアプリ
- DTM
- Steamで購入したゲーム

# ハードウェア
## 外観
アルマイト筐体で触っていて冬は冷たいですが、面粗度は適度で触り心地が気持ちいいです。
プラスチック部分が少ないため、剛性が高く蓋も開きやすいです。
しかし、手首が当たる部分はシャープエッジになっており、触ると地味に痛かったです。特にタッチパッド手前の凹面の角は尖っていて素肌や服が引っかかると危ないです。
しかし所有欲を強く満たすと感じました。手にもって出かけたくなります。

## ディスプレイ
解像度は他に無い2560*1664ピクセルです。
DTMアプリはフルHDのディスプレイだと狭く感じてしまうので、この解像度はとてもありがたいです。
Windows系のノートPCだと13-14インチで類似解像度のノートPCは中々ありません。
上部のノッチや四隅の角丸はそこまで気になりませんでした。
ノッチ領域はメニュバーの一部になるのですが、操作の支障にはならないという印象です。
発色は特に気にしていないのでノーコメント。

## キーボード/タッチパッド
キーボードやタッチパッドは各社から出ているWindows機とは段違いに使いやすかったです。
歴史によるとキーボードはシザー構造でしょうか？打鍵感というより音が良いという印象です。
タッチパッドは他のノートPCよりも一回り大きいです。感圧の閾値がデフォルトで2段階あります。
クリック感はiPhoneと同じくTaptic Engineによるものです。このクリック感はiPhoneで慣れていて結構好きです。
Windowsとは異なりタップでクリックではなく押し込みでクリックだったり、ダブルタップでドラッグが使えなかったり、一瞬操作に戸惑う時がありましたがすぐ慣れました。慣れてしまったからか、設定で変えられるかは確認を忘れました。

# インターフェイス
外部出力はUSB Cしか無いので、有線マウスや無線ドングルのマウスが使えません。
同様にHDMI出力もありません。サブディスプレイを使用する際、特にプレゼン発表時やテレビなどは基本的にHDMIなので困るでしょう。
と言うものの、これはMacBook Airに限らず他のノートPCでも同様なので気にしない事にします。
USB Cハブを買いましょう。

# キー操作
日本語Mac配列はWindows向けキーボードと比較するとかなり特異です。
UNIX配列によく似ていて、全角/半角キーが存在せず、代わりに日本語入力キーと英語入力キーがあります。
ちなみにUS Mac配列はUNIX配列ではなく、英語101キーと似ています。
日本語Mac配列での言語切り替えは慣れましたが、ショートカットキーが全然慣れませんでした。

## ショートカットキー
よく使う「元に戻す」「切り取り」「コピー」「貼り付け」の運指が異なります。
筆者はWindowsでは左小指でCtrlキー、左中指か左人差し指で文字キーを打っています。
一方、macOSではCommandキーと文字キーの組み合わせです。（Windowsで言うところのAltキーです。）
「元に戻す」だけは左人差し指でCommandキー、左中指でZキーを押し、ほかのショートカットは左薬指でCommandキーを押すことになりました。この運指だけが全然受け入れられませんでした。
OS設定で割り当てを変えるか、[Karabiner-Elements](https://karabiner-elements.pqrs.org/)で割り当てを変える事をお勧めします。
みなさんは右手でCommandキー、左手で文字キーの運指なのでしょうか？

## フルスクリーン
Windowsで言う最大化ボタンはmacOSではフルスクリーンとなっています。
フルスクリーンにするとバックグラウンドのウインドウが画面上から消えてしまい、操作がめんどくさいなあと思ったのですが、タッチパッド三本指スワイプで切り替えが可能です。
Windows 11では仮想デスクトップを使うと類似動作も可能ですが、最大化ボタンでウインドウを別の仮想デスクトップに移動したり、空の仮想デスクトップを自動的に消す事は出来ません。もしかしたら専用ツールがあるかもしれません。
この点はmacOSが便利だと感じました。

## 日本語入力
筆者は日本語配列では半角/全角キー、英語配列ではShift+CapsLockを使用しています。
左手/右手の親指を使った切り替えキーの運指に慣れるのにさほど時間がかかりませんでした。

# ソフトウェア
## Wineからアプリを起動する
Wineは基本的にLinuxで動く物なので細かい違いはあれどわざわざmacOSを借りてまで試す価値は薄いです。
下記の通り、実運用には向きません。
テストではWindows版しか存在しないアプリを試しました。

### Notepad++
スタンドアロン版をダウンロードして使いました。[winetricks](https://ports.macports.org/port/winetricks/)からもインストール可能です。
既知の通り問題なく動作しましたが、フォントの不一致で文字間隔がズレる点はどうにも気持ち悪いです。それくらい直しましょう。

### RLogin
普段使っているGUIのSSHクライアントはRLoginです。
ファイル転送画面のディレクトリ選択コントロールが消えてしまいました。「..」ボタンだけ浮いておりプログレスバーがおかしいです。
![479C3CDA-C1C4-4206-A9EF-C1A8A78C8EDC_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1104731/a4e2ce03-8914-e5e1-adcf-2cb468aa100b.jpeg)
軽く触っておかしかったのはファイル転送画面くらいで、CLI部分のレイアウトが崩れたり、制御不能になる事はありませんでした。

一応iOSで普段使っている[Termius](https://termius.com/)はmacOSに対応しているので試したのですが、なぜかTermiusのIDにログイン出来ずめんどくさくなってゴミ箱にブチ込みました。

### A5M2
各種のRDBMSに対応しているSQLクライアントにはA5M2を使っています。
DB操作は可能ですが、エラーダイアログが定期的に出ます。
![FBCC88B9-F858-4BDE-BB78-D937B2C5C8AB_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1104731/3c016fd3-e0c1-4af7-1303-b478b1269832.jpeg)
そもそも普通の使い方ではないので**気にしない事にします。**
マルチプラットフォーム対応のDBeaverが良いでしょう。

### .NET Framework
ほとんどのバージョンはwinetricksからインストール出来ます。
[Wineの情報通り](https://appdb.winehq.org/objectManager.php?sClass=version&iId=41505).NET Framework 4.8.1はインストール出来ませんでした。したがって同バージョンのアプリは使えないことになります。

### .NET 8
.NET自体はmacOSに対応していますが、WinFormsやWPFなどGUIアプリはWindows以外では動きません。
なので.NETをインストールし、Wine経由でGUIアプリを使ってみます。
AppleシリコンはARM64アーキテクチャなので、Wine経由の場合はWindows ARM64のはずです。
と思いきや、実はx64が正解でした。
![D5F92035-5F5F-4A38-AFFF-120D11C7A553_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1104731/eb4aa380-32ed-7c67-d623-0769c26f01a2.jpeg)
Wineがx86_64のバイナリなのかもしれませんが**利用価値が薄いのでどうでもいいです。**
VMから使う方がいいでしょう。

### Windowsメッセージフック
Windows APIの一部であるキーボードとマウスのフックを試しました。GitHubにあったサンプルアプリを使いました。[KeyMouseHook](https://github.com/loamen/KeyMouseHook)
こちらのWPF版はウインドウが表示されませんでしたが、WinForms版は問題なく起動しました。
グローバルフックはローカルフック扱いになり、マウスカーソルがウインドウの外に出ると捕捉されなくなります。
キーボードはウインドウが非アクティブになると捕捉されなくなります。

### VRChat Creator Companion
これは.NET 8で動作しています。CLIは公式通りmacOSでも動作しましたが、GUIはWindows専用の機能です。
パッケージ選択などはCLIでは手間がかかるのでGUIが使いたいですね。起動すらしませんでしたが。
エラーログやエラーダイアログ等は出ませんでした。UnityのパスがWineディレクトリから通っていないから、ではないはずです。
それ以前にmacOSでWindows用のデータをビルドする意味も薄いので**どうでもいいです。**

iOSバージョン用のビルド？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1104731/1e99cfe6-2a5f-8a52-51e1-a7e97326306d.png)
知らん話だ。（[本当はWindowsでビルド出来る。](https://creators.vrchat.com/platforms/iOS/setting-up-unity-for-creating-ios-content/)）
ちなみに未検証ですが、Windows/Linux/macOS用のVCC代替アプリ[ALCOM](https://vrc-get.anatawa12.com/ja/alcom/)があるようです。

## VMからアプリを起動する
Parallels DesktopとUTMを試しました。2種の違いは他の方が書かれているので、今回は省略します。
VMセットアップの手間やレジューム機能は異なるものの、感覚的なパフォーマンスの違いは無いと感じました。
WindowsそのものなのでWindows専用アプリが動くのは普通です。Wine評価で使ったアプリは問題無く動作したのでこれらも省略します。
ですが、これは普通のx86_64ではなくARM64版Windowsです。ARM64版Windowsの評価に見えますが、**気にしないでください。**
macOSのRosetta2と同様の機能として、WindowsにはPrismがあります。リソースを食いPrismがエラーを出しそうなゲームを中心に使ってみました。

### Grand Theft Auto Vice City
古いゲームなので動くだろうと思っていたら起動しませんでした。

### Half-Life 2
これも古いゲームです。時折フレーム落ちが発生しましたが、特にエラーは出ませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1104731/80c16b34-01fa-71ae-5fb2-9917be1d1a74.png)
macOS上にWindowsがあって、さらにARM64の上でx86ゲームが動いているのがキモいです。

### VRChat
既知の通り、Easy Anti CheatがARM64に対応していとのエラーです。
他のEAC搭載ゲームも動かないでしょう。

### Poppy Playtime
最新ゲームなら処理が重いはずです。10分くらい待ってようやく画面が表示されましたが、オープニングムービーの後に突然落ちました。
すでに動作は期待出来ないので諦めました。

### FL Studio 2024
macOS版があるのでわざわざVMのWindows上で動作させる意味は無いのですが、I/Oの動作を確かめるために使ってみます。
シンセサイザMASSIVEと専用コントローラAKAI MPCを軽く使いましたが違和感なく動きました。
ただし、時々音にブチノイズが乗りました。UTMの方が頻度が高かったです。FL ASIOのバッファサイズが原因でした。

## Parallels Desktopのトラブル
### 日本語入力とキーボード割り当て
Parallels Desktopを使っていた際、アクサングラーブが打てず少し戸惑いました。
Windows側が自動設定で英語102キーボードとして認識していた事が原因です。
キーボードが日本語でWindows設定が英語の場合は、全角/半角キーがアクサングラーブになります。ですが日本語Mac配列には全角/半角キーが無く入力出来ません。
設定変更にはWindowsの再起動が必要なのに再起動が出来ない状況でしたが、スクリーンキーボードを使い何とか乗り切りました。

### Wineとの併用とプログラム割り当て
Wineと共存すること自体に問題はありませんが、macOS側でEXEファイルをダブルクリックで開くとParallels Desktopが起動→VMのWindowsが起動→その中で当該のEXEファイルが起動するようになってしまいました。
Wineで開くように割り当てを変えたのですが、Parallels Desktopを起動すると元に戻ってしまいます。
これがどうしても直せませんでした。Parallels Desktopの設定を見落としているかもしれません。
![0F9B3796-E0D0-4AEF-A390-146CF6F96504_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1104731/e4909100-1c71-33fa-741c-0aefeb28c9a4.jpeg)


## マルチプラットフォームのネイティブアプリを使ってみる
よく知られているアプリは評価から省略しました。
### FL Studio 2024
Windowsと同じように動きました。
FL Studio 20で作ったZIP圧縮プロジェクトはエラーが出て開けませんでしたが、いったんZIPを解凍すれば問題なく動作しました。

### Steam
当たり前ですがSteam自体は問題なく動きました。
手持ちのゲームの中からAppleシリコンで動くものは2Dゲームの[Undertale](https://store.steampowered.com/app/391540/Undertale/)と、短編3Dゲームの[Pineapple On Pizza](https://store.steampowered.com/app/2263010/Pineapple_on_pizza/)だけでした。
Pineapple On Pizzaはローポリに見えてもフレーム落ちが多くストレスを感じました。
そもそものAppleシリコン対応ゲームが少なく、上位機種はともかくMacBook Airでのゲームパフォーマンスは期待出来ないでしょう。

# おわりに
物欲が勝ったらMacBook Airを買いかねない。気を付けよう。

# 蛇足
M1/M2 MacMiniはAmazon EC2からリモート利用が可能です。
ただし、レンタルするよりも高価になるのでお勧めしません。
最小利用時間である24時間で全ての評価や処理が出来る訳でもなく、実物をレンタルした方が精神的にも楽です。