小物の開発テストに Cloud9 を使ってみたところ、小規模開発や実験に有用だねと思ったのでご紹介。
Cloud9 って?
ブラウザエディタを軸としたオンライン開発サービスです。
WEBブラウザだけでちょっとしたサーバーサイドアプリケーションの開発ができてしまいます。
ChromeBook の上でプログラム開発を行うために、開発環境のクラウドサービスがないものかなあと探して出会ったものです。実際、インターネットアクセスができる ChromeBook があれば開発ができちゃいます。
最大の特徴は簡易ホスティングで、ソースコードエディタだけでなく VM ベースのホストマシンとプレビュー公開の http アクセスを提供してくれます。ホストマシンへのコンソールもWEBブラウザ上でアクセスできるので、ソースコードを書いてコンソールでビルドしたり実行したりといったプロトタイプ開発が行えます。
有料コースだとホストが VM になって、プライベートプロジェクトが 5つまで使える様です。
無料コースだとホストは Docker コンテナで、プライベートプロジェクトは 1つだけ、かな。
go言語の開発はできるの?
ホストコンテナは ubuntu ベースで golang もインストールされています。
WEB開発がメインターゲットなのでスタートアップ時のテンプレートに go はいません。
元々 node.js の開発をターゲットに作られたみたいなので、cloud9 が真価を発揮するのは node.js プロジェクトでしょう。実際、WEB IDE によるソースコードデバッグは javascript のみとなっています。
テンプレートから 'Custom' を選ぶと何でもできるホストが用意されます。
gcc, g++, go, perl, ruby, python, node あたりは最初から入っていますし、clang が欲しいなら apt-get することで利用する事が可能です。
Custom の場合はプレーンなコンテナが一個用意されるだけなので必要なプロジェクトは自分で用意することになります。go言語の場合は IDE のエディタ機能を利用して、bash コンソールでビルド&実行をすることになります。
残念ながらデバッガは使えませんが WEBブラウザプレビューが IDE の上で行えますので、それなりに快適な開発サイクルが実現できます。
WEB版 Hello, World を作る
Custom から Workspace を作ったばかりの時は真っ新な状態です。
GOPATH 環境変数を確認すると $home に設定されているようなので、ユーザーディレクトリ部分がまるっと GOPATH になっています。なので src/プロジェクト名/ というディレクトリを作成してその中で go言語開発を行うのが良さそうです。
単純にポート 8080 を listen して "Hello, World!" を返す WEBサーバーを作成します。
package main
import (
"fmt"
"net/http"
)
func pageRequest(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", pageRequest)
// do serve
err := http.ListenAndServe(":8080", nil)
// error abort
if err != nil {
fmt.Println(err)
}
}
ビルド&実行するにはコンソール上で行います。
エディタ上でメインパッケージである main.go を開いている状態で [RUN] ボタンを押すと、編集中の言語を認識して実行してくれます。go言語でも反応してくれるので、RUN ボタン一発で動作確認することが可能です。
WEBサーバーとして動作しているとき、それがポート 8080 であったらプレビュー機能が利用できます。
IDE 上にプレビューが開いてサーバーの動作状況が確認できます。
go言語でWEBサーバープログラムを書いて、実行&動作確認ができました。
これがWEBブラウザの上ですべてこなせます。
その他情報
-
DB はローカルコンテナにインストールされているものを使う様です。必要な物がなければ apt-get でインストールすることになるでしょう。
-
git-hub や Bitbucket のアカウントでログインすることでリポジトリからのプロジェクトインポートができるようになります。ただし push はコンソールから行うことになるので、この連携はあまり使わないでコンソール上で clone, push することになるんじゃないかと思います。
Cloud9 を使うとWEBブラウザ一つでどこでも開発ができる様になるだけでなく、手元に言語環境を揃えなくても開発ができるようになります。普段使わない言語のプロトタイプを手軽に行うという場面で威力を発揮するのではないでしょうか。