musubix 1.6.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,10 +19,15 @@
19
19
  13. [正誤性検証](#正誤性検証) *(v1.4.1)*
20
20
  14. [高度な推論](#高度な推論) *(v1.4.5)*
21
21
  15. [対話的REPLモード](#対話的replモード) *(v1.5.0)*
22
- 16. [MCPサーバー連携](#mcpサーバー連携)
23
- 17. [YATA知識グラフ](#yata知識グラフ)
24
- 18. [ベストプラクティス](#ベストプラクティス)
25
- 19. [トラブルシューティング](#トラブルシューティング)
22
+ 16. [YATA Local](#yata-local) *(v1.6.3)*
23
+ 17. [YATA Global](#yata-global) *(v1.6.3)*
24
+ 18. [KGPR - Knowledge Graph Pull Request](#kgpr---knowledge-graph-pull-request) *(v1.6.4)*
25
+ 19. [YATA プラットフォーム拡張](#yata-プラットフォーム拡張) *(v1.7.0)*
26
+ 20. [形式検証](#形式検証) *(v1.7.5)*
27
+ 21. [MCPサーバー連携](#mcpサーバー連携)
28
+ 21. [YATA知識グラフ](#yata知識グラフ)
29
+ 22. [ベストプラクティス](#ベストプラクティス)
30
+ 23. [トラブルシューティング](#トラブルシューティング)
26
31
 
27
32
  ---
28
33
 
@@ -1073,6 +1078,593 @@ musubix> history clear
1073
1078
 
1074
1079
  ---
1075
1080
 
1081
+ ## YATA Local
1082
+
1083
+ *(v1.6.3 新規)*
1084
+
1085
+ YATA Localは、高性能なSQLiteベースのローカル知識グラフです。推論機能を内蔵し、シングルユーザー・オフライン環境でデータ主権と速度が重要な場合に最適です。
1086
+
1087
+ ### 機能
1088
+
1089
+ | 機能 | 説明 |
1090
+ |------|------|
1091
+ | **SQLiteストレージ** | WALモードで並行読み取り、シングルライター |
1092
+ | **全文検索** | FTS5ベースのトリプル検索 |
1093
+ | **グラフ探索** | BFS/DFSアルゴリズム、深度制御 |
1094
+ | **推論エンジン** | 4つのOWL-liteルール(推移性、対称性、逆関係、ドメイン/レンジ) |
1095
+ | **制約** | 4つの検証ルール(カーディナリティ、排他、一意性、必須) |
1096
+ | **ACIDトランザクション** | 完全なトランザクションサポート |
1097
+
1098
+ ### インストール
1099
+
1100
+ ```bash
1101
+ npm install @nahisaho/yata-local
1102
+ ```
1103
+
1104
+ ### クイックスタート
1105
+
1106
+ ```typescript
1107
+ import { YataLocal } from '@nahisaho/yata-local';
1108
+
1109
+ // デフォルト設定で初期化
1110
+ const yata = new YataLocal('./knowledge.db');
1111
+ await yata.initialize();
1112
+
1113
+ // トリプルを追加
1114
+ await yata.addTriple({
1115
+ subject: 'Person:john',
1116
+ predicate: 'hasParent',
1117
+ object: 'Person:mary'
1118
+ });
1119
+
1120
+ // トリプルをクエリ
1121
+ const results = await yata.query({
1122
+ subject: 'Person:john',
1123
+ predicate: 'hasParent'
1124
+ });
1125
+
1126
+ // 全文検索
1127
+ const searchResults = await yata.search('john parent');
1128
+
1129
+ // グラフ探索(BFS)
1130
+ const ancestors = await yata.traverse('Person:john', 'hasParent', {
1131
+ direction: 'outgoing',
1132
+ maxDepth: 5,
1133
+ algorithm: 'bfs'
1134
+ });
1135
+
1136
+ // クリーンアップ
1137
+ await yata.close();
1138
+ ```
1139
+
1140
+ ### 推論エンジン
1141
+
1142
+ YATA Localは4つのOWL-lite推論ルールをサポートします:
1143
+
1144
+ | ルール | 説明 | 例 |
1145
+ |--------|------|-----|
1146
+ | **推移性** | A→BかつB→CならA→C | hasAncestorは推移的 |
1147
+ | **対称性** | A→BならB→A | friendOfは対称的 |
1148
+ | **逆関係** | A→B(P経由)ならB→A(P⁻¹経由) | hasChild ↔ hasParent |
1149
+ | **ドメイン/レンジ** | 述語から型を推論 | hasAgeはPersonを示唆 |
1150
+
1151
+ ```typescript
1152
+ // 推論を実行
1153
+ const inferred = await yata.infer();
1154
+ console.log(`${inferred.length}個の新しいトリプルを推論`);
1155
+ ```
1156
+
1157
+ ### 制約
1158
+
1159
+ ```typescript
1160
+ // 制約を定義
1161
+ await yata.addConstraint({
1162
+ type: 'cardinality',
1163
+ predicate: 'hasSpouse',
1164
+ max: 1
1165
+ });
1166
+
1167
+ // 検証
1168
+ const violations = await yata.validate();
1169
+ if (violations.length > 0) {
1170
+ console.error('制約違反:', violations);
1171
+ }
1172
+ ```
1173
+
1174
+ ### 設定オプション
1175
+
1176
+ ```typescript
1177
+ const yata = new YataLocal('./knowledge.db', {
1178
+ // WALモードで並行性向上(デフォルト: true)
1179
+ walMode: true,
1180
+
1181
+ // FTS5検索を有効化(デフォルト: true)
1182
+ enableSearch: true,
1183
+
1184
+ // 書き込み時に自動推論(デフォルト: false)
1185
+ autoInfer: false,
1186
+
1187
+ // ジャーナルモード(デフォルト: 'wal')
1188
+ journalMode: 'wal'
1189
+ });
1190
+ ```
1191
+
1192
+ ---
1193
+
1194
+ ## YATA Global
1195
+
1196
+ *(v1.6.3 新規)*
1197
+
1198
+ YATA Globalは、チームコラボレーション向けの分散型知識グラフプラットフォームです。共有知識グラフへのREST APIアクセスと、オフラインサポート・インテリジェントな同期機能を提供します。
1199
+
1200
+ ### 機能
1201
+
1202
+ | 機能 | 説明 |
1203
+ |------|------|
1204
+ | **REST API** | HTTP経由の完全なCRUD操作 |
1205
+ | **オフラインキャッシュ** | SQLiteベースのローカルキャッシュ |
1206
+ | **同期エンジン** | Push/Pullと競合解決 |
1207
+ | **競合解決** | Last-write-winsまたはカスタム戦略 |
1208
+ | **認証** | APIキーベースの認証 |
1209
+ | **バッチ操作** | 一括トリプル操作 |
1210
+
1211
+ ### インストール
1212
+
1213
+ ```bash
1214
+ npm install @nahisaho/yata-global
1215
+ ```
1216
+
1217
+ ### クイックスタート
1218
+
1219
+ ```typescript
1220
+ import { YataGlobal } from '@nahisaho/yata-global';
1221
+
1222
+ // クライアントを初期化
1223
+ const yata = new YataGlobal({
1224
+ endpoint: 'https://yata.example.com/api',
1225
+ apiKey: 'your-api-key',
1226
+ graphId: 'project-knowledge'
1227
+ });
1228
+
1229
+ await yata.initialize();
1230
+
1231
+ // トリプルを追加(バッチ)
1232
+ await yata.addTriples([
1233
+ { subject: 'Task:001', predicate: 'assignedTo', object: 'User:alice' },
1234
+ { subject: 'Task:001', predicate: 'status', object: 'in-progress' }
1235
+ ]);
1236
+
1237
+ // フィルタ付きクエリ
1238
+ const tasks = await yata.query({
1239
+ predicate: 'assignedTo',
1240
+ object: 'User:alice'
1241
+ });
1242
+
1243
+ // クリーンアップ
1244
+ await yata.close();
1245
+ ```
1246
+
1247
+ ### オフラインサポート
1248
+
1249
+ YATA Globalは自動同期によるオフラインファースト操作をサポートします:
1250
+
1251
+ ```typescript
1252
+ const yata = new YataGlobal({
1253
+ endpoint: 'https://yata.example.com/api',
1254
+ apiKey: 'your-api-key',
1255
+ graphId: 'project-knowledge',
1256
+
1257
+ // オフライン設定
1258
+ offlineMode: true,
1259
+ cachePath: './yata-cache.db',
1260
+ syncInterval: 60000 // 60秒ごとに自動同期
1261
+ });
1262
+
1263
+ // オフラインでも動作 - ローカルにキャッシュ
1264
+ await yata.addTriple({
1265
+ subject: 'Note:001',
1266
+ predicate: 'content',
1267
+ object: '重要な会議メモ'
1268
+ });
1269
+
1270
+ // オンライン時に手動同期
1271
+ await yata.sync();
1272
+ ```
1273
+
1274
+ ### 競合解決
1275
+
1276
+ ```typescript
1277
+ const yata = new YataGlobal({
1278
+ // ... その他のオプション
1279
+
1280
+ conflictStrategy: 'last-write-wins', // デフォルト
1281
+ // または: 'server-wins', 'client-wins', 'manual'
1282
+
1283
+ onConflict: async (local, remote) => {
1284
+ // カスタム解決ロジック
1285
+ console.log('競合を検出:', local, remote);
1286
+ return remote; // リモート版を優先
1287
+ }
1288
+ });
1289
+ ```
1290
+
1291
+ ### 同期ステータス
1292
+
1293
+ ```typescript
1294
+ // 同期ステータスを確認
1295
+ const status = await yata.getSyncStatus();
1296
+ console.log(`保留中の変更: ${status.pendingPush}`);
1297
+ console.log(`最終同期: ${status.lastSyncAt}`);
1298
+
1299
+ // 完全同期を強制
1300
+ await yata.sync({ force: true });
1301
+ ```
1302
+
1303
+ ### YATA Local vs YATA Global の選択
1304
+
1305
+ | ユースケース | 推奨 |
1306
+ |-------------|------|
1307
+ | 個人用ナレッジベース | YATA Local |
1308
+ | シングルユーザーアプリ | YATA Local |
1309
+ | プライバシー重視のデータ | YATA Local |
1310
+ | チームコラボレーション | YATA Global |
1311
+ | クロスデバイスアクセス | YATA Global |
1312
+ | 共有プロジェクト知識 | YATA Global |
1313
+ | 同期付きオフラインファースト | YATA Global |
1314
+
1315
+ ---
1316
+
1317
+ ## KGPR - Knowledge Graph Pull Request
1318
+
1319
+ *(v1.6.4)*
1320
+
1321
+ KGPR(Knowledge Graph Pull Request)は、GitHub PRと同様のワークフローで、YATA LocalからYATA Globalへ安全に知識グラフを共有する機能です。
1322
+
1323
+ ### ワークフロー
1324
+
1325
+ ```
1326
+ ┌─────────────┐ ┌──────────────┐ ┌───────────────┐
1327
+ │ YATA Local │ ──► │ KGPR (Draft) │ ──► │ YATA Global │
1328
+ │ (ローカルKG) │ │ (差分抽出) │ │ (レビュー・マージ) │
1329
+ └─────────────┘ └──────────────┘ └───────────────┘
1330
+
1331
+ ステータス遷移:
1332
+ draft → open → reviewing → approved/changes_requested → merged/closed
1333
+ ```
1334
+
1335
+ ### プライバシーレベル
1336
+
1337
+ | レベル | フィルタ対象 |
1338
+ |-------|------------|
1339
+ | `strict` | ファイルパス、URL、認証情報、全メタデータ |
1340
+ | `moderate` | ファイルパス、URL、認証情報 |
1341
+ | `none` | フィルタなし |
1342
+
1343
+ ### CLIコマンド
1344
+
1345
+ ```bash
1346
+ # KGPRを作成
1347
+ musubix kgpr create -t "認証パターンの追加"
1348
+
1349
+ # 作成前に差分をプレビュー
1350
+ musubix kgpr diff --namespace myproject --privacy moderate
1351
+
1352
+ # KGPR一覧を表示
1353
+ musubix kgpr list
1354
+
1355
+ # KGPRをレビューに送信
1356
+ musubix kgpr submit <id>
1357
+
1358
+ # KGPR詳細を表示
1359
+ musubix kgpr show <id>
1360
+
1361
+ # マージせずにクローズ
1362
+ musubix kgpr close <id>
1363
+ ```
1364
+
1365
+ ### MCPツール
1366
+
1367
+ | ツール | 説明 |
1368
+ |-------|------|
1369
+ | `kgpr_create` | ローカル知識グラフからKGPRを作成 |
1370
+ | `kgpr_diff` | KGPR作成前に差分をプレビュー |
1371
+ | `kgpr_list` | 全KGPRを一覧表示 |
1372
+ | `kgpr_submit` | KGPRをレビューに送信 |
1373
+ | `kgpr_review` | KGPRをレビュー(approve/changes_requested/commented) |
1374
+
1375
+ ### 使用例
1376
+
1377
+ ```bash
1378
+ # 1. 共有内容をプレビュー
1379
+ musubix kgpr diff --privacy strict
1380
+
1381
+ # 2. 説明付きでKGPRを作成
1382
+ musubix kgpr create -t "Reactパターンの共有" -d "project-xから学習したパターン"
1383
+
1384
+ # 3. KGPRを確認
1385
+ musubix kgpr show KGPR-001
1386
+
1387
+ # 4. レビューに送信
1388
+ musubix kgpr submit KGPR-001
1389
+ ```
1390
+
1391
+ ---
1392
+
1393
+ ## YATA プラットフォーム拡張
1394
+
1395
+ *(v1.7.0)*
1396
+
1397
+ バージョン1.7.0では、YATAプラットフォームに5つの主要機能が追加されました。
1398
+
1399
+ ### Phase 1: インデックス最適化
1400
+
1401
+ YATA Localのクエリパフォーマンスを複合インデックスで最適化。
1402
+
1403
+ ```typescript
1404
+ import { IndexOptimizer } from '@nahisaho/yata-local';
1405
+
1406
+ const optimizer = new IndexOptimizer(database);
1407
+
1408
+ // クエリパターンを分析して最適なインデックスを作成
1409
+ const analysis = await optimizer.analyzeQueryPatterns();
1410
+ const created = await optimizer.createOptimalIndexes();
1411
+
1412
+ // インデックスの健全性をチェック
1413
+ const health = await optimizer.checkIndexHealth();
1414
+ ```
1415
+
1416
+ **主な機能:**
1417
+ - 一般的なクエリパターン用の複合インデックス作成
1418
+ - 断片化検出によるインデックス健全性監視
1419
+ - 自動最適化推奨
1420
+
1421
+ ### Phase 2: 拡張エクスポートパイプライン
1422
+
1423
+ 増分エクスポートと複数フォーマット対応の強力なエクスポート機能。
1424
+
1425
+ ```typescript
1426
+ import { ExportPipeline } from '@nahisaho/yata-local';
1427
+
1428
+ const pipeline = new ExportPipeline(database);
1429
+
1430
+ // フルエクスポート
1431
+ const fullData = await pipeline.exportFull({ namespace: 'myproject' });
1432
+
1433
+ // 増分エクスポート(前回エクスポート以降の変更)
1434
+ const changes = await pipeline.exportIncremental({
1435
+ since: lastExportTimestamp,
1436
+ format: 'json'
1437
+ });
1438
+
1439
+ // 変換付きエクスポート
1440
+ const transformed = await pipeline.exportWithTransform({
1441
+ format: 'rdf',
1442
+ includeMetadata: true
1443
+ });
1444
+ ```
1445
+
1446
+ **対応フォーマット:**
1447
+ - JSON(デフォルト)
1448
+ - RDF/Turtle
1449
+ - N-Triples
1450
+ - カスタムトランスフォーマー
1451
+
1452
+ ### Phase 3: Global同期統合
1453
+
1454
+ YATA LocalとYATA Global間のシームレスな同期。
1455
+
1456
+ ```typescript
1457
+ import { GlobalSyncClient, SyncEngine } from '@nahisaho/yata-global';
1458
+
1459
+ const client = new GlobalSyncClient({
1460
+ endpoint: 'https://yata-global.example.com',
1461
+ offlineMode: true
1462
+ });
1463
+
1464
+ // 同期を初期化
1465
+ await client.initialize();
1466
+
1467
+ // ローカル変更をプッシュ
1468
+ const syncResult = await client.sync({
1469
+ namespace: 'myproject',
1470
+ direction: 'push'
1471
+ });
1472
+
1473
+ // グローバルから更新をプル
1474
+ await client.sync({
1475
+ namespace: 'shared-patterns',
1476
+ direction: 'pull'
1477
+ });
1478
+ ```
1479
+
1480
+ **機能:**
1481
+ - オフラインファーストと自動同期
1482
+ - 競合解決戦略
1483
+ - 選択的な名前空間同期
1484
+ - フレームワークパターンリポジトリ
1485
+
1486
+ ### Phase 4: コードジェネレーター強化
1487
+
1488
+ 設計ドキュメントからの高度なコード生成。
1489
+
1490
+ ```typescript
1491
+ import { CodeGenerator } from '@nahisaho/yata-local';
1492
+
1493
+ const generator = new CodeGenerator({
1494
+ language: 'typescript',
1495
+ outputDir: './src/generated'
1496
+ });
1497
+
1498
+ // C4設計から生成
1499
+ const result = await generator.generateFromC4(designDocument);
1500
+
1501
+ // カスタムテンプレートで生成
1502
+ await generator.generate({
1503
+ template: 'repository-pattern',
1504
+ context: { entityName: 'User' }
1505
+ });
1506
+ ```
1507
+
1508
+ **対応パターン:**
1509
+ - Repositoryパターン
1510
+ - Serviceレイヤー
1511
+ - Factoryパターン
1512
+ - ドメインイベント
1513
+ - Value Objects
1514
+
1515
+ ### Phase 5: YATA UI(Web可視化)
1516
+
1517
+ 知識グラフのWebベース可視化・管理インターフェース。
1518
+
1519
+ ```typescript
1520
+ import { YataUIServer, createYataUIServer } from '@nahisaho/yata-ui';
1521
+
1522
+ // サーバーを作成して起動
1523
+ const server = createYataUIServer({
1524
+ port: 3000,
1525
+ enableRealtime: true
1526
+ });
1527
+
1528
+ // データプロバイダーを設定
1529
+ server.setDataProvider(async () => ({
1530
+ nodes: await getEntities(),
1531
+ edges: await getRelationships()
1532
+ }));
1533
+
1534
+ await server.start();
1535
+ console.log(`UI: ${server.getUrl()}`);
1536
+ ```
1537
+
1538
+ **UI機能:**
1539
+ - インタラクティブなグラフ可視化
1540
+ - WebSocketによるリアルタイム更新
1541
+ - 名前空間フィルタリング
1542
+ - エンティティ/リレーションシップ編集
1543
+ - エクスポート/インポート機能
1544
+
1545
+ ### v1.7.0 パッケージ概要
1546
+
1547
+ | パッケージ | 説明 |
1548
+ |-----------|------|
1549
+ | `@nahisaho/yata-local` | IndexOptimizer, ExportPipeline, CodeGenerator |
1550
+ | `@nahisaho/yata-global` | GlobalSyncClient, SyncEngine, CacheManager |
1551
+ | `@nahisaho/yata-ui` | YataUIServer, グラフ可視化 |
1552
+
1553
+ ---
1554
+
1555
+ ## 形式検証
1556
+
1557
+ *(v1.7.5)*
1558
+
1559
+ `@nahisaho/musubix-formal-verify` パッケージは、Z3 SMTソルバーを使用した形式検証機能を提供します。
1560
+
1561
+ ### インストール
1562
+
1563
+ ```bash
1564
+ npm install @nahisaho/musubix-formal-verify
1565
+ # オプション: WebAssemblyサポート用にz3-solverをインストール
1566
+ npm install z3-solver
1567
+ ```
1568
+
1569
+ ### Z3 SMTソルバー統合
1570
+
1571
+ ```typescript
1572
+ import { Z3Adapter, PreconditionVerifier, PostconditionVerifier } from '@nahisaho/musubix-formal-verify';
1573
+
1574
+ // Z3アダプター作成(バックエンド自動選択)
1575
+ const z3 = await Z3Adapter.create();
1576
+
1577
+ // 事前条件検証
1578
+ const preVerifier = new PreconditionVerifier(z3);
1579
+ const result = await preVerifier.verify({
1580
+ condition: { expression: 'amount > 0 && balance >= amount', format: 'javascript' },
1581
+ variables: [
1582
+ { name: 'amount', type: 'Int' },
1583
+ { name: 'balance', type: 'Int' },
1584
+ ],
1585
+ });
1586
+
1587
+ console.log(result.status); // 'valid' | 'invalid' | 'unknown' | 'error'
1588
+ ```
1589
+
1590
+ ### Hoareトリプル検証
1591
+
1592
+ ```typescript
1593
+ // {P} C {Q} の検証
1594
+ const postVerifier = new PostconditionVerifier(z3);
1595
+ const hoareResult = await postVerifier.verify({
1596
+ precondition: { expression: 'balance >= amount', format: 'javascript' },
1597
+ postcondition: { expression: 'balance_new == balance - amount', format: 'javascript' },
1598
+ preVariables: [{ name: 'balance', type: 'Int' }, { name: 'amount', type: 'Int' }],
1599
+ postVariables: [{ name: 'balance_new', type: 'Int' }],
1600
+ transition: 'balance_new == balance - amount',
1601
+ });
1602
+ ```
1603
+
1604
+ ### EARS→SMT変換
1605
+
1606
+ ```typescript
1607
+ import { EarsToSmtConverter } from '@nahisaho/musubix-formal-verify';
1608
+
1609
+ const converter = new EarsToSmtConverter();
1610
+
1611
+ // EARS要件をSMT-LIB2に変換
1612
+ const results = converter.convertMultiple([
1613
+ 'THE system SHALL validate inputs', // ubiquitous
1614
+ 'WHEN error, THE system SHALL notify user', // event-driven
1615
+ 'WHILE busy, THE system SHALL queue requests', // state-driven
1616
+ 'THE system SHALL NOT expose secrets', // unwanted
1617
+ 'IF admin, THEN THE system SHALL allow edit', // optional
1618
+ ]);
1619
+
1620
+ results.forEach(r => {
1621
+ console.log(`パターン: ${r.formula?.metadata.earsPattern.type}`);
1622
+ console.log(`SMT: ${r.formula?.smtLib2}`);
1623
+ });
1624
+ ```
1625
+
1626
+ ### トレーサビリティデータベース
1627
+
1628
+ ```typescript
1629
+ import { TraceabilityDB, ImpactAnalyzer } from '@nahisaho/musubix-formal-verify';
1630
+
1631
+ // SQLiteベースのトレーサビリティDB作成
1632
+ const db = new TraceabilityDB('./trace.db');
1633
+
1634
+ // ノード追加
1635
+ await db.addNode({ id: 'REQ-001', type: 'requirement', title: 'ユーザー認証' });
1636
+ await db.addNode({ id: 'DES-001', type: 'design', title: 'AuthService' });
1637
+ await db.addNode({ id: 'CODE-001', type: 'code', title: 'auth.ts' });
1638
+
1639
+ // トレーサビリティリンク追加
1640
+ await db.addLink({ source: 'DES-001', target: 'REQ-001', type: 'satisfies' });
1641
+ await db.addLink({ source: 'CODE-001', target: 'DES-001', type: 'implements' });
1642
+
1643
+ // 影響分析
1644
+ const analyzer = new ImpactAnalyzer(db);
1645
+ const impact = await analyzer.analyze('REQ-001');
1646
+ console.log(`影響ノード数: ${impact.totalImpacted}`);
1647
+ ```
1648
+
1649
+ ### v1.7.5 パッケージ概要
1650
+
1651
+ | パッケージ | 説明 |
1652
+ |-----------|------|
1653
+ | `@nahisaho/musubix-formal-verify` | Z3統合、Hoare検証、EARS→SMT、トレーサビリティDB |
1654
+
1655
+ ### サポートされる変数型
1656
+
1657
+ | 型 | 説明 |
1658
+ |----|------|
1659
+ | `Int` | 整数値 |
1660
+ | `Real` | 実数 |
1661
+ | `Bool` | 真偽値 |
1662
+ | `String` | 文字列 |
1663
+ | `Array` | 配列型 |
1664
+ | `BitVec` | ビットベクトル |
1665
+
1666
+ ---
1667
+
1076
1668
  ## MCPサーバー連携
1077
1669
 
1078
1670
  ### MCPサーバーの起動
@@ -1385,6 +1977,6 @@ const client = createYATAClient({
1385
1977
 
1386
1978
  ---
1387
1979
 
1388
- **バージョン**: 1.4.5
1389
- **最終更新**: 2026-01-05
1980
+ **バージョン**: 1.6.0
1981
+ **最終更新**: 2026-01-06
1390
1982
  **MUSUBIX Project**