今更ながらTypeScriptで話題になっているT3 Stackについて調べてみました。
ちょうど現在、新しいプロジェクトを始める予定のため、新しいアーキテクチャを試そうということで調べつつまとめてみました。
T3 Stackは、公式サイトに"Typesafe From The Start"と書いている通り、モジュール性を妥協することなく型安全にしたフレームワークです。
T3 Stackの構成は以下のようになっています。
このように、自ら何かを追加しなくても、ある程度のWebアプリケーションならT3 Stackで解決できるでしょう。
フレームワークを形作る構成を見れば予想もつきそうなところではありますが、調べてみて「ここ良いな」と感じた点をまとめます。
.env
をサポートしているところ必要最小限ではありますが、こういった開発指針がわかりやすいおかげで余計なことを考えずに済みます。
ここまで見てきたところ、特に欠点らしい欠点が見られないT3 Stackですが、実用性はどうでしょうか。
こういったフレームワークをさらにフレームワーク化(React -> Next.js -> T3 Stack)する試みで心配なのはやはり拡張性です。
T3 Stackも、基本的には他のライブラリを追加しないことを前提としている部分があるため、T3 Stackの枠外に出ない前提であれば実用性があると言えるでしょう。
一言でまとめれば「コンパクトでシンプルな認証付きWebアプリ」であればプロダクトレベルでも使えると言って良いという感想です。
公式ドキュメントに書いてある通り、さまざまなパッケージ管理ツールやバンドラーでインストールできますが、今回はpnpmを利用します。
こちらを実行すると以下のようなプロンプトでプロジェクトを作成できます。それぞれの質問文に対して日本語訳をつけています。
サクッと完了するので、プロジェクトに移動して内容を確認します。
シンプルな内容になっていますが、このままいくつかのコマンドでプロジェクトを開始できます。
プロンプトで表示されたメッセージに従ってコマンドを入力していきます。
今回は pnpm dev
の時点で以下のようなエラーが出ました。
どうやらデフォルトでDiscord認証を設定するようにされているようなので、 src/env.js
の中身を修正します。 DISCORD_CLIENT_ID
と DISCORD_CLIENT_SECRET
をコメントアウトします。
これで pnpm dev
で起動し、 http://localhost:3001/
にブラウザでアクセスすればT3 Stackが立ち上がります。
まだ十分に触ったと言えませんが、コンパクトさとシンプルさは非常に好感触です。
ライブラリ選定の自由度や拡張性という意味でいえば縛りを感じますが、それが逆にすべきことに集中させてくれます。
せっかくなのでしばらくT3 Stackで新しいプロジェクトを走らせてみて、Tipsや続きの感想ができたらこのコンテンツに書き足していこうと思います。