Communityコーディング&開発github.com

kit:web-frameworks(Webフレームワークスキルグループ)

Next.js(App Router、RSC、SSR、ISR)とTurborepoモノレポを使用した開発。Reactアプリ、サーバーサイドレンダリング、ビルド最適化、キャッシュ戦略、依存関係の共有に活用します。

kit:web-frameworks(Webフレームワークスキルグループ) とは?

このスキルグループは、Next.js、Turborepo、RemixIconを組み合わせて最新のフルスタックWebアプリケーションを構築するための包括的なガイドです。Next.jsはSSR、SSG、RSCなどの機能を備えたReactフレームワークで、TurborepoはJavaScript/TypeScript向けの高性能モノレポビルドシステム、RemixIconは3100以上のアイコンを提供するアイコンライブラリです。単一アプリケーションからモノレポ構成まで、プロジェクトの規模や要件に応じて適切なスタックを選択できます。設定例、共通パターン、ベストプラクティス、CI/CDパイプラインのテンプレートなど、実践的なリファレンスを提供します。主にClaude CodeやClineなどのAIエージェント環境での使用を想定し、開発者が効率的にセットアップと開発を進められるよう支援します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/darrenak403/kit-skills/tree/HEAD/skills/kit-web-frameworks

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Webフレームワークスキルグループ

Next.js、Turborepo、RemixIconを使用したモダンなフルスタックWebアプリケーション構築のための包括的なガイドです。

概要

このスキルグループは、Web開発のための3つの強力なツールを組み合わせています。

Next.js - SSR、SSG、RSC、最適化機能を備えたReactフレームワーク Turborepo - JavaScript/TypeScript向けの高性能モノレポビルドシステム RemixIcon - 3100以上のアウトラインと塗りつぶしスタイルのアイコンライブラリ

このスキルグループを使用するタイミング

  • モダンなReactを使った新しいフルスタックWebアプリケーションの構築
  • 複数のアプリと共有パッケージを持つモノレポのセットアップ
  • サーバーサイドレンダリングと静的生成の実装
  • インテリジェントなキャッシュによるビルドパフォーマンスの最適化
  • プロフェッショナルなアイコンセットを使用した一貫性のあるUIの作成
  • 複数のプロジェクトにわたるワークスペース依存関係の管理
  • 適切な最適化を施したプロダクション対応アプリケーションのデプロイ

スタック選択ガイド

単一アプリケーション:Next.js + RemixIcon

スタンドアロンアプリケーションを構築する場合に使用します。

  • Eコマースサイト
  • マーケティングサイト
  • SaaSアプリケーション
  • ドキュメントサイト
  • ブログとコンテンツプラットフォーム

セットアップ:

npx create-next-app@latest my-app
cd my-app
npm install remixicon

モノレポ:Next.js + Turborepo + RemixIcon

共有コードを持つ複数のアプリケーションを構築する場合に使用します。

  • マイクロフロントエンド
  • マルチテナントプラットフォーム
  • 共有コンポーネントライブラリを備えた内部ツール
  • ロジックを共有する複数のアプリ(Web、管理画面、モバイルWeb)
  • ドキュメントサイト付きデザインシステム

セットアップ:

npx create-turbo@latest my-monorepo
# その後、apps/ ディレクトリにNext.jsアプリを設定
# 共有UIパッケージにremixiconをインストール

フレームワーク機能比較

機能Next.jsTurborepoRemixIcon
主な用途WebフレームワークビルドシステムUIアイコン
最適な用途SSR/SSGアプリモノレポ一貫性のあるアイコンセット
パフォーマンス組み込み最適化キャッシュと並列タスク軽量フォント/SVG
TypeScript完全サポート完全サポート型定義利用可能

クイックスタート

Next.jsアプリケーション

# 新しいプロジェクトを作成
npx create-next-app@latest my-app
cd my-app

# RemixIconをインストール
npm install remixicon

# レイアウトにインポート
# app/layout.tsx
import 'remixicon/fonts/remixicon.css'

# 開発サーバーを起動
npm run dev

Turborepoモノレポ

# モノレポを作成
npx create-turbo@latest my-monorepo
cd my-monorepo

# 構成:
# apps/web/          - Next.jsアプリケーション
# apps/docs/         - ドキュメントサイト
# packages/ui/       - RemixIconを使用した共有コンポーネント
# packages/config/   - 共有設定ファイル
# turbo.json         - パイプライン設定

# すべてのアプリを実行
npm run dev

# すべてのパッケージをビルド
npm run build

RemixIcon統合

// Webフォント(HTML/CSS)
<i className="ri-home-line"></i>
<i className="ri-search-fill ri-2x"></i>

// Reactコンポーネント
import { RiHomeLine, RiSearchFill } from "@remixicon/react"
<RiHomeLine size={24} />
<RiSearchFill size={32} color="blue" />

リファレンスナビゲーション

Next.jsリファレンス:

Turborepoリファレンス:

RemixIconリファレンス:

  • 統合ガイド - インストール、使用方法、カスタマイズ、アクセシビリティ

一般的なパターンとワークフロー

パターン1:フルスタックモノレポ

