小ネタ:AWSでMacを使う話

ある冬の夜、外は寒いのに寝苦しく、何やらネットの記事で「AWSMacが走るぞ!」と書いてある夢を見た、そんな気がしていたんです。翌朝、ネットの記事をざっくりと読んでいると、AWS re:InventというイベントでEC2のインスタンスとしてMacOSが加わった、という記事が目に留まり、『夢ではなかった』と思ったのと同時に、実際に使ってみようと考えました。その顛末を。

すべてのリージョンで使えるわけではない

現状すでに私は仕事用に東京リージョン(ap-northeast-1)でEC2インスタンスを立ち上げていますが、リリース当初だからなのか、使えるリージョンが限定されていました。日本から一番近いところだと、AsiaPacific内であればシンガポール(ap-southeast-1)のみで使えるということなので、シンガポールリージョンでインスタンスを起動させることにしました。

参考にしたのはこのサイト。

dev.classmethod.jp dev.classmethod.jp

一部このリンクの通りにやっても動かないところがありましたが、まぁだいたいこんな感じで。特に、VNC接続についてはCatalinaではこのやり方では使えません。エラーが出るはずなんだけどこの人はエラーを回避する方法を知ってたんだろうか...。

Warning: macos 10.14 and later only allows control if Screen Sharing is enabled through System Preferences.

Catalina(10.15.7)もMojave(10.14.6)も、画面共有はコマンドラインからではできないよ、というエラーが出るはずで、

dev.classmethod.jp

この記事にあるように追加のおまじないをすると、やっとVNC経由でアクセスできます。ちなみに、ユーザを作らずに「ec2-user」のままで作業をする場合のパスワードは、この動画が参考になるのですが...、

www.youtube.com

パスワード未設定だそうです。基本SecretKeyでの運用ですもんね。

専有ホストは最初使えなかった

ちなみに、設定をしてハマった箇所は2か所。一つは前項でも書いている「画面共有」をコマンドラインから設定できなかった点。これはエラーメッセージを見ないままで処理を進めていた私が悪かった、というヤツですが、もう一つは、専有ホストの割り当てが0だったことです。

割り当てをしてもらうためには、EC2のコンソールから「制限」を選択して、制限されている項目、このケースで言えば「MAC1の専用ホストを実行中」とか書いてある列を選択して「制限緩和のリクエスト」ボタンを押し、理由と使いたいホスト数を書いて送ればOKです。ちなみに私の場合、「業務での利用を検証するため」と書いて送っていて、検証用ということで割り当て制限を当初より少なくされてはいますが一応パスしました。これができないと専有ホスト(要は動画で見ていた「あの」Mac mini)が割り当てられないのでインスタンスが作れません。

少し触ってみて思ったこと

さて、セットアップの方法はこれくらいにして*1、実際に使ってみて感じたことを書き連ねてみます。

解像度が低い

Macは基本的にヘッドレス運用を想定していないからか、ディスプレイケーブルがないと解像度が低いのですが、今回試してみても同様に解像度は最高でも1024x768pxです。これは決定的にリモートで作業するには向かない気がします。

費用がかかり過ぎ

インスタンスの起動状態に関わらず、Macの場合は専用ホスト(要はMacを走らせる専用サーバマシン)を確保しているだけで1日数十ドル取られます。特に今回、インスタンスのストレージも300GBくらいを確保していたので、だいたい1日当たり$30くらい費用が発生していたのですが、仮にこのままのペースだと1ヶ月$900徴収されることになります。だったらM1 Mac miniを買ったほうがよくないか?

動作が重すぎる

今回のテスト期間中はたまたま自宅外にいて、インターネット環境は自宅(オフィス)に比べると貧弱な環境下で使っていたのですが、基本的にVNC経由でアクセスをすることを考えるととても動作が遅くて使い物にはならないような気がしてなりません。

仮に、コーディングなどを外でやろうとするならIDEを使うことになりますが、このレスポンスの遅さはかなりネックになるんではないでしょうか。専有ホストやインスタンスのスペック上は高速であり、AWSの内部では爆速なんだろうと思うのだけれど、リモート、しかももともと動きがもっさりしている(というイメージが強い)VNCでのリモートアクセスはストレスが溜まります。

PoC用途くらい

ローカルマシンのリプレイスという用途としては上記の理由から考えると難しいと思います。ではどういう使い方なら使えるのかと考えてみると、例えば今回、Intel MacのCatalinaでインスタンス生成をしているのですが、M1 Big Surで作ったMacアプリが旧版でも動くかどうかを検証する程度の目的なら使えるかもしれません。

また、私はたまにWebアプリのテスターを受託しているのですがが、その仕事もこれを使えばOS別のテストを単一マシンで対応できるので(解像度の問題があるので正直言えば現実的ではないですが)、費用負担との兼ね合いではあるけれどできるような気はします*2

誰得なのか

www.youtube.com

確か最初に見た紹介ビデオは、Macを使って開発をしている会社(ベンチャー系)が、Macをたくさん使いたいけど買えないよね、と言う話から始まっていた気がするのですが*3、もしこんな感じで使うなら多分、いや、間違いなくM1買うほうがお得でしょう。

