6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Fiberとは(golang)

Last updated at Posted at 2022-10-31

Fiberとは

golangのフレームワークの一種です。
公式ページ によると、

Fiber is an Express inspired web framework built on top of Fasthttp, the fastest HTTP engine for Go.

FiberはFasthttp(Go言語で最速のHTTPエンジン)上に構築された、 ExpressにインスパイアされたWebフレームワークです。
(イメージとしては、golangの速さ+ Express の使い易さを合わせたフレームワークといった感じでしょうか)

Fiberを実際に使ってみる

実際にコードを見ていきます。

初めにインストールするためには、go getコマンドを実行します。

$ go get -u github.com/gofiber/fiber/v2

main.goに以下のように記述します。

main.go
package main

import "github.com/gofiber/fiber/v2"

func main() {
  app := fiber.New()
  app.Get("/", func(c *fiber.Ctx) error {
    return c.SendString("Hello, World!)")
  })
  app.Listen(":3000")
}

以下のコマンドを実行して、ブラウザで http://localhost:3000 にアクセスすると、「Hello, World!」を返すようにしました。

$ go run main.go

Expressとの比較

Expressを使用したことがある人は「おっ!」となったかもしれません。
「Express inspired web framework」と言っていたようにかなり類似していることがわかると思います。
続いて、同じ処理をExpressで記述すると、どのようになるのか見てみます。
(※Expressのインストール方法などは割愛しております。)

app.js
const express = require('express')
const app = express()

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(3000, () => {
  console.log('Example app listening at http://localhost:3000')
})

かなり似ていますね!!

速度に関して(引用

ベンチマークが実施されていたので、一部引用しました。

フレームワーク Fiber Express
レスポンス(データ更新) [回/秒] 11846 2066
平均待ち時間(データ更新) [ms] 42.8 390.44
レスポンス(単一クエリ) [回/秒] 368647 57880
平均待ち時間(単一クエリ) [ms] 0.7 4.4
レスポンス(複数クエリ) [回/秒] 19664 4302
平均待ち時間(複数クエリ) [ms] 25.7 117.2

どの結果もFiberが優れていますね。

Fiberの他の記述に関して

基本的には他の処理もExpress Likeで記述することができます。

main.go
package main

import "github.com/gofiber/fiber/v2"

func main() {
  app := fiber.New()

  // 基本的なルーティング
  app.Get("/", func(c *fiber.Ctx) error {
    return c.SendString("Hello, World!)")
  })
  
  // 静的ファイルのルーティング
  app.Static("/static_file", "./public/index.html")

  // ミドルウェアとNextを使用する場合
  app.Use(func(c *fiber.Ctx) error {
    fmt.Println("middreware and next")
    return c.Next()
  })

  app.Listen(":3000")
}

最後に

今回この記事では、以下の2つをまとめました。

  • Fiberとはどういったものなのか
  • Expressとの比較

ざっと概要だけ触れる形になってしまったので、次回の記事では、Fiberの使用に関して掘り下げていければと思います。

参考

6
2
0

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
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?