my-monorepo/
├── apps/
│   ├── web/              # 顧客向けNext.jsアプリ
│   ├── admin/            # 管理ダッシュボードNext.jsアプリ
│   └── docs/             # ドキュメントサイト
├── packages/
│   ├── ui/               # RemixIconを使用した共有UI
│   ├── api-client/       # APIクライアントライブラリ
│   ├── config/           # ESLint、TypeScript設定
│   └── types/            # 共有TypeScript型定義
└── turbo.json            # ビルドパイプライン

turbo.json:

{
  "$schema": "https://turbo.build/schema.json",
  "pipeline": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": [".next/**", "!.next/cache/**", "dist/**"]
    },
    "dev": {
      "cache": false,
      "persistent": true
    },
    "lint": {},
    "test": {
      "dependsOn": ["build"]
    }
  }
}

パターン2:共有コンポーネントライブラリ

// packages/ui/src/button.tsx
import { RiLoader4Line } from "@remixicon/react";

export function Button({ children, loading, icon }) {
  return (
    <button>
      {loading ? <RiLoader4Line className="animate-spin" /> : icon}
      {children}
    </button>
  );
}

// apps/web/app/page.tsx
import { Button } from "@repo/ui/button";
import { RiHomeLine } from "@remixicon/react";

export default function Page() {
  return <Button icon={<RiHomeLine />}>ホーム</Button>;
}

パターン3:最適化されたデータフェッチ

// app/posts/[slug]/page.tsx
import { notFound } from "next/navigation";

// ビルド時の静的生成
export async function generateStaticParams() {
  const posts = await getPosts();
  return posts.map((post) => ({ slug: post.slug }));
}

// 1時間ごとに再検証
async function getPost(slug: string) {
  const res = await fetch(`https://api.example.com/posts/${slug}`, {
    next: { revalidate: 3600 },
  });
  if (!res.ok) return null;
  return res.json();
}

export default async function Post({ params }: { params: { slug: string } }) {
  const post = await getPost(params.slug);
  if (!post) notFound();

  return <article>{post.content}</article>;
}

パターン4:モノレポCI/CDパイプライン

# .github/workflows/ci.yml
name: CI
on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 18
      - run: npm install
      - run: npx turbo run build test lint
        env:
          TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
          TURBO_TEAM: ${{ secrets.TURBO_TEAM }}

ユーティリティスクリプト

scripts/ ディレクトリにあるPythonユーティリティ:

nextjs_init.py - ベストプラクティスでNext.jsプロジェクトを初期化 turborepo_migrate.py - 既存のモノレポをTurborepoに変換

使用例:

# TypeScriptと推奨設定で新しいNext.jsアプリを初期化
python scripts/nextjs_init.py --name my-app --typescript --app-router

# 既存のモノレポをドライランでTurborepoに移行
python scripts/turborepo_migrate.py --path ./my-monorepo --dry-run

# テストを実行
cd scripts/tests
pytest

ベストプラクティス

Next.js:

  • デフォルトでサーバーコンポーネントを使用し、必要な場合にのみクライアントコンポーネントを使用する
  • 適切なローディングとエラー状態を実装する
  • 自動最適化のためにImageコンポーネントを使用する
  • SEOのために適切なメタデータを設定する
  • キャッシュ戦略(force-cache、revalidate、no-store)を活用する
  • Next.jsの安定したセキュリティリリースをcanaryフレームワークのドリフトとは別に追跡する。プロダクションアプリはパッチ適用済みの安定版リリースラインに留め、特定のアップストリーム問題をテストする場合を除き、canary専用ピンを避ける。

Turborepo:

  • 明確な分離(apps/、packages/)でモノレポを構成する
  • タスク依存関係を正しく定義する(トポロジカルには^build)
  • 適切なキャッシュのために出力を設定する
  • チームコラボレーションのためにリモートキャッシュを有効にする
  • 変更されたパッケージのみでタスクを実行するためにフィルターを使用する

RemixIcon:

  • ミニマルなインターフェースにはラインスタイル、強調には塗りつぶしを使用する
  • 鮮明なレンダリングのために24x24グリッドに合わせる
  • アクセシビリティのためにaria-labelを提供する
  • 柔軟なテーマ設定のためにcurrentColorを使用する
  • 複数のアイコンにはWebフォント、単一アイコンにはSVGを推奨

リソース

実装チェックリスト

このスタックでの構築:

  • プロジェクト構造を作成(単一アプリまたはモノレポ)
  • TypeScriptとESLintを設定
  • App RouterでNext.jsをセットアップ
  • Turborepoパイプラインを設定(モノレポの場合)
  • RemixIconをインストールして設定
  • ルーティングとレイアウトを実装
  • ローディングとエラー状態を追加
  • 画像とフォントの最適化を設定
  • データフェッチパターンを設定
  • キャッシュ戦略を設定
  • 必要に応じてAPIルートを追加
  • 共有コンポーネントライブラリを実装(モノレポの場合)
  • リモートキャッシュを設定(モノレポの場合)
  • CI/CDパイプラインを設定
  • デプロイプラットフォームを設定

関連スキル