LoginSignup
5
6

More than 5 years have passed since last update.

IBM Cloud を利用して Go言語のアプリ開発入門(その1)

Last updated at Posted at 2018-01-13

Go言語のサンプルコードをGitからクローンして、ローカル環境でテストして、IBMクラウドにデプロイして公開するまでの流れを書いたものです。Bluemix のカタログには、以下の様なアイコンがあり、Go言語で書かれたサンプル・インスタンスを起動できるのですが、その後に何をしたら良いのか良くわかりません。そこで、GitからクローンしたGo言語のソースコードを自分のPC上でコードを編集して、ビルド&テスト、そして公開といった流れに沿って、確認してみました。

スクリーンショット 2018-01-13 11.52.46.png

Golangのマスコット・キャラ
ホリネズミ.png

ローカル環境にGo言語の開発環境をインストール

Ubuntu Linuxリポジトリから Go言語をインストールする

参考: Go Ubuntu Wiki https://wiki.ubuntu.com/Go
次はインストールでコマンドを実行する順番です。

$ sudo apt-get update
$ sudo apt-get install golang
$ go version
go version go1.2.1 linux/amd64

結構古いバージョンなので、goenvを利用してGo言語のバージョンを変更できる様にインストールする事にします。

goenvを利用してGo言語をインストール

参考:GitHub https://github.com/syndbg/goenv

インストールする方法などは、pyenvやndenvと同じ要領です。

git clone https://github.com/syndbg/goenv.git ~/.goenv

ログイン・シェルに設定を加えます。

echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bash_profile
echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(goenv init -)"' >> ~/.bash_profile

利用できるバージョンをリストして、インストールしてから、対象のディレクトリ下でバージョンを指定します。 globalのオプションで全体指定もできます。

goenv install -l 
goenv install 1.9.2
goenv local 1.9.2

切り替わっていることの確認です

$ go version
go version go1.9.2 linux/amd64

パッケージ依存関係ツールのインストール

参考:https://github.com/tools/godep

Go言語で開発するためのディレクトリを作成して移動して、環境変数GOPATHを設定します。
それから、go get github.com/tools/godepを実行します。 この例のディレクトリは share/golang

~$ echo $GOPATH
/home/vagrant/share/golang
~$ cd $GOPATH
~/share/golang$ ls

~/share/golang$ go get github.com/tools/godep
~/share/golang$ ls
bin  pkg  src

Go言語のサンプルアプリをcloneしてビルド

IBM Cloud (旧 Bluemix)のサンプルコードをgit cloneしてからビルドします。 このサンプル・アプリ https://github.com/IBM-Cloud/go-hello-world にあります。

cd $GOPATH/src
git clone https://github.com/IBM-Cloud/go-hello-world
cd go-hello-world
make

もし、バージョンが古くてエラーになる場合は、goenvでグローバルにgo言語のバージョンを指定します。

goenv global 1.9.2

ローカル環境でテスト

ビルドできた実行モジュールを次の様に実行して、curlコマンでアクセスします。

スクリーンショット 2018-01-13 11.14.36.png

curlコマンドと応答です。 HTMLとJSON形式と両方で応答がきていることがわかります。

~$ curl http://localhost:8080
<html><h1>
    Main website
</h1>
</html>

~$ curl http://localhost:8080/hi
{"message":"hi"}

終わったら必須ではないですが、Cloud Foudry上でビルドできる事を確認するために make clean を実行しておきます。

IBM Cloud へデプロイして公開する

IBM Cloud のアカウントの取得

もしも、IBM Cloud のアカウントが無い場合は、https://console-regional.au-syd.bluemix.net/registration/?target=%2Fdashboard%2Fapps から作成します。

スクリーンショット 2018-01-13 11.47.22.png

アカウント取得後に、画面の案内に従って、コマンドラインのツールもインストールします。

IBM Cloud Cloud Foundryアプリとしてデプロイ

デプロイの前に、設定を2箇所修正します。

  • manifest.yml の hostname が一意になる様にします。 例えば host: go-hello-world-takara の様にホスト名の末尾に自分の名前などを追加しても良いと思います。
  • Godeps/Godeps.jsonファイルの"GoVersion": "go1.9.1" という様に、新しいバージョンに変更します。

ログインして bx cf push する事で、Cloud Foundry アプリケーションとしてデプロイできます。

$ bx login
$ bx cf push

テスト

デプロイする時に、urlsと表示されるところが、WebアプリケーションのURLになります。

$ bx cf push 
<中略>
requested state: started
instances: 1/1
usage: 128M x 1 instances
urls: go-hello-world-takara.mybluemix.net

curlでアクセスして確認します。

$ curl https://go-hello-world-takara.mybluemix.net/
<html><h1>
    Main website
</h1>
</html>

$ curl https://go-hello-world-takara.mybluemix.net/hi
{"message":"hi"}

まとめ

やってみて、IBM Cloud で Go言語を利用して、Webアプリケーションを開発するのも簡単なんだということが判りました。
DBなどのサービスをバインドして、そのサービス資格情報を取得する方法など、書いていけたら良いですね。

参考資料

1 IBM-Cloud/go-hello-world https://github.com/IBM-Cloud/go-hello-world
2 今さらだけど、Go言語に入門するための情報源 https://qiita.com/MahoTakara/items/10fede35c03db1e3b849

5
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6