1
0
mirror of https://github.com/kataras/iris.git synced 2026-07-31 00:19:50 +00:00
Files
kararas_iris/README_JA.md
T
2026-07-27 11:40:16 +03:00

102 KiB
Raw Blame History

ニュース

🚀 Iris v14 が近づいています。 次のメジャーバージョンは、このプロジェクト史上もっとも大きなリリースです。Go のジェネリクスの上に作り直されたフレームワーク、コンパイラが検査するアプリケーションビルダー、検証まで引き受けるリクエストヘルパー、ひとつの中央エラーマップ、30 個の同梱ミドルウェア、そしてリポジトリの中に同梱される一冊の本が含まれます。下の Iris v14 で何が来るのかをご覧ください。

ここで説明している v12 はこれまでどおり動き、修正も入り続けます。v14 は新しい import パスで登場するので、リリース当日にあなたの側で壊れるものはありません。

Iris Web Framework English العربية

build status view examples chat donate

Iris は、高速でシンプルでありながら、十分な機能を備えた、非常に効率的な Go 用 Web フレームワークです。

あなたの次のウェブサイトや API のために、美しく表現力豊かで使いやすい基盤を提供します。

🌟 Iris についての他の人々の意見を読み、このオープンソースプロジェクトに スターをつけて 応援してください

Benchmarks: Jul 18, 2020 at 10:46am (UTC)

package main

import "github.com/kataras/iris/v12"

func main() {
  app := iris.New()
  app.Use(iris.Compression)

  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("Hello <strong>%s</strong>!", "World")
  })

  app.Listen(":8080")
}

ある Go 開発者が言ったように、Iris はあらゆる面であなたを支え、長年にわたって揺るがずに立ち続けています

