開発環境

AWS Cloud9とGCP App Engineを使った使用感をまとめてみた

まえおき

  • Goアドカレに投稿する予定でしたが、遅れてしまいましたすみません・・・
  • 技術ネタじゃないです:bow:
  • 異なる端末、NW環境でも、同じ開発環境を使いたかったので、いい方法を探ってみました
  • テストコードはGo言語のGinフレームワークのものを使用させていただきました

AWS(Amazon Web Service)の場合

Cloud9

AWS Cloud9が出来ていたので、そちらを使ってみました!
Cloud9自体は1日くらいしか使ったことは無いので詳しくないですが、
機能的には殆ど変わらない気がします!

1. プロジェクト名や開発環境の設定を行う

Cloud9のページから各設定を行います。
「Environment type」は初回は「EC2」でいいと思いますが、説明通り
EC2インスタンスがプロジェクトごとに建てられる(ハズな)ので
毎回選択することは避けて、専用インスタンスを立てて「SSH」を選択するほうが良いと思います。

2. プロジェクトを作成する

ここから先はIDE上での操作です。

1が終わるとCloud9のIDEが開かれていると思います。
(Cloud9 > Your environments > 対象プロジェクトの[Open IDE]でもOK)

2-1. 新規ファイルを作成

File > New Fileでmain.goという名前のファイルを作成します。

main.go
package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}
2-3. 新規ファイルを保存

File > Save で保存します。
※ Ctrl+n, Ctrl+sといったショートカットも使えます

2-4. 必要なパッケージの取得

IDEの下部にbashがあるので、go getを実行します

bash
$ go get github.com/gin-gonic/gin

3 動作確認

3-1. プログラムの実行

右上のツールバーにRunボタンがあるのでクリックするとプログラムが実行されます。

3-2. Webアプリケーションのプレビュー

右上のツールバーの[Preview > Preview Running Application]をクリックすると
プレビュー画面が表示されます。別タブで表示させることも可能です。

GCP(Google Cloud Platform)の場合

クイックスタートを始める

1. コンソール画面からApp Engineを開く

コンソール画面の左ツールバーからApp Engine > ダッシュボードをクリック

2. GAE(Google App Engine)からgoのサンプルを動かしてみる

GAEのダッシュボード上に「初めてのアプリへようこそ」というカードが表示されていると思います。
カード上の「言語を選択」からgoを選び、クイックスタートを触ってみましょう。

GAE上でgoプロジェクトを新規作成する

1. GAEのダッシュボードからCloud Shellを開く

2. プロジェクトを作成する

cloud-shell
$ cd ~/src
$ mkdir testProject; cd $_
cloud-shell
$ go get github.com/gin-gonic/gin
$ vim main.go
main.go
package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}
cloud-shell
$ go run main.go

「ポート上でプレビュー」でブラウザからアクセスすると、生成したコードの動作が確認できます。
※ ただし、このままだとデプロイ出来ないので、他に必要な操作があるみたいです。(app.yaml置くだけではダメでした・・・)追記するか、別記事で書きます:bow:

今のところのメリット・デメリット

AWS Cloud9

対応言語

C++/C#/CoffeeScript/CSS/Dart/Go/Haskell/HTML/Java/JavaScript
Node.js/PHP/Python/Ruby/Shell Script

メリット

  • 即時公開もできる(おそらく)
  • プロジェクト作成が簡単
  • IDE付き
  • 対応言語が多い

デメリット

  • 東京リージョンは無い
  • 管理に気をつけたほうが良い 簡単にEC2が立ち上がってしまうので、 管理はきっちりしないと(請求が)怖いなというところです。

GCP App Engine

対応言語

Go/PHP/Java/Python/Node.js/.NET/Ruby

メリット

  • .NETが対応している
  • クイックスタート付き
  • Cloud9+EC2よりは課金額は下がる (確か、自動で実行を停止させる機能があったハズ)

デメリット

  • あくまで開発用。本番公開は出来ない(おそらく)
  • デプロイするにはコマンド覚える必要がある
  • 本番環境への適応にはDockerの知識が必要(?)

まとめ

個人的には、必要な知識は少ないのでAWS Cloud9を推したいです。
(AWS歴が長いからかもしれませんが・・・。)
ですが、GCPの親切さはAWSを上回ってると思いました。