今回はプログラムを組むための環境を構築してゆきます。
利用するサービスはCloud9です。
目次
Cloud9とは
そこそこ有名なWebIDE(Webで完結する統合開発環境)で、ある時からAWSに買収されました。 昔は無料で利用できたのですが AWSへの移行で必ずお金を払う必要があります。(計算リソース利用料)
ものとしては大変使いやすく安価なので是非皆様も開発環境の選択肢として考えてみてください。
特徴
Cloud9の特徴はなんといってもWebで実行環境が全て完結する点です。
環境に依存せず、Webブラウザを利用できる機器であればどこでも同じ環境でプログラム開発と実行が行えます。
料金
詳しくは以下のURLを参照ください。
https://aws.amazon.com/jp/cloud9/pricing/
実際には以下URLの通り、利用していないときは計算リソースが自動でシャットダウンするので週末だけの利用だと100円/月程度で使い続けられるようです。大変お安い。
> 100円にも満たない。缶コーヒー買う感覚で土日使い続けられたのは良かった。
https://ensekitt.hatenablog.com/entry/2018/04/16/200000
開発開始までの手順
AWSの利用登録
こちらは割愛します。AWSアカウントは発行されている前提で進めます。
Cloud9の利用開始
AWSコンソールよりCloud9コンソールへ移動します。
CreateEnvironmentを押下します。
入力窓へ必要事項を入力してゆきます
Java開発用環境なのでJavaDevとしました。
自分の作った環境へもSSH接続情報を入力することで(自動?)インストール可能なようです。
今回はすべてAWSに自動で作ってもらいます。
一旦簡単な開発ができればよいので、以下で設定しました。
- インスタンスは最弱
- 簡単な開発ができればよいので、一旦これでいきます。
- PlatformはAmazonLinux
- 昨今、開発環境としてかなりメジャーになっているので設定面で苦労が少ないと思います。
- Network系の設定はそのまま
- 設定が面倒なので。自分の環境で利用する場合はセキュリティグループの設定なども加味しながら設定する必要があります。
確認画面です。
AWSベストプラクティスの説明があります。本記事では詳しく説明しない部分もありますが、今回は開発環境で、ソースや環境などの情報はGitで一括管理してゆこうと思うので、ベストプラクティスに従いません。
Create environmentを押下
作成中画面
ちょっと経つと、以下のようにIDEが表示されます。
以上でCloud9の設定は完了です。
簡単に説明しておくと、
左側がファイルのツリーで、右上に出ている窓がエディタやブラウザなどが表示される窓、右下がコンソールでここで環境の構築が可能です。また、エディタやコンソールは複数開くことも可能です。
Java環境の構築
今回は以下をインストール&設定し、サンプルプログラムを実行します。
- Java11
- Gradle
- SpringBoot2
Java11のインストール
以下をCloud9コンソールで実行し コマンドを実行します。
#tmpディレクトリで作業をします
cd /tmp;
#AmazonCorrettoからJavaをダウンロードする
wget https://d3pxv6yz143wms.cloudfront.net/11.0.2.9.3/java-11-amazon-corretto-devel-11.0.2.9-3.x86_64.rpm;
#インストール
sudo yum localinstall java-11-amazon-corretto-devel-11.0.2.9-3.x86_64.rpm
#動作確認
java -version;
#元のディレクトリに戻る
cd /home/ec2-user/environment;
※余談ですが、OracleJDKは特定条件で有料となってしまうので、AmazonJDKを使うほうが良いです。
Gradleのインストール
以下をCloud9コンソールで実行し、Gradleをインストールします。
#sdkman(パッケージマネージャ)をインストールする。
curl -s http://get.sdkman.io | bash;
#初期設定
source "$HOME/.sdkman/bin/sdkman-init.sh";
#Gradleインストール
sdk install gradle;
#動作確認
gradle -v;
SpringBootのひな型作成
SpringInitializerでSpringのひな型を作成&ダウンロードします。
プロジェクトの設定は以下
ライブラリは適当ですが、以下の感じで設定しました。
- Spring Boot DevTools
- Lombok
- Spring Configuration Processer
- Spring Web
- MySQL Driver
- Spring Data Redis
設定が完了したらgenerateを押下します。ZIP化されているので、そのままCloud9のFile→UploadLocalFilesからDrag&Dropでサーバへアップロードします
以下のコマンドを実行(ここで気付いた、Gradleインストールいらないかも、、)
$ unzip demo.zip
$ cd demo
$ ./gradlew
SpringBootで実行
以下を「src/main/java/com/example/demo/DemoApplication.java 」のメインメソッド内へ追記します
System.out.println("Hello, World!");
プロジェクトルートでビルドコマンドを実行します
$ ./gradlew build
テストでエラーが出るかもですが、ビルド自体は成功していますので無視してください。
以下でプログラム実行
$ gradlew bootRun
ec2-user:~/environment/demo $ gradle bootRun
> Task :bootRun
Hello, World!
Hello, World!
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.9.RELEASE)
・・・・
***************************
APPLICATION FAILED TO START
***************************
起動失敗…しかし実行はできた&HelloWorldの確認はできたので…いったん良しとしましょう…
感想・結論
構築してみましたが、Springbootは普通に考えて、ちゃんと対応しているIDEで実行したほうがいいです。
Cloud9ではGetterSetterの生成すら対応していないので使い物になるわけがなかったです。
( https://stackoverflow.com/questions/33424837/cloud9-autogenerate-getters-and-setters )
これからJavaの開発をCloud9でやるかというのは要検討とさせてください。。。
(いつの間にかPythonになっていると思います。)
Javaはローカルかなぁ、、少し気になっているのはクラウドでVSCodeが動くらしいSaaSです。
VSCodeでSpring開発ってありなのかなぁ、、、
そこまでしてJavaにこだわるべきか…という