Iris が提供する機能の一部です:

  • HTTP/2(Push、埋め込みデータにも対応)
  • ミドルウェア(Accesslog、Basicauth、CORS、gRPC、Anti-Bot hCaptcha、JWT、MethodOverride、ModRevision、Monitor、PPROF、Ratelimit、Anti-Bot reCaptcha、Recovery、RequestID、Rewrite
  • API バージョニング
  • Model-View-Controller
  • Websockets
  • gRPC
  • Auto-HTTPS
  • ngrok の組み込みサポート。アプリをインターネットに公開するもっとも速い方法です
  • :uuid、:string、:int などの標準型で動的パスをパラメータとして扱える独自ルーター。独自の型も作れます
  • 圧縮
  • ビューエンジン(HTML、Django、Handlebars、Pug/Jade など)
  • 独自のファイルサーバーを構築し、自前の WebDAV サーバーをホスト
  • キャッシュ
  • ローカライズ(i18n、sitemap
  • セッション
  • 豊富なレスポンス(HTML、Text、Markdown、XML、YAML、Binary、JSON、JSONP、Protocol Buffers、MessagePack、コンテントネゴシエーション、ストリーミング、Server-Sent Events など)
  • レスポンス圧縮(gzip、deflate、brotli、snappy、s2
  • 豊富なリクエスト(URL Query、Headers、Form、Text、XML、YAML、Binary、JSON のバインド、バリデーション、Protocol Buffers、MessagePack など)
  • 依存性注入(MVC、Handlers、API Routers
  • テストスイート
  • そして何より大切なこと... 初日から今日まで、素早い回答とサポートが得られます

🚀 Iris v14 で何が来るのか

Iris v14 はこのプロジェクト史上もっとも大きなリリースです。フレームワークを Go のジェネリクスの上に作り直し、アプリケーションの組み立て方そのものを変えます。main での配線は減り、ハンドラは短くなり、これまで各ルートに散らばっていた判断がひとつの場所に集まります。

今日のあなたが何かする必要はありません。v12 はこれまでどおり動き、修正も入り続けます。v14 は、名前が変わった API と削除された API のすべてを網羅した移行ガイドとともに届きます。

アプリケーション全体を、コンパイラが検査する 1 本のチェーンで

iris.NewBuilder は CORS、圧縮、アクセスログ、ヘルスエンドポイント、エラーマップ、あなたのサービスと API グループを 1 つの式で結線します。ステップの順序はコンパイラが強制するので、アプリケーションは正しくビルドされるか、まったくビルドされないかのどちらかです。

iris.NewBuilder().
    Prefix("/api").
    AllowOrigin("*").
    Compression(true).
    LogRequests(true).
    Health(true, "production", "kataras").
    Errors(errors.NewOptions().
        MapErrors(errors.NotFound, catalog.ErrNotFound)).
    Services(catalog.NewRepository, catalog.NewService).
    API("/products", api.NewProductsAPI).
    Build().
    Listen(":8080")

ハンドラが同じことを繰り返さなくなる

デコード、バリデーション、エラー描画がハンドラ本体から出ていきます。rest.ReadJSON[T] はリクエストをデコードし、型に Validate() error があれば実行し、400 まで自分で書きます。レスポンスヘルパーは成功時のステータスを書くか、中央のマップがそのエラーに定めた応答を書きます。

func (api *ProductsAPI) create(ctx iris.Context) {
    input, ok := rest.ReadJSON[catalog.ProductInput](ctx)
    if !ok {
        return // 400 は書き込み済み: 不正な JSON か Validate 失敗。
    }

    id, err := api.svc.Create(ctx, input)
    rest.Created(ctx, id, err) // 201、または中央でマッピングされたエラー。
}

rest.OKrest.NoContentrest.Countrest.Paginated が、API が返すそれ以外の形をカバーします。

エラーは一度だけ宣言する

新しい rest/errors パッケージが、あなたのドメインエラーと HTTP レスポンスの対応を保持します。クライアントには正規化された機械可読のペイロードが届きます。内部メッセージは内部にとどまります。コレクターを登録すれば、すべての失敗がひとつの場所からロガーやデータベースへ届きます。クライアントが何を要求したかに応じて、エラーは JSON にもビューにも描画できます。

依存性注入は MVC だけのものではなくなる

コンストラクタが必要なものを宣言し、コンテナがそれを提供します。ハンドラでも、API グループでも、コントローラでも同じです。Init(ctx context.Context) error を実装したサービスは Build() の中で一度だけ実行されます。閉じられるものはシャットダウン時に閉じられます。hero パッケージはなくなり、より少ない行数でより多くをこなす deprest が引き継ぎます。MVC コントローラはジェネリクスの上に作られています。

パッケージは思ったとおりの場所にある

sessionscachewebsocketi18nviewversioning はミドルウェアになりました。mvccontroller の下に移り、新しい fileserversitemapapigraph コントローラと並びます。apigraph はあなたのルートツリーをインタラクティブな D3 グラフとして描きます。

30 個のミドルウェアが同梱され、その中には新しいものもあります: httpcost(リクエストごとの時間・メモリ・CPU。性能分析や課金に使えます)、bodylimitcompresscounterreferrergeolocationipaccessservertiming。ビューエンジンの実装は iris-contrib/views に移りました。

設定は部分的なリテラル

iris.ConfigurationWith* の設定関数は iris.Options に置き換わります。気にするフィールドだけを書けば、残りはデフォルトから来ます。BindSERVER_CONFIG 環境変数から、次にファイルから YAML を読み込みます。

app := iris.New(iris.Options{Name: "myapp", LogLevel: "debug"})

名前が、していることをそのまま表す

リクエストヘッダの読み取りとレスポンスヘッダの設定が、意味の反転する同じ接頭辞を共有しなくなりました。ctx.Header はリクエストを読み、ctx.SetHeaderctx.ResponseHeader はレスポンスを扱います。PartyRouter になりました。ctx.URLParamctx.Query().Get になりました。改名はすべて置き換え先とともに移行ガイドに載っており、その大半は検索と置換 1 回で済みます。

既定で安全

セッション Cookie は SecureSameSite=Lax 付きで発行されます。リクエストボディの上限はすべての読み取り経路で適用されます。作り直しの過程で長年のバグも片づきました。制限を記録するだけで一度も適用していなかったレートリミッタや、プロセスごと巻き込みかねなかった Logout の呼び出しなどです。

最初から最後まで読めるドキュメント

v14 にはリポジトリ内に収録された 23 章の本、テスト付きの REST API を 1 つの文書で組み立てる入門チュートリアル、v12 アプリケーション向けの移行ガイド、そしてソースから生成されコードベースへの質問に答えるライブ AI wiki が付いてきます。

あなたの v12 コードにとっての意味

import パスは github.com/kataras/iris/v14 になります。v12 と v14 は並んで存在でき、リリース当日に壊れるものはありません。都合のよいときにアップグレードしてください。移行ガイドは import パス、パッケージの移動、削除された API とその置き換え、挙動の変更を扱い、機械的な部分にはそのまま使えるコマンドが付いています。

公開されたリリース日はまだありません。リリースを見守るか、@iris_framework をフォローすれば、いちばん早く知ることができます。

👑 サポーター

みなさんの力があれば、オープンソースの Web 開発をすべての人にとってより良いものにできます!

getsentry github lensesio thepunterbot h4rdc0m draFWM gf3 trading-peter AlbinoGeek basilarchia sumjoe simpleittools xiaozhuai Remydeme celsosz linxcoder jnelle TechMaster janwebdev altafino jakoubek alekperos day0ng hengestone thomasfr code-chimp CetinBasoz International Juanses SometimesMage ansrivas boreevyuri brentwilson camilbinas ekobayong lexrus li3p madhu72 mosorize se77en tstangenberg vincent-li DavidShaw sascha11110 clichi2002 derReineke Sirisap22 primadi agoncecelia chrisliang12 zyu hobysmith pluja antonio-pedrazzini clacroix njeff3 ixalender mubariz-ahmed Cesar th31nitiate stgrosshh Didainius DmarshalTU IwateKyle Little-YangYang Major2828 MatejLach amritpal042 andrefiorot boomhut cshum dtrifonov gadokrisztian geordee guanting112 iantuan ichenhe rodrigoghm icibiri jewe11er jfloresremar jingtianfeng kilarusravankumar leandrobraga lfbos lpintes macropas marcmmx mark2b miguel-devs mihado mmckeen75 narven odas0r olaf-lexemo pitexplore pr123 rsousacode sankethpb wixregiga GeorgeFourikis saz59 shadowfiga siriushaha skurtz97 srinivasganti syrm tuhao1020 BlackHole1 L-M-Sherlock claudemuller keymanye wahyuief xuyan2018 xvalen xytis ElNovi IpastorSan KKP4 Lernakow ernestocolombo francisstephan pixelheresy rcapraro soiestad spkarason thanasolykos ukitzmann DanielKirkwood colinf simonproctor FernandoLangOFC Firdavs9512 Flammable-Duck Gepetdo Hongjian0619 JoeD Jude-X Kartoffelbot KevinZhouRafael KrishManohar Laotanling Longf99999 Lyansun MihaiPopescu1985 TBNilles ajanicij aprinslo1 Mohammed8960 NA Neulhan kyoukhana spazzymoto victorgrey ArishSultan ehayun kukaki oshirokazuhide t6tg 15189573255 AGPDev AnatolyUA AwsIT NguyenPhuoc Oka00 PaddyFrenchman RainerGevers Ramblestsad SamuelNeves Scorpio69t Serissa4000 TianJIANG Ubun1 WangYajun39 XinYoungCN YukinaMochizuki a112121788 acdias aeonsthorn agent3bood ajb-neodynamics-io alessandromarotta algobot76 algoflows angelaahhu anhxuanpham annieruci antoniejiao artman328 b2cbd baoch254 bastengao beytullahakyuz bjoroen blackHoleNgc1277 bunnycodego carlos-enginner centratelemedia chrismalek civicwar cnzhangquan cuong48d damiensy danlanxiaohei dextercai dfaugusto dkzhang dloprodu donam-givita dph0899 dvitale ec0629 edwindna2 ekiyooka ekofedriyanto eli-yip eljefedelrodeodeljefe fenriz07 ffelipelimao frenchmajesty gastropulgite geGao123 globalflea gloudx gnosthi gogoswift goten002 guanzi008 hdezoscar93 hieungm hieunmg homerious hzxd inyellowbus iuliancarnaru iysaleh jackptoke jackysywk jeff2go jeremiahyan joelywz kamolcu kana99 edsongley katsubushiken kattaprasanth keeio keval6706 khasanovrs kkdaypenny knavels kohakuhubo korowiov kostasvk lafayetteDan lbsubash leki75 lemuelroberto liheyuan lingyingtan linuxluigi lipatti maikelcoke marek-kuticka marman-hp mattbowen maxgozou maxgozzz mitas mizzlespot mkell43 mnievesco mo3lyana motogo mtrense mukunhao mulyawansentosa nasoma ngseiyu nikharsaxena nronzel odelanno onlysumitg xPoppa yesudeep ymonk yonson2 yshengliao ytxmobile98 yusong-offx zhenggangpku zou8944 SergeShin - BelmonduS Diewald cty4ka martinjanda evan hazmi-e205 jtgoral ky2s lauweliam ozfive paulcockrell paulxu21 pesquive petros9282 phil535 pitt134 poscard qiepeipei qiuzhanghua rapita rbondi relaera remopavithran rfunix rhernandez-itemsoft rikoriswandha risallaw robivictor rubiagatra rubyangxg rxrw saleebm sbenimeli sebyno seun-otosho shobhitsinghal77 solohiroshi su1gen sukiejosh suresh16671 svirmi terjelafton thiennguyen93 unixedia vadgun valsorym vguhesan vpiduri vrocadev vuhoanglam walter-wang martinlindhe mdamschen letmestudy michaelsmanley Curtman SridarDhandapani madrigaltenor opusmagna ShahramMebashar b4zz4r bobmcallan fangli galois-tnp mblandr midhubalan netbaalzovf oliverjosefzimmer peacememories talebisinan valkuere lfaynman ArturWierzbicki aaxx crashCoder derekslenk dochoaj evillgenius75 gog200921 mauricedcastro mwiater sj671 statik supersherm5 thejones CSRaghunandan ndimorle rosales-stephanie shyyawn vcruzato wangbl11 wofka72 geoshan juanxme nguyentamvinhlong yoru74 xsokev oleang michalsz pomland-94 tejzpr theantichris tuxaanand raphael-brand willypuzzle dmcbane malcolm-white-dti HieuLsw carlosmoran092 yangxianglong

📖 Iris を学ぶ

インストール

必要なのは Go プログラミング言語だけです。

新しいプロジェクトを作る

$ mkdir myapp
$ cd myapp
$ go mod init myapp
$ go get github.com/kataras/iris/v12@latest # または @v12.2.11
既存のプロジェクトにインストールする
$ cd myapp
$ go get github.com/kataras/iris/v12@latest

実行

$ go mod tidy -compat=1.23 # windows では -compat="1.23"。
$ go run .

Iris には広範で詳細な ドキュメント があり、フレームワークを簡単に使い始められます。

より詳しい技術ドキュメントは godocs をご覧ください。実行できるコードは、いつでもリポジトリの ./_examples サブディレクトリにあります。

Plexon AI で開発する

Plexon AI は Hellenic Development によるクロスプラットフォームの AI コーディングアシスタントで、専用の Iris スキルを同梱しています。フレームワークの作者自身が書いた v14 開発ガイドで、ルーティングとマクロ、context API、rest ヘルパー、エラー処理、30 個すべてのミドルウェア、組み込みコントローラ、認証 SDK、セキュリティ強化、永続化、キャッシュ、i18n、可観測性、パフォーマンス、テスト、デプロイ、そして v12 から v14 への移行を扱う 19 本のリファレンス文書が含まれます。

Software Developer ペルソナをインストールすれば、Iris スキルもそれが有効にするエンジニアリング系エージェントと並んで一緒に入ります。以降、アシスタントは学習中にたまたま見たものから推測するのではなく、このフレームワークが本来意図された使い方どおりに Iris のコードを書きます。

旅行中に読書を楽しみますか?

Book cover

follow author on twitter

follow Iris web framework on twitter

follow Iris web framework on facebook

Iris 電子書籍(新版)の PDF とオンラインアクセスを今日リクエストして、Iris の開発に参加できます。

🙌 コントリビュート

Iris Web Framework へのあなたの貢献をお待ちしています! Iris プロジェクトへの貢献方法について詳しくは CONTRIBUTING.md をご覧ください。

すべてのコントリビューター一覧

🛡 セキュリティ脆弱性

Iris にセキュリティ上の脆弱性を発見した場合は、iris-go@outlook.com までメールをお送りください。すべてのセキュリティ脆弱性は速やかに対処されます。

📝 ライセンス

このプロジェクトは、Go プロジェクト自体と同じ BSD 3-clause ライセンスの下で提供されます。

プロジェクト名「Iris」はギリシャ神話に由来します。