もともと(最近の)Macは拡張性に乏しく、例えばメモリをもっとほしい、となれば別のマシンを買わないといけなかったわけですが、AWSでの運用だからといってスケーラビリティはやっぱりないわけです。単一インスタンスタイプだしスケーリングもできない設定だし。単にリモート運用のMac miniを貸してるだけに過ぎない。

サービスが始まったばかりだから今後どうなるかわかりませんが、少なくともIntel Macが仮想サーバで動き出すことはないだろうし、専有ホストであるマシンのリプレイスもかけにくくなるならサービスとしても尻すぼみな状態なんじゃないかな、と思うのですが。

私はもういいです

結論を言えば、私が想定していた、自宅にあるMac miniのリプレースには用を足さないのだな、と思いました。リプレースの必要があるのか、と言われるとちょっと答えに窮する部分ではありますが、普段の開発ではMacを使うことは(最近は)ほとんどなく、逆にMacでしかできないことのためだけにMacを1台用意しているという状況です。

私の今のMac利用用途

具体的に言えば、

  • Xcodeを使わなければいけない「開発」:Swift/Obj-Cによるアプリ開発だけでなく、Flutterで開発したアプリのコンパイルにもXcodeが必要になります。
  • Photoshopを使うデザイナーとのファイルやり取り:ごくまれにMac版でなければ使えないファイルを送ってくるケースがあって*4、そのためにMacPhotoshopを導入しています。
  • Webアプリケーションのテスト用途:クライアントさんの意向でMacWindowsの両OSでチェックをしてほしいという要望があって、Macを使います。最近はあまりOS間での差が出ないようにも思いますが、特に見た目の問題でどうしてもSafariの挙動が変になることが多いです。

この3点だけなのですが、一応Mac miniは「そこそこの」スペックのモノを用意しています*5

M1 Macでもいいかも

2018年頃まではMacがメインマシンで、Windowsを仮想サーバ内で動かしていたこともありましたが*6MacのRDPアプリ経由で使う時にはどうしてももっさりしがち、さらに言えばローカルサーバでの運用でしたのでWindowsマシンとしてのスペックもサーバ以上に設定することはできず*7、さらには当時はWindows7、8.1、10の3つのOSを使って検証をしなくてはいけなかったのですが、現在はWin10のみのサポートしか私が行っていないので*8仮想マシンが必要なくなったこともあって*9、デスクトップの「開発マシン」としては1台だけしか現在は使っておらず*10Windowsで開発ができるようになっていますので、Macは使うときだけあればいいわけです。

そうは言っても開発用に少しスペックは必要*11ですので、いっその事M1 Mac miniをメモリだけフル(16GB)カスタマイズで10万程度ですのでそれを買った方がお得、ということにはなりはしないでしょうかね。今すぐ買う必要はないのでアレですが。ただ、以前から中古で2013モデルのMac Pro(通称:ゴミ箱)を狙っていました。拡張性を考えるとMac Proが最適で、Mac Proは2019年に最新モデル(通称:チーズおろし器)が出ていますので、旧モデルは多少値落ちしていて、それでも10万以上はしてしまうのですが、最新OSが使えるという点ではまだMac Pro(2013)は魅力的です。コスト的に考えるとほぼ同額、若干Mac Proが上ですが、拡張性はMac Pro、最新OSのサポートという点ではM1 Mac miniに軍配が上がります。どちらを取るべきか、ちょっと悩みますね。

*1:と言うかそういうの紹介してないので普段から。

*2:費用的にはWindowsの同スペックマシンを作ったほうが安いような気がするのでやっぱり現実的でないですが…。

*3:いや、ビデオを見直してみたのですが、どっちかと言うと開発用のサーバのメンテナンスをするための管理が煩わしい、という話なんですよね。だとすると、ビジネスでMacの「サーバ」としての利用があるならまぁ使うことを検討してもよさそうですが。

*4:というか、だいたいテキストフォントのラスタライズ化を忘れているケースです。

*5:Late 2012で、OSはCatalina止まりです。デュアルコアの2.5GHz Core-i5、メモリはフルに16GB、似非Fusionドライブにしていますがあまり最近は速度が出ていないような...。

*6:VMWare ESXiを一時使っていて、そのあとCitrix XenServerに乗り換えて2年くらいWindowsを使っていました。

*7:それでも当時メモリは積めるだけ積んで16GBにしていました。今は物置に入れていますが、ハードウェアRAID対応のマザーボードだったのでそのうちファイルサーバにでもしてやろうかと思っています。

*8:クライアントさんにはOSが無料でアップデートできる時期にアナウンスをして「無料だからアップデートがおススメ」とアップデートをさせてしまいました。

*9:WSL2になってからWindowsの中にLinuxを入れておき、シームレスに使うこともできるようになったので、Linuxマシンも厳密には必要としていません。

*10:開発用のサブノートが1台、あとはいろいろとなぜかWindowsマシンを数台持っているのですが(笑)。

*11:なんか「ギガがなくなった」という日本語と同じで気持ち悪いですが...。