ChromebookとAmazon WorkSpacesとCloud9で快適・セキュア・いつでもどこでも環境構築

この記事は[アラタナアドベントカレンダー2019](https://qiita.com/advent-calendar/2019/aratana)の3日目の記事になります。

[![at-adventcalendar2019.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217773/5ef318e0-bd49-8f89-bafa-50b68dc7ffeb.jpeg)](https://qiita.com/advent-calendar/2019/aratana)

PCが普及して今日まで、PCの性能は上がり続けており、
新作のPCが出るたびに、前のモデルよりどのくらい性能が上がったのかを真っ先に気にしますよね。

昔に比べると、ノートPCであってもパワフルな画像や動画編集などもあたりまえにできるようになっていますし、外部ディスプレイを何台も繋げられたり、画像性能だけを外部化するGPUボックスなどを活用すればさらにパワフルな環境を構築できます。

このように、ローカルPCの環境性能が上がり続けていていますが、
そこまでパワフルな環境を要さない場合であれば（ほとんどの人がこれに該当すると思いますが）
次のような視点をもつと課題がでてきます（この記事ではノートPC利用時を想定しています）。


- そのPCがないと慣れた環境での作業ができない（持ち歩く必要がある）
- ノートPCを紛失するとインシデントとなる（ローカルストレージに重要な情報保持）
- 落としたりして壊れると、同一環境やデータの復旧が困難
- 新しいPCを買うたびに、環境の再構築（移行）を余儀無くされる
- 経年の劣化？やローカルストレージの容量不足などによりPC起動が遅くなる傾向にある
- 子供にPCを与えたいが、高価すぎる


上記の課題を解決しようと思ったら、以下のような環境を作ればいいかもなぁと思ったので
今回の記事にさせていただきました。


# 1. Chromebookでシンクライアントのような環境

![IMG_9951.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217773/6aebba0d-0a42-ce51-3cee-538fca6bd5bb.jpeg)
*写真の端末は今回購入した「Acer Chromebook R751T-N14N Celeron/11.6インチ/メモリ4GB/eMMC32GB」*

厳密にはシンクライアントではないのかもしれませんが考え方は似ています。
ローカルでは必要最小限の処理にとどめ、基本的にはサーバー側（今回の場合は主にインターネット側）に処理を任せます。
そのため、ローカルPCはパワフルである必要はなく、重要な情報を端末には持たないため比較的セキュアです。

ChromebookはGoogleが提供してますので、データはGoogleDriveに保存し、
WordやExcelに変わるOffice系アプリはご存知のとおりGoogleアカウントさえあれば
Googleドキュメントやスプレッドシートなどが利用できますので不自由しません。

通常のノートPCよりはパワフルではないですが、3万円程度〜から購入でき、
ディスプレイ部分はタッチパネルになっているものも多く、PCとしてもタブレットとしても機能します。

![IMG_9952.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217773/0786f794-e771-deed-ff9e-926d9060d8e0.jpeg)
*ディスプレイ部分が裏側まで回転して折りたためるようになっているため、タブレットとしても使える*

同じ端末を使い回す場合、Googleアカウントをログインしなおせばその人の環境としてログインできるため、
パソコン教室や学校など多人数に使われるような環境でも活躍しそうです。

ChromebookはChromeOSというOSが載っており、Google Playのアプリが使えます。
すでにAndroidスマホをお持ちの場合は、そのままアプリの同期もできるようです。
基本的には端末にいれたアプリか、ChromeのWEBブラウザ上で作業します。

インターネットに繋がってなくても使えるモードもあり、
学校などで導入されたりより高速な5G環境などが整ってくると一気に普及する予感です。


Chromebookを使えば、上記課題の全てが解決できそうです。

**そのPCがないと慣れた環境での開発ができない（持ち歩く必要がある）**
→端末依存はない（性能差くらい？）。

**ノートPCを紛失するとインシデントとなる（ローカルSSDやHDDに重要な情報保持）**
→ローカルストレージに保存しない。

**落としたりして壊れると、復旧が困難**
→端末依存がないので、新しく購入するとか別の場所にあるChromebookでログインすればすぐ仕事が再開できる。

**新しいPCを買うたびに、環境の再構築（移行）を余儀無くされる**
→上記と同じで、環境の再構築は必要なく、ログインすればすぐに同一環境で仕事が再開できる。

**経年の劣化？やローカルストレージの容量不足によりPC起動が遅くなる傾向にある**
→PC起動はスマホ並み。PCよりは断然早い。

**子供にPCを与えたいが、高価すぎる**
→ピンキリだが3万円代からタッチパネルも使えるモデルが購入できるため、PCやスマホよりも比較的安価。
　タッチパネルもあるので、タイピングできなくても小さい子供の頃から遊べる

以下はヒューレットパッカード社のChroomebookのサイトですが、
Chromebookの特徴の説明が詳しいので、興味がある方にはオススメです。

> 参考サイト
[Chromebook ってなに？なにが出来るの？](https://jp.ext.hp.com/campaign/personal/notebooks/chromebook/)

ちなみに今回実際に購入した
「Acer Chromebook R751T-N14N Celeron/11.6インチ/メモリ4GB/eMMC32GB」は
2019/11末時点で3万2,000円程度で入手しましたが、
全体的な質感やタッチパネル機能付きなどを考えると、お値段以上な感じはします。
前評判どおり起動も早く、今の所サクサク動きます。

ただし、キーボードとディスプレイの蝶番が少々硬めで、
子供にキーボードを打たせると力が入りにくい薬指や小指のキーが押せてないみたいなことはありました。
ディスプレイの蝶番は硬いですが、柔らかすぎるのも問題なので、許容範囲だと思います。

トータルして、満足してます。


# 2. Amazon WorkSpacesとは
Amazon社が提供するAWSサービスの１つで、セキュアな仮想デスクトップ（VDI）サービスです。
<img width="1216" alt="スクリーンショット 2019-12-03 8.03.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217773/8f50d56c-b2be-03c6-9d02-52d5198044b7.png">
*[Amazon WorkSpaces](https://aws.amazon.com/jp/workspaces/)*

現在はWindowsとLinuxが用意できるようです。
つまり、インターネットを介してAmazon WorkSpaces上に構築したWindowsまたはLinuxマシンに
リモートデスクトップできるようなサービスです。

[料金は月額固定か、時間単位で利用するか選べます](https://aws.amazon.com/jp/workspaces/pricing/?nc=sn&loc=3)。

2019年11月末時点では、スタンダードの「Windows 2vCPU/4GiBメモリ/ルートボリューム80GB/ユーザーボリューム10GB」で
月額だと「33USD」、時間単位だと「7.25USD/月 + 0.30USD/時間」という感じです。

Amazon WorkSpaces自体にはブラウザ経由か、
専用のアプリ（Windows, MacOS, iPad, Android Tablet, Chromebook, Fire Tablet, Linux）
をインストールすることでアクセスができます。

<img width="351" alt="スクリーンショット 2019-12-03 11.15.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217773/5f21b378-40bc-1338-98e7-3935a79b44c9.png">
*MacOS X 用のアプリケーションの例*

デスクトップ環境がAWS上にあるので、それに接続する端末は何であっても、
いつでもどこでもその環境にアクセスが可能です。
上記のとおり月額数千円程度〜でリーズナブルなのと、
Chromebookなどの安価な端末からでも利用が可能なので便利です。

普段はWindowsを使わないのですが、
子供にタイピングゲームをさせたいと思った時に気に入ったものがWindows版しかなかったので
試しにWindowsプランに申し込み、そのVDIの中にインストールしてみました。

プレイしている最中、モバイルWi-Fiだと不安定になることがありますが
自宅や会社など比較的パワーのあるWi-Fi環境であれば安定していました。
専用のアプリから起動させる際は、接続などレジューム時間が数分以上はかかる印象です。

VDIを使う際はネット環境が充実している必要はありそうです。
しかしながら、上記課題の中で以下を解決してくれそうです。

**そのPCがないと慣れた環境での開発ができない（持ち歩く必要がある）**
→端末依存はない。
　リモートデスクトップみたいな感じでアクセスでき、
　慣れた環境を作り上げられればどこからでもアクセスできる。

**ノートPCを紛失するとインシデントとなる（ローカルSSDやHDDに重要な情報保持）**
→VDI上のデータはVDI上にしかない。

**落としたりして壊れると、復旧が困難**
→WorkSpacesにアクセスできれば端末はなんでもよいし、すぐ復旧できる。

**新しいPCを買うたびに、環境の再構築（移行）を余儀無くされる**
→上記と同じで、環境の再構築は必要なく、ログインすればすぐに同一環境で仕事が再開できる。


# 3. Cloud9とは
AWS Cloud9 は、ブラウザのみでコードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE) です。これには、コードエディタ、デバッガー、ターミナルが含まれています（[公式サイトより引用](https://aws.amazon.com/jp/cloud9/)）。

<img width="1219" alt="スクリーンショット 2019-12-03 11.37.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217773/76dea68b-5d42-7c43-d0fd-cbb4d0ba3e9c.png">
*[AWS Cloud9](https://aws.amazon.com/jp/cloud9/)*

ブラウザだけでコーディングできるので、Chromebookでもいけます。
Lambdaのデバッグもこの環境で行えるほか、ペアプロ環境をつくったりも簡単にできます。
AWS各サービスとの親和性も高く、Cloud9でコーディングしたHTML,CSS,JSなどを
ターミナルを通じてS3コマンドをつかって転送なども可能です。

Cloud9自体は利用料が無料ですが
Cloud9エンジンを動かすために手持ちサーバーか、EC2を利用する必要があります。
当然EC2で稼働させる場合は、EC2の利用料金が必要です。
その場合、30分以上利用がない場合は自動停止などの設定もできます。

Cloud9での開発に慣れれば、これもブラウザさえあれば利用OSがなんであろうと差分なく、
かつ、利用する際のPCが異なってもそれぞれにライセンスを買ってソフトを入れる必要がありません。


Cloud9を使えば、上記課題のうち、以下が解決できそうです。

**そのPCがないと慣れた環境での開発ができない（持ち歩く必要がある）**
→端末依存はない。

**ノートPCを紛失するとインシデントとなる（ローカルSSDやHDDに重要な情報保持）**
→ローカルストレージに保存しない。

**落としたりして壊れると、復旧が困難**
→端末依存がないので、WorkSpacesにログインすればすぐ仕事が再開できる。

**新しいPCを買うたびに、環境の再構築（移行）を余儀無くされる**
→上記と同じで、環境の再構築は必要なく、ログインすればすぐに同一環境で仕事が再開できる。


## まとめ
今回は手持ちのローカルノートPCに万一何かあった場合の視点で、
インターネット上に環境を構築していつでもどこからでもアクセスできるようにし、
ローカルPCの依存度を下げるケースで考えてみました。

WorkSpacesでWindowsが使える時点で、いろんな使い方できそうですよね。
特にラインセスを必要とするソフトウエアを会社や自宅、そのほかなど別端末で使う際などにも重宝しそうです。

まだ、僕も使い始めたばかりなので、慣れていきたいと思います。
「ローカルPCレス」は他にも色々チャレンジしてみたいと思います。