ブログ

LunariaJS究極の実践:エンタープライズレベルの多言語ドキュメントプラットフォームを構築

本シリーズで学んだ知識を総合的に活用し、ゼロから完全なエンタープライズレベルの多言語ドキュメントプラットフォームを構築します。プロジェクト計画、アーキテクチャ設計、完全な設定、CI/CD統合、チームコラボレーションなど、すべての工程を網羅します。

LibDoc Team 2026年3月6日 LunariaJS 連載 113 分で読める
#LunariaJS #エンタープライズ #実践 #多言語ドキュメント #完全ガイド

LunariaJS究極の実践:エンタープライズレベルの多言語ドキュメントプラットフォームを構築

LunariaJSシリーズの9つの記事を完走おめでとうございます!今日は、学んだすべての知識を総合的に活用し、ゼロから完全なエンタープライズレベルの多言語ドキュメントプラットフォームを構築します。これは本シリーズの最終章であり、あなたの学習成果を検証する最高の実践です。

💡 公式ドキュメントLunariaJS 日本語ドキュメント

プロジェクト計画

要件分析

プロジェクト背景:オープンソースプロジェクト用の多言語ドキュメントサイトを構築する必要があり、以下の要件があります:

要件説明優先度
多言語サポート中国語、日本語、韓国語の4言語をサポート
翻訳状態の可視化翻訳進捗をリアルタイムで追跡
チームコラボレーションコミュニティ貢献者が翻訳に参加可能
自動化CI/CDで自動ビルドとデプロイ
パフォーマンス最適化高速な読み込みと応答
SEO最適化検索エンジンフレンドリー

技術選定

要件分析に基づき、以下の技術スタックを選択:

技術用途選択理由
Astro 5.0フレームワーク高パフォーマンス、SEOフレンドリー
Starlightドキュメントテーマすぐに使えるドキュメントソリューション
LunariaJS翻訳管理Gitベースのワークフロー、可視化ダッシュボード
GitHub ActionsCI/CDGitHubとの深い統合
Vercelホスティング高速デプロイ、エッジネットワーク

アーキテクチャ設計

┌─────────────────────────────────────────────────────────────────────┐
│                         ユーザー層                                    │
│                    (開発者/貢献者/読者)                               │
├─────────────────────────────────────────────────────────────────────┤
│                       アクセス層                                      │
│   ┌─────────────┐   ┌─────────────┐   ┌─────────────┐              │
│   │ ドキュメント  │   │ 翻訳ダッシュ │   │  GitHub Repo │              │
│   │ サイト        │   │ ボード       │   │             │              │
│   │ (Vercel)    │   │ (Vercel)    │   │             │              │
│   └─────────────┘   └─────────────┘   └─────────────┘              │
├─────────────────────────────────────────────────────────────────────┤
│                       アプリケーション層                              │
│   ┌─────────────────────────────────────────────────────────────┐   │
│   │                    Astro + Starlight                        │   │
│   │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │   │
│   │  │  コンテンツ  │  │  i18nルート │  │  検索機能   │        │   │
│   │  │  管理       │  │             │  │             │        │   │
│   │  └─────────────┘  └─────────────┘  └─────────────┘        │   │
│   └─────────────────────────────────────────────────────────────┘   │
│   ┌─────────────────────────────────────────────────────────────┐   │
│   │                      LunariaJS                              │   │
│   │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │   │
│   │  │  状態追跡   │  │  ダッシュ   │  │  Git統合    │        │   │
│   │  │             │  │  ボード生成 │  │             │        │   │
│   │  └─────────────┘  └─────────────┘  └─────────────┘        │   │
│   └─────────────────────────────────────────────────────────────┘   │
├─────────────────────────────────────────────────────────────────────┤
│                       インフラストラクチャ層                           │
│   ┌─────────────┐   ┌─────────────┐   ┌─────────────┐              │
│   │  Git        │   │ GitHub      │   │ CI/CD       │              │
│   │  (バージョン │   │ (コードホスト│   │ (自動化)    │              │
│   │  管理)      │   │ )           │   │             │              │
│   └─────────────┘   └─────────────┘   └─────────────┘              │
└─────────────────────────────────────────────────────────────────────┘

