Cloud9でIDE環境を整えてみる

## はじめに
IDE環境が色々な拠点に乱雑に立っており、バージョンがバラバラだったりするので、Cloud9で統合できないか試してみることにしました。
まずは、環境セットアップとして、以下をやってみます。
- pipのバージョンアップ
- AWS-CLIのバージョンアップ
- Amazon Corrent11のインストール
- Homebrewのインストール
- Mavenのインストール
- Gradleのインストール
- Kotlinのインストール
- Terraformのインストール


## pipのバージョンアップ
以下のコマンドでバージョンアップ可能です。

### pip

```bash
$ sudo pip install --upgrade pip                                                                                                                                                    
Cache entry deserialization failed, entry ignored
Collecting pip
  Cache entry deserialization failed, entry ignored
  Downloading https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl (1.4MB)
    100% |████████████████████████████████| 1.4MB 829kB/s 
Installing collected packages: pip
  Found existing installation: pip 9.0.3
    Uninstalling pip-9.0.3:
      Successfully uninstalled pip-9.0.3
Successfully installed pip-19.3.1
```

### AWS-CLIのバージョンアップ
同様に以下でバージョンアップ可能です。

```bash
$ pip install awscli --upgrade --user
Collecting awscli
  Downloading https://files.pythonhosted.org/packages/d3/37/0171a4da9c8d99b0466cef7265603b462a20806d628b04123192f5d17419/awscli-1.16.300-py2.py3-none-any.whl (2.5MB)
    100% |████████████████████████████████| 2.5MB 529kB/s 
Requirement already up-to-date: docutils<0.16,>=0.10 in /usr/local/lib/python2.7/site-packages (from awscli)
Requirement already up-to-date: rsa<=3.5.0,>=3.1.2 in /usr/local/lib/python2.7/site-packages (from awscli)
Requirement already up-to-date: s3transfer<0.3.0,>=0.2.0 in /usr/local/lib/python2.7/site-packages (from awscli)
Collecting PyYAML<5.2,>=3.10; python_version != "2.6" and python_version != "3.3" (from awscli)
  Downloading https://files.pythonhosted.org/packages/e3/e8/b3212641ee2718d556df0f23f78de8303f068fe29cdaa7a91018849582fe/PyYAML-5.1.2.tar.gz (265kB)
    100% |████████████████████████████████| 266kB 4.5MB/s 
Collecting botocore==1.13.36 (from awscli)
  Downloading https://files.pythonhosted.org/packages/08/e0/e47a793322fd68381e4cda4f98740c558c9ef2a87e71d06589048f59cbcb/botocore-1.13.36-py2.py3-none-any.whl (5.8MB)
    100% |████████████████████████████████| 5.8MB 210kB/s 
Requirement already up-to-date: colorama<0.4.2,>=0.2.5; python_version != "2.6" and python_version != "3.3" in /usr/local/lib/python2.7/site-packages (from awscli)
Requirement already up-to-date: pyasn1>=0.1.3 in /usr/local/lib/python2.7/site-packages (from rsa<=3.5.0,>=3.1.2->awscli)
Requirement already up-to-date: futures<4.0.0,>=2.2.0; python_version == "2.6" or python_version == "2.7" in /usr/local/lib/python2.7/site-packages (from s3transfer<0.3.0,>=0.2.0->awscli)
Collecting urllib3<1.26,>=1.20; python_version == "2.7" (from botocore==1.13.36->awscli)
  Downloading https://files.pythonhosted.org/packages/b4/40/a9837291310ee1ccc242ceb6ebfd9eb21539649f193a7c8c86ba15b98539/urllib3-1.25.7-py2.py3-none-any.whl (125kB)
    100% |████████████████████████████████| 133kB 9.1MB/s 
Requirement already up-to-date: python-dateutil<2.8.1,>=2.1; python_version >= "2.7" in /usr/local/lib/python2.7/site-packages (from botocore==1.13.36->awscli)
Requirement already up-to-date: jmespath<1.0.0,>=0.7.1 in /usr/local/lib/python2.7/site-packages (from botocore==1.13.36->awscli)
Requirement already up-to-date: six>=1.5 in /usr/local/lib/python2.7/site-packages (from python-dateutil<2.8.1,>=2.1; python_version >= "2.7"->botocore==1.13.36->awscli)
Building wheels for collected packages: PyYAML
  Running setup.py bdist_wheel for PyYAML ... done
  Stored in directory: /home/ec2-user/.cache/pip/wheels/d9/45/dd/65f0b38450c47cf7e5312883deb97d065e030c5cca0a365030
Successfully built PyYAML
Installing collected packages: PyYAML, urllib3, botocore, awscli
Successfully installed PyYAML-5.1.2 awscli-1.16.300 botocore-1.13.36 urllib3-1.25.7
```


