明日PCが爆発してもすぐに開発ができる！そう、Cloud9ならね。

# TL;DR;
AWSマネジメントコンソールから[Cloud9](https://eu-west-1.console.aws.amazon.com/cloud9/home)へアクセスし、Create environmentをクリックだ！
あとはいい感じに開発環境が立ち上げるぞ！

# はじめに
Cloud9の導入手順、利用方法などを説明しています。
環境を作成してちょっと動かすまでです。詳しいIDEとしての使い方などは勉強中ですので、そちらを期待されている方はごめんなさい。
~~なんかすごい似たタイトルの講演会が開催されていたようですが、このタイトルはオリジナルです。これだけははっきりと真実を伝えたかった。~~

# Cloud9とは
クラウド上の統合開発環境(IDE)です。ブラウザさえあればEclipseやらNetBeansやらをPCにインストールすることなく開発ができるのが魅力です。
また、開発環境そのものもクラウド上におけるため、どのPCでもログインすれば同じ環境で開発することができます。
以前は個人開発する際、「自宅で作業した内容をGitHubにpush」「会社で作業したいからpull」「会社で作業した内容をGitHubにpush」「自宅で作業したいからpull」以下エンドレス。だったのですが、それが面倒だったのでCloud9に手を出してみました。
（~~会社で個人開発していることは内緒だよ~~）

以前は「Cloud9」という単体のサービスだったのですが、AWSに買収され「AWS Cloud9」として改めてAWSのサービスの一つとして提供されたようです。
以前のCloud9を使っていなかったので、そちらとの相違点は詳しくわかっていませんが、ほぼほぼ同機能のままAWSで利用できるようです。東京リージョンはまだ(2018/02/22現在)ありません。（詳しくは[こちら](https://aws.amazon.com/jp/about-aws/global-infrastructure/regional-product-services/)参照）
では早速利用してみましょう。

# 利用手順
### AWSマネジメントコンソールにアクセス
[こちら](https://console.aws.amazon.com/?nc2=h_m_mc)から
まだアカウントを作っていない方はクレカを用意さえすれば無料でアカウントが作成できます。


### [サービス]->[開発者用ツール]->[Cloud9]を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/185345/7f223cb8-4d00-42fe-e7ff-b19cd6898b12.png)

### [Create environment]をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/185345/143a4987-b43b-ca08-4a4f-a6091e7c93b5.png)

### 新規に作成するプロジェクト名を入力
![image.png](https://qiita-image-store.s3.amazonaws.com/0/185345/a617c0f1-fd8b-4c61-433a-e08859065eb0.png)
詳細は必須ではありません。
入力したら[Next step]を選択します。

### 連携する開発環境の設定を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/185345/6d89ce62-ca76-90a0-4ac8-0cc2bad32b6e.png)

試すだけならデフォルトのままで問題ないですが、一応理解している範囲で説明します。  
#### Environment type
「新規にEC2を構築する」か「既存のサーバにSSH接続で構築する」かです。
ここで費用の話が絡んでくると思います。

 + 「新規にEC2を構築する」場合
EC2の費用が発生します。ただし新規登録ユーザには1年の無料枠があり、『t2.micro』は無料枠のインスタンスですので費用は掛かりません。
基本的に開発環境であれば『t2.micro』で事足りると思います。
　 

 + 「既存のサーバにSSH接続で構築する」場合
Cloud9自体は無料のサービスですので、特に費用は発生しません。既存サーバの管理費だけだと思います。
こちらのパターンでサービスを開始したことないので詳細は分かりません。今度試してみます。

今回は「新規にEC2を構築する」場合で進めさせていただきます。

#### Instance type
新規に構築するEC2インスタンスのtypeです。
t2.microで十分でしょう。 

#### Cost-saving setting
Cloud9を閉じた後、どれくらいの時間で自動的にEC2インスタンスを停止するかを選択できます。
コストを抑えるための良心的な設定です。
開発に使うだけなのでデフォルトの30分で問題ないでしょう。この設定は非常にありがたいです。

#### IAM role
選択できないので気にすることはありません。（雑）
新規に立ち上げたEC2に「AWSServiceRoleForAWSCloud9」のIAMRoleを付与するよ、ということだと思います。

#### Network settings (advanced)
折りたたまれています。通常のEC2を作成するときと同様にVPCとSubnetを設定できます。


すべて選択したら[Next step]を選択します。

### Reviewで[Create environment]を選択
するとインスタンスの立ち上げ準備など行われます。↓こんな感じ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/185345/ab166056-edb9-024a-2d7f-5584dbe65554.png)

1分くらいすると操作可能になります。

### コーディング開始！
一般的なIDEと同等の機能はそろっていると思います。
また、コンソールが表示されており、IDE上からインスタンスをCLIで操作できるのはかなり便利だなーと思いました。
立ち上がったインスタンスにはPaasのように元からruby,Python,PHPなど言語だけでなくrailsやcomposerなども準備されており、スムーズに開発ができます。ただデフォルトだと「言語のバージョンがー」ということもありますが、実態はただのEC2インスタンスなのでカスタマイズはご自由に。

試しにrailsで新規アプリを構築して動かしてみましょう。

```
$ rails new sample
      create  
      create  README.md
      create  Rakefile
      create  config.ru
      create  .gitignore
...(以下略)
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/185345/207ef252-042e-0e2f-9ea2-3b7924b75b0a.png)


できあがりました。
続いてサーバ起動

```
$ cd sample/
$ rails s
=> Booting Puma
=> Rails 5.1.5 application starting in development 
...(以下略)
```

そして立ち上げたWebサーバへアクセスしましょう。
「そういえばCloud9には接続できてるが連携したEC2へはどうやってアクセスするんだ？」と思われるかと思いますが、そこの機能も用意されています。
ツールバーの[Preview]->[Preview Running Application]を選択しましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/185345/3359817d-bb85-9d92-c293-793b682fabe3.png)


するとページ内ブラウザが立ち上がります！

![image.png](https://qiita-image-store.s3.amazonaws.com/0/185345/4cadca2b-c825-9cf7-99ff-3357f4ef98b0.png)


見れないやんけ。。。
このページ内ブラウザはiframeを利用しているのでiframeを表示しないよう設定されている場合はこのようになります。
が、すぐ横に「別タブで開く」アイコンがあるのでクリックすれば

![image.png](https://qiita-image-store.s3.amazonaws.com/0/185345/96c9fcc1-bc7c-7341-91a5-b51b70c67df1.png)

この通り。便利ですね。
ポートの設定とかどうやっているのか、詳しい仕組みはわかってないです。。


# 終わりに
これで環境を作って置けば、IDEも開発環境もクラウド上なので、ブラウザさえあればどのPCでも同じ環境で開発を再開できます。
「ローカルにcommitしただけでpushしてなかったのにPCが爆発した」「急いでいるのにPCが爆発したせいで新たなPCにまたvagrantとvirtual boxいれるのか。。」という苦しみから解放されると思います。私のPCはまだ爆発したことはないですが。

日本語がサポートされていませんが、昨今のエンジニアには英語力が必須と言われているので頑張って慣れましょう。

ちなみにこのCloud9自体はオープンソースで、自前のサーバに構築することもできます。規約的にクラウドなどに厳しい環境だけど、Cloud9使いたい！という方でも頑張れば使えるということです。まあその場合は言語のデフォルトインストールなどのサポートはないので、環境構築は改めて1からやる必要があります。（試しにPCのVMに立ててみましたが、あんまりうま味を感じなかったのでそっちには触れません。）

前述のとおり、これからIDEとしての使い方は勉強していこうと思います。

これでPCを好きなだけ爆発させられますね！良いデベロッパーライフを！