技術スタックの構築

ステップ1:プロジェクトの初期化

# Starlightテンプレートでプロジェクトを作成
npm create astro@latest my-docs -- --template starlight

# プロジェクトディレクトリに移動
cd my-docs

# LunariaJSをインストール
npm install @lunariajs/starlight

# Gitを初期化(まだの場合)
git init
git add .
git commit -m "Initial commit"

ステップ2:Astroを設定

// astro.config.mjs
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';
import lunaria from '@lunariajs/starlight';

// 言語設定
const languages = ['en', 'zh-cn', 'ja', 'ko'];
const sourceLanguage = 'en';
const languageLabels = {
  en: 'English',
  'zh-cn': '简体中文',
  ja: '日本語',
  ko: '한국어',
};

export default defineConfig({
  site: 'https://docs.example.com',

  integrations: [
    starlight({
      title: 'My Project Documentation',
      defaultLocale: sourceLanguage,

      locales: Object.fromEntries(
        languages.map(lang => [
          lang,
          { label: languageLabels[lang], lang }
        ])
      ),

      sidebar: {
        en: [
          { label: 'Home', link: '/' },
          {
            label: 'Getting Started',
            items: [
              { label: 'Introduction', link: '/introduction/' },
              { label: 'Installation', link: '/installation/' },
              { label: 'Quick Start', link: '/quick-start/' },
            ],
          },
          {
            label: 'Guides',
            items: [
              { label: 'Configuration', link: '/guides/configuration/' },
              { label: 'Deployment', link: '/guides/deployment/' },
            ],
          },
          {
            label: 'Reference',
            items: [
              { label: 'API', link: '/reference/api/' },
              { label: 'CLI', link: '/reference/cli/' },
            ],
          },
        ],
        'zh-cn': [
          { label: '首页', link: '/' },
          {
            label: '快速开始',
            items: [
              { label: '简介', link: '/introduction/' },
              { label: '安装', link: '/installation/' },
              { label: '快速上手', link: '/quick-start/' },
            ],
          },
          {
            label: '指南',
            items: [
              { label: '配置', link: '/guides/configuration/' },
              { label: '部署', link: '/guides/deployment/' },
            ],
          },
          {
            label: '参考',
            items: [
              { label: 'API', link: '/reference/api/' },
              { label: 'CLI', link: '/reference/cli/' },
            ],
          },
        ],
        ja: [
          { label: 'ホーム', link: '/' },
          {
            label: 'はじめに',
            items: [
              { label: '概要', link: '/introduction/' },
              { label: 'インストール', link: '/installation/' },
              { label: 'クイックスタート', link: '/quick-start/' },
            ],
          },
          {
            label: 'ガイド',
            items: [
              { label: '設定', link: '/guides/configuration/' },
              { label: 'デプロイ', link: '/guides/deployment/' },
            ],
          },
          {
            label: 'リファレンス',
            items: [
              { label: 'API', link: '/reference/api/' },
              { label: 'CLI', link: '/reference/cli/' },
            ],
          },
        ],
        ko: [
          { label: '홈', link: '/' },
          {
            label: '시작하기',
            items: [
              { label: '소개', link: '/introduction/' },
              { label: '설치', link: '/installation/' },
              { label: '빠른 시작', link: '/quick-start/' },
            ],
          },
          {
            label: '가이드',
            items: [
              { label: '설정', link: '/guides/configuration/' },
              { label: '배포', link: '/guides/deployment/' },
            ],
          },
          {
            label: '참조',
            items: [
              { label: 'API', link: '/reference/api/' },
              { label: 'CLI', link: '/reference/cli/' },
            ],
          },
        ],
      },

      social: {
        github: 'https://github.com/your-org/your-repo',
      },

      head: [
        { tag: 'meta', attrs: { name: 'theme-color', content: '#6366f1' } },
      ],
    }),

    lunaria({
      sourceLanguage,
      languages,
      files: [
        {
          sourcePath: 'src/content/docs/{lang}/{slug}.md',
          localizationPath: 'src/content/docs/{lang}/{slug}.md',
        },
      ],
      dashboard: {
        outputDir: 'public/i18n-status',
        title: 'Translation Status',
        description: 'Track the progress of documentation translations',
      },
    }),
  ],
});