### Amazon Corretto11のインストール
初期状態ではJDK 1.7.0-231がインストールされていました。古い。。。
Amazon謹製JDKのAmazon Corretto11を使ってみることにします。

yumから取れなかったので、最新のDLリンクを[ココ](https://docs.aws.amazon.com/ja_jp/corretto/latest/corretto-11-ug/downloads-list.html)から拾ってきて、rpmコマンドでインストールします。

```bash
$ sudo rpm -ivh https://d3pxv6yz143wms.cloudfront.net/11.0.3.7.1/java-11-amazon-corretto-devel-11.0.3.7-1.x86_64.rpm                                                                
Retrieving https://d3pxv6yz143wms.cloudfront.net/11.0.3.7.1/java-11-amazon-corretto-devel-11.0.3.7-1.x86_64.rpm
warning: /var/tmp/rpm-tmp.einimC: Header V3 RSA/SHA256 Signature, key ID f8152b28: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:java-11-amazon-corretto-devel-1:1################################# [100%]
```

Alternativesも自動的に変わってくれていました。

```bash
$ java -version
openjdk version "11.0.3" 2019-04-16 LTS
OpenJDK Runtime Environment Corretto-11.0.3.7.1 (build 11.0.3+7-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.3.7.1 (build 11.0.3+7-LTS, mixed mode)
$ alternatives --display java
java - status is auto.
 link currently points to /usr/lib/jvm/java-11-amazon-corretto/bin/java
～
```

## Homebrewのインストール
[Homebrew Documentation](https://docs.brew.sh/Homebrew-on-Linux)を参考にインストールします。

```bash
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
/bin/mkdir
==> This script will install:
/home/linuxbrew/.linuxbrew/bin/brew
/home/linuxbrew/.linuxbrew/share/doc/homebrew
/home/linuxbrew/.linuxbrew/share/man/man1/brew.1
/home/linuxbrew/.linuxbrew/share/zsh/site-functions/_brew
/home/linuxbrew/.linuxbrew/etc/bash_completion.d/brew
/home/ec2-user/.cache/Homebrew/
/home/linuxbrew/.linuxbrew/Homebrew
==> The following new directories will be created:
/home/linuxbrew/.linuxbrew/bin
/home/linuxbrew/.linuxbrew/etc
/home/linuxbrew/.linuxbrew/include
/home/linuxbrew/.linuxbrew/lib
/home/linuxbrew/.linuxbrew/sbin
/home/linuxbrew/.linuxbrew/share
/home/linuxbrew/.linuxbrew/var
/home/linuxbrew/.linuxbrew/opt
/home/linuxbrew/.linuxbrew/share/zsh
/home/linuxbrew/.linuxbrew/share/zsh/site-functions
/home/linuxbrew/.linuxbrew/var/homebrew
/home/linuxbrew/.linuxbrew/var/homebrew/linked
/home/linuxbrew/.linuxbrew/Cellar
/home/linuxbrew/.linuxbrew/Caskroom
/home/linuxbrew/.linuxbrew/Homebrew
/home/linuxbrew/.linuxbrew/Frameworks

Press RETURN to continue or any other key to abort
```

と聞かれるので、エンターでインストール可能です。簡単ですね。
最後に

```bash
Warning: /home/linuxbrew/.linuxbrew/bin is not in your PATH.
```

とパスが通ってないと怒られるので、以下を実行してパスを通します。

```bash
$ test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
$ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
$ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile
```

## Gradleのインストール
Homebrew経由で一発ですね。簡単です。

```bash
$ brew install gradle
                                              ==> Downloading https://services.gradle.org/distributions/gradle-6.0.1-all.zip
==> Downloading from https://downloads.gradle-dn.com/distributions/gradle-6.0.1-all.zip
######################################################################## 100.0%
  /home/linuxbrew/.linuxbrew/Cellar/gradle/6.0.1: 14,178 files, 270.2MB, built in 9 seconds
```

## Mavenのインストール
おなじく。

```bash
$ brew install gradle
                                              ==> Downloading https://services.gradle.org/distributions/gradle-6.0.1-all.zip
==> Downloading from https://downloads.gradle-dn.com/distributions/gradle-6.0.1-all.zip
######################################################################## 100.0%
  /home/linuxbrew/.linuxbrew/Cellar/gradle/6.0.1: 14,178 files, 270.2MB, built in 9 seconds
```

## Kotlinのインストール
[公式ドキュメント](https://kotlinlang.org/docs/tutorials/command-line.html)を読み進めてインストールします。
SDKMAN!経由でインストールするとのこと。

### SDKMAN!のインストール
簡単ですね。

```bash
$ curl -s https://get.sdkman.io | bash
～

                                                                 Now attempting installation...


Looking for a previous installation of SDKMAN...
Looking for unzip...
Looking for zip...
Looking for curl...
Looking for sed...
Installing SDKMAN scripts...
Create distribution directories...
Getting available candidates...
Prime the config file...
Download script archive...
######################################################################## 100.0%
Extract script archive...
Install scripts...
Set version to 5.7.4+362 ...
Attempt update of interactive bash profile on regular UNIX...
Added sdkman init snippet to /home/ec2-user/.bashrc
Attempt update of zsh profile...
Updated existing /home/ec2-user/.zshrc



All done!


Please open a new terminal, or run the following in the existing one:

    source "/home/ec2-user/.sdkman/bin/sdkman-init.sh"

Then issue the following command:

    sdk help

Enjoy!!!
```

### Kotlinのインストール
インストールしたターミナルではsdkコマンドが実行できないので、
新しいターミナルを開くか、以下のコマンドを実行してからインストールを行います。

新しいターミナルを開かない場合は以下を実行↓

```bash
$ source "/home/ec2-user/.sdkman/bin/sdkman-init.sh"
```

Kotlinのインストール

```bash
$ sdk install kotlin
==== BROADCAST =================================================================
* 2019-12-10: Vertx 3.8.4 released on SDKMAN! #vertx
* 2019-12-08: Groovy 3.0.0-rc-2 released on SDKMAN! #groovylang
* 2019-12-06: Springboot 2.2.2.RELEASE released on SDKMAN! #springboot
================================================================================

Downloading: kotlin 1.3.61

In progress...

########################################################################################################################################################################################## 100.0%

Installing: kotlin 1.3.61
Done installing!


Setting kotlin 1.3.61 as default.
```

## Terraformのインストール
tfenv経由でインストールします。案件ごとに使ってるバージョンが違ったりするので、
切替が簡単にできるのと便利です。

以下のコマンドでインストールします。

```bash
$ brew install tfenv
==> Downloading https://github.com/tfutils/tfenv/archive/v1.0.2.tar.gz
==> Downloading from https://codeload.github.com/tfutils/tfenv/tar.gz/v1.0.2
######################################################################## 100.0%
  /home/linuxbrew/.linuxbrew/Cellar/tfenv/1.0.2: 20 files, 48.1KB, built in 3 seconds
```

今回は最新版をインストールします。が、バージョンも一応確認しておきます。

バージョンの確認

```bash
$ tfenv list-remote
0.12.17
0.12.16
0.12.15
0.12.14
0.12.13
0.12.12
0.12.11
0.12.10
～
0.1.0
```

インストール

```bash
$ tfenv install latest
[INFO] Installing Terraform v0.12.17
[INFO] Downloading release tarball from https://releases.hashicorp.com/terraform/0.12.17/terraform_0.12.17_linux_amd64.zip
########################################################################################################################################################################################## 100.0%
[INFO] Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.12.17/terraform_0.12.17_SHA256SUMS
tfenv: tfenv-install: [WARN] No keybase install found, skipping OpenPGP signature verification
Archive:  tfenv_download.sy2Bv6/terraform_0.12.17_linux_amd64.zip
  inflating: /home/linuxbrew/.linuxbrew/Cellar/tfenv/1.0.2/versions/0.12.17/terraform  
[INFO] Installation of terraform v0.12.17 successful
[INFO] Switching to v0.12.17
[INFO] Switching completed
```

現時点の最新版のv0.12.17がインストールされました。

## まとめ
簡単ですが、ざっとお遊びできる環境が整いました。
次回から使用感を実際に見ていきたいと思います。