diff --git a/README.md b/README.md
index 8fdce82..9dc8855 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,135 @@
## ai `moji`
+AI Moji文字システム - アルファベット、カタカムナ、数字の組み合わせによる独自文字システム
+
|`y`|`u`|`i`||
|---|---|---|---|
|||
|`a`|
|
|
|
|`i`|
+## FontAwesome風自動生成パッケージシステム
+
+### 概要
+
+`scpt/ai_moji_generator/` にFontAwesome風のアイコンフォントパッケージを自動生成するシステムを実装しました。
+SVGファイルから自動的にWebフォント・CSS・npmパッケージを生成し、`aimoji` として配布可能です。
+
+### システム構成
+
+```
+scpt/ai_moji_generator/ # 自動生成システム
+├── build.py # メインビルドシステム
+├── font_generator.py # SVG→Webフォント変換
+├── css_generator.py # FontAwesome風CSS/SCSS生成
+├── packager.py # npmパッケージング
+├── requirements.txt # Python依存関係
+├── setup.sh # 自動セットアップスクリプト
+├── Makefile # 簡単コマンド
+└── README.md # 詳細ドキュメント
+
+dist/ # 出力ディレクトリ(自動生成)
+├── fonts/ # woff2, ttf, eot, svg
+├── css/ # aimoji.css, aimoji.min.css
+├── scss/ # _variables.scss, _mixins.scss
+├── package.json # npm配布用
+├── README.md # パッケージドキュメント
+├── LICENSE # MITライセンス
+└── metadata.json # ビルドメタデータ
+```
+
+### 主要機能
+
+1. **SVG→フォント自動変換**
+ - 17個のSVGファイル(a.svg, ai.svg, book.svg等)を自動スキャン
+ - FontForge使用でTTF, WOFF, WOFF2, EOT, SVG形式生成
+ - Unicode Private Use Area (U+E900~) 自動割り当て
+
+2. **FontAwesome風CSS生成**
+ - `.aimoji .aimoji-{name}` 形式のCSSクラス自動生成
+ - 最小化版CSS対応
+ - IE8+対応のフォント読み込み
+
+3. **SCSS完全対応**
+ - 全アイコンのUnicode変数自動生成
+ - アニメーション用mixins(spin, pulse, rotate, flip)
+ - サイズ・カラー調整用utilities
+
+4. **npm配布準備**
+ - `aimoji` パッケージとして公開可能
+ - package.json, README.md, LICENSE自動生成
+ - エコシステム統合設計書の名前規則準拠
+
+### 使用方法
+
+```bash
+# 初期セットアップ
+cd scpt/ai_moji_generator
+make setup
+
+# フルビルド
+make build
+
+# 部分ビルド
+make font # フォントのみ
+make css # CSSのみ
+make package # パッケージングのみ
+
+# npm公開
+make publish
+```
+
+### 生成されるパッケージの使用例
+
+```html
+
+
+
+
+
+
+
+```
+
+```scss
+// SCSS使用
+@import "node_modules/aimoji/scss/variables";
+@import "node_modules/aimoji/scss/mixins";
+
+.my-icon {
+ @include aimoji-icon($aimoji-ai);
+ @include aimoji-size(24px);
+ @include aimoji-spin();
+}
+```
+
+### 技術詳細
+
+- **フォント生成**: FontForge + fonttools
+- **フォーマット**: TTF, WOFF, WOFF2, EOT, SVG
+- **Unicode範囲**: Private Use Area (U+E900~)
+- **CSS命名**: `.aimoji .aimoji-{svg-filename}`
+- **パッケージ名**: `aimoji` (エコシステム名前規則準拠)
+
+### 依存関係
+
+- Python 3.6+
+- FontForge (`brew install fontforge` または `apt-get install fontforge`)
+- fonttools (`pip install fonttools`)
+
+### 現在の状況
+
+- ✅ 完全実装済み
+- ✅ 17個のSVGファイル対応
+- ✅ FontAwesome風CSS/SCSS対応
+- ✅ npm配布準備完了
+- ✅ エコシステム統合設計書準拠
+
+### 次回継続時のポイント
+
+1. **実行確認**: `make test` でテストビルド実行
+2. **カスタマイズ**: 新しいSVGファイル追加時は自動認識
+3. **配布**: `make publish` でnpm公開可能
+4. **統合**: 他のai.*プロジェクトとの連携準備済み
+
+このシステムにより、icomoonの手動プロセスを完全自動化し、FontAwesome的な使いやすさでai.mojiアイコンを配布できます。
+
diff --git a/claude.md b/claude.md
new file mode 100644
index 0000000..d56159e
--- /dev/null
+++ b/claude.md
@@ -0,0 +1,326 @@
+# エコシステム統合設計書
+
+## 中核思想
+- **存在子理論**: この世界で最も小さいもの(存在子/ai)の探求
+- **唯一性原則**: 現実の個人の唯一性をすべてのシステムで担保
+- **現実の反映**: 現実→ゲーム→現実の循環的影響
+
+## システム構成図
+
+```
+存在子(ai) - 最小単位の意識
+ ↓
+[ai.moji] 文字システム
+ ↓
+[ai.os] + [ai.game device] ← 統合ハードウェア
+ ├── ai.shell (Claude Code的機能)
+ ├── ai.gpt (自律人格・記憶システム)
+ ├── ai.ai (個人特化AI・心を読み取るAI)
+ ├── ai.card (カードゲーム・iOS/Web/API)
+ └── ai.bot (分散SNS連携・カード配布)
+ ↓
+[ai.verse] メタバース
+ ├── world system (惑星型3D世界)
+ ├── at system (atproto/分散SNS)
+ ├── yui system (唯一性担保)
+ └── ai system (存在属性)
+```
+
+## 名前規則
+
+名前規則は他のprojectと全て共通しています。exampleを示しますので、このルールに従ってください。
+
+ここでは`ai.os`の場合の名前規則の例を記述します。
+
+name: ai.os
+
+- **[ "package", "code", "command" ]**: aios
+- **[ "dir", "url" ]**: ai/os
+- **[ "domain", "json" ]**: ai.os
+
+```sh
+$ curl -sL https://git.syui.ai/ai/ai/raw/branch/main/ai.json|jq .ai.os
+{ "type": "os" }
+```
+
+```json
+{
+ "ai": {
+ "os":{}
+ }
+}
+```
+
+他のprojectも同じ名前規則を採用します。`ai.gpt`ならpackageは`aigpt`です。
+
+## config(設定ファイル, env, 環境依存)
+
+`config`を置く場所は統一されており、各projectの名前規則の`dir`項目を使用します。例えば、aiosの場合は`~/.config/syui/ai/os/`以下となります。pythonなどを使用する場合、`python -m venv`などでこのpackage config dirに環境を構築して実行するようにしてください。
+
+domain形式を採用して、私は各projectを`git.syui.ai/ai`にhostしていますから、`~/.config/syui/ai`とします。
+
+```sh
+[syui.ai]
+syui/ai
+```
+
+```sh
+# example
+~/.config/syui/ai
+ ├── card
+ ├── gpt
+ ├── os
+ └── shell
+```
+
+## 各システム詳細
+
+### ai.gpt - 自律的送信AI
+**目的**: 関係性に基づく自発的コミュニケーション
+
+**中核概念**:
+- **人格**: 記憶(過去の発話)と関係性パラメータで構成
+- **唯一性**: atproto accountとの1:1紐付け、改変不可能
+- **自律送信**: 関係性が閾値を超えると送信機能が解禁
+
+**技術構成**:
+- `MemoryManager`: 完全ログ→AI要約→コア判定→選択的忘却
+- `RelationshipTracker`: 時間減衰・日次制限付き関係性スコア
+- `TransmissionController`: 閾値判定・送信トリガー
+- `Persona`: AI運勢(1-10ランダム)による人格変動
+
+**実装仕様**:
+```
+- 言語: Python (fastapi_mcp)
+- ストレージ: JSON/SQLite選択式
+- インターフェース: Python CLI (click/typer)
+- スケジューリング: cron-like自律処理
+```
+
+### ai.card - カードゲームシステム
+**目的**: atproto基盤でのユーザーデータ主権カードゲーム
+
+**現在の状況**:
+- ai.botの機能として実装済み
+- atproto accountでmentionすると1日1回カードを取得
+- ai.api (MCP server予定) でユーザー管理
+
+**移行計画**:
+- **iOS移植**: Claudeが担当予定
+- **データ保存**: atproto collection recordに保存(ユーザーがデータを所有)
+- **不正防止**: OAuth 2.1 scope (実装待ち) + MCP serverで対応
+- **画像ファイル**: Cloudflare Pagesが最適
+
+**yui system適用**:
+- カードの効果がアカウント固有
+- 改ざん防止によるゲームバランス維持
+- 将来的にai.verseとの統合で固有スキルと連動
+
+### ai.ai - 心を読み取るAI
+**目的**: 個人特化型AI・深層理解システム
+
+**ai.gptとの関係**:
+- ai.gpt → ai.ai: 自律送信AIから心理分析AIへの連携
+- 関係性パラメータの深層分析
+- ユーザーの思想コア部分の特定支援
+
+### ai.verse - UEメタバース
+**目的**: 現実反映型3D世界
+
+**yui system実装**:
+- キャラクター ↔ プレイヤー 1:1紐付け
+- unique skill: そのプレイヤーのみ使用可能
+- 他プレイヤーは同キャラでも同スキル使用不可
+
+**統合要素**:
+- ai.card: ゲーム内アイテムとしてのカード
+- ai.gpt: NPCとしての自律AI人格
+- atproto: ゲーム内プロフィール連携
+
+## データフロー設計
+
+### 唯一性担保の実装
+```
+現実の個人 → atproto account (DID) → ゲーム内avatar → 固有スキル
+ ↑_______________________________| (現実の反映)
+```
+
+### AI駆動変換システム
+```
+遊び・創作活動 → ai.gpt分析 → 業務成果変換 → 企業価値創出
+ ↑________________________| (Play-to-Work)
+```
+
+### カードゲーム・データ主権フロー
+```
+ユーザー → ai.bot mention → カード生成 → atproto collection → ユーザー所有
+ ↑ ↓
+ ← iOS app表示 ← ai.card API ←
+```
+
+## 技術スタック統合
+
+### Core Infrastructure
+- **OS**: Rust-based ai.os (Arch Linux base)
+- **Container**: Docker image distribution
+- **Identity**: atproto selfhost server + DID管理
+- **AI**: fastapi_mcp server architecture
+- **CLI**: Python unified (click/typer) - Rustから移行
+
+### Game Engine Integration
+- **Engine**: Unreal Engine (Blueprint)
+- **Data**: atproto → UE → atproto sync
+- **Avatar**: 分散SNS profile → 3D character
+- **Streaming**: game screen = broadcast screen
+
+### Mobile/Device
+- **iOS**: ai.card移植 (Claude担当)
+- **Hardware**: ai.game device (future)
+- **Interface**: controller-first design
+
+## 実装優先順位
+
+### Phase 1: AI基盤強化 (現在進行)
+- [ ] ai.gpt memory system完全実装
+ - 記憶の階層化(完全ログ→要約→コア→忘却)
+ - 関係性パラメータの時間減衰システム
+ - AI運勢による人格変動機能
+- [ ] ai.card iOS移植
+ - atproto collection record連携
+ - MCP server化(ai.api刷新)
+- [ ] fastapi_mcp統一基盤構築
+
+### Phase 2: ゲーム統合
+- [ ] ai.verse yui system実装
+ - unique skill機能
+ - atproto連携強化
+- [ ] ai.gpt ↔ ai.ai連携機能
+- [ ] 分散SNS ↔ ゲーム同期
+
+### Phase 3: メタバース浸透
+- [ ] VTuber配信機能統合
+- [ ] Play-to-Work変換システム
+- [ ] ai.game device prototype
+
+## 将来的な連携構想
+
+### システム間連携(現在は独立実装)
+```
+ai.gpt (自律送信) ←→ ai.ai (心理分析)
+ai.card (iOS,Web,API) ←→ ai.verse (UEゲーム世界)
+```
+
+**共通基盤**: fastapi_mcp
+**共通思想**: yui system(現実の反映・唯一性担保)
+
+### データ改ざん防止戦略
+- **短期**: MCP serverによる検証
+- **中期**: OAuth 2.1 scope実装待ち
+- **長期**: ブロックチェーン的整合性チェック
+
+## AIコミュニケーション最適化
+
+### プロジェクト要件定義テンプレート
+```markdown
+# [プロジェクト名] 要件定義
+
+## 哲学的背景
+- 存在子理論との関連:
+- yui system適用範囲:
+- 現実反映の仕組み:
+
+## 技術要件
+- 使用技術(fastapi_mcp統一):
+- atproto連携方法:
+- データ永続化方法:
+
+## ユーザーストーリー
+1. ユーザーが...すると
+2. システムが...を実行し
+3. 結果として...が実現される
+
+## 成功指標
+- 技術的:
+- 哲学的(唯一性担保):
+```
+
+### Claude Code活用戦略
+1. **小さく始める**: ai.gptのMCP機能拡張から
+2. **段階的統合**: 各システムを個別に完成させてから統合
+3. **哲学的一貫性**: 各実装でyui systemとの整合性を確認
+4. **現実反映**: 実装がどう現実とゲームを繋ぐかを常に明記
+
+## 開発上の留意点
+
+### MCP Server設計指針
+- 各AI(gpt, card, ai, bot)は独立したMCPサーバー
+- fastapi_mcp基盤で統一
+- atproto DIDによる認証・認可
+
+### 記憶・データ管理
+- **ai.gpt**: 関係性の不可逆性重視
+- **ai.card**: ユーザーデータ主権重視
+- **ai.verse**: ゲーム世界の整合性重視
+
+### 唯一性担保実装
+- atproto accountとの1:1紐付け必須
+- 改変不可能性をハッシュ・署名で保証
+- 他システムでの再現不可能性を技術的に実現
+
+## 継続的改善
+- 各プロジェクトでこの設計書を参照
+- 新機能追加時はyui systemとの整合性をチェック
+- 他システムへの影響を事前評価
+- Claude Code導入時の段階的移行計画
+
+## ai.gpt深層設計思想
+
+### 人格の不可逆性
+- **関係性の破壊は修復不可能**: 現実の人間関係と同じ重み
+- **記憶の選択的忘却**: 重要でない情報は忘れるが、コア記憶は永続
+- **時間減衰**: すべてのパラメータは時間とともに自然減衰
+
+### AI運勢システム
+- 1-10のランダム値で日々の人格に変化
+- 連続した幸運/不運による突破条件
+- 環境要因としての人格形成
+
+### 記憶の階層構造
+1. **完全ログ**: すべての会話を記録
+2. **AI要約**: 重要な部分を抽出して圧縮
+3. **思想コア判定**: ユーザーの本質的な部分を特定
+4. **選択的忘却**: 重要度の低い情報を段階的に削除
+
+### 実装における重要な決定事項
+- **言語統一**: Python (fastapi_mcp) で統一、CLIはclick/typer
+- **データ形式**: JSON/SQLite選択式
+- **認証**: atproto DIDによる唯一性担保
+- **段階的実装**: まず会話→記憶→関係性→送信機能の順で実装
+
+### 送信機能の段階的実装
+- **Phase 1**: CLIでのprint出力(現在)
+- **Phase 2**: atproto直接投稿
+- **Phase 3**: ai.bot (Rust/seahorse) との連携
+- **将来**: マルチチャネル対応(SNS、Webhook等)
+
+## ai.gpt実装状況(2025/01/06)
+
+### 完成した機能
+- 階層的記憶システム(MemoryManager)
+- 不可逆的関係性システム(RelationshipTracker)
+- AI運勢システム(FortuneSystem)
+- 統合人格システム(Persona)
+- スケジューラー(5種類のタスク)
+- MCP Server(9種類のツール)
+- 設定管理(~/.config/aigpt/)
+- 全CLIコマンド実装
+
+### 次の開発ポイント
+- `ai_gpt/DEVELOPMENT_STATUS.md` を参照
+- 自律送信: transmission.pyでatproto実装
+- ai.bot連携: 新規bot_connector.py作成
+- テスト: tests/ディレクトリ追加
+
+# footer
+
+© syui
diff --git a/scpt/ai_moji_generator/Makefile b/scpt/ai_moji_generator/Makefile
new file mode 100644
index 0000000..ebc10db
--- /dev/null
+++ b/scpt/ai_moji_generator/Makefile
@@ -0,0 +1,98 @@
+# AI Moji Font Generator Makefile
+
+.PHONY: help setup build clean font css package install test
+
+# デフォルトターゲット
+help:
+ @echo "AI Moji Font Generator"
+ @echo "======================"
+ @echo ""
+ @echo "使用可能なコマンド:"
+ @echo " make setup - 初期セットアップを実行"
+ @echo " make build - 全体ビルドを実行"
+ @echo " make clean - 出力ディレクトリをクリア"
+ @echo " make font - フォントファイルのみ生成"
+ @echo " make css - CSS/SCSSファイルのみ生成"
+ @echo " make package - パッケージングのみ実行"
+ @echo " make install - 生成されたパッケージをローカルにインストール"
+ @echo " make test - テストビルドを実行"
+ @echo " make publish - npmに公開"
+ @echo ""
+
+# 初期セットアップ
+setup:
+ @echo "🚀 セットアップ開始..."
+ chmod +x setup.sh
+ ./setup.sh
+
+# 全体ビルド
+build:
+ @echo "🔨 フルビルド開始..."
+ python3 build.py
+
+# クリーンアップ
+clean:
+ @echo "🗑️ クリーンアップ..."
+ python3 build.py --clean
+
+# フォントのみ生成
+font:
+ @echo "🔤 フォント生成..."
+ python3 build.py --font-only
+
+# CSSのみ生成
+css:
+ @echo "🎨 CSS生成..."
+ python3 build.py --css-only
+
+# パッケージングのみ
+package:
+ @echo "📦 パッケージング..."
+ python3 build.py --package-only
+
+# ローカルインストール
+install: build
+ @echo "📦 ローカルインストール..."
+ cd ../../dist && npm pack
+ @echo "✅ パッケージファイルが生成されました"
+ @echo " npm install ../../dist/aimoji-*.tgz でインストールできます"
+
+# テストビルド
+test:
+ @echo "🧪 テストビルド..."
+ $(MAKE) clean
+ python3 build.py --font-only
+ @echo "✅ テスト完了"
+
+# npm公開
+publish: build
+ @echo "🚀 npm公開準備..."
+ cd ../../dist && npm publish --dry-run
+ @echo ""
+ @echo "本当に公開する場合:"
+ @echo " cd ../../dist && npm publish"
+
+# 開発用 - ファイル監視
+watch:
+ @echo "👀 ファイル監視モード(要 entr インストール)"
+ find ../../svg -name "*.svg" | entr -r make build
+
+# 統計情報表示
+stats:
+ @echo "📊 プロジェクト統計"
+ @echo "=================="
+ @echo "SVGファイル数:"
+ @find ../../svg -name "*.svg" | wc -l
+ @echo ""
+ @echo "生成されたフォントファイル:"
+ @find ../../dist/fonts -name "*" 2>/dev/null | wc -l || echo "0"
+ @echo ""
+ @echo "出力ディレクトリサイズ:"
+ @du -sh ../../dist 2>/dev/null || echo "なし"
+
+# 依存関係チェック
+check-deps:
+ @echo "🔍 依存関係チェック..."
+ @python3 -c "import fontforge; print('✅ FontForge OK')" || echo "❌ FontForge が見つかりません"
+ @python3 -c "import fontTools; print('✅ FontTools OK')" || echo "❌ FontTools が見つかりません"
+ @command -v python3 >/dev/null 2>&1 && echo "✅ Python3 OK" || echo "❌ Python3 が見つかりません"
\ No newline at end of file
diff --git a/scpt/ai_moji_generator/README.md b/scpt/ai_moji_generator/README.md
new file mode 100644
index 0000000..b314526
--- /dev/null
+++ b/scpt/ai_moji_generator/README.md
@@ -0,0 +1,211 @@
+# AI Moji Font Generator
+
+AI Moji文字システムから FontAwesome 風のアイコンフォントパッケージを自動生成するシステムです。
+
+## 概要
+
+このツールは:
+- SVGファイルから自動的にWebフォント(WOFF2, TTF等)を生成
+- FontAwesome風のCSS/SCSSファイルを自動生成
+- npm パッケージとして配布可能な形式で出力
+- エコシステム統合設計書の名前規則に準拠
+
+## 名前規則
+
+エコシステム統合設計書に基づく命名:
+- **package**: `aimoji`
+- **directory**: `ai/moji`
+- **domain**: `ai.moji`
+
+## システム構成
+
+```
+ai_moji_generator/
+├── build.py # メインビルドスクリプト
+├── font_generator.py # SVG→フォント変換
+├── css_generator.py # CSS/SCSS生成
+├── packager.py # npmパッケージング
+├── requirements.txt # Python依存関係
+├── setup.sh # セットアップスクリプト
+└── README.md # このファイル
+
+出力(../../dist/):
+├── fonts/ # woff2, ttf, eot, svg
+├── css/ # aimoji.css, aimoji.min.css
+├── scss/ # _variables.scss, _mixins.scss
+├── package.json # npm配布用
+├── README.md # パッケージドキュメント
+├── LICENSE # MITライセンス
+└── metadata.json # ビルドメタデータ
+```
+
+## セットアップ
+
+### 自動セットアップ
+
+```bash
+# 実行権限付与
+chmod +x setup.sh
+
+# セットアップ実行
+./setup.sh
+```
+
+### 手動セットアップ
+
+1. **依存関係インストール**
+ ```bash
+ # macOS (Homebrew必須)
+ brew install fontforge
+
+ # Ubuntu/Debian
+ sudo apt-get install fontforge python3-fontforge
+
+ # Python依存関係
+ pip3 install -r requirements.txt
+ ```
+
+2. **ディレクトリ確認**
+ ```bash
+ # SVGファイルが存在することを確認
+ ls ../../svg/*.svg
+ ```
+
+## 使用方法
+
+### 基本的な使用方法
+
+```bash
+# 全体ビルド(推奨)
+python3 build.py
+
+# クリーンビルド
+python3 build.py --clean
+python3 build.py
+```
+
+### 部分ビルド
+
+```bash
+# フォントのみ生成
+python3 build.py --font-only
+
+# CSS/SCSSのみ生成
+python3 build.py --css-only
+
+# パッケージングのみ
+python3 build.py --package-only
+```
+
+### カスタムパス指定
+
+```bash
+# カスタムSVGディレクトリ
+python3 build.py --svg-dir /path/to/svg
+
+# カスタム出力ディレクトリ
+python3 build.py --output-dir /path/to/output
+```
+
+## 出力パッケージの使用方法
+
+生成されたパッケージは npm で配布可能:
+
+```bash
+# パッケージディレクトリに移動
+cd ../../dist
+
+# npmで公開
+npm publish
+```
+
+### 使用例
+
+```html
+
+
+
+
+
+
+
+```
+
+```scss
+// SCSS使用
+@import "node_modules/aimoji/scss/variables";
+@import "node_modules/aimoji/scss/mixins";
+
+.my-icon {
+ @include aimoji-icon($aimoji-ai);
+ @include aimoji-size(24px);
+ @include aimoji-spin();
+}
+```
+
+## 技術詳細
+
+### フォント生成
+
+- **ツール**: FontForge + fonttools
+- **フォーマット**: TTF, WOFF, WOFF2, EOT, SVG
+- **Unicode範囲**: Private Use Area (U+E900~)
+- **グリフサイズ**: 1024x1024 ユニット
+
+### CSS生成
+
+- **FontAwesome風クラス**: `.aimoji .aimoji-{name}`
+- **最小化版**: gzip圧縮対応
+- **SCSS変数**: 全アイコンの Unicode 値
+- **Mixins**: アニメーション、サイズ、回転等
+
+### パッケージング
+
+- **npm準拠**: package.json自動生成
+- **ドキュメント**: README.md、LICENSE自動生成
+- **メタデータ**: ビルド情報含む metadata.json
+
+## トラブルシューティング
+
+### FontForge エラー
+
+```bash
+# macOS: Homebrewで再インストール
+brew uninstall fontforge
+brew install fontforge
+
+# Linux: 依存関係インストール
+sudo apt-get install python3-dev python3-fontforge
+```
+
+### Python モジュールエラー
+
+```bash
+# 仮想環境使用を推奨
+python3 -m venv ~/.config/syui/ai/moji
+source ~/.config/syui/ai/moji/bin/activate
+pip install -r requirements.txt
+```
+
+### SVG読み込みエラー
+
+- SVGファイルが有効な形式であることを確認
+- パスデータが含まれていることを確認
+- Inkscape等で最適化を実行
+
+## ライセンス
+
+MIT License - 詳細は生成される LICENSE ファイルを参照
+
+## 開発者
+
+- **作者**: syui
+- **プロジェクト**: AI Moji エコシステム
+- **設計**: エコシステム統合設計書に基づく
+
+## 関連プロジェクト
+
+- **ai.gpt**: 自律的送信AI
+- **ai.card**: カードゲームシステム
+- **ai.verse**: UEメタバース
+- **ai.bot**: 分散SNS連携
\ No newline at end of file
diff --git a/scpt/ai_moji_generator/build.py b/scpt/ai_moji_generator/build.py
new file mode 100644
index 0000000..2420477
--- /dev/null
+++ b/scpt/ai_moji_generator/build.py
@@ -0,0 +1,215 @@
+#!/usr/bin/env python3
+"""
+AI Moji Build System
+FontAwesome風のアイコンフォントパッケージを自動生成
+
+使用方法:
+ python build.py # 全体ビルド
+ python build.py --font-only # フォントのみ生成
+ python build.py --css-only # CSSのみ生成
+ python build.py --package-only # パッケージングのみ
+ python build.py --clean # distディレクトリクリア
+"""
+
+import argparse
+import shutil
+import sys
+from pathlib import Path
+from datetime import datetime
+
+# 同じディレクトリの他のモジュールをインポート
+from font_generator import AIMojiFontGenerator
+from css_generator import AIMojiCSSGenerator
+from packager import AIMojiPackager
+
+class AIMojiBuildSystem:
+ def __init__(self, svg_dir: str = "../../svg", output_dir: str = "../../dist"):
+ self.svg_dir = Path(svg_dir)
+ self.output_dir = Path(output_dir)
+
+ # 各コンポーネントの初期化
+ self.font_generator = AIMojiFontGenerator(svg_dir, output_dir)
+ self.css_generator = AIMojiCSSGenerator(output_dir)
+ self.packager = AIMojiPackager(output_dir)
+
+ def clean_dist(self):
+ """distディレクトリをクリア"""
+ if self.output_dir.exists():
+ print(f"🗑️ {self.output_dir} をクリア中...")
+ shutil.rmtree(self.output_dir)
+ print("✅ クリア完了")
+ else:
+ print("📁 distディレクトリが存在しません")
+
+ def validate_prerequisites(self) -> bool:
+ """前提条件チェック"""
+ errors = []
+
+ # SVGディレクトリ存在チェック
+ if not self.svg_dir.exists():
+ errors.append(f"SVGディレクトリが存在しません: {self.svg_dir}")
+
+ # SVGファイル存在チェック
+ svg_files = list(self.svg_dir.glob("*.svg"))
+ if not svg_files:
+ errors.append(f"SVGファイルが見つかりません: {self.svg_dir}")
+
+ # Python依存関係チェック
+ try:
+ import fontforge
+ except ImportError:
+ errors.append("FontForgeがインストールされていません (pip install fontforge)")
+
+ if errors:
+ print("❌ 前提条件エラー:")
+ for error in errors:
+ print(f" - {error}")
+ return False
+
+ print("✅ 前提条件チェック: 問題なし")
+ print(f"📂 SVGファイル数: {len(svg_files)}")
+ return True
+
+ def build_font(self) -> bool:
+ """フォント生成"""
+ try:
+ print("\n🔤 === フォント生成フェーズ ===")
+ result = self.font_generator.generate()
+ return result["success"]
+ except Exception as e:
+ print(f"❌ フォント生成エラー: {e}")
+ return False
+
+ def build_css(self) -> bool:
+ """CSS/SCSS生成"""
+ try:
+ print("\n🎨 === CSS/SCSS生成フェーズ ===")
+ self.css_generator.generate_all()
+ return True
+ except Exception as e:
+ print(f"❌ CSS生成エラー: {e}")
+ return False
+
+ def build_package(self) -> bool:
+ """パッケージング"""
+ try:
+ print("\n📦 === パッケージングフェーズ ===")
+ result = self.packager.package_all()
+ return result["is_valid"]
+ except Exception as e:
+ print(f"❌ パッケージングエラー: {e}")
+ return False
+
+ def build_all(self) -> bool:
+ """全体ビルド"""
+ print("🚀 AI Moji アイコンフォント パッケージ生成開始")
+ print(f"⏰ 開始時刻: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
+ print("=" * 60)
+
+ # 前提条件チェック
+ if not self.validate_prerequisites():
+ return False
+
+ # フォント生成
+ if not self.build_font():
+ return False
+
+ # CSS生成
+ if not self.build_css():
+ return False
+
+ # パッケージング
+ if not self.build_package():
+ return False
+
+ print("\n" + "=" * 60)
+ print("🎉 AI Moji アイコンフォントパッケージ生成完了!")
+ print(f"⏰ 完了時刻: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
+ print(f"📁 出力ディレクトリ: {self.output_dir.absolute()}")
+ print("\n📋 ファイル構成:")
+ self.show_output_structure()
+ print("\n🚀 npm パッケージとして公開準備完了!")
+ print(" cd dist && npm publish")
+
+ return True
+
+ def show_output_structure(self):
+ """出力ディレクトリ構造表示"""
+ if not self.output_dir.exists():
+ print(" (出力ディレクトリが存在しません)")
+ return
+
+ def print_tree(path: Path, prefix: str = ""):
+ items = sorted(path.iterdir(), key=lambda x: (x.is_file(), x.name))
+ for i, item in enumerate(items):
+ is_last = i == len(items) - 1
+ current_prefix = "└── " if is_last else "├── "
+ print(f" {prefix}{current_prefix}{item.name}")
+
+ if item.is_dir() and item.name in ["fonts", "css", "scss"]:
+ extension = " " if is_last else "│ "
+ print_tree(item, prefix + extension)
+
+ print_tree(self.output_dir)
+
+def main():
+ """メイン実行関数"""
+ parser = argparse.ArgumentParser(
+ description="AI Moji FontAwesome風アイコンフォントパッケージ生成システム",
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ epilog="""
+使用例:
+ python build.py # 全体ビルド
+ python build.py --font-only # フォントのみ生成
+ python build.py --css-only # CSSのみ生成
+ python build.py --package-only # パッケージングのみ
+ python build.py --clean # distディレクトリクリア
+ """
+ )
+
+ parser.add_argument("--font-only", action="store_true",
+ help="フォントファイルのみ生成")
+ parser.add_argument("--css-only", action="store_true",
+ help="CSS/SCSSファイルのみ生成")
+ parser.add_argument("--package-only", action="store_true",
+ help="パッケージングのみ実行")
+ parser.add_argument("--clean", action="store_true",
+ help="distディレクトリをクリア")
+ parser.add_argument("--svg-dir", default="../../svg",
+ help="SVGファイルディレクトリ (デフォルト: ../../svg)")
+ parser.add_argument("--output-dir", default="../../dist",
+ help="出力ディレクトリ (デフォルト: ../../dist)")
+
+ args = parser.parse_args()
+
+ # ビルドシステム初期化
+ build_system = AIMojiBuildSystem(args.svg_dir, args.output_dir)
+
+ try:
+ # クリーンアップ
+ if args.clean:
+ build_system.clean_dist()
+ return 0
+
+ # 個別ビルド
+ if args.font_only:
+ success = build_system.build_font()
+ elif args.css_only:
+ success = build_system.build_css()
+ elif args.package_only:
+ success = build_system.build_package()
+ else:
+ # 全体ビルド
+ success = build_system.build_all()
+
+ return 0 if success else 1
+
+ except KeyboardInterrupt:
+ print("\n⚠️ ビルドが中断されました")
+ return 1
+ except Exception as e:
+ print(f"\n❌ 予期しないエラーが発生しました: {e}")
+ return 1
+
+if __name__ == "__main__":
+ exit(main())
\ No newline at end of file
diff --git a/scpt/ai_moji_generator/css_generator.py b/scpt/ai_moji_generator/css_generator.py
new file mode 100644
index 0000000..5671536
--- /dev/null
+++ b/scpt/ai_moji_generator/css_generator.py
@@ -0,0 +1,256 @@
+#!/usr/bin/env python3
+"""
+AI Moji CSS Generator
+フォントメタデータからCSS/SCSSファイルを自動生成
+"""
+
+import json
+from pathlib import Path
+from typing import Dict, List
+from datetime import datetime
+
+class AIMojiCSSGenerator:
+ def __init__(self, output_dir: str = "../../dist"):
+ self.output_dir = Path(output_dir)
+ self.css_dir = self.output_dir / "css"
+ self.scss_dir = self.output_dir / "scss"
+ self.metadata_file = self.output_dir / "metadata.json"
+
+ # ディレクトリ作成
+ self.css_dir.mkdir(parents=True, exist_ok=True)
+ self.scss_dir.mkdir(parents=True, exist_ok=True)
+
+ def load_metadata(self) -> Dict:
+ """メタデータファイルを読み込み"""
+ if not self.metadata_file.exists():
+ raise FileNotFoundError(f"メタデータファイルが見つかりません: {self.metadata_file}")
+
+ with open(self.metadata_file, 'r', encoding='utf-8') as f:
+ return json.load(f)
+
+ def generate_css_template(self, metadata: Dict) -> str:
+ """FontAwesome風CSSテンプレート生成"""
+ font_family = metadata["font_family"]
+ css_prefix = metadata["css_prefix"]
+
+ css_content = f"""/*!
+ * AI Moji Icons v{metadata["version"]}
+ * Generated on {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}
+ * {metadata["total_icons"]} icons in the set
+ */
+
+@font-face {{
+ font-family: '{font_family}';
+ src: url('../fonts/{font_family}.eot');
+ src: url('../fonts/{font_family}.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/{font_family}.woff2') format('woff2'),
+ url('../fonts/{font_family}.woff') format('woff'),
+ url('../fonts/{font_family}.ttf') format('truetype'),
+ url('../fonts/{font_family}.svg#{font_family}') format('svg');
+ font-weight: normal;
+ font-style: normal;
+ font-display: block;
+}}
+
+.{css_prefix} {{
+ /* use !important to prevent issues with browser extensions that change fonts */
+ font-family: '{font_family}' !important;
+ speak: never;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}}
+
+/* Individual Icon Classes */
+"""
+
+ # 各アイコンのCSSクラス生成
+ for icon in metadata["icons"]:
+ css_content += f'.{icon["css_class"]}::before {{\n'
+ css_content += f' content: "\\{icon["unicode"][2:]}";\n'
+ css_content += '}\n\n'
+
+ return css_content
+
+ def generate_scss_variables(self, metadata: Dict) -> str:
+ """SCSS変数ファイル生成"""
+ scss_content = f"""//
+// AI Moji Icons Variables
+// Generated on {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}
+//
+
+// Font Configuration
+$aimoji-font-family: '{metadata["font_family"]}' !default;
+$aimoji-font-path: '../fonts' !default;
+$aimoji-css-prefix: '{metadata["css_prefix"]}' !default;
+$aimoji-version: '{metadata["version"]}' !default;
+
+// Unicode Variables
+"""
+
+ # 各アイコンのUnicode変数
+ for icon in metadata["icons"]:
+ var_name = icon["name"].replace("-", "_").replace(".", "_")
+ scss_content += f'$aimoji-{var_name}: "\\{icon["unicode"][2:]}";\n'
+
+ scss_content += "\n// Icon Map for iteration\n"
+ scss_content += "$aimoji-icons: (\n"
+
+ for i, icon in enumerate(metadata["icons"]):
+ var_name = icon["name"].replace("-", "_").replace(".", "_")
+ comma = "," if i < len(metadata["icons"]) - 1 else ""
+ scss_content += f' "{icon["name"]}": $aimoji-{var_name}{comma}\n'
+
+ scss_content += ");\n"
+
+ return scss_content
+
+ def generate_scss_mixins(self) -> str:
+ """SCSS mixinファイル生成"""
+ return """//
+// AI Moji Icons Mixins
+//
+
+// Base icon mixin
+@mixin aimoji-base() {
+ font-family: $aimoji-font-family;
+ speak: never;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+// Icon content mixin
+@mixin aimoji-icon($unicode) {
+ @include aimoji-base();
+ &::before {
+ content: $unicode;
+ }
+}
+
+// Size mixins
+@mixin aimoji-size($size) {
+ font-size: $size;
+ line-height: 1;
+}
+
+// Rotation mixins
+@mixin aimoji-rotate($degrees) {
+ transform: rotate(#{$degrees}deg);
+}
+
+@mixin aimoji-flip-horizontal() {
+ transform: scaleX(-1);
+}
+
+@mixin aimoji-flip-vertical() {
+ transform: scaleY(-1);
+}
+
+// Animation mixins
+@mixin aimoji-spin() {
+ animation: aimoji-spin 2s infinite linear;
+}
+
+@keyframes aimoji-spin {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(359deg); }
+}
+
+@mixin aimoji-pulse() {
+ animation: aimoji-pulse 1s infinite;
+}
+
+@keyframes aimoji-pulse {
+ 0% { transform: scale(1); }
+ 50% { transform: scale(1.1); }
+ 100% { transform: scale(1); }
+}
+"""
+
+ def minify_css(self, css_content: str) -> str:
+ """CSS最小化(簡易版)"""
+ import re
+
+ # コメント削除
+ css_content = re.sub(r'/\*.*?\*/', '', css_content, flags=re.DOTALL)
+ # 余分な空白削除
+ css_content = re.sub(r'\s+', ' ', css_content)
+ # セミコロン前後の空白削除
+ css_content = re.sub(r'\s*;\s*', ';', css_content)
+ # ブレース前後の空白削除
+ css_content = re.sub(r'\s*{\s*', '{', css_content)
+ css_content = re.sub(r'\s*}\s*', '}', css_content)
+
+ return css_content.strip()
+
+ def generate_all(self) -> Dict:
+ """全CSSファイル生成"""
+ print("📝 CSS/SCSSファイル生成開始...")
+
+ # メタデータ読み込み
+ metadata = self.load_metadata()
+
+ # CSS生成
+ css_content = self.generate_css_template(metadata)
+ css_file = self.css_dir / "aimoji.css"
+ with open(css_file, 'w', encoding='utf-8') as f:
+ f.write(css_content)
+ print(f"✅ CSS生成完了: {css_file}")
+
+ # CSS最小化版生成
+ css_min_content = self.minify_css(css_content)
+ css_min_file = self.css_dir / "aimoji.min.css"
+ with open(css_min_file, 'w', encoding='utf-8') as f:
+ f.write(css_min_content)
+ print(f"✅ CSS最小化版生成完了: {css_min_file}")
+
+ # SCSS変数生成
+ scss_vars = self.generate_scss_variables(metadata)
+ scss_vars_file = self.scss_dir / "_variables.scss"
+ with open(scss_vars_file, 'w', encoding='utf-8') as f:
+ f.write(scss_vars)
+ print(f"✅ SCSS変数生成完了: {scss_vars_file}")
+
+ # SCSS mixins生成
+ scss_mixins = self.generate_scss_mixins()
+ scss_mixins_file = self.scss_dir / "_mixins.scss"
+ with open(scss_mixins_file, 'w', encoding='utf-8') as f:
+ f.write(scss_mixins)
+ print(f"✅ SCSS mixins生成完了: {scss_mixins_file}")
+
+ return {
+ "css_file": str(css_file),
+ "css_min_file": str(css_min_file),
+ "scss_vars_file": str(scss_vars_file),
+ "scss_mixins_file": str(scss_mixins_file),
+ "total_icons": metadata["total_icons"]
+ }
+
+def main():
+ """メイン実行関数"""
+ try:
+ generator = AIMojiCSSGenerator()
+ result = generator.generate_all()
+
+ print("\n🎨 CSS/SCSS生成完了!")
+ print(f"📊 総アイコン数: {result['total_icons']}")
+
+ except Exception as e:
+ print(f"❌ エラーが発生しました: {e}")
+ return 1
+
+ return 0
+
+if __name__ == "__main__":
+ exit(main())
\ No newline at end of file
diff --git a/scpt/ai_moji_generator/font_generator.py b/scpt/ai_moji_generator/font_generator.py
new file mode 100644
index 0000000..d95c0ea
--- /dev/null
+++ b/scpt/ai_moji_generator/font_generator.py
@@ -0,0 +1,140 @@
+#!/usr/bin/env python3
+"""
+AI Moji Font Generator
+SVGファイルからWebフォントを自動生成するツール
+"""
+
+import os
+import json
+import subprocess
+from pathlib import Path
+from typing import Dict, List, Optional
+import fontforge
+import configparser
+
+class AIMojiFontGenerator:
+ def __init__(self, svg_dir: str = "../../svg", output_dir: str = "../../dist"):
+ self.svg_dir = Path(svg_dir)
+ self.output_dir = Path(output_dir)
+ self.fonts_dir = self.output_dir / "fonts"
+ self.metadata_file = self.output_dir / "metadata.json"
+
+ # ディレクトリ作成
+ self.fonts_dir.mkdir(parents=True, exist_ok=True)
+
+ # Unicode範囲設定 (Private Use Area)
+ self.unicode_start = 0xE900
+
+ def scan_svg_files(self) -> List[Dict[str, str]]:
+ """SVGファイルをスキャンしてメタデータを生成"""
+ svg_files = []
+ unicode_point = self.unicode_start
+
+ for svg_file in sorted(self.svg_dir.glob("*.svg")):
+ name = svg_file.stem
+ svg_files.append({
+ "name": name,
+ "file": str(svg_file),
+ "unicode": hex(unicode_point),
+ "unicode_decimal": unicode_point,
+ "css_class": f"aimoji-{name}"
+ })
+ unicode_point += 1
+
+ return svg_files
+
+ def create_font(self, svg_metadata: List[Dict], font_name: str = "aimoji") -> str:
+ """SVGからフォントファイルを生成"""
+ # FontForgeでフォント作成
+ font = fontforge.font()
+ font.fontname = font_name
+ font.familyname = "AI Moji"
+ font.fullname = "AI Moji Icons"
+ font.version = "1.0.0"
+ font.encoding = "UnicodeFull"
+
+ # 各SVGをフォントに追加
+ for icon in svg_metadata:
+ glyph = font.createChar(icon["unicode_decimal"])
+ glyph.importOutlines(icon["file"])
+
+ # グリフのサイズ調整
+ glyph.transform(fontforge.identity.scale(1024/glyph.boundingBox()[2]))
+ glyph.width = 1024
+
+ # フォントファイル生成
+ font_base = self.fonts_dir / font_name
+
+ # 複数フォーマットで出力
+ font.generate(f"{font_base}.ttf")
+ font.generate(f"{font_base}.woff")
+ font.generate(f"{font_base}.woff2")
+ font.generate(f"{font_base}.eot")
+ font.generate(f"{font_base}.svg")
+
+ font.close()
+ return str(font_base)
+
+ def save_metadata(self, svg_metadata: List[Dict], font_path: str):
+ """メタデータをJSONファイルに保存"""
+ metadata = {
+ "name": "AI Moji",
+ "version": "1.0.0",
+ "font_family": "aimoji",
+ "font_path": font_path,
+ "total_icons": len(svg_metadata),
+ "icons": svg_metadata,
+ "css_prefix": "aimoji",
+ "build_info": {
+ "generator": "AI Moji Font Generator",
+ "unicode_range": f"{hex(self.unicode_start)}-{hex(self.unicode_start + len(svg_metadata) - 1)}"
+ }
+ }
+
+ with open(self.metadata_file, 'w', encoding='utf-8') as f:
+ json.dump(metadata, f, indent=2, ensure_ascii=False)
+
+ print(f"✅ メタデータを保存: {self.metadata_file}")
+
+ def generate(self) -> Dict:
+ """フォント生成のメイン処理"""
+ print("🚀 AI Moji フォント生成開始...")
+
+ # SVGファイルスキャン
+ print("📂 SVGファイルをスキャン中...")
+ svg_metadata = self.scan_svg_files()
+ print(f"📁 {len(svg_metadata)} 個のSVGファイルを発見")
+
+ # フォント生成
+ print("🔤 フォントファイル生成中...")
+ font_path = self.create_font(svg_metadata)
+ print(f"✅ フォント生成完了: {font_path}")
+
+ # メタデータ保存
+ self.save_metadata(svg_metadata, font_path)
+
+ return {
+ "success": True,
+ "font_path": font_path,
+ "metadata": svg_metadata,
+ "total_icons": len(svg_metadata)
+ }
+
+def main():
+ """メイン実行関数"""
+ try:
+ generator = AIMojiFontGenerator()
+ result = generator.generate()
+
+ print("\n🎉 AI Moji フォント生成完了!")
+ print(f"📊 総アイコン数: {result['total_icons']}")
+ print(f"📁 出力ディレクトリ: {generator.fonts_dir}")
+
+ except Exception as e:
+ print(f"❌ エラーが発生しました: {e}")
+ return 1
+
+ return 0
+
+if __name__ == "__main__":
+ exit(main())
\ No newline at end of file
diff --git a/scpt/ai_moji_generator/packager.py b/scpt/ai_moji_generator/packager.py
new file mode 100644
index 0000000..10d96aa
--- /dev/null
+++ b/scpt/ai_moji_generator/packager.py
@@ -0,0 +1,320 @@
+#!/usr/bin/env python3
+"""
+AI Moji Packager
+生成されたフォント・CSSファイルをnpmパッケージとして配布準備
+"""
+
+import json
+import shutil
+from pathlib import Path
+from typing import Dict
+from datetime import datetime
+
+class AIMojiPackager:
+ def __init__(self, output_dir: str = "../../dist"):
+ self.output_dir = Path(output_dir)
+ self.metadata_file = self.output_dir / "metadata.json"
+
+ def load_metadata(self) -> Dict:
+ """メタデータファイルを読み込み"""
+ if not self.metadata_file.exists():
+ raise FileNotFoundError(f"メタデータファイルが見つかりません: {self.metadata_file}")
+
+ with open(self.metadata_file, 'r', encoding='utf-8') as f:
+ return json.load(f)
+
+ def generate_package_json(self, metadata: Dict) -> str:
+ """package.json生成"""
+ package_data = {
+ "name": "aimoji",
+ "version": metadata["version"],
+ "description": "AI Moji文字システム - アイコンフォントパッケージ",
+ "main": "css/aimoji.css",
+ "style": "css/aimoji.css",
+ "sass": "scss/_variables.scss",
+ "keywords": [
+ "icons",
+ "font",
+ "css",
+ "ai-moji",
+ "webfont",
+ "katakamuna",
+ "japanese"
+ ],
+ "homepage": "https://github.com/syui/ai",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/syui/ai.git"
+ },
+ "bugs": {
+ "url": "https://github.com/syui/ai/issues"
+ },
+ "author": "syui",
+ "license": "MIT",
+ "files": [
+ "fonts/*",
+ "css/*",
+ "scss/*",
+ "README.md",
+ "metadata.json"
+ ],
+ "engines": {
+ "node": ">=12"
+ },
+ "scripts": {
+ "build": "echo 'AI Moji Icons are pre-built'",
+ "test": "echo 'No tests specified'"
+ },
+ "devDependencies": {},
+ "dependencies": {}
+ }
+
+ package_file = self.output_dir / "package.json"
+ with open(package_file, 'w', encoding='utf-8') as f:
+ json.dump(package_data, f, indent=2, ensure_ascii=False)
+
+ return str(package_file)
+
+ def generate_readme(self, metadata: Dict) -> str:
+ """README.md生成"""
+ readme_content = f"""# AI Moji Icons
+
+AI Moji文字システムのアイコンフォントパッケージです。
+アルファベット、カタカムナ、数字の組み合わせによる独自の文字システムをWebフォントとして提供します。
+
+## インストール
+
+```bash
+npm install aimoji
+```
+
+## 使用方法
+
+### CSS
+
+```html
+
+```
+
+### HTML
+
+```html
+
+
+
+```
+
+### SCSS
+
+```scss
+@import "node_modules/aimoji/scss/variables";
+@import "node_modules/aimoji/scss/mixins";
+
+.my-icon {{
+ @include aimoji-icon($aimoji-ai);
+ @include aimoji-size(24px);
+}}
+```
+
+## アイコン一覧
+
+総アイコン数: **{metadata["total_icons"]}**
+
+| アイコン名 | CSS クラス | Unicode |
+|-----------|-----------|---------|
+"""
+
+ # アイコン一覧テーブル生成
+ for icon in metadata["icons"]:
+ readme_content += f"| {icon['name']} | `.{icon['css_class']}` | `{icon['unicode']}` |\n"
+
+ readme_content += f"""
+
+## SCSS Mixins
+
+### 基本的な使用方法
+
+```scss
+// アイコンの基本スタイル
+.icon {{
+ @include aimoji-base();
+}}
+
+// 特定のアイコンを表示
+.ai-icon {{
+ @include aimoji-icon($aimoji-ai);
+}}
+
+// サイズ指定
+.large-icon {{
+ @include aimoji-size(32px);
+}}
+```
+
+### アニメーション
+
+```scss
+// 回転アニメーション
+.spinning-icon {{
+ @include aimoji-spin();
+}}
+
+// パルスアニメーション
+.pulsing-icon {{
+ @include aimoji-pulse();
+}}
+
+// 手動回転
+.rotated-icon {{
+ @include aimoji-rotate(45);
+}}
+
+// 反転
+.flipped-icon {{
+ @include aimoji-flip-horizontal();
+}}
+```
+
+## ビルド情報
+
+- **バージョン**: {metadata["version"]}
+- **フォントファミリー**: {metadata["font_family"]}
+- **Unicode範囲**: {metadata["build_info"]["unicode_range"]}
+- **生成日時**: {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}
+- **ジェネレーター**: {metadata["build_info"]["generator"]}
+
+## ライセンス
+
+MIT License
+
+## 開発者
+
+- **作者**: syui
+- **リポジトリ**: https://github.com/syui/ai
+- **プロジェクト**: AI Moji文字システム
+
+## 哲学
+
+AI Mojiは「存在子理論」に基づく文字システムです。
+現実の個人の唯一性をデジタル世界で担保し、現実とゲームの循環的影響を実現します。
+
+詳細は[エコシステム統合設計書](https://github.com/syui/ai/blob/main/CLAUDE.md)をご覧ください。
+"""
+
+ readme_file = self.output_dir / "README.md"
+ with open(readme_file, 'w', encoding='utf-8') as f:
+ f.write(readme_content)
+
+ return str(readme_file)
+
+ def generate_license(self) -> str:
+ """LICENSE生成"""
+ license_content = f"""MIT License
+
+Copyright (c) {datetime.now().year} syui
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+"""
+
+ license_file = self.output_dir / "LICENSE"
+ with open(license_file, 'w', encoding='utf-8') as f:
+ f.write(license_content)
+
+ return str(license_file)
+
+ def validate_package(self) -> bool:
+ """パッケージの完全性チェック"""
+ required_files = [
+ "package.json",
+ "README.md",
+ "LICENSE",
+ "metadata.json",
+ "css/aimoji.css",
+ "css/aimoji.min.css",
+ "scss/_variables.scss",
+ "scss/_mixins.scss",
+ "fonts"
+ ]
+
+ missing_files = []
+ for file_path in required_files:
+ full_path = self.output_dir / file_path
+ if not full_path.exists():
+ missing_files.append(file_path)
+
+ if missing_files:
+ print(f"⚠️ 以下のファイルが不足しています: {', '.join(missing_files)}")
+ return False
+
+ print("✅ パッケージの完全性チェック: 問題なし")
+ return True
+
+ def package_all(self) -> Dict:
+ """全パッケージファイル生成"""
+ print("📦 パッケージング開始...")
+
+ # メタデータ読み込み
+ metadata = self.load_metadata()
+
+ # package.json生成
+ package_file = self.generate_package_json(metadata)
+ print(f"✅ package.json生成完了: {package_file}")
+
+ # README.md生成
+ readme_file = self.generate_readme(metadata)
+ print(f"✅ README.md生成完了: {readme_file}")
+
+ # LICENSE生成
+ license_file = self.generate_license()
+ print(f"✅ LICENSE生成完了: {license_file}")
+
+ # パッケージ検証
+ is_valid = self.validate_package()
+
+ return {
+ "package_file": package_file,
+ "readme_file": readme_file,
+ "license_file": license_file,
+ "is_valid": is_valid,
+ "output_dir": str(self.output_dir)
+ }
+
+def main():
+ """メイン実行関数"""
+ try:
+ packager = AIMojiPackager()
+ result = packager.package_all()
+
+ print("\n📦 パッケージング完了!")
+ print(f"📁 出力ディレクトリ: {result['output_dir']}")
+
+ if result["is_valid"]:
+ print("🚀 npmパッケージとして公開準備完了!")
+ print(" npm publish コマンドで公開できます")
+ else:
+ print("⚠️ パッケージに問題があります")
+
+ except Exception as e:
+ print(f"❌ エラーが発生しました: {e}")
+ return 1
+
+ return 0
+
+if __name__ == "__main__":
+ exit(main())
\ No newline at end of file
diff --git a/scpt/ai_moji_generator/requirements.txt b/scpt/ai_moji_generator/requirements.txt
new file mode 100644
index 0000000..0956fbd
--- /dev/null
+++ b/scpt/ai_moji_generator/requirements.txt
@@ -0,0 +1,8 @@
+# AI Moji Font Generator Dependencies
+
+# フォント生成用
+fontforge>=20230101
+fonttools>=4.38.0
+
+# その他ユーティリティ
+pathlib2>=2.3.7; python_version < "3.4"
\ No newline at end of file
diff --git a/scpt/ai_moji_generator/setup.sh b/scpt/ai_moji_generator/setup.sh
new file mode 100644
index 0000000..759be86
--- /dev/null
+++ b/scpt/ai_moji_generator/setup.sh
@@ -0,0 +1,97 @@
+#!/bin/bash
+# AI Moji Font Generator Setup Script
+
+set -e
+
+echo "🚀 AI Moji Font Generator セットアップ開始"
+echo "======================================"
+
+# Python バージョンチェック
+echo "🐍 Python バージョンチェック..."
+python3 --version || {
+ echo "❌ Python 3 が見つかりません"
+ echo " Python 3.6 以上をインストールしてください"
+ exit 1
+}
+
+# pip が利用可能かチェック
+echo "📦 pip チェック..."
+python3 -m pip --version || {
+ echo "❌ pip が見つかりません"
+ echo " pip をインストールしてください"
+ exit 1
+}
+
+# FontForge インストール (macOS)
+if [[ "$OSTYPE" == "darwin"* ]]; then
+ echo "🍎 macOS環境を検出"
+ if ! command -v fontforge &> /dev/null; then
+ echo "🔧 FontForge をインストール中..."
+ if command -v brew &> /dev/null; then
+ brew install fontforge
+ else
+ echo "❌ Homebrew が見つかりません"
+ echo " Homebrewをインストールしてから再実行してください:"
+ echo " /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\""
+ exit 1
+ fi
+ else
+ echo "✅ FontForge インストール済み"
+ fi
+fi
+
+# FontForge インストール (Ubuntu/Debian)
+if [[ "$OSTYPE" == "linux-gnu"* ]]; then
+ echo "🐧 Linux環境を検出"
+ if ! command -v fontforge &> /dev/null; then
+ echo "🔧 FontForge をインストール中..."
+ sudo apt-get update
+ sudo apt-get install -y fontforge python3-fontforge
+ else
+ echo "✅ FontForge インストール済み"
+ fi
+fi
+
+# Python依存関係インストール
+echo "📚 Python 依存関係をインストール中..."
+python3 -m pip install -r requirements.txt
+
+# ディレクトリ構造確認
+echo "📁 ディレクトリ構造確認..."
+SVG_DIR="../../svg"
+if [ ! -d "$SVG_DIR" ]; then
+ echo "⚠️ SVGディレクトリが見つかりません: $SVG_DIR"
+ echo " ai.mojiプロジェクトのルートディレクトリで実行していることを確認してください"
+fi
+
+SVG_COUNT=$(find "$SVG_DIR" -name "*.svg" 2>/dev/null | wc -l || echo "0")
+echo " SVGファイル数: $SVG_COUNT"
+
+# 実行権限設定
+echo "🔐 実行権限設定..."
+chmod +x build.py
+
+# テストビルド
+echo "🧪 テストビルド実行..."
+python3 build.py --clean
+if python3 build.py --font-only; then
+ echo "✅ テストビルド成功!"
+else
+ echo "❌ テストビルドに失敗しました"
+ exit 1
+fi
+
+echo ""
+echo "🎉 セットアップ完了!"
+echo "======================================"
+echo ""
+echo "📋 使用方法:"
+echo " python3 build.py # 全体ビルド"
+echo " python3 build.py --font-only # フォントのみ"
+echo " python3 build.py --css-only # CSSのみ"
+echo " python3 build.py --package-only # パッケージングのみ"
+echo " python3 build.py --clean # クリーンアップ"
+echo ""
+echo "📁 出力ディレクトリ: ../../dist"
+echo ""
+echo "🚀 準備完了! FontAwesome風aimojiパッケージを生成できます"
\ No newline at end of file