多言語コンテンツの組織化

ディレクトリ構造

src/content/docs/
├── en/                        # 英語(ソース言語)
│   ├── index.md
│   ├── introduction.md
│   ├── installation.md
│   ├── quick-start.md
│   ├── guides/
│   │   ├── configuration.md
│   │   └── deployment.md
│   └── reference/
│       ├── api.md
│       └── cli.md
├── zh-cn/                     # 中国語翻訳
│   ├── index.md
│   ├── introduction.md
│   ├── installation.md
│   ├── quick-start.md
│   ├── guides/
│   │   └── configuration.md   # deployment.mdはまだ翻訳されていないと仮定
│   └── reference/
│       └── api.md
├── ja/                        # 日本語翻訳
│   ├── index.md
│   ├── introduction.md
│   └── installation.md
└── ko/                        # 韓国語翻訳
    └── index.md

コンテンツテンプレート

---
# src/content/docs/en/introduction.md
title: Introduction
description: Get started with My Project and learn about its core concepts.
---

# Introduction

Welcome to **My Project**! This guide will help you understand the fundamentals.

## What is My Project?

My Project is a powerful tool that helps you...

## Key Features

- **Feature 1**: Description of feature 1
- **Feature 2**: Description of feature 2
- **Feature 3**: Description of feature 3

## Who Should Use This?

My Project is perfect for:

1. Developers building modern applications
2. Teams working on large-scale projects
3. Anyone who values performance and DX

## Next Steps

Ready to get started? Check out our [Installation Guide](/installation/).

翻訳版の例

---
# src/content/docs/ja/introduction.md
title: 概要
description: My Projectを始め、そのコア概念を学びましょう。
---

# 概要

**My Project**へようこそ!このガイドでは基本を理解するのにお手伝いします。

## My Projectとは?

My Projectは、...を助ける強力なツールです。

## 主な機能

- **機能1**: 機能1の説明
- **機能2**: 機能2の説明
- **機能3**: 機能3の説明

## 誰が使うべき?

My Projectは以下の方に最適です:

1. モダンなアプリケーションを構築する開発者
2. 大規模プロジェクトに取り組むチーム
3. パフォーマンスとDXを重視するすべての人

## 次のステップ

始める準備はできましたか?[インストールガイド](/installation/)をご覧ください。

CI/CD完全パイプライン

GitHub Actionsワークフロー

# .github/workflows/ci.yml
name: CI/CD Pipeline

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  workflow_dispatch:

env:
  NODE_VERSION: '20'

jobs:
  # ジョブ1: コードチェック
  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run linters
        run: npm run lint

      - name: Check formatting
        run: npm run format:check

  # ジョブ2: ビルドチェック
  build:
    name: Build
    runs-on: ubuntu-latest
    needs: lint
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0  # LunariaJS用に完全な履歴を取得

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Build Astro site
        run: npm run build

      - name: Build Lunaria dashboard
        run: npx lunaria build

      - name: Upload build artifacts
        uses: actions/upload-artifact@v4
        with:
          name: build-output
          path: dist/
          retention-days: 7

  # ジョブ3: 翻訳状態チェック
  i18n-check:
    name: Translation Check
    runs-on: ubuntu-latest
    needs: lint
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Check translation status
        id: i18n
        run: |
          npx lunaria build --silent
          # 状態レポートを生成
          REPORT=$(node scripts/i18n-report.js)
          echo "report<<EOF" >> $GITHUB_OUTPUT
          echo "$REPORT" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: Comment on PR
        if: github.event_name == 'pull_request'
        uses: actions/github-script@v7
        with:
          script: |
            const report = `${{ steps.i18n.outputs.report }}`;
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: `## 🌙 翻訳状態\n\n${report}`
            });

  # ジョブ4: デプロイ(mainブランチのみ)
  deploy:
    name: Deploy
    runs-on: ubuntu-latest
    needs: [build, i18n-check]
    if: github.ref == 'refs/heads/main' && github.event_name == 'push'

    permissions:
      contents: read
      deployments: write

    steps:
      - name: Download build artifacts
        uses: actions/download-artifact@v4
        with:
          name: build-output
          path: dist

      - name: Deploy to Vercel
        uses: amondnet/vercel-action@v25
        with:
          vercel-token: ${{ secrets.VERCEL_TOKEN }}
          vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
          vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
          vercel-args: '--prod'
          working-directory: ./

      - name: Send deployment notification
        if: success()
        run: |
          curl -X POST "${{ secrets.SLACK_WEBHOOK_URL }}" \
            -H 'Content-type: application/json' \
            -d '{
              "text": "✅ ドキュメントが正常にデプロイされました!",
              "attachments": [{
                "fields": [
                  { "title": "ブランチ", "value": "${{ github.ref_name }}", "short": true },
                  { "title": "コミット", "value": "${{ github.sha }}", "short": true }
                ]
              }]
            }'

