Macでもexeファイルを実行したい｜AWS無料枠を利用したWindows仮想環境の構築

## はじめに
**記事の目的と内容の概要:**
MacOSでexeファイルを実行するための解決策として、AWSの無料EC2インスタンス上にWindows Serverを立ち上げる方法について説明します。

**対象読者:**
Macユーザーで、特定のWindowsアプリケーションを実行したいが、直接実行できない方。

## 目次
１．Macでexeファイルを実行する方法
２．AWS EC2でWindows仮想環境を構築するアプローチ
３．本記事で実施する内容のイメージ
４．Windows仮想環境の構築手順
５．AWSアカウントの作成
６．EC2インスタンスの作成
７．リモートデスクトップ接続（RDP）
８．EC2インスタンスの無料枠について
９．EC2インスタンスの起動と停止
１０．まとめ

## １．Macでexeファイルを実行する方法
exeファイルは、Windowsオペレーティングシステム向けに開発された実行可能なプログラムです。これは、そのままではMacOSでは実行できないという課題を持っています。

しかし、MacユーザーがWindows専用のアプリケーションやツールを必要とする場合がしばしばあります。

そこで、MacOSでexeファイルを実行するための代替手段を探る必要があります。主な方法は以下の3つです。
<br>

<details><summary><strong>１．Wineを使用する</strong></summary>
Wineは、WindowsのアプリケーションをMacOSやLinuxで実行するためのフリーソフトウェアです。
<ul>
<li><strong>メリット:</strong> インストールが簡単で、多くのexeファイルをMac上で直接実行できる</li>
<li><strong>デメリット:</strong> 正しく動作しないexeファイルがある</li>
</details>

<details><summary><strong>２．VirtualBoxでWindows仮想環境を構築する</strong></summary>
VirtualBoxは、MacOS上で別のオペレーティングシステムを仮想的に実行するためのソフトウェアです。
<ul>
<li><strong>メリット:</strong> MacOS内で完全なWindows環境を利用できる</li>
<li><strong>デメリット:</strong> MacOSとWindowsの両方を同時に動かすため、システムへの負荷が大きくなる</li>
</details>

<details><summary><strong>３．BootCampを使用してWindowsをインストールする</strong></summary>
BootCampは、Macに直接WindowsをインストールしてデュアルブートするAppleのソリューションです。
<ul>
<li><strong>メリット:</strong> VirtualBoxと比べてシステムへの負荷が少なく、Windowsが高性能で動作する</li>
<li><strong>デメリット:</strong> MacOSとWindows間の切り替えには再起動が必要</li>
</ul>
</details>

## ２．AWS EC2でWindows仮想環境を構築するアプローチ
今回は、これらの方法に加え、AWSのEC2(Elastic Compute Cloud)サービスを利用してWindows仮想環境を構築する方法を紹介します。

EC2は、Amazon Web Servicesが提供するセキュアで柔軟なコンピューティング環境です。
MacOS上でWindowsを実行する際の物理的な負荷を完全に排除し、クラウド上でWindows環境を利用できます。

また、利用方法によってはVirtualBoxやBootCampに比べて低価格に抑えることもできます。

* **メリット:** Macのリソースを消費せずにWindows環境を利用できるため、パフォーマンスの低下を避けられる
* **デメリット:** インターネット経由で操作するため、若干の遅延が生じる可能性がある。リアルタイムでの応答性が重要なタスクには向いていない

<strong>補足説明</strong><ul>
<details><summary><strong>クラウドとは？</strong></summary>
<strong>クラウド</strong>とは、インターネットを通じて、コンピューターのリソース（例えば、計算能力やストレージ）を利用できるサービスのことです。<br>
自宅に物理的な高性能PCを持たなくても、インターネット経由で、必要なリソースを借りることができます。
</details>

