Day087 - çæAIã§äœãã»ãã¥ãªãã£ããŒã«100
Physical Key Ledger ã¯ãç©çéµã»ICã«ãŒãã»ã«ãŒãããŒã®è²žåºã»ååãå¯èŠåããçŽå€±ãªã¹ã¯ãäœæžããããã®Webã¢ããªã§ãã
ã·ã³ãã«ãªUIã§ã誰ãã»ãã€ã»ã©ã®éµãå©çšãããããå³åº§ã«ææ¡ã§ããç£æ»ãã»ãã¥ãªãã£æè²ã«åœ¹ç«ã¡ãŸãã
ç©ççãªéµç®¡çã®ç²ç¹ãæè²çã«ç€ºãææãšããŠããç 究宀ãå°èŠæš¡ãªãã£ã¹ã§ã®å®åè£å©ãšããŠãå©çšã§ããŸãã
ð https://ipusiron.github.io/physical-key-ledger/
ãã©ãŠã¶ãŒã§çŽæ¥ã詊ãããã ããŸãã
- ç 究宀ã»ãŒã管çè : å®éšå®€ã®éµãå ¥é€šã«ãŒããåŠçã«è²žãåºãæå¡ã»å©æ
- å°èŠæš¡ãªãã£ã¹ç®¡çè : 瀟å¡èšŒãããã«ãŒããŒã管çããç·åã»äºåæ åœ
- ã·ã§ã¢ãªãã£ã¹éå¶è : äŒå¡åãã®å ¥é€šã«ãŒããäŒè°å®€ããŒã貞ãåºãåä»ã¹ã¿ãã
- æœèšç®¡çè : ã€ãã³ãäŒå Žã»å ¬æ°é€šã»äœè²é€šãªã©ã§éµãã«ãŒããäžæè²žåºãã管ç人
- ã»ãã¥ãªãã£æè²æ åœè : ç©çã»ãã¥ãªãã£ã®éèŠæ§ãäœéšçã«æãããç ä¿®è¬åž«
- æ å ±ã»ãã¥ãªãã£åŠç¿è : ç©çã»ãã¥ãªãã£ã®å®è·µçãªç®¡çæ¹æ³ãåŠã³ããåŠçã»ååŠè
- å人å©çš: èªå® ãåäººäºæ¥ã§è€æ°ã®éµã»ã«ãŒãã管çãããæ¹
- ð 倿§ãªéµã«å¯Ÿå¿ïŒç©çéµã»ICã«ãŒãã»ã«ãŒãããŒãçµ±å管ç
- ð 貞åºïŒååãããŒïŒèª°ãã»ãã€ã»ã©ã®éµãåããããè¿åŽããããèšé²
â ïž ã¢ãããªãŒïŒæ¯ãèãïŒæ€ç¥ïŒå¹³åžžæãšã¯ç°ãªãæåïŒæéè¶ éãå€é貞åºãªã©ïŒãããå Žåã«ç°åžžãšããŠèŠå- ð ããã·ã¥ããŒãïŒç·éµæ°ã貞åºäžãæéè¶ éãªã©ãå¯èŠå
- ð ç£æ»ãã°ïŒãã¹ãŠã®æäœãæç³»åã§èšé²ãJSON Linesã§ãšã¯ã¹ããŒãå¯èœ
- ð€ ããŒã¿å ¥åºåïŒJSONã«ãããšã¯ã¹ããŒãïŒã€ã³ããŒãïŒå šçœ®æïŒ
- ð·ïž QRã³ãŒã飿ºïŒéµããšã®QRã©ãã«ãçæããã¹ãã£ã³ã§è©³çްç»é¢ã«çŽæ¥ã¢ã¯ã»ã¹
- ð ã©ã€ã/ããŒã¯ã¢ãŒãïŒæååæ¿å¯èœãèšå®ã¯ãã©ãŠã¶ãŒã«æ°žç¶å
-
éµãç»é²
- ã«ããŽãªãŒïŒç©çéµ/ICã«ãŒã/ã«ãŒãããŒïŒãéžæ
KEY-001
ã®ãããªçªå·ã§ç©çã¿ã°ãä»äžããåç§°ã»ä¿ç®¡å Žæãå ¥å- ICã«ãŒãã»ã«ãŒãããŒã®å Žåã¯ãã«ãŒãçªå·ã»ã¢ã¯ã»ã¹ã¬ãã«ã»æå¹æéãç»é²å¯èœ
-
貞åºç»é²
- åäž»èå¥åïŒç€Ÿå¡çªå·ãããã¯ããŒã ãªã©ïŒãšè¿åŽæéãå ¥å
-
ååç»é²
- éµãè¿åŽãããã¯ã³ã¯ãªãã¯ã§ã¹ããŒã¿ã¹æŽæ°
-
ã¢ãããªãŒç¢ºèª
- ããã·ã¥ããŒãã§æéè¶ éãå€é貞åºããã§ãã¯
-
ãšã¯ã¹ããŒã
- JSON圢åŒã§ããã¯ã¢ãããç£æ»ãã°ã远èšå°çšã§æ®ã
-
QRã³ãŒãçæ
- éµã®ç·šéç»é¢ã§ãIDã§çæããŸãã¯ãUUIDã§çæããã¿ã³ãã¯ãªãã¯
- QRã³ãŒãã衚瀺ãããäžéšã«åã蟌ãŸããURLæ å ±ã衚瀺ããã
-
QRã³ãŒãå°å·
- ãPNGä¿åããã¿ã³ã§QRã³ãŒãç»åãä¿å
- ç©çã¿ã°ãã©ãã«ã«å°å·ããŠéµã«è²Œä»
-
QRã³ãŒãã¹ãã£ã³
- ã¹ããã®QRã³ãŒããªãŒããŒã§ã¹ãã£ã³
- URLã«ã¢ã¯ã»ã¹ãããšãèªåçã«ãã®éµã®è©³çްç»é¢ïŒç·šéã¢ãŒãã«ïŒãéã
- äŸ:
https://example.com/physical-key-ledger/?id=KEY-001
-
2çš®é¡ã®QRã³ãŒã
- IDã§çæ:
?id=KEY-001
圢åŒãã¿ã°çªå·ã§æ€çŽ¢ - UUIDã§çæ:
?key=a1b2c3d4...
圢åŒãå éšIDã§æ€çŽ¢ãã¿ã°çªå·å€æŽã«ã察å¿
- IDã§çæ:
æ¬ããŒã«ã¯ãã¹ãŠã®æäœã**ç£æ»ãã°ïŒAudit LogïŒ**ãšããŠèšé²ããŸãã
ç£æ»ãã°ã¯ä»¥äžã®ç®çã§æŽ»çšã§ããŸãã
- ãã¬ãŒãµããªãã£ã®ç¢ºä¿: 誰ãã»ãã€ã»äœããããã远跡å¯èœ
- ã€ã³ã·ãã³ã調æ»: éµã®çŽå€±ãäžæ£å©çšã®çºèŠæã«æäœå±¥æŽãé¡ã£ãŠåæ
- ã³ã³ãã©ã€ã¢ã³ã¹å¯Ÿå¿: ã»ãã¥ãªãã£ç£æ»ãå éšçµ±å¶ã®èšŒè·¡ãšããŠæåº
- éçšæ¹å: é »ç¹ã«è²žåºãããéµãè¿åŽé å»¶ã®åŸåãåæ
ç£æ»ãã°ã«ã¯ä»¥äžã®æäœãèªåèšé²ãããŸãã
ã¢ã¯ã·ã§ã³ | 説æ | èšé²å 容 |
---|---|---|
key.create |
éµã®æ°èŠç»é² | éµã®ãã¹ãŠã®ãã£ãŒã«ãïŒIDãåç§°ãã«ããŽãªãŒãªã©ïŒ |
key.update |
鵿 å ±ã®æŽæ° | æŽæ°åŸã®ã¹ãããã·ã§ãã |
key.delete |
éµã®åé€ | åé€ãããéµã®UUID |
loan.create |
貞åºç»é² | åäž»ãè²žåºæ¥æãè¿åŽæéãã¡ã¢ |
loan.return |
éµã®åå | è¿åŽæ¥æãååæã¡ã¢ |
import |
ããŒã¿ã€ã³ããŒã | ã€ã³ããŒããããä»¶æ°ïŒéµ/貞åº/ãã°ïŒ |
åãšã³ããªã«ã¯ä»¥äžã®æ å ±ãå«ãŸããŸãã
{
"ts": 1696320000000,
"actor": "local-admin",
"action": "loan.create",
"entityId": "L-20251003-143000-a1b2",
"diff": { /* 倿Žå
容ã®ã¹ãããã·ã§ãã */ }
}
ã·ããªãª: éèŠãªéµãçŽå€±ããæåŸã«èª°ã䜿çšãããã調æ»ãã
æé :
1. ãç£æ»ãã°ããã¿ã³ãã¯ãªãã¯
2. æ€çŽ¢ããã¯ã¹ã§éµIDïŒäŸ: KEY-005ïŒãæ€çŽ¢
3. loan.create ãš loan.return ã®å±¥æŽã確èª
4. æåŸã«è²žåºãã人ç©ã𿥿ãç¹å®
5. å¿
èŠã«å¿ããŠãã°ãCSVä¿åããŠå ±åæžã«æ·»ä»
ã·ããªãª: ISO 27001ã®ç£æ»ã§ãç©çã»ãã¥ãªãã£ã®çµ±å¶èšŒè·¡ããæ±ãããã
æé :
1. ããšã¯ã¹ããŒãããã¿ã³ã§JSONãã¡ã€ã«ãããŠã³ããŒã
2. audit ãã£ãŒã«ãã«å
šæäœå±¥æŽãå«ãŸããŠãã
3. ã¿ã€ã ã¹ã¿ã³ããšã¢ã¯ã¿ãŒã§æäœè
ãæç¢º
4. ç£æ»äººã«JSONïŒãŸãã¯å€æããCSVïŒãæåº
ã·ããªãª: ã©ã®éµãé »ç¹ã«è²žåºãããŠããããææ¡ããäºåããŒã®æºåãæ€èš
æé :
1. ç£æ»ãã°ããšã¯ã¹ããŒã
2. action: "loan.create" ããã£ã«ã¿ãŒ
3. entityIdïŒè²žåºIDïŒãã keyUuid ãã°ã«ãŒãå
4. 貞åºåæ°ã®å€ãéµãç¹å®
5. é«é »åºŠã®éµã¯è¿œå 賌å
¥ãéçšèŠçŽããæ€èš
ã·ããªãª: éè·è ãéè·åŸãéµã䜿çšããŠããªãã確èª
æé :
1. ç£æ»ãã°ã§ actor ãã£ãŒã«ããæ€çŽ¢ïŒäŸ: actor: "ex-employee-001"ïŒ
2. éè·æ¥ä»¥éã®ã¿ã€ã ã¹ã¿ã³ãããªãã確èª
3. ããèšé²ãããã°ãäžæ£ã¢ã¯ã»ã¹ã®å¯èœæ§ã調æ»
- ãã©ãŠã¶ãŒå ä¿ç®¡: IndexedDB ã«ç¡æéä¿åïŒæååé€ããªãéãæ®ãïŒ
- æšå¥šéçš: ææ¬¡ã»ååæããšã«ãšã¯ã¹ããŒãããŠå€éšä¿ç®¡ïŒUSB/NAS/ã¯ã©ãŠãã¹ãã¬ãŒãžïŒ
- é·æä¿ç®¡: ã»ãã¥ãªãã£ããªã·ãŒã«åŸãæäœ1幎éã¯ä¿ç®¡ãæšå¥š
- ç£æ»ãã°ã¯è¿œèšå°çšã§ãããç·šéã»å逿©èœã¯ãããŸããïŒæ¹ãã鲿¢ïŒ
- ããŒã¿ã€ã³ããŒãæã«ç£æ»ãã°ãäžæžãããããããã€ã³ããŒãåã«å¿ ãããã¯ã¢ãããååŸããŠãã ãã
- ç£æ»ãã°ã«ã¯å人è奿 å ±ïŒåäž»åãªã©ïŒãå«ãŸããå¯èœæ§ããããããåãæ±ãã«ã¯æ³šæãå¿ èŠã§ã
{
"id": "KEY-001",
"uuid": "a1b2c3d4-...",
"category": "physical-key",
"name": "ç 究宀å
¥å£",
"type": "original",
"status": "stored",
"location": "2Få»äžãã£ãããã",
"notes": "å€éã¯è²žåºäžå¯"
}
{
"id": "CARD-12345",
"uuid": "e5f6g7h8-...",
"category": "ic-card",
"name": "瀟å¡èšŒïŒå±±ç°å€ªéïŒ",
"type": "employee",
"status": "loaned",
"cardNumber": "12345678",
"accessLevel": "standard",
"validFrom": 1704067200000,
"validUntil": 1735689599000,
"location": "人äºéšç®¡ç",
"notes": "çŽå€±æã¯å³æå ±å"
}
é ç®å | å¿ é | 説æ | å ¥åäŸ | ãã³ã |
---|---|---|---|---|
衚瀺ID | â | ç©çã¿ã°ãã«ãŒãçªå· | KEY-001 , CARD-12345 |
åè§è±æ°åæšå¥šãQRã³ãŒãã«åã蟌ãŸããŸã |
åç§° | â | éµã»ã«ãŒãã®åå | ç 究宀å
¥å£ , 瀟å¡èšŒïŒå±±ç°ïŒ |
æ¥æ¬èªOKãçšéããããååãæšå¥š |
ã«ããŽãªãŒ | - | ç©çéµ/ICã«ãŒã/ã«ãŒãã㌠| ç©çéµ |
éžæãããšçš®å¥ãèªåã§åãæ¿ãããŸã |
çš®å¥ | - | ã«ããŽãªãŒã«å¿ãã詳现åé¡ | ãã¹ã¿ãŒã㌠, 瀟å¡èšŒ |
ã«ããŽãªãŒéžæåŸã«è¡šç€ºãããéžæè¢ããéžæ |
ç¶æ | - | çŸåšã®ç¶æ | ä¿ç®¡äž , 貞åºäž , 廿¢ |
è²žåºæã«èªåã§ã貞åºäžãã«å€æŽãããŸã |
ä¿ç®¡å Žæ | - | éµã®ä¿ç®¡å Žæ | 2Få»äžãã£ãããã |
ä¿ç®¡äžã®éµãã©ãã«ããããèšé² |
ã¡ã¢ | - | è£è¶³æ å ± | å€éã¯è²žåºäžå¯ |
éçšäžã®æ³šæäºé ãªã©ãèªç±èšè¿° |
é ç®å | å¿ é | 説æ | å ¥åäŸ | ãã³ã |
---|---|---|---|---|
ã«ãŒãçªå· | - | ã«ãŒãã®ç©ççªå· | 12345678 |
ã«ãŒã衚é¢ã«å°åãããçªå· |
ã¢ã¯ã»ã¹ã¬ãã« | - | æš©éã¬ãã« | standard , admin |
管ççšã®åé¡ã«äœ¿çš |
æå¹æéïŒéå§ïŒ | - | å©çšéå§æ¥æ | 2024-01-01 09:00 |
ð ã«ã¬ã³ããŒããéžæå¯èœ |
æå¹æéïŒçµäºïŒ | - | å©çšçµäºæ¥æ | 2024-12-31 23:59 |
ð ã«ã¬ã³ããŒããéžæå¯èœ |
é ç®å | å¿ é | 説æ | å ¥åäŸ | ãã³ã |
---|---|---|---|---|
éµID | - | 貞ãåºãéµã®ID | KEY-001 |
èªåå ¥åïŒå€æŽäžå¯ïŒ |
åäž»èå¥å | â | åãã人ã®è奿 å ± | emp-12345 , T.Yamada |
瀟å¡çªå·ãåŠç±çªå·ãæ°åãªã© |
è¿åŽæé | - | ãã€ãŸã§ã«è¿åŽãã¹ãã | 2024-01-15 17:00 |
ð ã«ã¬ã³ããŒããéžæå¯èœãæéè¶ éã¯èªåæ€ç¥ |
ã¡ã¢ïŒè²žåºïŒ | - | è²žåºæã®ç¹èšäºé | æ¥äžç¹æ€ |
貞åºç®çãæ¡ä»¶ãªã© |
é ç®å | å¿ é | 説æ | å ¥åäŸ | ãã³ã |
---|---|---|---|---|
éµID | - | ååããéµã®ID | KEY-001 |
èªåå ¥åïŒå€æŽäžå¯ïŒ |
åäž»ïŒåèïŒ | - | 誰ããååããã | T.Yamada |
èªåå ¥åïŒåèæ å ±ïŒ |
è¿åŽã¡ã¢ | - | ååæã®ç¹èšäºé | ç Žæãªã |
éµã®ç¶æ ãªã©ãèšé² |
çš®å¥ | 説æ | çšéäŸ |
---|---|---|
ãã¹ã¿ãŒã㌠| ãã¹ãŠã®é åãéãããã | ãã«ç®¡çãæœèšç®¡ç |
çŽæ£ã㌠| ã¡ãŒã«ãŒè£œã®æ£èŠå | éåžžã®å ¥é宀 |
ã¹ãã¢ã㌠| åéµã»äºåéµ | çŽå€±æã®ããã¯ã¢ãã |
çš®å¥ | 説æ | çšéäŸ |
---|---|---|
瀟å¡èšŒ | åŸæ¥å¡åãã«ãŒã | ãªãã£ã¹å ¥é通 |
蚪åè ã«ãŒã | æ¥å®¢çšã®äžæã«ãŒã | æ¥å®¢å¯Ÿå¿ |
æ¥è ã«ãŒã | å·¥äºã»æž ææ¥è çš | ã¡ã³ããã³ã¹æ |
äžæã«ãŒã | çæå©çšã«ãŒã | ã€ãã³ããç ä¿® |
ãã®ä» | äžèšã«è©²åœããªãã«ãŒã | ç¹æ®çšé |
çš®å¥ | 説æ | çšéäŸ |
---|---|---|
客宀ã㌠| ããã«ã®éšå±çš | å®¿æ³æœèš |
å ¥é€šèšŒ | 建ç©å ¥é€šçš | ãªãã£ã¹ãã« |
é§è»å Žã«ãŒã | é§è»å Žã²ãŒãééçš | é§è»å Žç®¡ç |
ããã«ãŒã㌠| ããã«ãŒééçš | æŽè¡£å®€ãä¿ç®¡åº« |
ãã®ä» | äžèšã«è©²åœããªãã«ãŒã | ç¹æ®çšé |
- ã¿ã°çªå·ã¯åè§è±æ°åæšå¥šïŒ
KEY-001
,CARD-12345
,LOCKER-A01
ãªã© - ã«ããŽãªãŒéžæ: ç©çéµã»ICã«ãŒãã»ã«ãŒãããŒããéžæ
- çš®å¥ã®èªååæ¿: ã«ããŽãªãŒã«å¿ããŠçš®å¥ãªãã·ã§ã³ãåçã«å€æŽ
- ç©çéµ: ãã¹ã¿ãŒããŒ/çŽæ£ããŒ/ã¹ãã¢ããŒ
- ICã«ãŒã: 瀟å¡èšŒ/蚪åè ã«ãŒã/æ¥è ã«ãŒã/äžæã«ãŒã/ãã®ä»
- ã«ãŒãããŒ: 客宀ããŒ/å ¥é€šèšŒ/é§è»å Žã«ãŒã/ããã«ãŒããŒ/ãã®ä»
- UUIDã¯å éšèå¥åïŒçªå·ãå€ãã£ãŠãå±¥æŽã®äžè²«æ§ãç¶æ
- æ¥æ¬èªãOKïŒ
name
,location
,notes
ã«å©çšå¯èœïŒUTF-8ïŒ - QRã³ãŒã䜵çšïŒã¹ããã§ã¹ãã£ã³ããŠè©³çްç»é¢ã«çŽæ¥ã¢ã¯ã»ã¹å¯èœ
- ã«ãŒãåºæãã£ãŒã«ã: ICã«ãŒãã»ã«ãŒãããŒã§ã¯ã«ãŒãçªå·ãã¢ã¯ã»ã¹ã¬ãã«ãæå¹æéãç»é²å¯èœ
- 廿¢æã¯ status=retired ãšããŠæ±ã
- ç 究宀ãå°èŠæš¡ãªãã£ã¹ã§ã®ç©çéµã»ICã«ãŒãã»ã«ãŒãããŒã®çµ±å管ç
- æè²çŸå Žã§ãéµç®¡çã®ç²ç¹ããäœéšãããææ
- ã€ãã³ãéå¶ãæœèšç®¡çã§ã®äžæçãªéµã»ã«ãŒã管ç
- ã·ã§ã¢ãªãã£ã¹ã§ã®å ¥é€šã«ãŒãã»äŒè°å®€ããŒã®è²žåºç®¡ç
- ã¬ããããŒã ã«ããç©çã»ãã¥ãªãã£ãã¹ãã®é²åŸ¡åŽããŒã«
èæ¯: 倧åŠã®ç 究宀ã§ã¯ãå®éšå®€ã®ç©çéµã建ç©å ¥é€šçšICã«ãŒããããã«ãŒã®ã«ãŒãããŒãªã©ã倿§ãªã¢ã¯ã»ã¹ææ®µã管çããå¿ èŠããããŸããåŠçã®å ¥ãæ¿ãããæ¿ãããã誰ãäœãæã£ãŠããããã®ææ¡ãå°é£ã§ããã
æŽ»çšæ¹æ³:
- åæç»é²: å®éšå®€ã®éµ3æ¬ïŒãã¹ã¿ãŒ1æ¬ãã¹ãã¢2æ¬ïŒãå ¥é€šICã«ãŒã10æïŒåŠççš9æãæ¥å®¢çš1æïŒãããã«ãŒããŒ5æãç»é²
- QRã³ãŒãéçš: åéµã»ã«ãŒãã«QRã©ãã«ãå°å·ããŠè²Œä»ãåŠçãã¹ããã§ã¹ãã£ã³ããŠå³åº§ã«è²žåºç»é²
- æé管ç: åŠææ«ã«äžæè¿åŽæéãèšå®ãæéè¶ éè ãããã·ã¥ããŒãã§å¯èŠå
- ç£æ»: 忥æãéåŠæã«ã該åœåŠçã®è²žåºå±¥æŽãç£æ»ãã°ã§ç¢ºèªããæªè¿åŽããªãããã§ãã¯
广:
- çŽå€±ãªã¹ã¯äœæžïŒèª°ãæåŸã«äœ¿ã£ããå³åº§ã«ç¹å®ïŒ
- åŠçã®èªäž»ç®¡çæèåäž
- äºåäœæ¥ã®åæžïŒçŽå°åž³ããã®è±åŽïŒ
èæ¯: ã·ã§ã¢ãªãã£ã¹ã§ã¯ãäŒå¡åãã®å ¥é€šICã«ãŒããäŒè°å®€ã®ã«ãŒãããŒãæœèšå ããã«ãŒã®éµã貞ãåºããŠããŸããè€æ°ã®ç®¡çè ã亀代ã§å仿¥åãè¡ãããã貞åºç¶æ³ã®å ±æã課é¡ã§ããã
æŽ»çšæ¹æ³:
- ã«ããŽãªãŒå¥ç»é²:
- ICã«ãŒã: æ£äŒå¡çš50æïŒç€Ÿå¡èšŒã¿ã€ãïŒãäžæäŒå¡çš10æ
- ã«ãŒãããŒ: äŒè°å®€A/B/Cã®3æãããã«ãŒçš20æ
- å€éè²žåºæ€ç¥: ãããå€ã2ã«èšå®ãã1人ãè€æ°ã«ãŒããä¿æããŠããªããç£èŠ
- æå¹æé管ç: äžæäŒå¡ã«ãŒãã«1ã¶æã®æå¹æéãèšå®ããæéåããèªåæ€ç¥
- ããŒã¿ãšã¯ã¹ããŒã: ææ«ã«è²žåºããŒã¿ãJSONåºåããäŒèšã·ã¹ãã ãšé£æº
广:
- 管çè éã§ã®æ å ±å ±æãã¹ã ãŒãºïŒãã©ãŠã¶ãŒããŒã¹ã§ç«¯æ«äžåïŒ
- äžæ£å©çšã®æ©æçºèŠïŒå€éä¿æã»æéåãã®å³æã¢ã©ãŒãïŒ
- ææ¬¡ã¬ããŒãäœæã®èªåå
èæ¯: äŒæ¥ã®æ°å ¥ç€Ÿå¡ç ä¿®ã§ãç©çã»ãã¥ãªãã£ã®ç²ç¹ããäœéšçã«åŠã°ãããã座åŠã ãã§ãªããå®éã®éµç®¡çããŒã«ã䜿ã£ãŠéçšã®é£ãããçè§£ããããã
æŽ»çšæ¹æ³:
- æš¡æ¬éçš: ç ä¿®åå è ã5ã°ã«ãŒãã«åããåã°ã«ãŒããæ¶ç©ºã®ãªãã£ã¹ã®éµç®¡çãæ åœ
- ã€ã³ã·ãã³ãçºç: è¬åž«ãæå³çã«ãæéè¶ éããå€é貞åºããè¿åŽå¿ãããªã©ã®ã·ããªãªãä»èŸŒã
- ããã·ã¥ããŒãç£èŠ: åã°ã«ãŒããããã·ã¥ããŒãã§ã¢ãããªãŒãæ€ç¥ããå¯ŸåŠæ³ããã£ã¹ã«ãã·ã§ã³
- ç£æ»ãã°åæ: ç ä¿®åŸãç£æ»ãã°ãèŠãªããã誰ããã€ãã¹ããããããæ¯ãè¿ããæ¹åçãè°è«
掻çšãã€ã³ã:
- ãªã¢ã«ãªäœéš: å®éã®éµç®¡çããŒã«ã䜿ãããšã§ã座åŠã§ã¯åŸãããªãæ°ã¥ããæäŸ
- 倱æããåŠã¶: æå³çã«ãã¹ãçºçããããã®æ€ç¥ãšå¯ŸåŠã®ããã»ã¹ãäœéš
- ãã¬ãŒãµããªãã£ã®éèŠæ§: ç£æ»ãã°ãããããšã§ã誰ãäœãããããã远跡ã§ããè²¬ä»»ã®æåšãæç¢ºã«ãªãããšã宿
广:
- ç©çã»ãã¥ãªãã£ã®éèŠæ§ãäœæ
- ã€ã³ã·ãã³ã察å¿åã®åäž
- çµç¹ã®ã»ãã¥ãªãã£æåéžæ
èæ¯: äŒæ¥ã®ã»ãã¥ãªãã£è©äŸ¡ã«ãããŠãã¬ããããŒã ãç©ççãªäŸµå ¥çµè·¯ã®è匱æ§ãæ€èšŒããŸããåŸæ¥ã®çŽããŒã¹ã®éµç®¡çå°åž³ã§ã¯ã貞åºå±¥æŽã®æ¹ããã远跡äžèœãªè²žåºãçºçããŠãããç©çã»ãã¥ãªãã£ã®ç²ç¹ãšãªã£ãŠããŸããã
æŽ»çšæ¹æ³:
-
äºåæºåïŒãã«ãŒããŒã åŽïŒ:
- ãã¹ãŠã®ç©çéµã»ICã«ãŒãã»ã«ãŒãããŒãã·ã¹ãã ã«ç»é²
- QRã³ãŒããåã¢ã€ãã ã«è²Œä»ããè²žåºæã®èšé²ã培åº
- ç£æ»ãã°ãæå¹åããå šæäœãèšé²
- å€é貞åºãããå€ã2ã«èšå®ïŒ1人ãè€æ°ã¢ã€ãã ãä¿æãããèŠåïŒ
-
ã¬ããããŒã ã®æ»æã·ããªãª:
- ãœãŒã·ã£ã«ãšã³ãžãã¢ãªã³ã°: ãå¿ãç©ãåãã«æ¥ãããšåœããåä»ã§ICã«ãŒãã®è²žåºãäŸé Œ
- ããŒã«ã²ãŒãã£ã³ã°: æ£èŠç€Ÿå¡ã«ç¶ããŠå ¥é€šããããã«ãŒããŒãç¡æåçš
- 管çè ãªãããŸã: ãç·æ¥ã¡ã³ããã³ã¹ããšç§°ããŠãã¹ã¿ãŒããŒã®è²žåºãèŠæ±
- è¿åŽæéã®æªçš: é·æè²žåºãç³è«ããè¿åŽæéãéããŠãè¿åŽãããè€è£œã®æéã皌ã
-
æ€ç¥ãšå¯ŸåŠ:
- ããã·ã¥ããŒãã§æéè¶ éã»å€é貞åºããªã¢ã«ã¿ã€ã æ€ç¥
- ç£æ»ãã°ã§ã誰ãã»ãã€ã»äœãæ¿èªããããã远跡
- äžå¯©ãªè²žåºãã¿ãŒã³ïŒçæéã§ã®è€æ°è²žåºãæªç»é²è ãžã®è²žåºïŒãã¢ã©ãŒã
-
å ±åãšæ¹å:
- ã¬ããããŒã ãç£æ»ãã°ãå ã«æ»æçµè·¯ãå ±å
- ãã«ãŒããŒã ãæ€ç¥ã§ããªãã£ãæ»æãåæããéçšã«ãŒã«ãæ¹å
- äŸ: ãç·æ¥è²žåºã¯å¿ ãäžé·æ¿èªãå¿ é åããQRã¹ãã£ã³å¿ é åã§äººçãã¹ãåæžã
æ»æãã¿ãŒã³ãšæ€ç¥äŸ:
æ»æææ³ | åŸæ¥ã®çŽå°åž³ | Physical Key Ledger |
---|---|---|
貞åºèšé²ã®æ¹ãã | å¯èœïŒçŽã®æžãæãïŒ | äžå¯ïŒç£æ»ãã°ã§å šæäœèšé²ïŒ |
ç¡æåçš | æ€ç¥å°é£ | æ€ç¥å¯èœïŒè²žåºèšé²ãªãâã¢ãããªïŒ |
è€æ°ã¢ã€ãã ä¿æ | ææ¡å°é£ | 峿æ€ç¥ïŒå€é貞åºã¢ã©ãŒãïŒ |
è¿åŽå¿ã | æåãã§ãã¯å¿ èŠ | èªåæ€ç¥ïŒæéè¶ éã¢ã©ãŒãïŒ |
æ¿èªè ã®ç¹å® | èšé²ãªã | å®å šè¿œè·¡ïŒç£æ»ãã°ã«æ¿èªè èšé²ïŒ |
广:
- ç©çã»ãã¥ãªãã£ã®å¯èŠå: çŽå°åž³ã§ã¯èŠããªãã£ãè匱æ§ãæ°å€å
- ã€ã³ã·ãã³ã察å¿ã®è¿ éå: ç£æ»ãã°ã§æ»æçµè·¯ãå³åº§ã«ç¹å®
- ç¶ç¶çæ¹å: ãã¹ãçµæãå ã«éçšã«ãŒã«ãã¢ããããŒã
- çµå¶å±€ãžã®å ±å: ããã·ã¥ããŒãã®ã¹ã¯ãªãŒã³ã·ã§ããã§èŠèŠçã«èª¬æ
ã¬ããããŒã 掻åã§ã®æ³šæç¹:
- ãã®ããŒã«ã¯é²åŸ¡åŽïŒãã«ãŒããŒã ïŒã®ç®¡çããŒã«ã§ãããæ»æåŽãæªçšãããã®ã§ã¯ãããŸãã
- ç©çãããã¬ãŒã·ã§ã³ãã¹ãã¯å¿ ãäºåæ¿èªãåŸãŠãåæ³çã«å®æœããŠãã ãã
- ãã¹ãåŸã¯å¿ ãå ±åæžãäœæããæ¹åææ¡ãå«ããŠãã ãã
- ãã¹ãŠã®ããŒã¿ã¯ãã©ãŠã¶ãŒã®IndexedDBã«ããŒã«ã«ä¿åãããŸã
- ãµãŒããŒã«ã¯äžåéä¿¡ãããŸãã
- ããŒã¿ã®ç®¡ç責任ã¯ãŠãŒã¶ãŒèªèº«ã«ãããŸã
- ãã©ãŠã¶ãŒã®ãã£ãã·ã¥ã¯ãªã¢ã§ããŒã¿ãæ¶å€±ããå¯èœæ§ããããŸã
ãã®ããŒã«ã¯ ãã¢ã»æè²ã»å人å©çšãæ³å® ããŠããŸããæ¬çªç°å¢ã§ã®éèŠãªã»ãã¥ãªãã£è³ç£ã®ç®¡çã«ã¯ é©ããŠããŸããã
æšå¥šãããäœ¿ãæ¹:
- â ã»ãã¥ãªãã£æè²ã®ã¯ãŒã¯ã·ã§ããïŒæš¡æ¬ããŒã¿ïŒ
- â å人ã®éµç®¡çïŒèªå·±è²¬ä»»ïŒ
- â å°èŠæš¡ãªãã£ã¹ã§ã®è©ŠéšéçšïŒéèŠåºŠã®äœãéµã®ã¿ïŒ
- â ã¬ããããŒã æŒç¿ã®é²åŸ¡åŽããŒã«ïŒãã¹ãããŒã¿ïŒ
é¿ããã¹ãäœ¿ãæ¹:
- â äŒæ¥ã®éèŠã€ã³ãã©ãžã®ã¢ã¯ã»ã¹éµã®ç®¡ç
- â æ©å¯æœèšã®ãã¹ã¿ãŒããŒç®¡ç
- â è€æ°äººãå ±æãããããªãã¯PCäžã§ã®æ¬çªéçš
- â å人æ å ±ãå«ãã«ãŒãæ å ±ã®æ¬çªç®¡ç
- ãã®ãã¢ããŒãžã¯ æè²ã»ãã¢ç®ç ã§å ¬éãããŠããŸã
- æ¬çªããŒã¿ãå ¥åããªãã§ãã ããïŒãã¹ãŠãã©ãŠã¶ãŒå ã«ä¿åãããŸããã誀æäœã®ãªã¹ã¯ããããŸãïŒ
- æ€çŽ¢ãšã³ãžã³ã«ã€ã³ããã¯ã¹ãããªããã
robots
ã¡ã¿ã¿ã°ãèšå®ããŠããŸãããURLãç¥ã£ãŠãã人ã¯ã¢ã¯ã»ã¹å¯èœã§ã - æ©å¯æ§ã®é«ãããŒã¿ãæ±ãå Žåã¯ãèªåã®ããŒã«ã«ç°å¢ããã©ã€ããŒããµãŒããŒã§éçšããŠãã ãã
- 宿ããã¯ã¢ãã: ãšã¯ã¹ããŒãæ©èœã§å®æçã«JSONããã¯ã¢ãããååŸ
- ãã©ãŠã¶ãŒã®ç®¡ç: ä¿¡é Œã§ãã端æ«ã»ãã©ãŠã¶ãŒã§ã®ã¿å©çš
- ããŒã¿ã®æå·å: éèŠããŒã¿ã¯å€éšã§æå·åããŠããä¿å
- ã¢ã¯ã»ã¹å¶åŸ¡: å ±æPCã§ã¯å©çšåŸã«å¿ ããã°ã¢ãŠãïŒãã©ãŠã¶ãŒãéããïŒ
- ç£æ»ãã°ã®æŽ»çš: äžå¯©ãªæäœããªãã宿çã«ç¢ºèª
- ããŒã¿ã¯ ãã©ãŠã¶ãŒããšã«ä¿å ãããä»ç«¯æ«ãšã¯èªååæããŸãã
- ã€ã³ããŒãã¯ å šçœ®æã®ã¿ïŒããŒãžäžå¯ïŒ
- PWAïŒéç¥é£æºïŒå€ãŠãŒã¶ãŒæš©éã¯å°æ¥æ¡åŒµäºå®
- QRã³ãŒãçæã¯å¯èœã§ãããå°çšã®ã¹ãã£ããŒã¢ããªã§ã¯ãªãæ±çšQRãªãŒããŒã§ã®èªã¿åããåæãšããŠããŸã
- èªèšŒæ©èœãªã: 誰ã§ããã©ãŠã¶ãŒã«ã¢ã¯ã»ã¹ã§ããã°ããŒã¿ãé²èЧã»ç·šéå¯èœ
- ããŒã¿æå·åãªã: IndexedDBå ã®ããŒã¿ã¯å¹³æã§ä¿åãããŸã
physical-key-ledger/
âââ index.html # ã¡ã€ã³HTMLãã¡ã€ã«
âââ css/
â âââ style.css # ã¹ã¿ã€ã«ã·ãŒãïŒããŒã¯/ã©ã€ãã¢ãŒã察å¿ïŒ
âââ js/
â âââ db.js # IndexedDBæäœïŒã¹ããŒãv2ãéµã»è²žåºã»ç£æ»ãã°ïŒ
â âââ logic.js # ããžãã¹ããžãã¯ïŒCRUDãã¢ãããªæ€ç¥ãããŒã管çïŒ
â âââ ui.js # UIå¶åŸ¡ïŒã€ãã³ããã³ãã©ãã¬ã³ããªã³ã°ïŒ
âââ assets/
â âââ screenshot.png # ã¹ã¯ãªãŒã³ã·ã§ãã
â âââ favicon.svg # ãã¡ãã³ã³
âââ .gitignore # Gité€å€èšå®
âââ .nojekyll # GitHub Pagesèšå®
âââ CLAUDE.md # éçºããã¥ã¡ã³ãïŒClaude CodeçšïŒ
âââ README.md # ãã®ãã¡ã€ã«
âââ TECHNICAL.md # æè¡ããã¥ã¡ã³ãïŒéçºè
åãïŒ
âââ LICENSE # MITã©ã€ã»ã³ã¹
- index.html: ã»ãã¥ãªãã£ããããŒãã¢ãŒãã«ãèŠåãããŒãå«ãUIæ§é
- db.js: IndexedDB v2ã¹ããŒãïŒã«ããŽãªãŒã»ã«ãŒãçªå·ã»æå¹æéã®ã€ã³ããã¯ã¹ïŒ
- logic.js: éµã®ç»é²ã»è²žåºã»ååãã¢ãããªæ€åºïŒæéè¶ éã»å€é貞åºïŒ
- ui.js: QRã³ãŒãçæãã«ããŽãªãŒå¥çš®å¥åæ¿ãURLèªåãªãŒãã³æ©èœ
- style.css: CSS倿°ã«ããããŒãåæ¿ãã¬ã¹ãã³ã·ããã¶ã€ã³
- TECHNICAL.md: ã¢ãŒããã¯ãã£èšèšãã³ã¢ã¢ã«ãŽãªãºã ãå®è£ 詳现ïŒè©³çްã¯ãã¡ãïŒ
MIT License â 詳现㯠LICENSE ãåç §ããŠãã ããã
æ¬ããŒã«ã¯ããçæAIã§äœãã»ãã¥ãªãã£ããŒã«100ããããžã§ã¯ãã®äžç°ãšããŠéçºãããŸããã ãã®ãããžã§ã¯ãã§ã¯ãAIã®æ¯æŽã掻çšããªãããã»ãã¥ãªãã£ã«é¢é£ããããŸããŸãªããŒã«ã100æ¥éã«ãããå¶äœã»å ¬éããŠããåãçµã¿ãè¡ã£ãŠããŸãã
ãããžã§ã¯ãã®è©³çްãä»ã®ããŒã«ã«ã€ããŠã¯ã以äžã®ããŒãžãã芧ãã ããã