翻訳状態レポートスクリプト

// scripts/i18n-report.js
const fs = require('fs');
const path = require('path');

function generateReport() {
  const statusPath = path.join('public', 'i18n-status', 'data', 'status.json');

  if (!fs.existsSync(statusPath)) {
    return 'No translation status data available.';
  }

  const status = JSON.parse(fs.readFileSync(statusPath, 'utf8'));

  let report = '| 言語 | 完了 | 古い | 欠落 | 進捗 |\n';
  report += '|----------|------|----------|---------|----------|\n';

  const languages = Object.entries(status.languages);

  for (const [lang, data] of languages) {
    if (lang === status.sourceLanguage) continue;

    const progress = Math.round((data.done / data.total) * 100);
    const emoji = progress >= 90 ? '✅' : progress >= 70 ? '⚠️' : '❌';

    report += `| ${lang} | ${data.done} | ${data.outdated} | ${data.missing} | ${emoji} ${progress}% |\n`;
  }

  report += '\n📊 [全ダッシュボードを見る](/i18n-status/)';

  return report;
}

console.log(generateReport());

チームコラボレーションワークフロー

翻訳貢献ガイド

TRANSLATING.mdファイルを作成:

# 翻訳ガイド

私たちのドキュメントの翻訳に興味を持っていただきありがとうございます!

## 貢献方法

### 1. 現在の状態を確認

[翻訳状態ダッシュボード](/i18n-status/)で翻訳が必要なファイルを確認してください。

### 2. ファイルをクレーム

開始する前に、誰かが既にそのファイルに取り組んでいないか確認してください:

