サーバーアプリケーションを作ってみよう
ファイルの作成
今回は、Go と、Go の有名な web フレームワークである Echo を使ってサーバーアプリケーションを作っていきます。
~/develop/hello-server
というディレクトリを作成し、そのディレクトリを開きます。
# ディレクトリ ~/develop/hello-server を作成し、そのディレクトリを開く。
$ mkdir -p ~/develop/hello-server
$ cd ~/develop/hello-server
$ code .
INFO
先ほどのコマンドのmkdir
は、make directories
の略で-p
というオプションを付けると、階層の深いディレクトリを 1 回で作ることができます。このような説明は、man コマンド(マニュアルの man )を使うことで調べることができます。ググる前に使うと良いです。(q キーを押すことで抜けられます。)
$ man mkdir
WARNING
作ったディレクトリやファイルの名前が資料と違うと、上手く実行できない場合があります。 変えた場合には適宜読み替えてください。
作ったディレクトリの中にmain.go
を作成し、以下のプログラムを書き込みます。
package main
import (
"net/http"
"github.com/labstack/echo/v4"
)
func main() {
// Echoの新しいインスタンスを作成
e := echo.New()
// 「/hello」というエンドポイントを設定する
e.GET("/hello", func(c echo.Context) error {
// HTTPステータスコードは200番で、文字列「Hello, World.」をクライアントに返す
return c.String(http.StatusOK, "Hello, World.\n")
})
// Webサーバーをポート番号8080で起動し、エラーが発生した場合はログにエラーメッセージを出力する
e.Logger.Fatal(e.Start(":8080"))
}
Echo は、Go の標準ライブラリに入っていない外部ライブラリなので、外部からダウンロードしなければなりません。しかし、Go にはそれを自動でやってくれる Go module という便利な機能があるので使ってみましょう。以下を VSCode 内のターミナルで実行してください。(他のターミナルでも可)
TIP
ターミナルの開き方
ツールバー > Terminal > New Terminal でその時開いているディレクトリでターミナルが開きます。 もしくはCtrl
+ @
でも。
# Go module を初期化して、足りない物をインストールし、使われてない物を削除する。
$ go mod init develop
$ go mod tidy
TIP
本来この develop
の所にはリポジトリ名を入れることが多いです。詳しくは公式ドキュメントを参照してください。
続けて、main.go
を実行してサーバーを立てましょう。
# 先ほど書いたファイルを実行して、サーバーを立てる
$ go run main.go
以下のような画面が出れば起動できています。
止めるときはターミナル上にてCtrl+C
で終了できます。
WARNING
止めないと次に起動するときにポート番号を変えないとエラーが出てしまうので、使い終わったらCtrl+C
で止めるようにしましょう。
アクセスしてみる
まずはコマンドライン(ローカル)でサーバーにアクセスしてみましょう。
コマンドラインでサーバーにアクセスするには、curlというコマンドを使います。
ターミナルパネルの上にあるツールバーのプラスボタンを押すと、新たにターミナルを開くことができます。
新しくターミナルを開いて、以下のコマンドを実行してみましょう。
$ curl localhost:8080/hello
すると、レスポンスとして Hello, World が返ってきていることがわかります。
更に詳しくリクエストを見る
curl コマンドのオプションとして、リクエストなどの情報を詳しく見る-vvv
があります。
$ curl localhost:8080/hello -vvv
とすると
先程座学でやったような、リクエスト・レスポンスが送られていることがわかります。
ブラウザからアクセスする
localhost は自分自身を表すドメインなので、自分のブラウザからのみアクセスが可能です。
ブラウザで、localhost:8080/hello にアクセスしてみましょう。
基本問題
エンドポイントとして自分の traQ ID のものを生やして自己紹介を返すようにしてみましょう。main.go
に/{自分の traQ ID}
処理を追加して作ってください。
TIP
この章では、このmain.go
に処理を追加していきます。
以降のコードではすでに作ったエンドポイントを省略していますが、作ったエンドポイントは消さずに、新しいエンドポイントを追加していくようにしてください。
作り終わったら、変更を反映させるために、go run main.go
を実行したターミナル上でCtrl+C
を押してサーバーを止めた後、またgo run main.go
してサーバーを立て直しましょう。
今後main.go
を書き換えたらこの工程を行うようにして下さい。
サーバーの立て直しができたら、ブラウザでhttp://localhost:8080/{自分の traQ ID}
にアクセスするか、以下のコマンドを実行して、上手く出来ていることを確認しましょう。
$ curl http://localhost:8080/{自分の traQ ID}
例:
ここまで完成したら、講習会の実況用チャンネルに↑のようなスクリーンショットを投稿しましょう。