Skip to content

サーバーアプリケーションを作ってみよう

ファイルの作成

今回は、Go と、Go の有名な web フレームワークである Echo を使ってサーバーアプリケーションを作っていきます。

~/develop/hello-serverというディレクトリを作成し、そのディレクトリを開きます。

bash
# ディレクトリ ~/develop/hello-server を作成し、そのディレクトリを開く。

$ mkdir -p ~/develop/hello-server
$ cd ~/develop/hello-server
$ code .

INFO

先ほどのコマンドのmkdirは、make directoriesの略で-pというオプションを付けると、階層の深いディレクトリを 1 回で作ることができます。このような説明は、man コマンド(マニュアルの man )を使うことで調べることができます。ググる前に使うと良いです。(q キーを押すことで抜けられます。)

bash
$ man mkdir

WARNING

作ったディレクトリやファイルの名前が資料と違うと、上手く実行できない場合があります。 変えた場合には適宜読み替えてください。

作ったディレクトリの中にmain.goを作成し、以下のプログラムを書き込みます。

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 + @でも。

bash
# Go module を初期化して、足りない物をインストールし、使われてない物を削除する。

$ go mod init develop
$ go mod tidy

TIP

本来この develop の所にはリポジトリ名を入れることが多いです。詳しくは公式ドキュメントを参照してください。

続けて、main.go を実行してサーバーを立てましょう。

bash
# 先ほど書いたファイルを実行して、サーバーを立てる

$ go run main.go

以下のような画面が出れば起動できています。

止めるときはターミナル上にてCtrl+Cで終了できます。

WARNING

止めないと次に起動するときにポート番号を変えないとエラーが出てしまうので、使い終わったらCtrl+Cで止めるようにしましょう。

アクセスしてみる

まずはコマンドライン(ローカル)でサーバーにアクセスしてみましょう。
コマンドラインでサーバーにアクセスするには、curlというコマンドを使います。
ターミナルパネルの上にあるツールバーのプラスボタンを押すと、新たにターミナルを開くことができます。

新しくターミナルを開いて、以下のコマンドを実行してみましょう。

bash
$ curl localhost:8080/hello

すると、レスポンスとして Hello, World が返ってきていることがわかります。

更に詳しくリクエストを見る

curl コマンドのオプションとして、リクエストなどの情報を詳しく見る-vvvがあります。

bash
$ 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} にアクセスするか、以下のコマンドを実行して、上手く出来ていることを確認しましょう。

bash
$ curl http://localhost:8080/{自分の traQ ID}

例:

ここまで完成したら、講習会の実況用チャンネルに↑のようなスクリーンショットを投稿しましょう。