boxglow 0.1.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.
@@ -0,0 +1,3379 @@
1
+ {
2
+ "schemaVersion": 5,
3
+ "id": "X885RhS6ZN",
4
+ "name": "Logic DAW",
5
+ "description": "",
6
+ "createdAt": "2026-10-02T21:23:03.532Z",
7
+ "visibility": "private",
8
+ "members": [],
9
+ "blocks": {
10
+ "root": {
11
+ "id": "root",
12
+ "parentId": null,
13
+ "title": "Logic DAW",
14
+ "description": "",
15
+ "status": "black",
16
+ "assigneeIds": [],
17
+ "position": {
18
+ "x": 0,
19
+ "y": 0
20
+ },
21
+ "collapsed": false,
22
+ "artifacts": [],
23
+ "activity": null,
24
+ "decisions": []
25
+ },
26
+ "Qi_8UqGvoN": {
27
+ "id": "Qi_8UqGvoN",
28
+ "key": "B1",
29
+ "kind": "project",
30
+ "parentId": "root",
31
+ "title": "Logic DAW",
32
+ "description": "",
33
+ "status": "gray",
34
+ "assigneeIds": [],
35
+ "position": {
36
+ "x": 344,
37
+ "y": 40
38
+ },
39
+ "collapsed": false,
40
+ "artifacts": [],
41
+ "activity": null,
42
+ "decisions": []
43
+ },
44
+ "xJhwet2eK4": {
45
+ "id": "xJhwet2eK4",
46
+ "key": "B2",
47
+ "parentId": "Qi_8UqGvoN",
48
+ "title": "企画と設計",
49
+ "description": "Ref クロックと論理回路ブロックで音の出るタイミングを組み立てて遊ぶ、ブラウザで動く小さな DAW。何を作るかを決めて設計書にする",
50
+ "status": "white",
51
+ "assigneeIds": [],
52
+ "position": {
53
+ "x": 120,
54
+ "y": 76
55
+ },
56
+ "collapsed": true,
57
+ "artifacts": [],
58
+ "activity": null,
59
+ "decisions": [],
60
+ "category": "design"
61
+ },
62
+ "FiH1BjJOTX": {
63
+ "id": "FiH1BjJOTX",
64
+ "key": "B3",
65
+ "parentId": "Qi_8UqGvoN",
66
+ "title": "サウンドエンジン",
67
+ "description": "画面に依存しない中身。クロック・論理ブロック・音源・パッチ",
68
+ "status": "gray",
69
+ "assigneeIds": [],
70
+ "position": {
71
+ "x": 617.6999999999999,
72
+ "y": 76
73
+ },
74
+ "collapsed": true,
75
+ "artifacts": [],
76
+ "activity": null,
77
+ "decisions": [],
78
+ "category": "build",
79
+ "dueDate": "2026-11-10",
80
+ "estimateHours": 60
81
+ },
82
+ "uZ_7SUgizp": {
83
+ "id": "uZ_7SUgizp",
84
+ "key": "B4",
85
+ "parentId": "Qi_8UqGvoN",
86
+ "title": "画面",
87
+ "description": "ブロックを置いて結線し、再生して遊ぶ画面",
88
+ "status": "gray",
89
+ "assigneeIds": [],
90
+ "position": {
91
+ "x": 1183.0499999999997,
92
+ "y": 76
93
+ },
94
+ "collapsed": true,
95
+ "artifacts": [],
96
+ "activity": null,
97
+ "decisions": [],
98
+ "category": "ui",
99
+ "dueDate": "2026-11-30",
100
+ "estimateHours": 40
101
+ },
102
+ "CVcGYJiFyf": {
103
+ "id": "CVcGYJiFyf",
104
+ "key": "B5",
105
+ "parentId": "Qi_8UqGvoN",
106
+ "title": "品質と公開",
107
+ "description": "実測で確かめてから公開する",
108
+ "status": "gray",
109
+ "assigneeIds": [],
110
+ "position": {
111
+ "x": 1759.9499999999996,
112
+ "y": 76
113
+ },
114
+ "collapsed": true,
115
+ "artifacts": [],
116
+ "activity": null,
117
+ "decisions": [],
118
+ "category": "ops",
119
+ "dueDate": "2026-12-15"
120
+ },
121
+ "9WPT6_CRiu": {
122
+ "id": "9WPT6_CRiu",
123
+ "key": "B6",
124
+ "parentId": "xJhwet2eK4",
125
+ "title": "要件をまとめる",
126
+ "description": "何で遊びたいか、何を作らないかを決める",
127
+ "status": "white",
128
+ "assigneeIds": [],
129
+ "position": {
130
+ "x": 120,
131
+ "y": 76
132
+ },
133
+ "collapsed": true,
134
+ "artifacts": [],
135
+ "activity": null,
136
+ "decisions": []
137
+ },
138
+ "DIRmqMXT2l": {
139
+ "id": "DIRmqMXT2l",
140
+ "key": "B7",
141
+ "parentId": "xJhwet2eK4",
142
+ "title": "コアを設計する",
143
+ "description": "Ref クロック・論理ブロック・音源・パッチ形式の設計",
144
+ "status": "white",
145
+ "assigneeIds": [],
146
+ "position": {
147
+ "x": 645.7499999999999,
148
+ "y": 76
149
+ },
150
+ "collapsed": true,
151
+ "artifacts": [],
152
+ "activity": null,
153
+ "decisions": []
154
+ },
155
+ "9h2eE_cSiA": {
156
+ "id": "9h2eE_cSiA",
157
+ "key": "B8",
158
+ "parentId": "9WPT6_CRiu",
159
+ "title": "遊び方の絵を描く",
160
+ "description": "クロック → 分周 → AND → トリガ → 音源 の流れを 1 枚に",
161
+ "status": "white",
162
+ "assigneeIds": [],
163
+ "position": {
164
+ "x": 120,
165
+ "y": 76
166
+ },
167
+ "collapsed": true,
168
+ "artifacts": [],
169
+ "activity": null,
170
+ "decisions": []
171
+ },
172
+ "dQFr5sVxfL": {
173
+ "id": "dQFr5sVxfL",
174
+ "key": "B9",
175
+ "parentId": "9WPT6_CRiu",
176
+ "title": "性能目標を決める",
177
+ "description": "対象ブラウザ、ジッタ 2ms 以内、ブロック 64 個まで",
178
+ "status": "white",
179
+ "assigneeIds": [],
180
+ "position": {
181
+ "x": 634.1999999999999,
182
+ "y": 76
183
+ },
184
+ "collapsed": true,
185
+ "artifacts": [],
186
+ "activity": null,
187
+ "decisions": []
188
+ },
189
+ "6sEOLrrbpE": {
190
+ "id": "6sEOLrrbpE",
191
+ "key": "B10",
192
+ "parentId": "9WPT6_CRiu",
193
+ "title": "用語と画面の骨子を書く",
194
+ "description": "Ref クロック・tick・分周比・ゲート・トリガの定義と画面の 3 領域",
195
+ "status": "white",
196
+ "assigneeIds": [],
197
+ "position": {
198
+ "x": 1166.5499999999997,
199
+ "y": 76
200
+ },
201
+ "collapsed": true,
202
+ "artifacts": [],
203
+ "activity": null,
204
+ "decisions": []
205
+ },
206
+ "LQ-3HVFrbh": {
207
+ "id": "LQ-3HVFrbh",
208
+ "key": "B11",
209
+ "parentId": "DIRmqMXT2l",
210
+ "title": "タイミングモデルを決める",
211
+ "description": "固定 Hz の Ref クロックを N 分周して tick。BPM は分周比。lookahead 100ms",
212
+ "status": "white",
213
+ "assigneeIds": [],
214
+ "position": {
215
+ "x": 120,
216
+ "y": 76
217
+ },
218
+ "collapsed": true,
219
+ "artifacts": [],
220
+ "activity": null,
221
+ "decisions": [
222
+ {
223
+ "id": "2CC3MVmyri",
224
+ "question": "クロックの基準はどちらにしますか?",
225
+ "options": [
226
+ "BPM を基準にして tick を割る",
227
+ "固定 Hz の Ref クロックを N 分周する (BPM は分周比で表す)",
228
+ "両方を切り替えられるようにする"
229
+ ],
230
+ "askedBy": "claude-code",
231
+ "askedAt": "2026-10-02T21:23:05.422Z",
232
+ "answer": "固定 Hz の Ref クロックを N 分周する (BPM は分周比で表す)",
233
+ "answeredBy": "human",
234
+ "answeredAt": "2026-10-02T21:23:05.464Z"
235
+ }
236
+ ]
237
+ },
238
+ "2B7PJf8hxm": {
239
+ "id": "2B7PJf8hxm",
240
+ "key": "B12",
241
+ "parentId": "DIRmqMXT2l",
242
+ "title": "ブロックの仕様を書く",
243
+ "description": "分周器 / カウンタ / AND / OR / NOT / エッジ検出 / ゲート / トリガ。ループ禁止",
244
+ "status": "white",
245
+ "assigneeIds": [],
246
+ "position": {
247
+ "x": 766.1999999999998,
248
+ "y": 76
249
+ },
250
+ "collapsed": true,
251
+ "artifacts": [],
252
+ "activity": null,
253
+ "decisions": []
254
+ },
255
+ "E4vV7YM9M0": {
256
+ "id": "E4vV7YM9M0",
257
+ "key": "B13",
258
+ "parentId": "DIRmqMXT2l",
259
+ "title": "音源とミキサを設計する",
260
+ "description": "トリガで鳴るオシレータとサンプル、ゲイン、ディレイのノード構成",
261
+ "status": "white",
262
+ "assigneeIds": [],
263
+ "position": {
264
+ "x": 1488.2999999999997,
265
+ "y": 76
266
+ },
267
+ "collapsed": true,
268
+ "artifacts": [],
269
+ "activity": null,
270
+ "decisions": []
271
+ },
272
+ "yWRDC8wwD6": {
273
+ "id": "yWRDC8wwD6",
274
+ "key": "B14",
275
+ "parentId": "DIRmqMXT2l",
276
+ "title": "パッチ形式を決める",
277
+ "description": "ブロック・結線・パラメータを patch.json に。Git で差分が読める形",
278
+ "status": "white",
279
+ "assigneeIds": [],
280
+ "position": {
281
+ "x": 2141.0999999999995,
282
+ "y": 76
283
+ },
284
+ "collapsed": true,
285
+ "artifacts": [],
286
+ "activity": null,
287
+ "decisions": []
288
+ },
289
+ "rSAsjzr_gM": {
290
+ "id": "rSAsjzr_gM",
291
+ "key": "B15",
292
+ "parentId": "FiH1BjJOTX",
293
+ "title": "クロックとスケジューラ",
294
+ "description": "Ref クロックの分周と lookahead のイベント予約",
295
+ "status": "white",
296
+ "assigneeIds": [],
297
+ "position": {
298
+ "x": 120,
299
+ "y": 76
300
+ },
301
+ "collapsed": true,
302
+ "artifacts": [],
303
+ "activity": null,
304
+ "decisions": []
305
+ },
306
+ "5nvO49jnqp": {
307
+ "id": "5nvO49jnqp",
308
+ "key": "B16",
309
+ "parentId": "FiH1BjJOTX",
310
+ "title": "論理ブロック",
311
+ "description": "tick ごとに同期評価する論理ブロック群",
312
+ "status": "gray",
313
+ "assigneeIds": [],
314
+ "position": {
315
+ "x": 711.7499999999998,
316
+ "y": 76
317
+ },
318
+ "collapsed": true,
319
+ "artifacts": [],
320
+ "activity": null,
321
+ "decisions": [],
322
+ "progress": 50
323
+ },
324
+ "nTEnZA2lre": {
325
+ "id": "nTEnZA2lre",
326
+ "key": "B17",
327
+ "parentId": "FiH1BjJOTX",
328
+ "title": "音源とミキサ",
329
+ "description": "トリガを受けて鳴らす音源と、ゲイン・エフェクト",
330
+ "status": "gray",
331
+ "assigneeIds": [],
332
+ "position": {
333
+ "x": 1336.4999999999995,
334
+ "y": 76
335
+ },
336
+ "collapsed": true,
337
+ "artifacts": [],
338
+ "activity": null,
339
+ "decisions": []
340
+ },
341
+ "oWJCfRAhRe": {
342
+ "id": "oWJCfRAhRe",
343
+ "key": "B18",
344
+ "parentId": "FiH1BjJOTX",
345
+ "title": "パッチの保存と読み込み",
346
+ "description": "patch.json の読み書きと検証",
347
+ "status": "gray",
348
+ "assigneeIds": [],
349
+ "position": {
350
+ "x": 1951.3499999999995,
351
+ "y": 76
352
+ },
353
+ "collapsed": true,
354
+ "artifacts": [],
355
+ "activity": null,
356
+ "decisions": []
357
+ },
358
+ "TKoBbn5oqq": {
359
+ "id": "TKoBbn5oqq",
360
+ "key": "B19",
361
+ "parentId": "rSAsjzr_gM",
362
+ "title": "Ref クロックを作る",
363
+ "description": "48 kHz 基準のカウンタを AudioContext の時刻に同期させる",
364
+ "status": "white",
365
+ "assigneeIds": [],
366
+ "position": {
367
+ "x": 120,
368
+ "y": 76
369
+ },
370
+ "collapsed": true,
371
+ "artifacts": [],
372
+ "activity": null,
373
+ "decisions": []
374
+ },
375
+ "oe3g3G7YMT": {
376
+ "id": "oe3g3G7YMT",
377
+ "key": "B20",
378
+ "parentId": "rSAsjzr_gM",
379
+ "title": "分周器とカウンタを作る",
380
+ "description": "2 のべき乗と 3 の倍数の分周、N 進カウンタ",
381
+ "status": "white",
382
+ "assigneeIds": [],
383
+ "position": {
384
+ "x": 662.2499999999998,
385
+ "y": 76
386
+ },
387
+ "collapsed": true,
388
+ "artifacts": [],
389
+ "activity": null,
390
+ "decisions": []
391
+ },
392
+ "Xe-TZBGtRd": {
393
+ "id": "Xe-TZBGtRd",
394
+ "key": "B21",
395
+ "parentId": "rSAsjzr_gM",
396
+ "title": "lookahead で予約する",
397
+ "description": "100ms 先までのイベントを Web Audio に予約する",
398
+ "status": "white",
399
+ "assigneeIds": [],
400
+ "position": {
401
+ "x": 1250.6999999999996,
402
+ "y": 76
403
+ },
404
+ "collapsed": true,
405
+ "artifacts": [],
406
+ "activity": null,
407
+ "decisions": []
408
+ },
409
+ "bt03QZOzRy": {
410
+ "id": "bt03QZOzRy",
411
+ "key": "B22",
412
+ "parentId": "5nvO49jnqp",
413
+ "title": "ブロックの型を定義する",
414
+ "description": "入力 1 本・出力分岐可、状態を持つブロックの共通の型",
415
+ "status": "white",
416
+ "assigneeIds": [],
417
+ "position": {
418
+ "x": 120,
419
+ "y": 76
420
+ },
421
+ "collapsed": true,
422
+ "artifacts": [],
423
+ "activity": null,
424
+ "decisions": []
425
+ },
426
+ "O1WPIQ7rSm": {
427
+ "id": "O1WPIQ7rSm",
428
+ "key": "B23",
429
+ "parentId": "5nvO49jnqp",
430
+ "title": "ゲートを実装する",
431
+ "description": "AND / OR / NOT の評価",
432
+ "status": "white",
433
+ "assigneeIds": [],
434
+ "position": {
435
+ "x": 790.9499999999997,
436
+ "y": 76
437
+ },
438
+ "collapsed": true,
439
+ "artifacts": [],
440
+ "activity": null,
441
+ "decisions": []
442
+ },
443
+ "BL-IQJddOL": {
444
+ "id": "BL-IQJddOL",
445
+ "key": "B24",
446
+ "parentId": "5nvO49jnqp",
447
+ "title": "エッジ検出とゲート信号を実装する",
448
+ "description": "立ち上がり検出と、ゲートで通す / 止める",
449
+ "status": "gray",
450
+ "assigneeIds": [],
451
+ "position": {
452
+ "x": 1447.0499999999993,
453
+ "y": 76
454
+ },
455
+ "collapsed": true,
456
+ "artifacts": [],
457
+ "activity": {
458
+ "actor": "claude-code",
459
+ "state": "working",
460
+ "note": "立ち上がり検出の状態の持ち方を実装中",
461
+ "since": "2026-10-02T21:23:05.515Z"
462
+ },
463
+ "decisions": []
464
+ },
465
+ "aqTgOYdngd": {
466
+ "id": "aqTgOYdngd",
467
+ "key": "B25",
468
+ "parentId": "5nvO49jnqp",
469
+ "title": "評価器を実装する",
470
+ "description": "tick ごとに全ブロックを同期評価し、トリガを出す",
471
+ "status": "black",
472
+ "assigneeIds": [],
473
+ "position": {
474
+ "x": 2119.6499999999987,
475
+ "y": 76
476
+ },
477
+ "collapsed": true,
478
+ "artifacts": [],
479
+ "activity": null,
480
+ "decisions": []
481
+ },
482
+ "K-20xmNf3W": {
483
+ "id": "K-20xmNf3W",
484
+ "key": "B26",
485
+ "parentId": "nTEnZA2lre",
486
+ "title": "オシレータ音源を作る",
487
+ "description": "矩形・三角・ノコギリ。トリガで短く鳴る",
488
+ "status": "black",
489
+ "assigneeIds": [],
490
+ "position": {
491
+ "x": 120,
492
+ "y": 76
493
+ },
494
+ "collapsed": true,
495
+ "artifacts": [],
496
+ "activity": null,
497
+ "decisions": []
498
+ },
499
+ "_CMF_NQtrT": {
500
+ "id": "_CMF_NQtrT",
501
+ "key": "B27",
502
+ "parentId": "nTEnZA2lre",
503
+ "title": "サンプル再生を作る",
504
+ "description": "ドラム音のサンプルをトリガで再生",
505
+ "status": "black",
506
+ "assigneeIds": [],
507
+ "position": {
508
+ "x": 733.1999999999998,
509
+ "y": 76
510
+ },
511
+ "collapsed": true,
512
+ "artifacts": [],
513
+ "activity": {
514
+ "actor": "claude-code",
515
+ "state": "needs_decision",
516
+ "note": "ドラムのサンプル音源は最初から同梱しますか?",
517
+ "since": "2026-10-02T21:23:05.561Z"
518
+ },
519
+ "decisions": [
520
+ {
521
+ "id": "oe3agsib4k",
522
+ "question": "ドラムのサンプル音源は最初から同梱しますか?",
523
+ "options": [
524
+ "オシレータだけで始める",
525
+ "ドラムのサンプル 4 種を同梱する"
526
+ ],
527
+ "askedBy": "claude-code",
528
+ "askedAt": "2026-10-02T21:23:05.561Z"
529
+ }
530
+ ]
531
+ },
532
+ "GEaS1KjrlU": {
533
+ "id": "GEaS1KjrlU",
534
+ "key": "B28",
535
+ "parentId": "nTEnZA2lre",
536
+ "title": "ミキサとエフェクトを作る",
537
+ "description": "チャンネルごとのゲインとディレイ",
538
+ "status": "black",
539
+ "assigneeIds": [],
540
+ "position": {
541
+ "x": 1410.7499999999995,
542
+ "y": 76
543
+ },
544
+ "collapsed": true,
545
+ "artifacts": [],
546
+ "activity": null,
547
+ "decisions": []
548
+ },
549
+ "B0b9JruhHD": {
550
+ "id": "B0b9JruhHD",
551
+ "key": "B29",
552
+ "parentId": "oWJCfRAhRe",
553
+ "title": "パッチ形式を実装する",
554
+ "description": "patch.json の型と検証 (壊れたファイルの扱い)",
555
+ "status": "black",
556
+ "assigneeIds": [],
557
+ "position": {
558
+ "x": 120,
559
+ "y": 76
560
+ },
561
+ "collapsed": true,
562
+ "artifacts": [],
563
+ "activity": null,
564
+ "decisions": []
565
+ },
566
+ "ouhZJIaFW5": {
567
+ "id": "ouhZJIaFW5",
568
+ "key": "B30",
569
+ "parentId": "oWJCfRAhRe",
570
+ "title": "読み書きを実装する",
571
+ "description": "保存・読み込み・ブラウザ内保存",
572
+ "status": "black",
573
+ "assigneeIds": [],
574
+ "position": {
575
+ "x": 804.1499999999997,
576
+ "y": 76
577
+ },
578
+ "collapsed": true,
579
+ "artifacts": [],
580
+ "activity": null,
581
+ "decisions": []
582
+ },
583
+ "PmWXgxcTz1": {
584
+ "id": "PmWXgxcTz1",
585
+ "key": "B31",
586
+ "parentId": "uZ_7SUgizp",
587
+ "title": "ラック (配置と結線)",
588
+ "description": "ブロックを置いて出力から入力へドラッグで結線する",
589
+ "status": "gray",
590
+ "assigneeIds": [],
591
+ "position": {
592
+ "x": 120,
593
+ "y": 76
594
+ },
595
+ "collapsed": true,
596
+ "artifacts": [],
597
+ "activity": null,
598
+ "decisions": []
599
+ },
600
+ "WpHHR1WTSj": {
601
+ "id": "WpHHR1WTSj",
602
+ "key": "B32",
603
+ "parentId": "uZ_7SUgizp",
604
+ "title": "トランスポート",
605
+ "description": "再生 / 停止、Ref クロックの Hz、分周比、tick の表示",
606
+ "status": "gray",
607
+ "assigneeIds": [],
608
+ "position": {
609
+ "x": 715.0499999999997,
610
+ "y": 76
611
+ },
612
+ "collapsed": true,
613
+ "artifacts": [],
614
+ "activity": null,
615
+ "decisions": []
616
+ },
617
+ "WBeew96LXK": {
618
+ "id": "WBeew96LXK",
619
+ "key": "B33",
620
+ "parentId": "uZ_7SUgizp",
621
+ "title": "パラメータ編集とプリセット",
622
+ "description": "選んだブロックの編集と、最初から鳴る 3 つのパッチ",
623
+ "status": "gray",
624
+ "assigneeIds": [],
625
+ "position": {
626
+ "x": 1328.2499999999995,
627
+ "y": 76
628
+ },
629
+ "collapsed": true,
630
+ "artifacts": [],
631
+ "activity": null,
632
+ "decisions": []
633
+ },
634
+ "PU3j5HywQV": {
635
+ "id": "PU3j5HywQV",
636
+ "key": "B34",
637
+ "parentId": "PmWXgxcTz1",
638
+ "title": "ブロックを描く",
639
+ "description": "種類ごとの見た目と入出力の丸",
640
+ "status": "black",
641
+ "assigneeIds": [],
642
+ "position": {
643
+ "x": 120,
644
+ "y": 76
645
+ },
646
+ "collapsed": true,
647
+ "artifacts": [],
648
+ "activity": null,
649
+ "decisions": []
650
+ },
651
+ "ap_49HK8Re": {
652
+ "id": "ap_49HK8Re",
653
+ "key": "B35",
654
+ "parentId": "PmWXgxcTz1",
655
+ "title": "ドラッグで結線する",
656
+ "description": "出力の丸から入力の丸へ。ループは拒否して理由を出す",
657
+ "status": "black",
658
+ "assigneeIds": [],
659
+ "position": {
660
+ "x": 733.1999999999998,
661
+ "y": 76
662
+ },
663
+ "collapsed": true,
664
+ "artifacts": [],
665
+ "activity": null,
666
+ "decisions": []
667
+ },
668
+ "LldtwPLSlE": {
669
+ "id": "LldtwPLSlE",
670
+ "key": "B36",
671
+ "parentId": "PmWXgxcTz1",
672
+ "title": "ラックに並べる",
673
+ "description": "ブロックの配置、移動、削除",
674
+ "status": "black",
675
+ "assigneeIds": [],
676
+ "position": {
677
+ "x": 1273.7999999999997,
678
+ "y": 76
679
+ },
680
+ "collapsed": true,
681
+ "artifacts": [],
682
+ "activity": null,
683
+ "decisions": []
684
+ },
685
+ "F1Tm512LwZ": {
686
+ "id": "F1Tm512LwZ",
687
+ "key": "B37",
688
+ "parentId": "WpHHR1WTSj",
689
+ "title": "再生と停止を作る",
690
+ "description": "AudioContext の開始、停止、全ブロックのリセット",
691
+ "status": "black",
692
+ "assigneeIds": [],
693
+ "position": {
694
+ "x": 120,
695
+ "y": 76
696
+ },
697
+ "collapsed": true,
698
+ "artifacts": [],
699
+ "activity": null,
700
+ "decisions": []
701
+ },
702
+ "KSdQlTjUl0": {
703
+ "id": "KSdQlTjUl0",
704
+ "key": "B38",
705
+ "parentId": "WpHHR1WTSj",
706
+ "title": "クロック表示を作る",
707
+ "description": "Hz・分周比・現在の tick を見せる",
708
+ "status": "black",
709
+ "assigneeIds": [],
710
+ "position": {
711
+ "x": 665.5499999999998,
712
+ "y": 76
713
+ },
714
+ "collapsed": true,
715
+ "artifacts": [],
716
+ "activity": null,
717
+ "decisions": []
718
+ },
719
+ "AQKvUX2KGX": {
720
+ "id": "AQKvUX2KGX",
721
+ "key": "B39",
722
+ "parentId": "WBeew96LXK",
723
+ "title": "編集パネルを作る",
724
+ "description": "分周比・しきい値・音色の編集",
725
+ "status": "black",
726
+ "assigneeIds": [],
727
+ "position": {
728
+ "x": 120,
729
+ "y": 76
730
+ },
731
+ "collapsed": true,
732
+ "artifacts": [],
733
+ "activity": null,
734
+ "decisions": []
735
+ },
736
+ "6eXlIjcUu7": {
737
+ "id": "6eXlIjcUu7",
738
+ "key": "B40",
739
+ "parentId": "WBeew96LXK",
740
+ "title": "プリセットを 3 つ作る",
741
+ "description": "4 つ打ち、ポリリズム、ランダム風",
742
+ "status": "black",
743
+ "assigneeIds": [],
744
+ "position": {
745
+ "x": 766.1999999999997,
746
+ "y": 76
747
+ },
748
+ "collapsed": true,
749
+ "artifacts": [],
750
+ "activity": null,
751
+ "decisions": []
752
+ },
753
+ "t2xB0FIfXa": {
754
+ "id": "t2xB0FIfXa",
755
+ "key": "B41",
756
+ "parentId": "WBeew96LXK",
757
+ "title": "画面を組み上げる",
758
+ "description": "ラック・トランスポート・編集パネルを 1 画面に",
759
+ "status": "black",
760
+ "assigneeIds": [],
761
+ "position": {
762
+ "x": 1395.8999999999994,
763
+ "y": 76
764
+ },
765
+ "collapsed": true,
766
+ "artifacts": [],
767
+ "activity": null,
768
+ "decisions": []
769
+ },
770
+ "QyyIDjhzd8": {
771
+ "id": "QyyIDjhzd8",
772
+ "key": "B42",
773
+ "parentId": "CVcGYJiFyf",
774
+ "title": "検証",
775
+ "description": "タイミング精度とブラウザ差を実測し、遊んで直す",
776
+ "status": "gray",
777
+ "assigneeIds": [],
778
+ "position": {
779
+ "x": 120,
780
+ "y": 76
781
+ },
782
+ "collapsed": true,
783
+ "artifacts": [],
784
+ "activity": null,
785
+ "decisions": []
786
+ },
787
+ "v6bbrx9K93": {
788
+ "id": "v6bbrx9K93",
789
+ "key": "B43",
790
+ "parentId": "CVcGYJiFyf",
791
+ "title": "公開",
792
+ "description": "ビルドして配信し、紹介ページと一緒に公開する",
793
+ "status": "gray",
794
+ "assigneeIds": [],
795
+ "position": {
796
+ "x": 685.3499999999998,
797
+ "y": 76
798
+ },
799
+ "collapsed": true,
800
+ "artifacts": [],
801
+ "activity": null,
802
+ "decisions": []
803
+ },
804
+ "yGW8Ae72fv": {
805
+ "id": "yGW8Ae72fv",
806
+ "key": "B44",
807
+ "parentId": "QyyIDjhzd8",
808
+ "title": "ジッタを計測する",
809
+ "description": "1 分間のトリガ時刻を記録して 2ms 以内か",
810
+ "status": "black",
811
+ "assigneeIds": [],
812
+ "position": {
813
+ "x": 120,
814
+ "y": 76
815
+ },
816
+ "collapsed": true,
817
+ "artifacts": [],
818
+ "activity": null,
819
+ "decisions": []
820
+ },
821
+ "4hlmsTDUeV": {
822
+ "id": "4hlmsTDUeV",
823
+ "key": "B45",
824
+ "parentId": "QyyIDjhzd8",
825
+ "title": "ブラウザ差を確認する",
826
+ "description": "Chrome / Firefox / Safari で同じパッチが同じ音で鳴るか",
827
+ "status": "black",
828
+ "assigneeIds": [],
829
+ "position": {
830
+ "x": 647.3999999999999,
831
+ "y": 76
832
+ },
833
+ "collapsed": true,
834
+ "artifacts": [],
835
+ "activity": null,
836
+ "decisions": []
837
+ },
838
+ "u9EvSIo2D9": {
839
+ "id": "u9EvSIo2D9",
840
+ "key": "B46",
841
+ "parentId": "QyyIDjhzd8",
842
+ "title": "試遊して直す",
843
+ "description": "3 人に 10 分遊んでもらい、詰まった所を直す",
844
+ "status": "black",
845
+ "assigneeIds": [],
846
+ "position": {
847
+ "x": 1176.4499999999998,
848
+ "y": 76
849
+ },
850
+ "collapsed": true,
851
+ "artifacts": [],
852
+ "activity": null,
853
+ "decisions": []
854
+ },
855
+ "IMFPBAf-pu": {
856
+ "id": "IMFPBAf-pu",
857
+ "key": "B47",
858
+ "parentId": "v6bbrx9K93",
859
+ "title": "ビルドして配信する",
860
+ "description": "vite build して GitHub Pages に置く",
861
+ "status": "black",
862
+ "assigneeIds": [],
863
+ "position": {
864
+ "x": 120,
865
+ "y": 76
866
+ },
867
+ "collapsed": true,
868
+ "artifacts": [],
869
+ "activity": null,
870
+ "decisions": []
871
+ },
872
+ "I4uQZmQ75f": {
873
+ "id": "I4uQZmQ75f",
874
+ "key": "B48",
875
+ "parentId": "v6bbrx9K93",
876
+ "title": "紹介ページを書く",
877
+ "description": "README とデモ GIF、遊び方 3 ステップ",
878
+ "status": "black",
879
+ "assigneeIds": [],
880
+ "position": {
881
+ "x": 576.4499999999998,
882
+ "y": 76
883
+ },
884
+ "collapsed": true,
885
+ "artifacts": [],
886
+ "activity": null,
887
+ "decisions": []
888
+ },
889
+ "3Nr7xa8TFw": {
890
+ "id": "3Nr7xa8TFw",
891
+ "key": "B49",
892
+ "parentId": "v6bbrx9K93",
893
+ "title": "公開して告知する",
894
+ "description": "タグ v1.0.0、ブログと SNS",
895
+ "status": "black",
896
+ "assigneeIds": [],
897
+ "position": {
898
+ "x": 966.8999999999997,
899
+ "y": 76
900
+ },
901
+ "collapsed": true,
902
+ "artifacts": [],
903
+ "activity": null,
904
+ "decisions": []
905
+ }
906
+ },
907
+ "ports": {
908
+ "UAvNJMXfiB": {
909
+ "id": "UAvNJMXfiB",
910
+ "blockId": "root",
911
+ "direction": "out",
912
+ "name": "公開された Logic DAW (URL)",
913
+ "description": "",
914
+ "required": true,
915
+ "artifacts": []
916
+ },
917
+ "fg2eQl3RiW": {
918
+ "id": "fg2eQl3RiW",
919
+ "blockId": "Qi_8UqGvoN",
920
+ "direction": "out",
921
+ "name": "公開された Logic DAW (URL)",
922
+ "description": "",
923
+ "required": true,
924
+ "artifacts": []
925
+ },
926
+ "fy01mWHoRz": {
927
+ "id": "fy01mWHoRz",
928
+ "blockId": "xJhwet2eK4",
929
+ "direction": "out",
930
+ "name": "設計書 (docs/design.md)",
931
+ "description": "",
932
+ "required": true,
933
+ "artifacts": [
934
+ {
935
+ "id": "R6vErw44ji",
936
+ "title": "設計書",
937
+ "url": "",
938
+ "kind": "file",
939
+ "note": "",
940
+ "path": "docs/design.md"
941
+ }
942
+ ]
943
+ },
944
+ "QJHUXdI5Hm": {
945
+ "id": "QJHUXdI5Hm",
946
+ "blockId": "xJhwet2eK4",
947
+ "direction": "in",
948
+ "name": "企画メモ (何で遊びたいか)",
949
+ "description": "",
950
+ "required": true,
951
+ "artifacts": []
952
+ },
953
+ "TA-aOKc8qD": {
954
+ "id": "TA-aOKc8qD",
955
+ "blockId": "Qi_8UqGvoN",
956
+ "direction": "in",
957
+ "name": "企画メモ (何で遊びたいか)",
958
+ "description": "",
959
+ "required": true,
960
+ "artifacts": [],
961
+ "promotedFrom": "QJHUXdI5Hm"
962
+ },
963
+ "hT--v-Bfi9": {
964
+ "id": "hT--v-Bfi9",
965
+ "blockId": "root",
966
+ "direction": "in",
967
+ "name": "企画メモ (何で遊びたいか)",
968
+ "description": "",
969
+ "required": true,
970
+ "artifacts": [],
971
+ "promotedFrom": "TA-aOKc8qD"
972
+ },
973
+ "_tT7ETNmmk": {
974
+ "id": "_tT7ETNmmk",
975
+ "blockId": "xJhwet2eK4",
976
+ "direction": "in",
977
+ "name": "論理回路の基礎知識 (資料)",
978
+ "description": "",
979
+ "required": true,
980
+ "artifacts": []
981
+ },
982
+ "ovok6n6Nq0": {
983
+ "id": "ovok6n6Nq0",
984
+ "blockId": "Qi_8UqGvoN",
985
+ "direction": "in",
986
+ "name": "論理回路の基礎知識 (資料)",
987
+ "description": "",
988
+ "required": true,
989
+ "artifacts": [],
990
+ "promotedFrom": "_tT7ETNmmk"
991
+ },
992
+ "h23ZuuBQVq": {
993
+ "id": "h23ZuuBQVq",
994
+ "blockId": "root",
995
+ "direction": "in",
996
+ "name": "論理回路の基礎知識 (資料)",
997
+ "description": "",
998
+ "required": true,
999
+ "artifacts": [],
1000
+ "promotedFrom": "ovok6n6Nq0"
1001
+ },
1002
+ "zZioHWEFMi": {
1003
+ "id": "zZioHWEFMi",
1004
+ "blockId": "FiH1BjJOTX",
1005
+ "direction": "out",
1006
+ "name": "エンジン一式 (src/engine/index.ts)",
1007
+ "description": "",
1008
+ "required": true,
1009
+ "artifacts": []
1010
+ },
1011
+ "uJpcX-UPx_": {
1012
+ "id": "uJpcX-UPx_",
1013
+ "blockId": "FiH1BjJOTX",
1014
+ "direction": "in",
1015
+ "name": "設計書 (docs/design.md)",
1016
+ "description": "",
1017
+ "required": true,
1018
+ "artifacts": []
1019
+ },
1020
+ "B3vs5ee3X5": {
1021
+ "id": "B3vs5ee3X5",
1022
+ "blockId": "FiH1BjJOTX",
1023
+ "direction": "in",
1024
+ "name": "Web Audio API の仕様",
1025
+ "description": "",
1026
+ "required": true,
1027
+ "artifacts": []
1028
+ },
1029
+ "v99e7fqoqJ": {
1030
+ "id": "v99e7fqoqJ",
1031
+ "blockId": "Qi_8UqGvoN",
1032
+ "direction": "in",
1033
+ "name": "Web Audio API の仕様",
1034
+ "description": "",
1035
+ "required": true,
1036
+ "artifacts": [],
1037
+ "promotedFrom": "B3vs5ee3X5"
1038
+ },
1039
+ "F2EnIfh3_Q": {
1040
+ "id": "F2EnIfh3_Q",
1041
+ "blockId": "root",
1042
+ "direction": "in",
1043
+ "name": "Web Audio API の仕様",
1044
+ "description": "",
1045
+ "required": true,
1046
+ "artifacts": [],
1047
+ "promotedFrom": "v99e7fqoqJ"
1048
+ },
1049
+ "eGI-VIk1Ei": {
1050
+ "id": "eGI-VIk1Ei",
1051
+ "blockId": "uZ_7SUgizp",
1052
+ "direction": "out",
1053
+ "name": "画面一式 (src/ui/App.tsx)",
1054
+ "description": "",
1055
+ "required": true,
1056
+ "artifacts": []
1057
+ },
1058
+ "ejZYaEiQ6L": {
1059
+ "id": "ejZYaEiQ6L",
1060
+ "blockId": "uZ_7SUgizp",
1061
+ "direction": "in",
1062
+ "name": "エンジン一式 (src/engine/index.ts)",
1063
+ "description": "",
1064
+ "required": true,
1065
+ "artifacts": []
1066
+ },
1067
+ "8Jt2-0LipW": {
1068
+ "id": "8Jt2-0LipW",
1069
+ "blockId": "CVcGYJiFyf",
1070
+ "direction": "out",
1071
+ "name": "公開された Logic DAW (URL)",
1072
+ "description": "",
1073
+ "required": true,
1074
+ "artifacts": []
1075
+ },
1076
+ "LfxvKcMQhc": {
1077
+ "id": "LfxvKcMQhc",
1078
+ "blockId": "CVcGYJiFyf",
1079
+ "direction": "in",
1080
+ "name": "画面一式 (src/ui/App.tsx)",
1081
+ "description": "",
1082
+ "required": true,
1083
+ "artifacts": []
1084
+ },
1085
+ "4c-A-SRf-2": {
1086
+ "id": "4c-A-SRf-2",
1087
+ "blockId": "9WPT6_CRiu",
1088
+ "direction": "out",
1089
+ "name": "要件 (docs/requirements.md)",
1090
+ "description": "",
1091
+ "required": true,
1092
+ "artifacts": [
1093
+ {
1094
+ "id": "5HetHMKNKc",
1095
+ "title": "要件",
1096
+ "url": "",
1097
+ "kind": "file",
1098
+ "note": "",
1099
+ "path": "docs/requirements.md"
1100
+ }
1101
+ ]
1102
+ },
1103
+ "xTc3MB1coA": {
1104
+ "id": "xTc3MB1coA",
1105
+ "blockId": "9WPT6_CRiu",
1106
+ "direction": "in",
1107
+ "name": "企画メモ (何で遊びたいか)",
1108
+ "description": "",
1109
+ "required": true,
1110
+ "artifacts": []
1111
+ },
1112
+ "W8ebXS8Hjc": {
1113
+ "id": "W8ebXS8Hjc",
1114
+ "blockId": "DIRmqMXT2l",
1115
+ "direction": "out",
1116
+ "name": "設計書 (docs/design.md)",
1117
+ "description": "",
1118
+ "required": true,
1119
+ "artifacts": [
1120
+ {
1121
+ "id": "LDVfIlKGbC",
1122
+ "title": "設計書",
1123
+ "url": "",
1124
+ "kind": "file",
1125
+ "note": "",
1126
+ "path": "docs/design.md"
1127
+ }
1128
+ ]
1129
+ },
1130
+ "kvS3InugGs": {
1131
+ "id": "kvS3InugGs",
1132
+ "blockId": "DIRmqMXT2l",
1133
+ "direction": "in",
1134
+ "name": "要件 (docs/requirements.md)",
1135
+ "description": "",
1136
+ "required": true,
1137
+ "artifacts": []
1138
+ },
1139
+ "mAvgYpZWOH": {
1140
+ "id": "mAvgYpZWOH",
1141
+ "blockId": "DIRmqMXT2l",
1142
+ "direction": "in",
1143
+ "name": "論理回路の基礎知識 (資料)",
1144
+ "description": "",
1145
+ "required": true,
1146
+ "artifacts": []
1147
+ },
1148
+ "22r3SR4SOv": {
1149
+ "id": "22r3SR4SOv",
1150
+ "blockId": "9h2eE_cSiA",
1151
+ "direction": "out",
1152
+ "name": "遊び方の絵 (docs/play.png)",
1153
+ "description": "",
1154
+ "required": true,
1155
+ "artifacts": [
1156
+ {
1157
+ "id": "YfhQntFL44",
1158
+ "title": "遊び方の絵",
1159
+ "url": "",
1160
+ "kind": "file",
1161
+ "note": "",
1162
+ "path": "docs/play.png"
1163
+ }
1164
+ ]
1165
+ },
1166
+ "5uOi3cMDfx": {
1167
+ "id": "5uOi3cMDfx",
1168
+ "blockId": "9h2eE_cSiA",
1169
+ "direction": "in",
1170
+ "name": "企画メモ (何で遊びたいか)",
1171
+ "description": "",
1172
+ "required": true,
1173
+ "artifacts": []
1174
+ },
1175
+ "HUP_vV7Vbi": {
1176
+ "id": "HUP_vV7Vbi",
1177
+ "blockId": "dQFr5sVxfL",
1178
+ "direction": "out",
1179
+ "name": "性能目標 (docs/targets.md)",
1180
+ "description": "",
1181
+ "required": true,
1182
+ "artifacts": [
1183
+ {
1184
+ "id": "YNacOywlxB",
1185
+ "title": "性能目標",
1186
+ "url": "",
1187
+ "kind": "file",
1188
+ "note": "",
1189
+ "path": "docs/targets.md"
1190
+ }
1191
+ ]
1192
+ },
1193
+ "DGrmfwlx8f": {
1194
+ "id": "DGrmfwlx8f",
1195
+ "blockId": "dQFr5sVxfL",
1196
+ "direction": "in",
1197
+ "name": "遊び方の絵 (docs/play.png)",
1198
+ "description": "",
1199
+ "required": true,
1200
+ "artifacts": []
1201
+ },
1202
+ "tA6p6STOr8": {
1203
+ "id": "tA6p6STOr8",
1204
+ "blockId": "6sEOLrrbpE",
1205
+ "direction": "out",
1206
+ "name": "要件 (docs/requirements.md)",
1207
+ "description": "",
1208
+ "required": true,
1209
+ "artifacts": [
1210
+ {
1211
+ "id": "vx3AuX_wEM",
1212
+ "title": "要件",
1213
+ "url": "",
1214
+ "kind": "file",
1215
+ "note": "",
1216
+ "path": "docs/requirements.md"
1217
+ }
1218
+ ]
1219
+ },
1220
+ "4T9YYqx8us": {
1221
+ "id": "4T9YYqx8us",
1222
+ "blockId": "6sEOLrrbpE",
1223
+ "direction": "in",
1224
+ "name": "性能目標 (docs/targets.md)",
1225
+ "description": "",
1226
+ "required": true,
1227
+ "artifacts": []
1228
+ },
1229
+ "zTvSTSq1hq": {
1230
+ "id": "zTvSTSq1hq",
1231
+ "blockId": "LQ-3HVFrbh",
1232
+ "direction": "out",
1233
+ "name": "タイミングモデルの章 (docs/design.md#clock)",
1234
+ "description": "",
1235
+ "required": true,
1236
+ "artifacts": [
1237
+ {
1238
+ "id": "xdqFeZTmGA",
1239
+ "title": "タイミングモデル",
1240
+ "url": "",
1241
+ "kind": "file",
1242
+ "note": "",
1243
+ "path": "docs/design.md"
1244
+ }
1245
+ ]
1246
+ },
1247
+ "ObLi0Io4S5": {
1248
+ "id": "ObLi0Io4S5",
1249
+ "blockId": "LQ-3HVFrbh",
1250
+ "direction": "in",
1251
+ "name": "要件 (docs/requirements.md)",
1252
+ "description": "",
1253
+ "required": true,
1254
+ "artifacts": []
1255
+ },
1256
+ "4EmmVBE157": {
1257
+ "id": "4EmmVBE157",
1258
+ "blockId": "LQ-3HVFrbh",
1259
+ "direction": "in",
1260
+ "name": "論理回路の基礎知識 (資料)",
1261
+ "description": "",
1262
+ "required": true,
1263
+ "artifacts": []
1264
+ },
1265
+ "ou46CmUSog": {
1266
+ "id": "ou46CmUSog",
1267
+ "blockId": "2B7PJf8hxm",
1268
+ "direction": "out",
1269
+ "name": "ブロック仕様の章 (docs/design.md#blocks)",
1270
+ "description": "",
1271
+ "required": true,
1272
+ "artifacts": [
1273
+ {
1274
+ "id": "tn5eVw8OjB",
1275
+ "title": "ブロック仕様",
1276
+ "url": "",
1277
+ "kind": "file",
1278
+ "note": "",
1279
+ "path": "docs/design.md"
1280
+ }
1281
+ ]
1282
+ },
1283
+ "tpgAsR93nJ": {
1284
+ "id": "tpgAsR93nJ",
1285
+ "blockId": "2B7PJf8hxm",
1286
+ "direction": "in",
1287
+ "name": "タイミングモデルの章 (docs/design.md#clock)",
1288
+ "description": "",
1289
+ "required": true,
1290
+ "artifacts": []
1291
+ },
1292
+ "BrkAmelKc6": {
1293
+ "id": "BrkAmelKc6",
1294
+ "blockId": "E4vV7YM9M0",
1295
+ "direction": "out",
1296
+ "name": "音源の章 (docs/design.md#audio)",
1297
+ "description": "",
1298
+ "required": true,
1299
+ "artifacts": [
1300
+ {
1301
+ "id": "PbBT5ChLYa",
1302
+ "title": "音源の章",
1303
+ "url": "",
1304
+ "kind": "file",
1305
+ "note": "",
1306
+ "path": "docs/design.md"
1307
+ }
1308
+ ]
1309
+ },
1310
+ "tTNt2AiDvF": {
1311
+ "id": "tTNt2AiDvF",
1312
+ "blockId": "E4vV7YM9M0",
1313
+ "direction": "in",
1314
+ "name": "ブロック仕様の章 (docs/design.md#blocks)",
1315
+ "description": "",
1316
+ "required": true,
1317
+ "artifacts": []
1318
+ },
1319
+ "VQQ9-P729l": {
1320
+ "id": "VQQ9-P729l",
1321
+ "blockId": "yWRDC8wwD6",
1322
+ "direction": "out",
1323
+ "name": "設計書 (docs/design.md)",
1324
+ "description": "",
1325
+ "required": true,
1326
+ "artifacts": [
1327
+ {
1328
+ "id": "opu58L8Gv-",
1329
+ "title": "設計書",
1330
+ "url": "",
1331
+ "kind": "file",
1332
+ "note": "",
1333
+ "path": "docs/design.md"
1334
+ }
1335
+ ]
1336
+ },
1337
+ "0Oq9-Om1uQ": {
1338
+ "id": "0Oq9-Om1uQ",
1339
+ "blockId": "yWRDC8wwD6",
1340
+ "direction": "in",
1341
+ "name": "音源の章 (docs/design.md#audio)",
1342
+ "description": "",
1343
+ "required": true,
1344
+ "artifacts": []
1345
+ },
1346
+ "Rc5jvXed44": {
1347
+ "id": "Rc5jvXed44",
1348
+ "blockId": "rSAsjzr_gM",
1349
+ "direction": "out",
1350
+ "name": "スケジューラ (src/engine/scheduler.ts)",
1351
+ "description": "",
1352
+ "required": true,
1353
+ "artifacts": [
1354
+ {
1355
+ "id": "nIqgEZzYCe",
1356
+ "title": "スケジューラ",
1357
+ "url": "",
1358
+ "kind": "file",
1359
+ "note": "",
1360
+ "path": "src/engine/scheduler.ts"
1361
+ }
1362
+ ]
1363
+ },
1364
+ "eWofB4yUGk": {
1365
+ "id": "eWofB4yUGk",
1366
+ "blockId": "rSAsjzr_gM",
1367
+ "direction": "in",
1368
+ "name": "設計書 (docs/design.md)",
1369
+ "description": "",
1370
+ "required": true,
1371
+ "artifacts": []
1372
+ },
1373
+ "PNUwk1z1wg": {
1374
+ "id": "PNUwk1z1wg",
1375
+ "blockId": "5nvO49jnqp",
1376
+ "direction": "out",
1377
+ "name": "評価器 (src/engine/logic.ts)",
1378
+ "description": "",
1379
+ "required": true,
1380
+ "artifacts": []
1381
+ },
1382
+ "diIpJHZrdB": {
1383
+ "id": "diIpJHZrdB",
1384
+ "blockId": "5nvO49jnqp",
1385
+ "direction": "in",
1386
+ "name": "スケジューラ (src/engine/scheduler.ts)",
1387
+ "description": "",
1388
+ "required": true,
1389
+ "artifacts": []
1390
+ },
1391
+ "61jwEgzJkd": {
1392
+ "id": "61jwEgzJkd",
1393
+ "blockId": "nTEnZA2lre",
1394
+ "direction": "out",
1395
+ "name": "音声出力 (src/engine/audio/mixer.ts)",
1396
+ "description": "",
1397
+ "required": true,
1398
+ "artifacts": []
1399
+ },
1400
+ "8jQGqXsyyK": {
1401
+ "id": "8jQGqXsyyK",
1402
+ "blockId": "nTEnZA2lre",
1403
+ "direction": "in",
1404
+ "name": "評価器 (src/engine/logic.ts)",
1405
+ "description": "",
1406
+ "required": true,
1407
+ "artifacts": []
1408
+ },
1409
+ "r6bCJHBXwq": {
1410
+ "id": "r6bCJHBXwq",
1411
+ "blockId": "nTEnZA2lre",
1412
+ "direction": "in",
1413
+ "name": "Web Audio API の仕様",
1414
+ "description": "",
1415
+ "required": true,
1416
+ "artifacts": []
1417
+ },
1418
+ "x4q5P41c2W": {
1419
+ "id": "x4q5P41c2W",
1420
+ "blockId": "oWJCfRAhRe",
1421
+ "direction": "out",
1422
+ "name": "エンジン一式 (src/engine/index.ts)",
1423
+ "description": "",
1424
+ "required": true,
1425
+ "artifacts": []
1426
+ },
1427
+ "E-RiLBQYrz": {
1428
+ "id": "E-RiLBQYrz",
1429
+ "blockId": "oWJCfRAhRe",
1430
+ "direction": "in",
1431
+ "name": "音声出力 (src/engine/audio/mixer.ts)",
1432
+ "description": "",
1433
+ "required": true,
1434
+ "artifacts": []
1435
+ },
1436
+ "NjZ1r6WIZa": {
1437
+ "id": "NjZ1r6WIZa",
1438
+ "blockId": "TKoBbn5oqq",
1439
+ "direction": "out",
1440
+ "name": "クロック (src/engine/clock.ts)",
1441
+ "description": "",
1442
+ "required": true,
1443
+ "artifacts": [
1444
+ {
1445
+ "id": "GW5TD8PO61",
1446
+ "title": "クロック",
1447
+ "url": "",
1448
+ "kind": "file",
1449
+ "note": "",
1450
+ "path": "src/engine/clock.ts"
1451
+ }
1452
+ ]
1453
+ },
1454
+ "DmlNCBayRq": {
1455
+ "id": "DmlNCBayRq",
1456
+ "blockId": "TKoBbn5oqq",
1457
+ "direction": "in",
1458
+ "name": "設計書 (docs/design.md)",
1459
+ "description": "",
1460
+ "required": true,
1461
+ "artifacts": []
1462
+ },
1463
+ "eh9eB-8IQC": {
1464
+ "id": "eh9eB-8IQC",
1465
+ "blockId": "oe3g3G7YMT",
1466
+ "direction": "out",
1467
+ "name": "分周器 (src/engine/divider.ts)",
1468
+ "description": "",
1469
+ "required": true,
1470
+ "artifacts": [
1471
+ {
1472
+ "id": "Tb64juNkdc",
1473
+ "title": "分周器",
1474
+ "url": "",
1475
+ "kind": "file",
1476
+ "note": "",
1477
+ "path": "src/engine/divider.ts"
1478
+ }
1479
+ ]
1480
+ },
1481
+ "10bDGnti1O": {
1482
+ "id": "10bDGnti1O",
1483
+ "blockId": "oe3g3G7YMT",
1484
+ "direction": "in",
1485
+ "name": "クロック (src/engine/clock.ts)",
1486
+ "description": "",
1487
+ "required": true,
1488
+ "artifacts": []
1489
+ },
1490
+ "HaRprcCBb2": {
1491
+ "id": "HaRprcCBb2",
1492
+ "blockId": "Xe-TZBGtRd",
1493
+ "direction": "out",
1494
+ "name": "スケジューラ (src/engine/scheduler.ts)",
1495
+ "description": "",
1496
+ "required": true,
1497
+ "artifacts": [
1498
+ {
1499
+ "id": "MJIvtpBhS7",
1500
+ "title": "スケジューラ",
1501
+ "url": "",
1502
+ "kind": "file",
1503
+ "note": "",
1504
+ "path": "src/engine/scheduler.ts"
1505
+ }
1506
+ ]
1507
+ },
1508
+ "LuoGxmETA6": {
1509
+ "id": "LuoGxmETA6",
1510
+ "blockId": "Xe-TZBGtRd",
1511
+ "direction": "in",
1512
+ "name": "分周器 (src/engine/divider.ts)",
1513
+ "description": "",
1514
+ "required": true,
1515
+ "artifacts": []
1516
+ },
1517
+ "UOUnrNqA4O": {
1518
+ "id": "UOUnrNqA4O",
1519
+ "blockId": "bt03QZOzRy",
1520
+ "direction": "out",
1521
+ "name": "型定義 (src/engine/blocks/types.ts)",
1522
+ "description": "",
1523
+ "required": true,
1524
+ "artifacts": [
1525
+ {
1526
+ "id": "M5lYRHxIUs",
1527
+ "title": "型定義",
1528
+ "url": "",
1529
+ "kind": "file",
1530
+ "note": "",
1531
+ "path": "src/engine/blocks/types.ts"
1532
+ }
1533
+ ]
1534
+ },
1535
+ "WIc_zMUPk8": {
1536
+ "id": "WIc_zMUPk8",
1537
+ "blockId": "bt03QZOzRy",
1538
+ "direction": "in",
1539
+ "name": "スケジューラ (src/engine/scheduler.ts)",
1540
+ "description": "",
1541
+ "required": true,
1542
+ "artifacts": []
1543
+ },
1544
+ "7rdWMFN1Qx": {
1545
+ "id": "7rdWMFN1Qx",
1546
+ "blockId": "O1WPIQ7rSm",
1547
+ "direction": "out",
1548
+ "name": "ゲート (src/engine/blocks/gates.ts)",
1549
+ "description": "",
1550
+ "required": true,
1551
+ "artifacts": [
1552
+ {
1553
+ "id": "TBmPbSUKgO",
1554
+ "title": "ゲート",
1555
+ "url": "",
1556
+ "kind": "file",
1557
+ "note": "",
1558
+ "path": "src/engine/blocks/gates.ts"
1559
+ }
1560
+ ]
1561
+ },
1562
+ "lVwsQiNOat": {
1563
+ "id": "lVwsQiNOat",
1564
+ "blockId": "O1WPIQ7rSm",
1565
+ "direction": "in",
1566
+ "name": "型定義 (src/engine/blocks/types.ts)",
1567
+ "description": "",
1568
+ "required": true,
1569
+ "artifacts": []
1570
+ },
1571
+ "2ABl9uQU_K": {
1572
+ "id": "2ABl9uQU_K",
1573
+ "blockId": "BL-IQJddOL",
1574
+ "direction": "out",
1575
+ "name": "エッジ検出 (src/engine/blocks/edge.ts)",
1576
+ "description": "",
1577
+ "required": true,
1578
+ "artifacts": []
1579
+ },
1580
+ "fvRe5iIwzH": {
1581
+ "id": "fvRe5iIwzH",
1582
+ "blockId": "BL-IQJddOL",
1583
+ "direction": "in",
1584
+ "name": "ゲート (src/engine/blocks/gates.ts)",
1585
+ "description": "",
1586
+ "required": true,
1587
+ "artifacts": []
1588
+ },
1589
+ "qgZc6zvdSq": {
1590
+ "id": "qgZc6zvdSq",
1591
+ "blockId": "aqTgOYdngd",
1592
+ "direction": "out",
1593
+ "name": "評価器 (src/engine/logic.ts)",
1594
+ "description": "",
1595
+ "required": true,
1596
+ "artifacts": []
1597
+ },
1598
+ "7alskTKs5m": {
1599
+ "id": "7alskTKs5m",
1600
+ "blockId": "aqTgOYdngd",
1601
+ "direction": "in",
1602
+ "name": "エッジ検出 (src/engine/blocks/edge.ts)",
1603
+ "description": "",
1604
+ "required": true,
1605
+ "artifacts": []
1606
+ },
1607
+ "wTK-zFXIl-": {
1608
+ "id": "wTK-zFXIl-",
1609
+ "blockId": "K-20xmNf3W",
1610
+ "direction": "out",
1611
+ "name": "オシレータ (src/engine/audio/osc.ts)",
1612
+ "description": "",
1613
+ "required": true,
1614
+ "artifacts": []
1615
+ },
1616
+ "Wh8MtlNFbF": {
1617
+ "id": "Wh8MtlNFbF",
1618
+ "blockId": "K-20xmNf3W",
1619
+ "direction": "in",
1620
+ "name": "評価器 (src/engine/logic.ts)",
1621
+ "description": "",
1622
+ "required": true,
1623
+ "artifacts": []
1624
+ },
1625
+ "rZHl7JKTav": {
1626
+ "id": "rZHl7JKTav",
1627
+ "blockId": "K-20xmNf3W",
1628
+ "direction": "in",
1629
+ "name": "Web Audio API の仕様",
1630
+ "description": "",
1631
+ "required": true,
1632
+ "artifacts": []
1633
+ },
1634
+ "MBtOwLhUMn": {
1635
+ "id": "MBtOwLhUMn",
1636
+ "blockId": "_CMF_NQtrT",
1637
+ "direction": "out",
1638
+ "name": "サンプラ (src/engine/audio/sampler.ts)",
1639
+ "description": "",
1640
+ "required": true,
1641
+ "artifacts": []
1642
+ },
1643
+ "A6aFCCF3Zr": {
1644
+ "id": "A6aFCCF3Zr",
1645
+ "blockId": "_CMF_NQtrT",
1646
+ "direction": "in",
1647
+ "name": "オシレータ (src/engine/audio/osc.ts)",
1648
+ "description": "",
1649
+ "required": true,
1650
+ "artifacts": []
1651
+ },
1652
+ "L80wr7lTxz": {
1653
+ "id": "L80wr7lTxz",
1654
+ "blockId": "GEaS1KjrlU",
1655
+ "direction": "out",
1656
+ "name": "音声出力 (src/engine/audio/mixer.ts)",
1657
+ "description": "",
1658
+ "required": true,
1659
+ "artifacts": []
1660
+ },
1661
+ "qBdXhEaDrC": {
1662
+ "id": "qBdXhEaDrC",
1663
+ "blockId": "GEaS1KjrlU",
1664
+ "direction": "in",
1665
+ "name": "サンプラ (src/engine/audio/sampler.ts)",
1666
+ "description": "",
1667
+ "required": true,
1668
+ "artifacts": []
1669
+ },
1670
+ "QJ6WG9q_4D": {
1671
+ "id": "QJ6WG9q_4D",
1672
+ "blockId": "B0b9JruhHD",
1673
+ "direction": "out",
1674
+ "name": "パッチの型 (src/engine/patch/schema.ts)",
1675
+ "description": "",
1676
+ "required": true,
1677
+ "artifacts": []
1678
+ },
1679
+ "Y8U78Ai1EL": {
1680
+ "id": "Y8U78Ai1EL",
1681
+ "blockId": "B0b9JruhHD",
1682
+ "direction": "in",
1683
+ "name": "音声出力 (src/engine/audio/mixer.ts)",
1684
+ "description": "",
1685
+ "required": true,
1686
+ "artifacts": []
1687
+ },
1688
+ "G6Azpcaj5d": {
1689
+ "id": "G6Azpcaj5d",
1690
+ "blockId": "ouhZJIaFW5",
1691
+ "direction": "out",
1692
+ "name": "エンジン一式 (src/engine/index.ts)",
1693
+ "description": "",
1694
+ "required": true,
1695
+ "artifacts": []
1696
+ },
1697
+ "2apx-GP8jT": {
1698
+ "id": "2apx-GP8jT",
1699
+ "blockId": "ouhZJIaFW5",
1700
+ "direction": "in",
1701
+ "name": "パッチの型 (src/engine/patch/schema.ts)",
1702
+ "description": "",
1703
+ "required": true,
1704
+ "artifacts": []
1705
+ },
1706
+ "rqWJ55QcxB": {
1707
+ "id": "rqWJ55QcxB",
1708
+ "blockId": "PmWXgxcTz1",
1709
+ "direction": "out",
1710
+ "name": "ラック画面 (src/ui/Rack.tsx)",
1711
+ "description": "",
1712
+ "required": true,
1713
+ "artifacts": []
1714
+ },
1715
+ "pT_7vIsYOF": {
1716
+ "id": "pT_7vIsYOF",
1717
+ "blockId": "PmWXgxcTz1",
1718
+ "direction": "in",
1719
+ "name": "エンジン一式 (src/engine/index.ts)",
1720
+ "description": "",
1721
+ "required": true,
1722
+ "artifacts": []
1723
+ },
1724
+ "9FWTdTieUE": {
1725
+ "id": "9FWTdTieUE",
1726
+ "blockId": "WpHHR1WTSj",
1727
+ "direction": "out",
1728
+ "name": "トランスポート (src/ui/Transport.tsx)",
1729
+ "description": "",
1730
+ "required": true,
1731
+ "artifacts": []
1732
+ },
1733
+ "Jyc6hva2px": {
1734
+ "id": "Jyc6hva2px",
1735
+ "blockId": "WpHHR1WTSj",
1736
+ "direction": "in",
1737
+ "name": "ラック画面 (src/ui/Rack.tsx)",
1738
+ "description": "",
1739
+ "required": true,
1740
+ "artifacts": []
1741
+ },
1742
+ "jT4DeSMVmu": {
1743
+ "id": "jT4DeSMVmu",
1744
+ "blockId": "WBeew96LXK",
1745
+ "direction": "out",
1746
+ "name": "画面一式 (src/ui/App.tsx)",
1747
+ "description": "",
1748
+ "required": true,
1749
+ "artifacts": []
1750
+ },
1751
+ "aYYETNLKZW": {
1752
+ "id": "aYYETNLKZW",
1753
+ "blockId": "WBeew96LXK",
1754
+ "direction": "in",
1755
+ "name": "トランスポート (src/ui/Transport.tsx)",
1756
+ "description": "",
1757
+ "required": true,
1758
+ "artifacts": []
1759
+ },
1760
+ "YVLDUdLYvp": {
1761
+ "id": "YVLDUdLYvp",
1762
+ "blockId": "PU3j5HywQV",
1763
+ "direction": "out",
1764
+ "name": "ブロック部品 (src/ui/Block.tsx)",
1765
+ "description": "",
1766
+ "required": true,
1767
+ "artifacts": []
1768
+ },
1769
+ "a7AhfqxBPh": {
1770
+ "id": "a7AhfqxBPh",
1771
+ "blockId": "PU3j5HywQV",
1772
+ "direction": "in",
1773
+ "name": "エンジン一式 (src/engine/index.ts)",
1774
+ "description": "",
1775
+ "required": true,
1776
+ "artifacts": []
1777
+ },
1778
+ "sqElXXu_Ar": {
1779
+ "id": "sqElXXu_Ar",
1780
+ "blockId": "ap_49HK8Re",
1781
+ "direction": "out",
1782
+ "name": "結線 (src/ui/Wire.tsx)",
1783
+ "description": "",
1784
+ "required": true,
1785
+ "artifacts": []
1786
+ },
1787
+ "XxH1wFwKWK": {
1788
+ "id": "XxH1wFwKWK",
1789
+ "blockId": "ap_49HK8Re",
1790
+ "direction": "in",
1791
+ "name": "ブロック部品 (src/ui/Block.tsx)",
1792
+ "description": "",
1793
+ "required": true,
1794
+ "artifacts": []
1795
+ },
1796
+ "OtMpwABByO": {
1797
+ "id": "OtMpwABByO",
1798
+ "blockId": "LldtwPLSlE",
1799
+ "direction": "out",
1800
+ "name": "ラック画面 (src/ui/Rack.tsx)",
1801
+ "description": "",
1802
+ "required": true,
1803
+ "artifacts": []
1804
+ },
1805
+ "tFnHc2q3tj": {
1806
+ "id": "tFnHc2q3tj",
1807
+ "blockId": "LldtwPLSlE",
1808
+ "direction": "in",
1809
+ "name": "結線 (src/ui/Wire.tsx)",
1810
+ "description": "",
1811
+ "required": true,
1812
+ "artifacts": []
1813
+ },
1814
+ "TXXwYnq2J2": {
1815
+ "id": "TXXwYnq2J2",
1816
+ "blockId": "F1Tm512LwZ",
1817
+ "direction": "out",
1818
+ "name": "再生制御 (src/ui/Play.tsx)",
1819
+ "description": "",
1820
+ "required": true,
1821
+ "artifacts": []
1822
+ },
1823
+ "CZJeTP5jR4": {
1824
+ "id": "CZJeTP5jR4",
1825
+ "blockId": "F1Tm512LwZ",
1826
+ "direction": "in",
1827
+ "name": "ラック画面 (src/ui/Rack.tsx)",
1828
+ "description": "",
1829
+ "required": true,
1830
+ "artifacts": []
1831
+ },
1832
+ "F7XehEP0A2": {
1833
+ "id": "F7XehEP0A2",
1834
+ "blockId": "KSdQlTjUl0",
1835
+ "direction": "out",
1836
+ "name": "トランスポート (src/ui/Transport.tsx)",
1837
+ "description": "",
1838
+ "required": true,
1839
+ "artifacts": []
1840
+ },
1841
+ "3OOTepM5Nw": {
1842
+ "id": "3OOTepM5Nw",
1843
+ "blockId": "KSdQlTjUl0",
1844
+ "direction": "in",
1845
+ "name": "再生制御 (src/ui/Play.tsx)",
1846
+ "description": "",
1847
+ "required": true,
1848
+ "artifacts": []
1849
+ },
1850
+ "ctIDOikvgt": {
1851
+ "id": "ctIDOikvgt",
1852
+ "blockId": "AQKvUX2KGX",
1853
+ "direction": "out",
1854
+ "name": "編集パネル (src/ui/Inspector.tsx)",
1855
+ "description": "",
1856
+ "required": true,
1857
+ "artifacts": []
1858
+ },
1859
+ "qZO1r3p8a6": {
1860
+ "id": "qZO1r3p8a6",
1861
+ "blockId": "AQKvUX2KGX",
1862
+ "direction": "in",
1863
+ "name": "トランスポート (src/ui/Transport.tsx)",
1864
+ "description": "",
1865
+ "required": true,
1866
+ "artifacts": []
1867
+ },
1868
+ "y6i8ahMdSP": {
1869
+ "id": "y6i8ahMdSP",
1870
+ "blockId": "6eXlIjcUu7",
1871
+ "direction": "out",
1872
+ "name": "プリセット (src/ui/presets/*.json)",
1873
+ "description": "",
1874
+ "required": true,
1875
+ "artifacts": []
1876
+ },
1877
+ "3PS7it03Jj": {
1878
+ "id": "3PS7it03Jj",
1879
+ "blockId": "6eXlIjcUu7",
1880
+ "direction": "in",
1881
+ "name": "編集パネル (src/ui/Inspector.tsx)",
1882
+ "description": "",
1883
+ "required": true,
1884
+ "artifacts": []
1885
+ },
1886
+ "HQGgswzHUV": {
1887
+ "id": "HQGgswzHUV",
1888
+ "blockId": "t2xB0FIfXa",
1889
+ "direction": "out",
1890
+ "name": "画面一式 (src/ui/App.tsx)",
1891
+ "description": "",
1892
+ "required": true,
1893
+ "artifacts": []
1894
+ },
1895
+ "N-bgqWDS3S": {
1896
+ "id": "N-bgqWDS3S",
1897
+ "blockId": "t2xB0FIfXa",
1898
+ "direction": "in",
1899
+ "name": "プリセット (src/ui/presets/*.json)",
1900
+ "description": "",
1901
+ "required": true,
1902
+ "artifacts": []
1903
+ },
1904
+ "9a9r0a5lOz": {
1905
+ "id": "9a9r0a5lOz",
1906
+ "blockId": "QyyIDjhzd8",
1907
+ "direction": "out",
1908
+ "name": "テスト結果 (docs/test-report.md)",
1909
+ "description": "",
1910
+ "required": true,
1911
+ "artifacts": []
1912
+ },
1913
+ "ASpIe_527b": {
1914
+ "id": "ASpIe_527b",
1915
+ "blockId": "QyyIDjhzd8",
1916
+ "direction": "in",
1917
+ "name": "画面一式 (src/ui/App.tsx)",
1918
+ "description": "",
1919
+ "required": true,
1920
+ "artifacts": []
1921
+ },
1922
+ "Ds32mFN3eV": {
1923
+ "id": "Ds32mFN3eV",
1924
+ "blockId": "v6bbrx9K93",
1925
+ "direction": "out",
1926
+ "name": "公開された Logic DAW (URL)",
1927
+ "description": "",
1928
+ "required": true,
1929
+ "artifacts": []
1930
+ },
1931
+ "xsfNsmYr2j": {
1932
+ "id": "xsfNsmYr2j",
1933
+ "blockId": "v6bbrx9K93",
1934
+ "direction": "in",
1935
+ "name": "テスト結果 (docs/test-report.md)",
1936
+ "description": "",
1937
+ "required": true,
1938
+ "artifacts": []
1939
+ },
1940
+ "5dcKHJ4p-Q": {
1941
+ "id": "5dcKHJ4p-Q",
1942
+ "blockId": "yGW8Ae72fv",
1943
+ "direction": "out",
1944
+ "name": "計測結果 (docs/jitter.csv)",
1945
+ "description": "",
1946
+ "required": true,
1947
+ "artifacts": []
1948
+ },
1949
+ "pwujrlHO3-": {
1950
+ "id": "pwujrlHO3-",
1951
+ "blockId": "yGW8Ae72fv",
1952
+ "direction": "in",
1953
+ "name": "画面一式 (src/ui/App.tsx)",
1954
+ "description": "",
1955
+ "required": true,
1956
+ "artifacts": []
1957
+ },
1958
+ "bG6ndY52zr": {
1959
+ "id": "bG6ndY52zr",
1960
+ "blockId": "4hlmsTDUeV",
1961
+ "direction": "out",
1962
+ "name": "確認表 (docs/browsers.md)",
1963
+ "description": "",
1964
+ "required": true,
1965
+ "artifacts": []
1966
+ },
1967
+ "wI-vtTK_mg": {
1968
+ "id": "wI-vtTK_mg",
1969
+ "blockId": "4hlmsTDUeV",
1970
+ "direction": "in",
1971
+ "name": "計測結果 (docs/jitter.csv)",
1972
+ "description": "",
1973
+ "required": true,
1974
+ "artifacts": []
1975
+ },
1976
+ "Ir89lGty_J": {
1977
+ "id": "Ir89lGty_J",
1978
+ "blockId": "u9EvSIo2D9",
1979
+ "direction": "out",
1980
+ "name": "テスト結果 (docs/test-report.md)",
1981
+ "description": "",
1982
+ "required": true,
1983
+ "artifacts": []
1984
+ },
1985
+ "9s-0cJGQ0R": {
1986
+ "id": "9s-0cJGQ0R",
1987
+ "blockId": "u9EvSIo2D9",
1988
+ "direction": "in",
1989
+ "name": "確認表 (docs/browsers.md)",
1990
+ "description": "",
1991
+ "required": true,
1992
+ "artifacts": []
1993
+ },
1994
+ "Qt4dePcO4S": {
1995
+ "id": "Qt4dePcO4S",
1996
+ "blockId": "IMFPBAf-pu",
1997
+ "direction": "out",
1998
+ "name": "配信 URL",
1999
+ "description": "",
2000
+ "required": true,
2001
+ "artifacts": []
2002
+ },
2003
+ "6qhxjNs28v": {
2004
+ "id": "6qhxjNs28v",
2005
+ "blockId": "IMFPBAf-pu",
2006
+ "direction": "in",
2007
+ "name": "テスト結果 (docs/test-report.md)",
2008
+ "description": "",
2009
+ "required": true,
2010
+ "artifacts": []
2011
+ },
2012
+ "HhjhNogYEM": {
2013
+ "id": "HhjhNogYEM",
2014
+ "blockId": "I4uQZmQ75f",
2015
+ "direction": "out",
2016
+ "name": "紹介ページ (README.md)",
2017
+ "description": "",
2018
+ "required": true,
2019
+ "artifacts": []
2020
+ },
2021
+ "IYbH9CxLvI": {
2022
+ "id": "IYbH9CxLvI",
2023
+ "blockId": "I4uQZmQ75f",
2024
+ "direction": "in",
2025
+ "name": "配信 URL",
2026
+ "description": "",
2027
+ "required": true,
2028
+ "artifacts": []
2029
+ },
2030
+ "YNYryx87fx": {
2031
+ "id": "YNYryx87fx",
2032
+ "blockId": "3Nr7xa8TFw",
2033
+ "direction": "out",
2034
+ "name": "公開された Logic DAW (URL)",
2035
+ "description": "",
2036
+ "required": true,
2037
+ "artifacts": []
2038
+ },
2039
+ "FQNilKoyoK": {
2040
+ "id": "FQNilKoyoK",
2041
+ "blockId": "3Nr7xa8TFw",
2042
+ "direction": "in",
2043
+ "name": "紹介ページ (README.md)",
2044
+ "description": "",
2045
+ "required": true,
2046
+ "artifacts": []
2047
+ }
2048
+ },
2049
+ "edges": {
2050
+ "wIpfrnT3CO": {
2051
+ "id": "wIpfrnT3CO",
2052
+ "from": {
2053
+ "portId": "fg2eQl3RiW",
2054
+ "side": "outer"
2055
+ },
2056
+ "to": {
2057
+ "portId": "UAvNJMXfiB",
2058
+ "side": "inner"
2059
+ },
2060
+ "kind": "up",
2061
+ "auto": false
2062
+ },
2063
+ "kPspvQptM_": {
2064
+ "id": "kPspvQptM_",
2065
+ "from": {
2066
+ "portId": "TA-aOKc8qD",
2067
+ "side": "inner"
2068
+ },
2069
+ "to": {
2070
+ "portId": "QJHUXdI5Hm",
2071
+ "side": "outer"
2072
+ },
2073
+ "kind": "down",
2074
+ "auto": true
2075
+ },
2076
+ "XPh0DnERW_": {
2077
+ "id": "XPh0DnERW_",
2078
+ "from": {
2079
+ "portId": "hT--v-Bfi9",
2080
+ "side": "inner"
2081
+ },
2082
+ "to": {
2083
+ "portId": "TA-aOKc8qD",
2084
+ "side": "outer"
2085
+ },
2086
+ "kind": "down",
2087
+ "auto": true
2088
+ },
2089
+ "-mPj8p4TwH": {
2090
+ "id": "-mPj8p4TwH",
2091
+ "from": {
2092
+ "portId": "ovok6n6Nq0",
2093
+ "side": "inner"
2094
+ },
2095
+ "to": {
2096
+ "portId": "_tT7ETNmmk",
2097
+ "side": "outer"
2098
+ },
2099
+ "kind": "down",
2100
+ "auto": true
2101
+ },
2102
+ "vdcbfiaXgr": {
2103
+ "id": "vdcbfiaXgr",
2104
+ "from": {
2105
+ "portId": "h23ZuuBQVq",
2106
+ "side": "inner"
2107
+ },
2108
+ "to": {
2109
+ "portId": "ovok6n6Nq0",
2110
+ "side": "outer"
2111
+ },
2112
+ "kind": "down",
2113
+ "auto": true
2114
+ },
2115
+ "9iSVJFWGPv": {
2116
+ "id": "9iSVJFWGPv",
2117
+ "from": {
2118
+ "portId": "v99e7fqoqJ",
2119
+ "side": "inner"
2120
+ },
2121
+ "to": {
2122
+ "portId": "B3vs5ee3X5",
2123
+ "side": "outer"
2124
+ },
2125
+ "kind": "down",
2126
+ "auto": true
2127
+ },
2128
+ "mTeWq_m0xx": {
2129
+ "id": "mTeWq_m0xx",
2130
+ "from": {
2131
+ "portId": "F2EnIfh3_Q",
2132
+ "side": "inner"
2133
+ },
2134
+ "to": {
2135
+ "portId": "v99e7fqoqJ",
2136
+ "side": "outer"
2137
+ },
2138
+ "kind": "down",
2139
+ "auto": true
2140
+ },
2141
+ "oM4cczmlIR": {
2142
+ "id": "oM4cczmlIR",
2143
+ "from": {
2144
+ "portId": "QJHUXdI5Hm",
2145
+ "side": "inner"
2146
+ },
2147
+ "to": {
2148
+ "portId": "xTc3MB1coA",
2149
+ "side": "outer"
2150
+ },
2151
+ "kind": "down",
2152
+ "auto": false
2153
+ },
2154
+ "rkUiCbvtLC": {
2155
+ "id": "rkUiCbvtLC",
2156
+ "from": {
2157
+ "portId": "4c-A-SRf-2",
2158
+ "side": "outer"
2159
+ },
2160
+ "to": {
2161
+ "portId": "kvS3InugGs",
2162
+ "side": "outer"
2163
+ },
2164
+ "kind": "sibling",
2165
+ "auto": false
2166
+ },
2167
+ "XNmygsSNTu": {
2168
+ "id": "XNmygsSNTu",
2169
+ "from": {
2170
+ "portId": "_tT7ETNmmk",
2171
+ "side": "inner"
2172
+ },
2173
+ "to": {
2174
+ "portId": "mAvgYpZWOH",
2175
+ "side": "outer"
2176
+ },
2177
+ "kind": "down",
2178
+ "auto": false
2179
+ },
2180
+ "K4KuN57zlh": {
2181
+ "id": "K4KuN57zlh",
2182
+ "from": {
2183
+ "portId": "W8ebXS8Hjc",
2184
+ "side": "outer"
2185
+ },
2186
+ "to": {
2187
+ "portId": "fy01mWHoRz",
2188
+ "side": "inner"
2189
+ },
2190
+ "kind": "up",
2191
+ "auto": false
2192
+ },
2193
+ "rplJD2LQUw": {
2194
+ "id": "rplJD2LQUw",
2195
+ "from": {
2196
+ "portId": "xTc3MB1coA",
2197
+ "side": "inner"
2198
+ },
2199
+ "to": {
2200
+ "portId": "5uOi3cMDfx",
2201
+ "side": "outer"
2202
+ },
2203
+ "kind": "down",
2204
+ "auto": false
2205
+ },
2206
+ "4dKygJKSVW": {
2207
+ "id": "4dKygJKSVW",
2208
+ "from": {
2209
+ "portId": "22r3SR4SOv",
2210
+ "side": "outer"
2211
+ },
2212
+ "to": {
2213
+ "portId": "DGrmfwlx8f",
2214
+ "side": "outer"
2215
+ },
2216
+ "kind": "sibling",
2217
+ "auto": false
2218
+ },
2219
+ "AhwGTPPl3c": {
2220
+ "id": "AhwGTPPl3c",
2221
+ "from": {
2222
+ "portId": "HUP_vV7Vbi",
2223
+ "side": "outer"
2224
+ },
2225
+ "to": {
2226
+ "portId": "4T9YYqx8us",
2227
+ "side": "outer"
2228
+ },
2229
+ "kind": "sibling",
2230
+ "auto": false
2231
+ },
2232
+ "h_R7kfV_uw": {
2233
+ "id": "h_R7kfV_uw",
2234
+ "from": {
2235
+ "portId": "tA6p6STOr8",
2236
+ "side": "outer"
2237
+ },
2238
+ "to": {
2239
+ "portId": "4c-A-SRf-2",
2240
+ "side": "inner"
2241
+ },
2242
+ "kind": "up",
2243
+ "auto": false
2244
+ },
2245
+ "ckBgugfRuu": {
2246
+ "id": "ckBgugfRuu",
2247
+ "from": {
2248
+ "portId": "kvS3InugGs",
2249
+ "side": "inner"
2250
+ },
2251
+ "to": {
2252
+ "portId": "ObLi0Io4S5",
2253
+ "side": "outer"
2254
+ },
2255
+ "kind": "down",
2256
+ "auto": false
2257
+ },
2258
+ "H00Ibky9m3": {
2259
+ "id": "H00Ibky9m3",
2260
+ "from": {
2261
+ "portId": "mAvgYpZWOH",
2262
+ "side": "inner"
2263
+ },
2264
+ "to": {
2265
+ "portId": "4EmmVBE157",
2266
+ "side": "outer"
2267
+ },
2268
+ "kind": "down",
2269
+ "auto": false
2270
+ },
2271
+ "-1e9184axM": {
2272
+ "id": "-1e9184axM",
2273
+ "from": {
2274
+ "portId": "zTvSTSq1hq",
2275
+ "side": "outer"
2276
+ },
2277
+ "to": {
2278
+ "portId": "tpgAsR93nJ",
2279
+ "side": "outer"
2280
+ },
2281
+ "kind": "sibling",
2282
+ "auto": false
2283
+ },
2284
+ "_zChd1lYTI": {
2285
+ "id": "_zChd1lYTI",
2286
+ "from": {
2287
+ "portId": "ou46CmUSog",
2288
+ "side": "outer"
2289
+ },
2290
+ "to": {
2291
+ "portId": "tTNt2AiDvF",
2292
+ "side": "outer"
2293
+ },
2294
+ "kind": "sibling",
2295
+ "auto": false
2296
+ },
2297
+ "ZyuegNfLZU": {
2298
+ "id": "ZyuegNfLZU",
2299
+ "from": {
2300
+ "portId": "BrkAmelKc6",
2301
+ "side": "outer"
2302
+ },
2303
+ "to": {
2304
+ "portId": "0Oq9-Om1uQ",
2305
+ "side": "outer"
2306
+ },
2307
+ "kind": "sibling",
2308
+ "auto": false
2309
+ },
2310
+ "15nfaPDhIU": {
2311
+ "id": "15nfaPDhIU",
2312
+ "from": {
2313
+ "portId": "VQQ9-P729l",
2314
+ "side": "outer"
2315
+ },
2316
+ "to": {
2317
+ "portId": "W8ebXS8Hjc",
2318
+ "side": "inner"
2319
+ },
2320
+ "kind": "up",
2321
+ "auto": false
2322
+ },
2323
+ "eKYTLQWaYk": {
2324
+ "id": "eKYTLQWaYk",
2325
+ "from": {
2326
+ "portId": "uJpcX-UPx_",
2327
+ "side": "inner"
2328
+ },
2329
+ "to": {
2330
+ "portId": "eWofB4yUGk",
2331
+ "side": "outer"
2332
+ },
2333
+ "kind": "down",
2334
+ "auto": false
2335
+ },
2336
+ "Vfv3nveyrC": {
2337
+ "id": "Vfv3nveyrC",
2338
+ "from": {
2339
+ "portId": "Rc5jvXed44",
2340
+ "side": "outer"
2341
+ },
2342
+ "to": {
2343
+ "portId": "diIpJHZrdB",
2344
+ "side": "outer"
2345
+ },
2346
+ "kind": "sibling",
2347
+ "auto": false
2348
+ },
2349
+ "cKQZmWSTPD": {
2350
+ "id": "cKQZmWSTPD",
2351
+ "from": {
2352
+ "portId": "PNUwk1z1wg",
2353
+ "side": "outer"
2354
+ },
2355
+ "to": {
2356
+ "portId": "8jQGqXsyyK",
2357
+ "side": "outer"
2358
+ },
2359
+ "kind": "sibling",
2360
+ "auto": false
2361
+ },
2362
+ "_fXP6O-Fza": {
2363
+ "id": "_fXP6O-Fza",
2364
+ "from": {
2365
+ "portId": "B3vs5ee3X5",
2366
+ "side": "inner"
2367
+ },
2368
+ "to": {
2369
+ "portId": "r6bCJHBXwq",
2370
+ "side": "outer"
2371
+ },
2372
+ "kind": "down",
2373
+ "auto": false
2374
+ },
2375
+ "-0z3FXcuoV": {
2376
+ "id": "-0z3FXcuoV",
2377
+ "from": {
2378
+ "portId": "61jwEgzJkd",
2379
+ "side": "outer"
2380
+ },
2381
+ "to": {
2382
+ "portId": "E-RiLBQYrz",
2383
+ "side": "outer"
2384
+ },
2385
+ "kind": "sibling",
2386
+ "auto": false
2387
+ },
2388
+ "kjdCzvhPHA": {
2389
+ "id": "kjdCzvhPHA",
2390
+ "from": {
2391
+ "portId": "x4q5P41c2W",
2392
+ "side": "outer"
2393
+ },
2394
+ "to": {
2395
+ "portId": "zZioHWEFMi",
2396
+ "side": "inner"
2397
+ },
2398
+ "kind": "up",
2399
+ "auto": false
2400
+ },
2401
+ "Y5YINJ5ZhX": {
2402
+ "id": "Y5YINJ5ZhX",
2403
+ "from": {
2404
+ "portId": "eWofB4yUGk",
2405
+ "side": "inner"
2406
+ },
2407
+ "to": {
2408
+ "portId": "DmlNCBayRq",
2409
+ "side": "outer"
2410
+ },
2411
+ "kind": "down",
2412
+ "auto": false
2413
+ },
2414
+ "YZqEhdtW68": {
2415
+ "id": "YZqEhdtW68",
2416
+ "from": {
2417
+ "portId": "NjZ1r6WIZa",
2418
+ "side": "outer"
2419
+ },
2420
+ "to": {
2421
+ "portId": "10bDGnti1O",
2422
+ "side": "outer"
2423
+ },
2424
+ "kind": "sibling",
2425
+ "auto": false
2426
+ },
2427
+ "2EAOaHLR41": {
2428
+ "id": "2EAOaHLR41",
2429
+ "from": {
2430
+ "portId": "eh9eB-8IQC",
2431
+ "side": "outer"
2432
+ },
2433
+ "to": {
2434
+ "portId": "LuoGxmETA6",
2435
+ "side": "outer"
2436
+ },
2437
+ "kind": "sibling",
2438
+ "auto": false
2439
+ },
2440
+ "Ef65DHxRrZ": {
2441
+ "id": "Ef65DHxRrZ",
2442
+ "from": {
2443
+ "portId": "HaRprcCBb2",
2444
+ "side": "outer"
2445
+ },
2446
+ "to": {
2447
+ "portId": "Rc5jvXed44",
2448
+ "side": "inner"
2449
+ },
2450
+ "kind": "up",
2451
+ "auto": false
2452
+ },
2453
+ "_f2VWcLIcz": {
2454
+ "id": "_f2VWcLIcz",
2455
+ "from": {
2456
+ "portId": "diIpJHZrdB",
2457
+ "side": "inner"
2458
+ },
2459
+ "to": {
2460
+ "portId": "WIc_zMUPk8",
2461
+ "side": "outer"
2462
+ },
2463
+ "kind": "down",
2464
+ "auto": false
2465
+ },
2466
+ "puDqUpfUGK": {
2467
+ "id": "puDqUpfUGK",
2468
+ "from": {
2469
+ "portId": "UOUnrNqA4O",
2470
+ "side": "outer"
2471
+ },
2472
+ "to": {
2473
+ "portId": "lVwsQiNOat",
2474
+ "side": "outer"
2475
+ },
2476
+ "kind": "sibling",
2477
+ "auto": false
2478
+ },
2479
+ "9TQXHPaWkx": {
2480
+ "id": "9TQXHPaWkx",
2481
+ "from": {
2482
+ "portId": "7rdWMFN1Qx",
2483
+ "side": "outer"
2484
+ },
2485
+ "to": {
2486
+ "portId": "fvRe5iIwzH",
2487
+ "side": "outer"
2488
+ },
2489
+ "kind": "sibling",
2490
+ "auto": false
2491
+ },
2492
+ "ImE6PoBfU7": {
2493
+ "id": "ImE6PoBfU7",
2494
+ "from": {
2495
+ "portId": "2ABl9uQU_K",
2496
+ "side": "outer"
2497
+ },
2498
+ "to": {
2499
+ "portId": "7alskTKs5m",
2500
+ "side": "outer"
2501
+ },
2502
+ "kind": "sibling",
2503
+ "auto": false
2504
+ },
2505
+ "R1fI4Mu1fd": {
2506
+ "id": "R1fI4Mu1fd",
2507
+ "from": {
2508
+ "portId": "qgZc6zvdSq",
2509
+ "side": "outer"
2510
+ },
2511
+ "to": {
2512
+ "portId": "PNUwk1z1wg",
2513
+ "side": "inner"
2514
+ },
2515
+ "kind": "up",
2516
+ "auto": false
2517
+ },
2518
+ "FtvCnnD0M8": {
2519
+ "id": "FtvCnnD0M8",
2520
+ "from": {
2521
+ "portId": "8jQGqXsyyK",
2522
+ "side": "inner"
2523
+ },
2524
+ "to": {
2525
+ "portId": "Wh8MtlNFbF",
2526
+ "side": "outer"
2527
+ },
2528
+ "kind": "down",
2529
+ "auto": false
2530
+ },
2531
+ "aVov7F5UO6": {
2532
+ "id": "aVov7F5UO6",
2533
+ "from": {
2534
+ "portId": "r6bCJHBXwq",
2535
+ "side": "inner"
2536
+ },
2537
+ "to": {
2538
+ "portId": "rZHl7JKTav",
2539
+ "side": "outer"
2540
+ },
2541
+ "kind": "down",
2542
+ "auto": false
2543
+ },
2544
+ "9wjbnVipre": {
2545
+ "id": "9wjbnVipre",
2546
+ "from": {
2547
+ "portId": "wTK-zFXIl-",
2548
+ "side": "outer"
2549
+ },
2550
+ "to": {
2551
+ "portId": "A6aFCCF3Zr",
2552
+ "side": "outer"
2553
+ },
2554
+ "kind": "sibling",
2555
+ "auto": false
2556
+ },
2557
+ "tivYKjzB-d": {
2558
+ "id": "tivYKjzB-d",
2559
+ "from": {
2560
+ "portId": "MBtOwLhUMn",
2561
+ "side": "outer"
2562
+ },
2563
+ "to": {
2564
+ "portId": "qBdXhEaDrC",
2565
+ "side": "outer"
2566
+ },
2567
+ "kind": "sibling",
2568
+ "auto": false
2569
+ },
2570
+ "YSpYWmuj-v": {
2571
+ "id": "YSpYWmuj-v",
2572
+ "from": {
2573
+ "portId": "L80wr7lTxz",
2574
+ "side": "outer"
2575
+ },
2576
+ "to": {
2577
+ "portId": "61jwEgzJkd",
2578
+ "side": "inner"
2579
+ },
2580
+ "kind": "up",
2581
+ "auto": false
2582
+ },
2583
+ "SU7t9cQuQT": {
2584
+ "id": "SU7t9cQuQT",
2585
+ "from": {
2586
+ "portId": "E-RiLBQYrz",
2587
+ "side": "inner"
2588
+ },
2589
+ "to": {
2590
+ "portId": "Y8U78Ai1EL",
2591
+ "side": "outer"
2592
+ },
2593
+ "kind": "down",
2594
+ "auto": false
2595
+ },
2596
+ "ZwvAqfSEUg": {
2597
+ "id": "ZwvAqfSEUg",
2598
+ "from": {
2599
+ "portId": "QJ6WG9q_4D",
2600
+ "side": "outer"
2601
+ },
2602
+ "to": {
2603
+ "portId": "2apx-GP8jT",
2604
+ "side": "outer"
2605
+ },
2606
+ "kind": "sibling",
2607
+ "auto": false
2608
+ },
2609
+ "pOsCqXUQqu": {
2610
+ "id": "pOsCqXUQqu",
2611
+ "from": {
2612
+ "portId": "G6Azpcaj5d",
2613
+ "side": "outer"
2614
+ },
2615
+ "to": {
2616
+ "portId": "x4q5P41c2W",
2617
+ "side": "inner"
2618
+ },
2619
+ "kind": "up",
2620
+ "auto": false
2621
+ },
2622
+ "F1DnRMpxci": {
2623
+ "id": "F1DnRMpxci",
2624
+ "from": {
2625
+ "portId": "ejZYaEiQ6L",
2626
+ "side": "inner"
2627
+ },
2628
+ "to": {
2629
+ "portId": "pT_7vIsYOF",
2630
+ "side": "outer"
2631
+ },
2632
+ "kind": "down",
2633
+ "auto": false
2634
+ },
2635
+ "Y75n9D669P": {
2636
+ "id": "Y75n9D669P",
2637
+ "from": {
2638
+ "portId": "rqWJ55QcxB",
2639
+ "side": "outer"
2640
+ },
2641
+ "to": {
2642
+ "portId": "Jyc6hva2px",
2643
+ "side": "outer"
2644
+ },
2645
+ "kind": "sibling",
2646
+ "auto": false
2647
+ },
2648
+ "v8xwhJy9A0": {
2649
+ "id": "v8xwhJy9A0",
2650
+ "from": {
2651
+ "portId": "9FWTdTieUE",
2652
+ "side": "outer"
2653
+ },
2654
+ "to": {
2655
+ "portId": "aYYETNLKZW",
2656
+ "side": "outer"
2657
+ },
2658
+ "kind": "sibling",
2659
+ "auto": false
2660
+ },
2661
+ "SrO-Rg1cIJ": {
2662
+ "id": "SrO-Rg1cIJ",
2663
+ "from": {
2664
+ "portId": "jT4DeSMVmu",
2665
+ "side": "outer"
2666
+ },
2667
+ "to": {
2668
+ "portId": "eGI-VIk1Ei",
2669
+ "side": "inner"
2670
+ },
2671
+ "kind": "up",
2672
+ "auto": false
2673
+ },
2674
+ "aDwrtYmw7k": {
2675
+ "id": "aDwrtYmw7k",
2676
+ "from": {
2677
+ "portId": "pT_7vIsYOF",
2678
+ "side": "inner"
2679
+ },
2680
+ "to": {
2681
+ "portId": "a7AhfqxBPh",
2682
+ "side": "outer"
2683
+ },
2684
+ "kind": "down",
2685
+ "auto": false
2686
+ },
2687
+ "uGaHApTOvI": {
2688
+ "id": "uGaHApTOvI",
2689
+ "from": {
2690
+ "portId": "YVLDUdLYvp",
2691
+ "side": "outer"
2692
+ },
2693
+ "to": {
2694
+ "portId": "XxH1wFwKWK",
2695
+ "side": "outer"
2696
+ },
2697
+ "kind": "sibling",
2698
+ "auto": false
2699
+ },
2700
+ "GfXj9UesCc": {
2701
+ "id": "GfXj9UesCc",
2702
+ "from": {
2703
+ "portId": "sqElXXu_Ar",
2704
+ "side": "outer"
2705
+ },
2706
+ "to": {
2707
+ "portId": "tFnHc2q3tj",
2708
+ "side": "outer"
2709
+ },
2710
+ "kind": "sibling",
2711
+ "auto": false
2712
+ },
2713
+ "0XR7r9EobB": {
2714
+ "id": "0XR7r9EobB",
2715
+ "from": {
2716
+ "portId": "OtMpwABByO",
2717
+ "side": "outer"
2718
+ },
2719
+ "to": {
2720
+ "portId": "rqWJ55QcxB",
2721
+ "side": "inner"
2722
+ },
2723
+ "kind": "up",
2724
+ "auto": false
2725
+ },
2726
+ "kn-2damUCM": {
2727
+ "id": "kn-2damUCM",
2728
+ "from": {
2729
+ "portId": "Jyc6hva2px",
2730
+ "side": "inner"
2731
+ },
2732
+ "to": {
2733
+ "portId": "CZJeTP5jR4",
2734
+ "side": "outer"
2735
+ },
2736
+ "kind": "down",
2737
+ "auto": false
2738
+ },
2739
+ "UHDvpwRB1K": {
2740
+ "id": "UHDvpwRB1K",
2741
+ "from": {
2742
+ "portId": "TXXwYnq2J2",
2743
+ "side": "outer"
2744
+ },
2745
+ "to": {
2746
+ "portId": "3OOTepM5Nw",
2747
+ "side": "outer"
2748
+ },
2749
+ "kind": "sibling",
2750
+ "auto": false
2751
+ },
2752
+ "CzUcnxNVZH": {
2753
+ "id": "CzUcnxNVZH",
2754
+ "from": {
2755
+ "portId": "F7XehEP0A2",
2756
+ "side": "outer"
2757
+ },
2758
+ "to": {
2759
+ "portId": "9FWTdTieUE",
2760
+ "side": "inner"
2761
+ },
2762
+ "kind": "up",
2763
+ "auto": false
2764
+ },
2765
+ "RpG4Puz7rQ": {
2766
+ "id": "RpG4Puz7rQ",
2767
+ "from": {
2768
+ "portId": "aYYETNLKZW",
2769
+ "side": "inner"
2770
+ },
2771
+ "to": {
2772
+ "portId": "qZO1r3p8a6",
2773
+ "side": "outer"
2774
+ },
2775
+ "kind": "down",
2776
+ "auto": false
2777
+ },
2778
+ "QQ7rot2QCv": {
2779
+ "id": "QQ7rot2QCv",
2780
+ "from": {
2781
+ "portId": "ctIDOikvgt",
2782
+ "side": "outer"
2783
+ },
2784
+ "to": {
2785
+ "portId": "3PS7it03Jj",
2786
+ "side": "outer"
2787
+ },
2788
+ "kind": "sibling",
2789
+ "auto": false
2790
+ },
2791
+ "rwOKi-C3Ko": {
2792
+ "id": "rwOKi-C3Ko",
2793
+ "from": {
2794
+ "portId": "y6i8ahMdSP",
2795
+ "side": "outer"
2796
+ },
2797
+ "to": {
2798
+ "portId": "N-bgqWDS3S",
2799
+ "side": "outer"
2800
+ },
2801
+ "kind": "sibling",
2802
+ "auto": false
2803
+ },
2804
+ "TtZE5pGdLn": {
2805
+ "id": "TtZE5pGdLn",
2806
+ "from": {
2807
+ "portId": "HQGgswzHUV",
2808
+ "side": "outer"
2809
+ },
2810
+ "to": {
2811
+ "portId": "jT4DeSMVmu",
2812
+ "side": "inner"
2813
+ },
2814
+ "kind": "up",
2815
+ "auto": false
2816
+ },
2817
+ "MpLYfxaYvg": {
2818
+ "id": "MpLYfxaYvg",
2819
+ "from": {
2820
+ "portId": "LfxvKcMQhc",
2821
+ "side": "inner"
2822
+ },
2823
+ "to": {
2824
+ "portId": "ASpIe_527b",
2825
+ "side": "outer"
2826
+ },
2827
+ "kind": "down",
2828
+ "auto": false
2829
+ },
2830
+ "IDaxtGvvEs": {
2831
+ "id": "IDaxtGvvEs",
2832
+ "from": {
2833
+ "portId": "9a9r0a5lOz",
2834
+ "side": "outer"
2835
+ },
2836
+ "to": {
2837
+ "portId": "xsfNsmYr2j",
2838
+ "side": "outer"
2839
+ },
2840
+ "kind": "sibling",
2841
+ "auto": false
2842
+ },
2843
+ "LcrUHRUz-t": {
2844
+ "id": "LcrUHRUz-t",
2845
+ "from": {
2846
+ "portId": "Ds32mFN3eV",
2847
+ "side": "outer"
2848
+ },
2849
+ "to": {
2850
+ "portId": "8Jt2-0LipW",
2851
+ "side": "inner"
2852
+ },
2853
+ "kind": "up",
2854
+ "auto": false
2855
+ },
2856
+ "OGj1R12eqA": {
2857
+ "id": "OGj1R12eqA",
2858
+ "from": {
2859
+ "portId": "ASpIe_527b",
2860
+ "side": "inner"
2861
+ },
2862
+ "to": {
2863
+ "portId": "pwujrlHO3-",
2864
+ "side": "outer"
2865
+ },
2866
+ "kind": "down",
2867
+ "auto": false
2868
+ },
2869
+ "cbNrDJZcy4": {
2870
+ "id": "cbNrDJZcy4",
2871
+ "from": {
2872
+ "portId": "5dcKHJ4p-Q",
2873
+ "side": "outer"
2874
+ },
2875
+ "to": {
2876
+ "portId": "wI-vtTK_mg",
2877
+ "side": "outer"
2878
+ },
2879
+ "kind": "sibling",
2880
+ "auto": false
2881
+ },
2882
+ "e71B27cCGg": {
2883
+ "id": "e71B27cCGg",
2884
+ "from": {
2885
+ "portId": "bG6ndY52zr",
2886
+ "side": "outer"
2887
+ },
2888
+ "to": {
2889
+ "portId": "9s-0cJGQ0R",
2890
+ "side": "outer"
2891
+ },
2892
+ "kind": "sibling",
2893
+ "auto": false
2894
+ },
2895
+ "yZ2SgB9eq_": {
2896
+ "id": "yZ2SgB9eq_",
2897
+ "from": {
2898
+ "portId": "Ir89lGty_J",
2899
+ "side": "outer"
2900
+ },
2901
+ "to": {
2902
+ "portId": "9a9r0a5lOz",
2903
+ "side": "inner"
2904
+ },
2905
+ "kind": "up",
2906
+ "auto": false
2907
+ },
2908
+ "FtvRoMTtGp": {
2909
+ "id": "FtvRoMTtGp",
2910
+ "from": {
2911
+ "portId": "xsfNsmYr2j",
2912
+ "side": "inner"
2913
+ },
2914
+ "to": {
2915
+ "portId": "6qhxjNs28v",
2916
+ "side": "outer"
2917
+ },
2918
+ "kind": "down",
2919
+ "auto": false
2920
+ },
2921
+ "JUB_sZoU18": {
2922
+ "id": "JUB_sZoU18",
2923
+ "from": {
2924
+ "portId": "Qt4dePcO4S",
2925
+ "side": "outer"
2926
+ },
2927
+ "to": {
2928
+ "portId": "IYbH9CxLvI",
2929
+ "side": "outer"
2930
+ },
2931
+ "kind": "sibling",
2932
+ "auto": false
2933
+ },
2934
+ "ckhappDTA8": {
2935
+ "id": "ckhappDTA8",
2936
+ "from": {
2937
+ "portId": "HhjhNogYEM",
2938
+ "side": "outer"
2939
+ },
2940
+ "to": {
2941
+ "portId": "FQNilKoyoK",
2942
+ "side": "outer"
2943
+ },
2944
+ "kind": "sibling",
2945
+ "auto": false
2946
+ },
2947
+ "1Wte57suDD": {
2948
+ "id": "1Wte57suDD",
2949
+ "from": {
2950
+ "portId": "YNYryx87fx",
2951
+ "side": "outer"
2952
+ },
2953
+ "to": {
2954
+ "portId": "Ds32mFN3eV",
2955
+ "side": "inner"
2956
+ },
2957
+ "kind": "up",
2958
+ "auto": false
2959
+ },
2960
+ "rgGGxy_AQE": {
2961
+ "id": "rgGGxy_AQE",
2962
+ "from": {
2963
+ "portId": "fy01mWHoRz",
2964
+ "side": "outer"
2965
+ },
2966
+ "to": {
2967
+ "portId": "uJpcX-UPx_",
2968
+ "side": "outer"
2969
+ },
2970
+ "kind": "sibling",
2971
+ "auto": false
2972
+ },
2973
+ "MgCLLcQKGo": {
2974
+ "id": "MgCLLcQKGo",
2975
+ "from": {
2976
+ "portId": "zZioHWEFMi",
2977
+ "side": "outer"
2978
+ },
2979
+ "to": {
2980
+ "portId": "ejZYaEiQ6L",
2981
+ "side": "outer"
2982
+ },
2983
+ "kind": "sibling",
2984
+ "auto": false
2985
+ },
2986
+ "peqigBMKQp": {
2987
+ "id": "peqigBMKQp",
2988
+ "from": {
2989
+ "portId": "eGI-VIk1Ei",
2990
+ "side": "outer"
2991
+ },
2992
+ "to": {
2993
+ "portId": "LfxvKcMQhc",
2994
+ "side": "outer"
2995
+ },
2996
+ "kind": "sibling",
2997
+ "auto": false
2998
+ },
2999
+ "rO_C-cad-D": {
3000
+ "id": "rO_C-cad-D",
3001
+ "from": {
3002
+ "portId": "8Jt2-0LipW",
3003
+ "side": "outer"
3004
+ },
3005
+ "to": {
3006
+ "portId": "fg2eQl3RiW",
3007
+ "side": "inner"
3008
+ },
3009
+ "kind": "up",
3010
+ "auto": false
3011
+ }
3012
+ },
3013
+ "terminals": {
3014
+ "in": {
3015
+ "x": 0,
3016
+ "y": 139
3017
+ },
3018
+ "out": {
3019
+ "x": 2725.6999999999994,
3020
+ "y": 165
3021
+ }
3022
+ },
3023
+ "log": [
3024
+ {
3025
+ "id": "-jeCySEanY",
3026
+ "at": "2026-10-02T21:23:03.585Z",
3027
+ "actor": "claude-code",
3028
+ "kind": "added",
3029
+ "blockId": "xJhwet2eK4",
3030
+ "message": "「企画と設計」を追加"
3031
+ },
3032
+ {
3033
+ "id": "cV0vLqp5XP",
3034
+ "at": "2026-10-02T21:23:03.617Z",
3035
+ "actor": "claude-code",
3036
+ "kind": "added",
3037
+ "blockId": "FiH1BjJOTX",
3038
+ "message": "「サウンドエンジン」を追加"
3039
+ },
3040
+ {
3041
+ "id": "M1xQQbWOdN",
3042
+ "at": "2026-10-02T21:23:03.650Z",
3043
+ "actor": "claude-code",
3044
+ "kind": "added",
3045
+ "blockId": "uZ_7SUgizp",
3046
+ "message": "「画面」を追加"
3047
+ },
3048
+ {
3049
+ "id": "ctEhMFaKQm",
3050
+ "at": "2026-10-02T21:23:03.681Z",
3051
+ "actor": "claude-code",
3052
+ "kind": "added",
3053
+ "blockId": "CVcGYJiFyf",
3054
+ "message": "「品質と公開」を追加"
3055
+ },
3056
+ {
3057
+ "id": "XFgphkcHeK",
3058
+ "at": "2026-10-02T21:23:03.718Z",
3059
+ "actor": "claude-code",
3060
+ "kind": "split",
3061
+ "blockId": "xJhwet2eK4",
3062
+ "message": "「企画と設計」を 2 個に分解: 要件をまとめる, コアを設計する"
3063
+ },
3064
+ {
3065
+ "id": "BpcAXKJip4",
3066
+ "at": "2026-10-02T21:23:03.754Z",
3067
+ "actor": "claude-code",
3068
+ "kind": "split",
3069
+ "blockId": "9WPT6_CRiu",
3070
+ "message": "「要件をまとめる」を 3 個に分解: 遊び方の絵を描く, 性能目標を決める, 用語と画面の骨子を書く"
3071
+ },
3072
+ {
3073
+ "id": "CuQ_GinyeK",
3074
+ "at": "2026-10-02T21:23:03.801Z",
3075
+ "actor": "claude-code",
3076
+ "kind": "split",
3077
+ "blockId": "DIRmqMXT2l",
3078
+ "message": "「コアを設計する」を 4 個に分解: タイミングモデルを決める, ブロックの仕様を書く, 音源とミキサを設計する, パッチ形式を決める"
3079
+ },
3080
+ {
3081
+ "id": "3SF1nwWsU2",
3082
+ "at": "2026-10-02T21:23:03.842Z",
3083
+ "actor": "claude-code",
3084
+ "kind": "split",
3085
+ "blockId": "FiH1BjJOTX",
3086
+ "message": "「サウンドエンジン」を 4 個に分解: クロックとスケジューラ, 論理ブロック, 音源とミキサ, パッチの保存と読み込み"
3087
+ },
3088
+ {
3089
+ "id": "ng1G_iTDZn",
3090
+ "at": "2026-10-02T21:23:03.887Z",
3091
+ "actor": "claude-code",
3092
+ "kind": "split",
3093
+ "blockId": "rSAsjzr_gM",
3094
+ "message": "「クロックとスケジューラ」を 3 個に分解: Ref クロックを作る, 分周器とカウンタを作る, lookahead で予約する"
3095
+ },
3096
+ {
3097
+ "id": "CZNU4YCX6W",
3098
+ "at": "2026-10-02T21:23:03.937Z",
3099
+ "actor": "claude-code",
3100
+ "kind": "split",
3101
+ "blockId": "5nvO49jnqp",
3102
+ "message": "「論理ブロック」を 4 個に分解: ブロックの型を定義する, ゲートを実装する, エッジ検出とゲート信号を実装する, 評価器を実装する"
3103
+ },
3104
+ {
3105
+ "id": "lAsDPkhOxi",
3106
+ "at": "2026-10-02T21:23:03.985Z",
3107
+ "actor": "claude-code",
3108
+ "kind": "split",
3109
+ "blockId": "nTEnZA2lre",
3110
+ "message": "「音源とミキサ」を 3 個に分解: オシレータ音源を作る, サンプル再生を作る, ミキサとエフェクトを作る"
3111
+ },
3112
+ {
3113
+ "id": "NnYSoqi2Fy",
3114
+ "at": "2026-10-02T21:23:04.027Z",
3115
+ "actor": "claude-code",
3116
+ "kind": "split",
3117
+ "blockId": "oWJCfRAhRe",
3118
+ "message": "「パッチの保存と読み込み」を 2 個に分解: パッチ形式を実装する, 読み書きを実装する"
3119
+ },
3120
+ {
3121
+ "id": "Dqm7QsD1iU",
3122
+ "at": "2026-10-02T21:23:04.072Z",
3123
+ "actor": "claude-code",
3124
+ "kind": "split",
3125
+ "blockId": "uZ_7SUgizp",
3126
+ "message": "「画面」を 3 個に分解: ラック (配置と結線), トランスポート, パラメータ編集とプリセット"
3127
+ },
3128
+ {
3129
+ "id": "Cp9Z4rNsbZ",
3130
+ "at": "2026-10-02T21:23:04.125Z",
3131
+ "actor": "claude-code",
3132
+ "kind": "split",
3133
+ "blockId": "PmWXgxcTz1",
3134
+ "message": "「ラック (配置と結線)」を 3 個に分解: ブロックを描く, ドラッグで結線する, ラックに並べる"
3135
+ },
3136
+ {
3137
+ "id": "SK-o7G4wFP",
3138
+ "at": "2026-10-02T21:23:04.179Z",
3139
+ "actor": "claude-code",
3140
+ "kind": "split",
3141
+ "blockId": "WpHHR1WTSj",
3142
+ "message": "「トランスポート」を 2 個に分解: 再生と停止を作る, クロック表示を作る"
3143
+ },
3144
+ {
3145
+ "id": "3oLfkE8FAm",
3146
+ "at": "2026-10-02T21:23:04.238Z",
3147
+ "actor": "claude-code",
3148
+ "kind": "split",
3149
+ "blockId": "WBeew96LXK",
3150
+ "message": "「パラメータ編集とプリセット」を 3 個に分解: 編集パネルを作る, プリセットを 3 つ作る, 画面を組み上げる"
3151
+ },
3152
+ {
3153
+ "id": "vYV-tHiF7q",
3154
+ "at": "2026-10-02T21:23:04.297Z",
3155
+ "actor": "claude-code",
3156
+ "kind": "split",
3157
+ "blockId": "CVcGYJiFyf",
3158
+ "message": "「品質と公開」を 2 個に分解: 検証, 公開"
3159
+ },
3160
+ {
3161
+ "id": "vUVE88QBhT",
3162
+ "at": "2026-10-02T21:23:04.360Z",
3163
+ "actor": "claude-code",
3164
+ "kind": "split",
3165
+ "blockId": "QyyIDjhzd8",
3166
+ "message": "「検証」を 3 個に分解: ジッタを計測する, ブラウザ差を確認する, 試遊して直す"
3167
+ },
3168
+ {
3169
+ "id": "fILtpI2LoC",
3170
+ "at": "2026-10-02T21:23:04.425Z",
3171
+ "actor": "claude-code",
3172
+ "kind": "split",
3173
+ "blockId": "v6bbrx9K93",
3174
+ "message": "「公開」を 3 個に分解: ビルドして配信する, 紹介ページを書く, 公開して告知する"
3175
+ },
3176
+ {
3177
+ "id": "D-FxzrfWIs",
3178
+ "at": "2026-10-02T21:23:04.675Z",
3179
+ "actor": "claude-code",
3180
+ "kind": "done",
3181
+ "blockId": "9h2eE_cSiA",
3182
+ "message": "「遊び方の絵を描く」完了 (遊び方の絵)"
3183
+ },
3184
+ {
3185
+ "id": "8gx7-BXdOR",
3186
+ "at": "2026-10-02T21:23:04.722Z",
3187
+ "actor": "claude-code",
3188
+ "kind": "done",
3189
+ "blockId": "dQFr5sVxfL",
3190
+ "message": "「性能目標を決める」完了 (性能目標)"
3191
+ },
3192
+ {
3193
+ "id": "gMGb1o8hBZ",
3194
+ "at": "2026-10-02T21:23:04.767Z",
3195
+ "actor": "claude-code",
3196
+ "kind": "done",
3197
+ "blockId": "6sEOLrrbpE",
3198
+ "message": "「用語と画面の骨子を書く」完了 (要件)"
3199
+ },
3200
+ {
3201
+ "id": "kmDkOOSGlg",
3202
+ "at": "2026-10-02T21:23:04.814Z",
3203
+ "actor": "claude-code",
3204
+ "kind": "done",
3205
+ "blockId": "LQ-3HVFrbh",
3206
+ "message": "「タイミングモデルを決める」完了 (タイミングモデル)"
3207
+ },
3208
+ {
3209
+ "id": "GEkLvUwBE2",
3210
+ "at": "2026-10-02T21:23:04.859Z",
3211
+ "actor": "claude-code",
3212
+ "kind": "done",
3213
+ "blockId": "2B7PJf8hxm",
3214
+ "message": "「ブロックの仕様を書く」完了 (ブロック仕様)"
3215
+ },
3216
+ {
3217
+ "id": "-uyZJjDBJE",
3218
+ "at": "2026-10-02T21:23:04.907Z",
3219
+ "actor": "claude-code",
3220
+ "kind": "done",
3221
+ "blockId": "E4vV7YM9M0",
3222
+ "message": "「音源とミキサを設計する」完了 (音源の章)"
3223
+ },
3224
+ {
3225
+ "id": "KoMqs7u8B9",
3226
+ "at": "2026-10-02T21:23:04.955Z",
3227
+ "actor": "claude-code",
3228
+ "kind": "done",
3229
+ "blockId": "yWRDC8wwD6",
3230
+ "message": "「パッチ形式を決める」完了 (設計書)"
3231
+ },
3232
+ {
3233
+ "id": "nPwQKYaUB3",
3234
+ "at": "2026-10-02T21:23:05.003Z",
3235
+ "actor": "claude-code",
3236
+ "kind": "done",
3237
+ "blockId": "TKoBbn5oqq",
3238
+ "message": "「Ref クロックを作る」完了 (クロック)"
3239
+ },
3240
+ {
3241
+ "id": "wfDGxtCd3e",
3242
+ "at": "2026-10-02T21:23:05.049Z",
3243
+ "actor": "claude-code",
3244
+ "kind": "done",
3245
+ "blockId": "oe3g3G7YMT",
3246
+ "message": "「分周器とカウンタを作る」完了 (分周器)"
3247
+ },
3248
+ {
3249
+ "id": "Lf9w9cwPt0",
3250
+ "at": "2026-10-02T21:23:05.096Z",
3251
+ "actor": "claude-code",
3252
+ "kind": "done",
3253
+ "blockId": "Xe-TZBGtRd",
3254
+ "message": "「lookahead で予約する」完了 (スケジューラ)"
3255
+ },
3256
+ {
3257
+ "id": "2X4c12YfZr",
3258
+ "at": "2026-10-02T21:23:05.141Z",
3259
+ "actor": "claude-code",
3260
+ "kind": "done",
3261
+ "blockId": "bt03QZOzRy",
3262
+ "message": "「ブロックの型を定義する」完了 (型定義)"
3263
+ },
3264
+ {
3265
+ "id": "nXAIEMcojW",
3266
+ "at": "2026-10-02T21:23:05.191Z",
3267
+ "actor": "claude-code",
3268
+ "kind": "done",
3269
+ "blockId": "O1WPIQ7rSm",
3270
+ "message": "「ゲートを実装する」完了 (ゲート)"
3271
+ },
3272
+ {
3273
+ "id": "D4P_9CXgiw",
3274
+ "at": "2026-10-02T21:23:05.234Z",
3275
+ "actor": "claude-code",
3276
+ "kind": "done",
3277
+ "blockId": "9WPT6_CRiu",
3278
+ "message": "「要件をまとめる」完了 (要件)"
3279
+ },
3280
+ {
3281
+ "id": "PUeat61S65",
3282
+ "at": "2026-10-02T21:23:05.282Z",
3283
+ "actor": "claude-code",
3284
+ "kind": "done",
3285
+ "blockId": "DIRmqMXT2l",
3286
+ "message": "「コアを設計する」完了 (設計書)"
3287
+ },
3288
+ {
3289
+ "id": "zNw4AubD3h",
3290
+ "at": "2026-10-02T21:23:05.328Z",
3291
+ "actor": "claude-code",
3292
+ "kind": "done",
3293
+ "blockId": "xJhwet2eK4",
3294
+ "message": "「企画と設計」完了 (設計書)"
3295
+ },
3296
+ {
3297
+ "id": "Tbisw3uNEu",
3298
+ "at": "2026-10-02T21:23:05.377Z",
3299
+ "actor": "claude-code",
3300
+ "kind": "done",
3301
+ "blockId": "rSAsjzr_gM",
3302
+ "message": "「クロックとスケジューラ」完了 (スケジューラ)"
3303
+ },
3304
+ {
3305
+ "id": "T5yA8VjylJ",
3306
+ "at": "2026-10-02T21:23:05.422Z",
3307
+ "actor": "claude-code",
3308
+ "kind": "asked",
3309
+ "blockId": "LQ-3HVFrbh",
3310
+ "message": "「タイミングモデルを決める」で判断待ち: クロックの基準はどちらにしますか?"
3311
+ },
3312
+ {
3313
+ "id": "_Ua1ljPOL2",
3314
+ "at": "2026-10-02T21:23:05.466Z",
3315
+ "actor": "human",
3316
+ "kind": "answered",
3317
+ "blockId": "LQ-3HVFrbh",
3318
+ "message": "「タイミングモデルを決める」の判断: クロックの基準はどちらにしますか? → 固定 Hz の Ref クロックを N 分周する (BPM は分周比で表す)"
3319
+ },
3320
+ {
3321
+ "id": "xITgPxlPjU",
3322
+ "at": "2026-10-02T21:23:05.517Z",
3323
+ "actor": "claude-code",
3324
+ "kind": "started",
3325
+ "blockId": "BL-IQJddOL",
3326
+ "message": "「エッジ検出とゲート信号を実装する」開始: 立ち上がり検出の状態の持ち方を実装中"
3327
+ },
3328
+ {
3329
+ "id": "l5EwaWuvlA",
3330
+ "at": "2026-10-02T21:23:05.561Z",
3331
+ "actor": "claude-code",
3332
+ "kind": "asked",
3333
+ "blockId": "_CMF_NQtrT",
3334
+ "message": "「サンプル再生を作る」で判断待ち: ドラムのサンプル音源は最初から同梱しますか?"
3335
+ },
3336
+ {
3337
+ "id": "bpNtiJeHlB",
3338
+ "at": "2026-10-02T21:23:05.607Z",
3339
+ "actor": "claude-code",
3340
+ "kind": "note",
3341
+ "blockId": "FiH1BjJOTX",
3342
+ "message": "「サウンドエンジン」期日 2026-11-10, 見積 60h"
3343
+ },
3344
+ {
3345
+ "id": "8_W0MSV5cG",
3346
+ "at": "2026-10-02T21:23:05.651Z",
3347
+ "actor": "claude-code",
3348
+ "kind": "note",
3349
+ "blockId": "uZ_7SUgizp",
3350
+ "message": "「画面」期日 2026-11-30, 見積 40h"
3351
+ },
3352
+ {
3353
+ "id": "pbnrBBPDFy",
3354
+ "at": "2026-10-02T21:23:05.695Z",
3355
+ "actor": "claude-code",
3356
+ "kind": "note",
3357
+ "blockId": "CVcGYJiFyf",
3358
+ "message": "「品質と公開」期日 2026-12-15"
3359
+ },
3360
+ {
3361
+ "id": "Kwlx9WjEqb",
3362
+ "at": "2026-10-02T21:23:05.740Z",
3363
+ "actor": "claude-code",
3364
+ "kind": "note",
3365
+ "blockId": "5nvO49jnqp",
3366
+ "message": "「論理ブロック」の進捗 50%"
3367
+ }
3368
+ ],
3369
+ "agents": {
3370
+ "claude-code": {
3371
+ "lastSeen": "2026-10-02T21:23:05.740Z"
3372
+ },
3373
+ "human": {
3374
+ "lastSeen": "2026-10-02T21:23:05.466Z"
3375
+ }
3376
+ },
3377
+ "nextKey": 50,
3378
+ "inputGroups": []
3379
+ }