はじめに
今回は、Next.js+TailwindCSSを用いたプロジェクトをbunを使用して環境構築する過程を確認していきます。
環境構築の流れ
- 事前準備:以下のパッケージがインストールされていることを確認
- Homebrew/Chocolatey
- Volta
- Node.js
- bunのインストール
- プロジェクトの作成
事前準備
bunでプロジェクトを作成するためには、以下のパッケージが入っていることが好ましいです。ただし、パッケージ管理ツールは、なんでもかんでも入れると管理が煩雑になることから、使う使わないの好みが分かれますので、よく確認のうえインストールしていきましょう!
- Volta含む様々なツールに対応した汎用的なパッケージ管理ツール
- Homebrew:Macの方向け
- Chocolatey:Windowsの方向け
- 他にはwingetやscoopといったツールもありますが、より多くのツールに対応しているChocolateyを使用しています。
- Volta:Nodejsとnpmに特化したパッケージ管理ツール
- ほかには、npmやyarn、pnpmなどもあります。npmはNodeをインストールすると一緒にインストールされる標準ツールです。
- Node.js:サーバーサイドJavaScript実行環境
Homebrew/Chocolatey
Macの方は、ターミナルを開き、以下のコマンドでHomebrewをインストールします。
/bin/bash -c "$(curl -fsSL <https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh>)"

Windowsの方は、PowerShellを管理者権限で開き、以下のコマンドでChocolateyをインストールします。
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('<https://community.chocolatey.org/install.ps1>'))

Volta
PC環境に合わせて以下のコマンドでVoltaをインストールします。
- Macの方
brew install volta
- Windowsの方
choco install volta

Node.js
Voltaを使用してNode.jsをインストールします。@以降でバージョン指定できます。
volta install node@20
bunのインストール
Nodeがインストールされたので、npmを使用してbunをインストールします。
npm install -g bun
bunとは?
ここで使用したbunについて少し掘り下げます。
bunとは、高速なサーバーサイドレンダリングと従来のJavaScriptランタイムを置き換えるのに申し分ないパッケージマネージャーを備えていることで話題のJavaScript実行環境です。
例えば、pnpmはnpmなどに対して、複数プロジェクトのnode_modulesを共有するような仕組みを用いてストレージ効率化を図りましたが、このような機能をbunについても要しています。

プロジェクトの作成
一通りパッケージのインストールが完了したので、プロジェクトを作成していきます。以下のように作業フォルダを作成してbunxコマンドでNextjsプロジェクトを作成します。
対話式で選択する箇所はデフォルトに従います。
- What is your project named?
- プロジェクトの名前を設定します。ここでは、”my-app”というプロジェクト名が入力されています。
- Would you like to use TypeScript?
- TypeScriptを使用するかどうかを選択します。TypeScriptは、JavaScriptに静的型付けを追加した言語で、コードの品質と保守性を向上させることができます。”Yes”を選択すると、TypeScriptが設定されます。
- Would you like to use ESLint?
- ESLintを使用するかどうかを選択します。ESLintは、JavaScriptやTypeScriptのコードをチェックし、潜在的なエラーや問題を検出するツールです。”Yes”を選択すると、ESLintが設定されます。
- Would you like to use Tailwind CSS?
- Tailwind CSSを使用するかどうかを選択します。Tailwind CSSは、ユーティリティファーストのCSSフレームワークで、素早くカスタマイズ可能なUIを構築することができます。”Yes”を選択すると、Tailwind CSSが設定されます。
- Would you like to use
src/
directory?
- プロジェクトのソースコードを
src/
ディレクトリ内に配置するかどうかを選択します。”Yes”を選択すると、コンポーネントやページなどのソースコードがsrc/
ディレクトリ内に配置されます。
- デフォルトでNoになっている通り、公式でもあまり採用しないようなので今回も使用しません。
- Would you like to use App Router? (recommended)
- App Routerを使用するかどうかを選択します。App Routerは、Next.js 13以降で導入された新しいルーティングシステムで、ファイルベースのルーティングを提供します。”Yes”を選択すると、App Routerが設定されます。
- 従来のPagesRouterが世の中ではまだ多いようですが、今後置き換わっていくと思いますので、勉強しつつ慣れていきたいものです。デフォルトに合わせてYesです。
$ mkdir sample-project && cd sample-project
$ bunx create-next-app@latest
✔ What is your project named? … my-app
✔ Would you like to use TypeScript? … No / Yes
✔ Would you like to use ESLint? … No / Yes
✔ Would you like to use Tailwind CSS? … No / Yes
✔ Would you like to use `src/` directory? … No / Yes
✔ Would you like to use App Router? (recommended) › No / Yes
以下のコマンドでローカル環境を立ち上げます。
% bun dev
$ next dev
▲ Next.js 14.2.3
- Local: <http://localhost:3000>
✓ Starting...
✓ Ready in 3.8s
○ Compiling / ...
(node:22841) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
✓ Compiled / in 3s (532 modules)
GET / 200 in 3269ms
✓ Compiled in 370ms (250 modules)
ブラウザからhttp://localhost:3000にアクセスすると以下のようにサンプルページにアクセスできました!

shadcn/uiも使用する
続いて、shadcn/uiも設定していきます。
shadcn/uiは依存関係としてインストールしないコンポーネントライブラリで、コピーペーストできる形式のため自由度が高いです。
なぜ依存関係としてパッケージ化されずにコピー/ペーストするのでしょうか?
この背後にある考え方は、コードの所有権と制御をユーザーに与え、コンポーネントの構築方法とスタイルを決定できるようにすることです。
いくつかの賢明なデフォルトから始めて、ニーズに合わせてコンポーネントをカスタマイズします。

$ bunx shadcn-ui@latest init
✔ Which style would you like to use? › Default
✔ Which color would you like to use as base color? › Zinc
✔ Would you like to use CSS variables for colors? … no / yes
✔ Writing components.json...
✔ Initializing project...
✔ Installing dependencies...
Success! Project initialization completed. You may now add components.

ボタンの機能を搭載するには以下のコマンドを使用するようなイメージです。
$ bunx shadcn-ui@latest add button
✔ Done.

拡張機能「shadcn/ui」
拡張機能を使用することもできます。
VScodeやCursorで以下の拡張機能をインストールします。
使用したいコンポーネントが出てきたら、「cmmand+shift+p」と入力してEnterを押します。
shadcnと入力して「AddNewComponent」を選択します。

buttonと入力してEnterを押します。

ターミナルが起動して、コンポーネントがインストールされます。
$ bunx shadcn-ui add button
✔ Done.
まとめ
今回は、Nextjs+bun+TailwindCSS+shadcn/uiでプロジェクト作成を試してみました。次回以降で実際にサイト制作を進めていきたいと思います!
最後までご覧いただきありがとうございました。
コメント