1. 既存の[Pull Requests](https://github.com/your-org/your-repo/pulls)を検索
2. 誰も作業していない場合は、Issueを作成するかダッシュボードにコメント

### 3. 翻訳

1. リポジトリをFork
2. ブランチを作成:`git checkout -b translate/zh-cn/introduction`
3. ソースファイルをコピー:`cp src/content/docs/en/introduction.md src/content/docs/zh-cn/introduction.md`
4. 内容を翻訳
5. ローカルでテスト:`npm run dev`

### 4. 提出

1. 変更をコミット:`git commit -m "Translate introduction to Chinese"`
2. Forkにプッシュ:`git push origin translate/zh-cn/introduction`
3. Pull Requestを作成

## 翻訳ガイドライン

- **フォーマットを保持**:Markdown構文をそのまま維持
- **コード例を維持**:通常、コードは翻訳不要
- **一貫性**:一貫した用語を使用
- **コンテキストを追加**:難しい用語にはコメントを追加

## ヘルプが必要?

[Discord](https://discord.gg/example)に参加し、#translationsチャンネルで質問してください。

PRテンプレート

.github/pull_request_template.mdを作成:

## 説明

<!-- 変更内容を記述してください -->

## 変更タイプ

- [ ] 📝 ドキュメント更新
- [ ] 🌐 翻訳
- [ ] ✨ 新機能
- [ ] 🐛 バグ修正

## 翻訳チェックリスト(該当する場合)

- [ ] [翻訳状態ダッシュボード](/i18n-status/)を確認
- [ ] 元のMarkdownフォーマットを保持
- [ ] 翻訳をローカルでテスト
- [ ] 用語の一貫性をレビュー

## スクリーンショット(該当する場合)

<!-- 変更を説明するのに役立つスクリーンショットを追加 -->

## 追加メモ

<!-- レビュアーが知っておくべき追加情報 -->

監視とメンテナンス

ヘルスチェックスクリプト

// scripts/health-check.js
const fs = require('fs');
const path = require('path');

async function healthCheck() {
  const issues = [];

  // 1. 設定ファイルをチェック
  const configPath = 'lunaria.config.json';
  if (!fs.existsSync(configPath)) {
    issues.push('❌ lunaria.config.jsonが見つかりません');
  }

  // 2. 言語ディレクトリをチェック
  const languages = ['en', 'zh-cn', 'ja', 'ko'];
  for (const lang of languages) {
    const langDir = `src/content/docs/${lang}`;
    if (!fs.existsSync(langDir)) {
      issues.push(`❌ 言語ディレクトリが見つかりません: ${langDir}`);
    }
  }

  // 3. 翻訳状態をチェック
  const statusPath = 'public/i18n-status/data/status.json';
  if (fs.existsSync(statusPath)) {
    const status = JSON.parse(fs.readFileSync(statusPath, 'utf8'));

    for (const [lang, data] of Object.entries(status.languages)) {
      if (lang === status.sourceLanguage) continue;

      const progress = (data.done / data.total) * 100;
      if (progress < 50) {
        issues.push(`⚠️ ${lang}の翻訳進捗が低いです: ${progress.toFixed(0)}%`);
      }
    }
  }

  // 4. 孤立ファイルをチェック
  const files = fs.readdirSync('src/content/docs', { recursive: true });
  // ... チェックロジック

  // 結果を出力
  if (issues.length === 0) {
    console.log('✅ すべてのヘルスチェックが合格しました!');
  } else {
    console.log('⚠️ ヘルスチェックで問題が見つかりました:\n');
    issues.forEach(issue => console.log(issue));
    process.exit(1);
  }
}

healthCheck();

定期メンテナンスタスク

# .github/workflows/maintenance.yml
name: Maintenance Tasks

on:
  schedule:
    # 毎週月曜日の午前9時
    - cron: '0 9 * * 1'
  workflow_dispatch:

jobs:
  report:
    name: Generate Weekly Report
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run health check
        run: node scripts/health-check.js

      - name: Generate weekly report
        id: report
        run: |
          REPORT=$(node scripts/weekly-report.js)
          echo "report<<EOF" >> $GITHUB_OUTPUT
          echo "$REPORT" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: Create issue
        uses: actions/github-script@v7
        with:
          script: |
            github.rest.issues.create({
              owner: context.repo.owner,
              repo: context.repo.repo,
              title: 'Weekly i18n Report - ' + new Date().toISOString().split('T')[0],
              body: `${{ steps.report.outputs.report }}`,
              labels: ['i18n', 'weekly-report']
            });

デプロイとリリース

Vercel設定

// vercel.json
{
  "buildCommand": "npm run build",
  "outputDirectory": "dist",
  "framework": "astro",
  "trailingSlash": false,
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        {
          "key": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "key": "X-Frame-Options",
          "value": "DENY"
        },
        {
          "key": "X-XSS-Protection",
          "value": "1; mode=block"
        }
      ]
    }
  ]
}

package.json完全設定

