ひっまやなぁ GW中にREST APIをお手軽に実装できる言語とフレームワークとかないよなぁ


ITTL勉強会1日目の記事です。

あるよ

package main

import "github.com/kataras/iris"

func main() {
    app := iris.Default()
    app.Get("/ittl", func(ctx iris.Context) {
        ctx.JSON(iris.Map{
            "message ": "GWはirisとgo",
        })
    })
    app.Run(iris.Addr(":8080"))
}

どーせありきたりなスクリプト言語やろ

それではこちらを、ご覧ください。
ベンチマーク
https://github.com/kataras/iris より引用

そう、Go言語はありきたりなスクリプト言語じゃない。軽量×お手軽×ハイパフォーマンスを描いた最高の言語なんだよ!
コンパイル言語だからバイナリを配布するだけで、実行可能!勉強しない方がおかしいねw
さぁみんなも乗り遅れないで!Golangで検索ゥー!

Go言語とは

Windows、macOS、Linux用でコンパイル可能なプログラミング言語。OSSで開発されており、Googleの中の人によって設計されました。ver1.11からWebAssemblyのサポートも開始。

irisとは

Go言語のWebフレームワーク。今回はこちらのフレームワークを利用し、解説を行います。

マイナー言語?

A. メジャー言語
動画配信サイトのAbemaTVでも採用するほどハイパフォーマンス。
https://speakerdeck.com/miyukki/the-background-of-video-distribution-in-abematv-during-one-year?slide=15

Go言語の基礎

こちらの記事に綺麗にまとまっていたので、参考にしてください。
特に宣言の「:=ってなんやねん、=とちゃうんか!」ってなると思うのでここだけ引用しておきます。

// 宣言した後、値を代入パターン
var msg string
msg = "hello world"

// 宣言と代入を一緒にするパターン

var msg string = "Hello World"

// 宣言と代入を一緒にするパターン (型省略可能)
var msg = "Hello Hello"

// 宣言と代入を一緒にするパターン (var省略)
msg := "Super Hello"

DBと接続

MongoDBと接続するコードです。
小技として、import文をかっこで囲うと一括でimportしてくれます。

package main

import (
    "github.com/kataras/iris"
     mgo "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)

type Human struct {
    NAME string `json:"name"`
    PLANS Plan[] `json:"plans"`
}

type Plan struct {
    PLAN_NAME stirng `json:plan_name`
}

func main() {
    // Webサーバ立ち上げ
    app := iris.Default()

    // DB接続
    session, _ := mgo.Dial("mongodb://localhost/test")
    // Webサーバ終了時にセッション破棄
    defer session.Close()
    // セッション確立
    db := session.DB("test")

    app.Get("/schedule", func(ctx iris.Context) {
        // DBからの戻りを買う脳する変数
        schedules := []Human{}
        // DBに問い合わせ
        err := db.C("card").Find(bson.M{}).All(&schedules)
        if err != nil {
            // err発生
        }
        // JSONに詰め込みクライアントに返却
        ctx.JSON(cardInfo)
    }

    app.Run(iris.Addr(":8080"))
}

最後に

Go言語は少し癖がありますが、慣れてしまえば今まで以上に高速にWeb開発ができると思います。今回はREST APIでしたが、View部も実装することは可能です。ぜひこの機会にGo言語を習得してみてはいかがでしょうか。急ぎ足で解説したので、疑問点があればお問い合わせください。