<details><summary><strong>AWSとは？</strong></summary>
<strong>AWS (Amazon Web Services)</strong> は、世界中の企業や個人にクラウドコンピューティングサービスを提供するプラットフォームです。<br>
様々なコンピューティングタスクをクラウド上で実行できるようにすることで、物理的なコンピューターの制限から解放されます。
</details>

<details><summary><strong>EC2とは？</strong></summary>
<strong>EC2 (Elastic Compute Cloud)</strong> は、AWSが提供するサービスの一つで、仮想コンピューター（サーバー）をインターネット上で利用できるようにします。<br>
つまり、自分のMacやPCに負担をかけずに、別のコンピューター（この場合はWindows環境）をインターネット経由で使用できるわけです。
</details>

<details><summary><strong>なぜEC2を使うのか？</strong></summary>
<ul>
<li><strong>負荷軽減:</strong> 自分のMacに余計な負担をかけることなく、Windowsが必要な作業を行えます。</li>
<li><strong>柔軟性:</strong> 必要に応じてリソースを増減でき、使用した分だけ料金を支払うので、非常に経済的です。</li>
<li><strong>アクセシビリティ:</strong> どこからでもインターネットがあればアクセスでき、作業を続けることができます。</li>
</ul>
</details>

<details><summary><strong>仮想環境とは？</strong></summary>
コンピューター内に作られた、別のコンピューターのように動作する仮想のスペースのことです。この技術を使うと、一つの物理的なコンピューター上で、複数の異なるコンピューター環境を同時に作り出すことができます。<br>
これにより、実際には一台のコンピューターしかないのに、それがまるで複数台あるかのように振る舞うことが可能になります。 
</ul>
</details>

## ３．本記事で実施する内容のイメージ

Amazonが提供するクラウドサービスであるAWS上に、Windowsの仮想パソコン（EC2インスタンス）を設置します。その後、インターネットを介して、お使いのMacパソコンからこのWindowsパソコンに接続します。この接続には、「リモートデスクトップ接続（RDP）」という技術を使用します。

リモートデスクトップ接続を利用することで、MacからWindowsパソコンを直接操作することが可能になり、Windows専用のアプリケーションやファイル（exeファイル）を実行することができます。

![Image1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/0ba7f1dc-bc97-c733-1c99-2557bcec8c82.jpeg)


## ４．Windows仮想環境の構築手順
Windows仮想環境を構築するまでの流れは以下の通りになります。
* **1. アカウント作成:**<br>AWSのウェブサイトにアクセスしてアカウントを作成する<br><br>
* **2. EC2インスタンスの設定:**<br>EC2ダッシュボードから「インスタンスを起動」を選択し、Windows Serverのイメージを選んで、仮想マシン（サーバー）を立ち上げる<br><br>
* **3. リモートデスクトップ接続:**<br>Macからインターネットを通じて、立ち上げたWindowsサーバーにリモートで接続する。これにより、MacでWindowsのデスクトップ画面を操作できるようになる

:::note warn
注意
* **インターネット速度:**<br>遅延が生じる可能性があるため、安定した高速インターネット接続が推奨されます。
　
* **料金:**<br>無料利用枠を超えると料金が発生しますので、利用状況を定期的にチェックすることが推奨されます。本記事では無料で扱える内容を紹介しますが、無料利用枠内の環境だと低性能になるため、実用性を考慮すると料金が発生すると考えてください。
また、**無料枠はAWSアカウントごとに初めての12ヶ月間のみ適用されるため、期間を過ぎると通常の料金が適用される**点にも注意が必要です。
:::