{
  "name": "my-docs",
  "type": "module",
  "version": "1.0.0",
  "scripts": {
    "dev": "astro dev",
    "start": "astro dev",
    "build": "astro build && npm run lunaria:build",
    "preview": "astro preview",
    "astro": "astro",
    "lint": "eslint src/",
    "format": "prettier --write .",
    "format:check": "prettier --check .",
    "lunaria:build": "lunaria build",
    "lunaria:preview": "lunaria preview",
    "i18n:check": "node scripts/health-check.js",
    "i18n:report": "node scripts/weekly-report.js"
  },
  "dependencies": {
    "@astrojs/starlight": "^0.26.0",
    "@lunariajs/starlight": "^0.4.0",
    "astro": "^5.0.0"
  },
  "devDependencies": {
    "@types/node": "^20.0.0",
    "eslint": "^8.57.0",
    "prettier": "^3.2.0",
    "typescript": "^5.3.0"
  }
}

プロジェクトメンテナンスガイド

バージョンアップグレード戦略

# 古い依存関係をチェック
npm outdated

# LunariaJSをアップグレード
npm install @lunariajs/starlight@latest

# アップグレード後の互換性をテスト
npm run build
npm run preview

# 問題がある場合、ロールバック
npm install @lunariajs/starlight@previous-version

依存関係管理のベストプラクティス

  1. 定期的に更新:毎月依存関係の更新をチェック
  2. バージョンをロックpackage-lock.jsonを使用
  3. 変更をテスト:アップグレード後、完全なテストを実行
  4. ドキュメントを同期:CHANGELOGを更新

シリーズ総括と展望

LunariaJS能力概要

能力説明章節
インストール設定プロジェクトの素早い初期化第2回
CLI操作コマンドラインツールの使用第3回
ダッシュボード翻訳状態の可視化第4回
Git統合バージョンベースの翻訳追跡第5回
Starlight統合ドキュメントサイトの統合第6回
CI/CD統合自動化ワークフロー第7回
コアアーキテクチャソースレベルの理解第8回
高度な設定エンタープライズカスタマイズ第9回
完全実践エンドツーエンド実践第10回

学習パスの振り返り

入門段階

    ├── 第1回:LunariaJSとは何かを理解
    ├── 第2回:インストールと設定を習得
    ├── 第3回:CLIコマンドを習得
    ├── 第4回:ダッシュボードを使用
    ├── 第5回:Gitワークフローを理解
    ├── 第6回:Starlightを統合
    └── 第7回:CI/CDを設定


深掘り段階

    ├── 第8回:ソースコードアーキテクチャを深掘り
    ├── 第9回:エンタープライズ設定
    └── 第10回:完全実践


    LunariaJSエクスパートに!

今後の発展方向

LunariaJSはアクティブなオープンソースプロジェクトとして、今後以下の機能が追加される可能性があります:

  • より多くのファイル形式サポート:Excel、POファイルなど
  • より深いCMS統合:Headless CMSサポート
  • AIアシスト翻訳:機械翻訳サービスとの統合
  • リアルタイムコラボレーション:複数人による同時編集
  • 高度な分析:翻訳品質の評価

コミュニティリソース推奨

リソースリンク
公式ドキュメントhttps://lunaria.libdoc.top/
日本語ドキュメントhttps://lunaria.libdoc.top/ja/
GitHubリポジトリhttps://github.com/withastro/lunaria
Discordコミュニティhttps://discord.gg/astro
Astro公式ドキュメントhttps://docs.astro.build/

おわりに

LunariaJSの入門から精通までの完全な学習旅程を完走おめでとうございます!

この10記事のシリーズを通じて、あなたは以下を習得しました:

  • ✅ LunariaJSのコア概念とインストール設定
  • ✅ CLIコマンドとダッシュボードの使用
  • ✅ Gitワークフローとチームコラボレーション
  • ✅ Astro Starlight統合
  • ✅ CI/CD自動デプロイ
  • ✅ コアアーキテクチャとソース理解
  • ✅ エンタープライズレベルの高度な設定
  • ✅ 完全なプロジェクト実践

これで、LunariaJSを使ってプロフェッショナルレベルの多言語ドキュメントプラットフォームを構築する能力が身につきました。次のプロジェクトを始めましょう!

このシリーズが役に立ったと感じたら、より多くの開発者と共有し、より多くの人にLunariaJSという強力なローカライズ管理ツールを知ってもらいましょう。


💡 おすすめ読書