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に以下のように記述します。
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のインストール方法などは割愛しております。)
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で記述することができます。
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の使用に関して掘り下げていければと思います。