## ５．AWSアカウントの作成
:::note info
インフォメーション
ここからWindows仮想環境の構築操作となります。
操作に注目して進めるため、各用語の説明は省略します。
:::
この章では、AWSでWindows仮想環境を構築するために必要な初期ステップ、すなわちAWSアカウントの作成から始めます。
まず[AWSのウェブサイト](https://aws.amazon.com/jp/ "Amazon Web Services Home")にアクセスし、アカウントを作成します。
<br>

① AWSのウェブサイトから、AWSアカウント作成画面に遷移する。
![picture_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/036f6418-3883-b32d-dfbb-3cac62e8409f.jpeg)

② AWSアカウント登録に必要な情報を入力する。
![picture_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/1d4c1296-ac36-9386-9c0e-19ffd7525ddf.jpeg)

③ 情報を入力していくと、サポートプラン選択画面が表示されるので、無料である**ベーシックサポート**を選択する。
![picture_3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/705aebcf-2759-f074-df58-6d3420284088.jpeg)

④ AWSアカウント登録後、コンソールにサインインを選択する。(または、②で表示された画面で**既存のAWSアカウントにサインインする**を選択する)
![picture_4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/adc0ca89-5d8a-01e9-2221-c1f1ea3c0d66.jpeg)

⑤ ルートユーザーを選択して、サインインする。(IAMユーザーを利用する方法は本記事では省略する)<br>AWSマネジメントコンソールログインできていれば成功である。
![picture_5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/718156af-1276-b4d0-e2c6-331da41548b2.jpeg)


## ６．EC2インスタンスの作成
AWSマネジメントコンソールは、AWSのサービスを管理するためのユーザーインターフェースです。ここから、EC2インスタンスの設定や管理を行うことができます。
この章では、EC2インスタンス作成までを説明します。

① コンソール画面右上のリージョンを変更する。
（基本的には自分が住んでいる地域に近いリージョンを選択することを推奨。日本在住の場合、東京もしくは大阪のどちらかを選択するとよい）
![picture_6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/86eb50ef-7e1c-e915-7201-abddd35cd533.jpeg)

② EC2を検索して選択することで、EC2の管理画面に遷移する。
![picture_7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/0ecf3bee-9a07-b8cb-c8d0-d84d737c5f6f.jpeg)

③ インスタンスを選択する。
![picture_8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/e2a5bfbb-98c9-88df-d94c-d35feb398d65.jpeg)

④ **インスタンスを起動**を選択する。
![picture_9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/d250c400-4595-3690-5e50-8134d5439bf5.jpeg)

⑤ EC2インスタンスの名前を入力する。名前は自由に決められるが、わかりやすさを重視し、**<自由入力>-widnows-ec2**となるようにした。
![picture_10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/745992c5-6ac8-8340-66f9-2bdac2069b89.jpeg)

⑥ OSイメージでは**Windows**を選択し、**Micro windows Server 2022 Base**を選択する。 （WindowsOSで無料利用枠の対象のものを選択する）
![picture_11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/f4044a56-9c6a-3526-64b5-204780ed2230.jpeg)

⑦ インスタンスタイプ**t2.micro** (無料利用枠の対象) を選択する。
![picture_12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/20d8f7ae-8636-6051-fa20-c6e049d38cbe.jpeg)

⑧ **新しいキーペアの作成**を選択する。
![picture_13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/48d2006e-82da-6a13-fa8e-7c1e7edd56b2.jpeg)

⑨ キーペア名を入力する。(名前は自由に決められるが、わかりやすさを重視し、**ec2KeyPair**とする)<br>その後、**キーペアを作成**を選択する。
![picture_14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/48741df8-4cbe-cb68-2eef-cbf10b40a572.jpeg)

⑩ プライベートキーが自分のPCにダウンロードできていることを確認する。(このキーファイルは、後ほどEC2へRDP接続する際のパスワードを取得するために利用する）

:::note warn
注意
キーファイルの流失は、他人からEC2へのアクセスを許す原因となる。そのため、**キーファイルは必ず誰にも渡さず、誤って削除しないよう**大切に保管すること
:::
![picture_15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/ac2acb68-b3c4-c709-d303-c60a66ec6416.jpeg)

⑪ ネットワーク設定で、**自分のIP**からのRDPトラフィックを許可するように設定する。(任意の場所 0.0.0.0/0 を選択すると全てのIPアドレスからアクセスできるようになり、セキュリティが低下する)
![picture_16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/be0f7a2b-1728-a52b-554f-318a43f94247.jpeg)

⑫ ストレージを設定では**gp3**を選択する。その後、**インスタンスを起動**をクリックする。
![picture_17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/58e1d2d1-92d8-c66e-294a-f82c79f108c9.jpeg)

##  ７．リモートデスクトップ接続（RDP）
MacからWindowsインスタンスにリモートデスクトップ接続を行います。これにより、MacからWindowsのデスクトップを操作できるようになり、exeファイルを含むWindows専用のアプリケーションやツールを使用することが可能になります。<br>
この章では、リモートデスクトップ接続までを取り扱います。

①**インスタンス**管理画面に遷移する。
![picture_18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/a2b9bb43-f908-c220-0a0e-cc77b1dbed05.jpeg)

② 先ほど作成したEC2インスタンスが存在して、EC2インスタンスの状態が**実行中**であることを確認する。<br>インスタンス名左側のチェックボックスにチェックを入れて接続をクリックする。
![picture_19.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/21f22cbe-c74a-36f1-9dbf-cd98dc70a2fd.jpeg)

③ **RDPクライアント**を選択後、**リモートデスクトップファイルのダウンロード**をクリックする。
![picture_20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/34210bb6-c2db-2a0e-7f7d-873e0d9bb42d.jpeg)

④ **\<EC名>.rdp**のファイルが自分のPCにダウンロードできていることを確認する。(このファイルは、後ほどEC2へRDP接続するために利用する）
![picture_21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/df22db0e-8c95-33f4-e7b9-59e913e782e2.jpeg)

⑤ **パスワードを取得**をクリックする。
![picture_22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/f50b01c2-f08d-e314-5b3e-8fae306c0720.jpeg)

⑥ **プライベートキーファイルのアップロード**をクリックして、先ほど作成したキーファイル (ec2KeyPair) をアップロードする。
![picture_23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/84f5d4fd-61fe-a6b9-6bb9-88bb31276118.jpeg)

⑦ プライベートキーのアップロード後、**パスワードを復号化**をクリックする。
![picture_24.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/90b9ac1f-16c4-fdf0-d8a4-0f21ee99d45a.jpeg)

⑧ パスワードが表示されるので、大切に保管する。(このパスワードはRDP接続時に利用する)
![picture_25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/fbfdbc01-6ab9-945e-0f12-a455e63de8fd.jpeg)

⑨ 先ほどダウンロードした**\<EC名>.rdp**を実行する。その後、**接続**を選択する。
![picture_26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/781c2692-1f48-18e4-64f7-116889833b63.jpeg)

⑩ 先ほど取得したパスワードを入力して**OK**をクリックする。
![picture_27.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/94d23e04-9d8e-849b-72cc-e41f20d0a77b.jpeg)

⑪ 警告が表示された場合は、**はい**を選択する。
![picture_28.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/aaeb0a0c-a17c-a8a4-8233-16fa669e529d.jpeg)

⑫ Windows仮想環境に接続できていれば、この環境を利用してexeファイルの実行が可能である。
![picture_29.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/dec51929-4e8b-65bc-70b3-69041a1aeb50.jpeg)
<br>

* **補足説明１: リモートデスクトップ接続の終了方法**
リモートデスクトップ接続（RDP）を終了するには、Windows仮想環境内で「スタート」メニューをクリックし、<strong>「ログオフ」</strong>または<strong>「切断」</strong>を選択します。これにより、MacとWindows PC間のリモートセッションが終了し、ローカルのMacに戻ることができます。<br>セッションを「切断」すると、Windows PC上のアプリケーションは引き続き実行されるため、後で再接続したときに作業を再開できます。「ログオフ」を選択すると、すべてのアプリケーションが閉じられ、ユーザーがサインアウトされます。
　
* **補足説明２: 次回以降のリモートデスクトップ接続**
EC2インスタンスが起動中であれば、**次回以降は⑨の操作からRDP接続が可能**です。

# ８．EC2インスタンスの無料枠について
:::note info
インフォメーション
この章から、AWSについての補足説明を扱います。
:::
AWSは新規登録ユーザーに対して、**1年間の無料利用枠**を提供しています。この無料枠には、毎月750時間のAmazon EC2 t2.microまたはt3.microインスタンスの利用が含まれており、これを使用することで、Windows Serverを含む多くのAWSサービスを試すことができます。

この750時間という数字は、一ヶ月を通して1つのインスタンスを24時間連続で稼働させても無料枠に収まることを意味します。したがって、**1つのEC2インスタンスのみを起動している今回の場合、それを月間通して稼動させ続けても、無料枠の範囲内であれば追加料金は発生しません。**

しかし、無料枠を超えた使用、例えば複数のインスタンスを同時に運用する場合や、t2.microまたはt3.micro以外のインスタンスタイプを使用する場合には、追加の料金が発生します。また、無料枠はAWSアカウントごとに初めての12ヶ月間のみ適用されるため、期間を過ぎると通常の料金が適用される点にも注意が必要です。

**無料枠を有効に活用するには、不要なインスタンスは適宜「停止」状態にし、必要なときだけ「起動」すること**を心がけましょう。これにより、無料枠内で最大限の利用を保ちながら、不要な課金を避けることができます。また、無料枠の範囲内で複数のインスタンスを運用する場合は、合計使用時間が月750時間を超えないように管理することが重要です。

そのために、AWSマネジメントコンソールで定期的に利用状況を確認して、利用状況を管理することが推奨されます。

## ９．EC2インスタンスの起動と停止
AWS EC2インスタンスは、使用していないときには停止することが推奨されます。インスタンスを停止すると、計算リソースに対する課金が停止されるため、コストを節約できます。

インスタンスの「起動」は、インスタンスを使用開始する際に行います。インスタンスが「停止」状態の場合、AWSマネジメントコンソールから「インスタンスの状態」メニューを使用して「起動」を選択することで、再び利用開始できます。

「停止」は、インスタンスを一時的に使用しないときに行います。同様に「インスタンスの状態」メニューから「停止」を選択してください。停止状態では計算リソースの課金が停止されますが、ストレージは保持されるため、後で再起動した際に状態をそのまま復元できます。

:::note warn
注意
**インスタンスを終了**を選ぶと、EC2インスタンスを**削除**する。
**停止**と**削除**は意味合いが違うため、通常はEC2が不要になり削除したい場合以外には、インスタンスを終了を選択しない。
:::

![picture_30.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3703633/e4c734c5-4e40-4c98-f22b-7915d8cd8ee1.jpeg)

## １０．まとめ
本記事では、MacユーザーがAWS EC2インスタンスを利用してWindows仮想環境を構築し、Windows専用のアプリケーションやexeファイルを実行する方法について詳しく解説しました。AWSの無料EC2インスタンスを活用することで、物理的なWindowsマシンを持たないユーザーでも、クラウド上でWindows環境を手軽に構築し、利用することが可能です。

今回はAWSの1年間の無料利用枠しているため、無料で試すことができます。しかし、無料枠を超えた場合は追加料金が発生するため、AWSマネジメントコンソールで定期的に利用状況を確認して、利用状況を管理することが推奨します。

## 今後の予定
今後、EC2インスタンスタイプを変更することでWindows仮想環境の性能を向上させ、より実用的な作業環境を構築する方法についての記事を作成する予定です。

2024/03/24 追記
EC2インスタンスタイプ変更記事を投稿しました。
[Macでもexe形式のゲームがしたい｜EC2インスタンスタイプの変更](https://qiita.com/FuruFuroof/items/bd98bbee76b8a1a01482)