まえおき
- Goアドカレに投稿する予定でしたが、遅れてしまいましたすみません・・・
- 技術ネタじゃないです
- 異なる端末、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という名前のファイルを作成します。
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を実行します
$ 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. プロジェクトを作成する
$ cd ~/src
$ mkdir testProject; cd $_
$ go get github.com/gin-gonic/gin
$ vim 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
}
$ go run main.go
「ポート上でプレビュー」でブラウザからアクセスすると、生成したコードの動作が確認できます。
※ ただし、このままだとデプロイ出来ないので、他に必要な操作があるみたいです。(app.yaml置くだけではダメでした・・・)追記するか、別記事で書きます
今のところのメリット・デメリット
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を上回ってると思いました。