Help us understand the problem. What is going on with this article?

ひっまやなぁ 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言語を習得してみてはいかがでしょうか。急ぎ足で解説したので、疑問点があればお問い合わせください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away