Swift ãã€ãã£ããApple Silicon 察å¿ã®ç»åã©ã€ãã©ãªïŒã«ã¿ãã°ïŒãããŒãžã£ã§ãããªãªãžãã«ã® Stackroom ã®ã©ã€ãã©ãª XML ã**åã蟌ãïŒã€ã³ããŒãããïŒ**ããšãã§ããŸãã
â ïž äºææ§ã«ã€ããŠã®æ³šèš: StackNest ã察å¿ããã®ã¯ Stackroom ã©ã€ãã©ãª XML ã®ã€ã³ããŒãïŒäžæ¹åã®èªã¿èŸŒã¿ïŒã ãã§ããStackNest èªèº«ã®ã©ã€ãã©ãªåœ¢åŒïŒ.stacknestïŒã¯ç¬èªã§ãStackroom ãšçžäºäºæã§ã¯ãããŸããïŒStackroom ã§éãããæžãæ»ãããã¯ã§ããŸããïŒããŸã StackNest ã¯ã«ã¿ãã°ãœããã§ã.stacknestã¯ã¡ã¿ããŒã¿ãšè¡šçŽãµã ãã®ç®é²ã§ããç»åãæ¬ã®å®äœãã¡ã€ã«ã¯ã©ã€ãã©ãªã®å€ïŒå ã®å ŽæïŒã«çœ®ãããStackNest ã¯ãã®ãã¹ãåç §ããŸãã
Status: ã¢ã¯ãã£ãéçºäžãããŒã«ã«ã§ã®ãã©ãŠãºãããå¥ Mac ã iPhone ã®ãã©ãŠã¶ãžåãããªã¢ãŒãå ±æãŸã§ãåäœããŸãïŒåæ©èœã®è©³çްã¯äžèšãäž»ãªæ©èœããåç §ïŒãäž»ãªæ±ã¯æ¬¡ã®ãšããã§ãã
- ããŒã«ã«ç®¡çïŒPhase 2.9 ãŸã§å®äºïŒ: ãã©ãŠãº / ç·šé / æ€çŽ¢ãå èµãã¥ãŒã¢ããã«ãã©ã€ãã©ãªãããã¯ãéè€æ€åºãã©ãã«ã«ã¹ã¿ãã€ãºãDB äºé²ä¿å š / 修埩ã
- ãªã¢ãŒãå ±æ / é²èЧ / ç·šéïŒPhase 4ïŒ: å ±æãµãŒããš Web ãã©ãŠã¶ / Web ãªãŒããŒãå¥ Mac ããã®ãã€ãã£ãã¯ã©ã€ã¢ã³ãããªãã©ã€ã³ããŠã³ããŒãããªã¢ãŒãé²èЧã®ãã£ã¹ã¯æ°žç¶ãã£ãã·ã¥ã
- æš©éåé¢: å ±æããŒã¯ã³ã§çžæããšã«é²èЧ / ç·šé / 管çè ã®æš©éãšèŠããã©ã€ãã©ãªãåããããŸããç·šéããŒã¯ã³ãªããªã¢ãŒãããã¡ã¿ããŒã¿ / ã¹ã¿ã³ã / 衚çŽãç·šéã§ãã管çè ããŒã¯ã³ãªããªã¢ãŒã远å / åé€ãå¯èœã§ãã
- èªåå: ç£èŠãã©ã«ãã®èªåå蟌ãšãããŒã«ã«ã¢ã¯ã»ã¹ïŒCLI
stacknest-cli/ MCPmcp-stacknest/ OpenAPI + RedocïŒã«ããæäœã«å¯Ÿå¿ããŸãã
StackNest ã¯ãaroma / aromatics soft ãéçºãã Stackroom 2.1b ã®æžãåºã Apple Property List XML ã©ã€ãã©ãªãã¡ã€ã«ãèªã¿èŸŒã¿ãå€§èŠæš¡ãªç»åã³ã¬ã¯ã·ã§ã³ ïŒ10,000 件以äžã§åäœç¢ºèªæžã¿ïŒããã©ãŠãºãã管çããã¢ãã³ãª macOS ãã€ãã£ãäœéšãæäŸããŸãã
æ¬ãããžã§ã¯ã㯠aroma / aromatics soft ãšã¯ç¡é¢ä¿ã§ããSwift ã§ãŒãããæžããã ç¬ç«å®è£ ã§ãStackroom ã®ã©ã€ãã©ãª XML ãåã蟌ããŸãïŒäºææ§ã®è©³çްã¯åé ã®æ³šèšãåç §ïŒã
ãªãªãžãã« StackroomïŒæçµãªãªãŒã¹: 2.1b Build 198ã2019幎ïŒã¯ x86_64 å°çšãã€ããªã§ã arm64 ãã€ãã£ããµããŒãããããŸãããRosetta 2 ã§ã®åäœã¯ç¶ç¶ããŠããŸãããé·æçã«ã¯ ãã€ãã£ãæžãçŽããå¿ èŠã«ãªããŸãã
aroma æ°ïŒåäœè ïŒã¯ 2019 幎é ã5ch æ°ã»Mac æ¿ã®ã¹ã¬ããïŒegg.5ch.net/test/read.cgi/mac/1391446507ïŒã«ãŠæ¬¡ã®ããã«è¿°ã¹ãŠããŸãïŒ
ã©ã€ãã©ãªãã¡ã€ã«ã¯ãã ã® XML ã ãããã®æ°ããããªã ãã¶ã Swift ã§ äžããäœã£ãã»ããæ©ãããã ã ãšæããŸãã
æ¬ãããžã§ã¯ãã¯ãã®æç€ºçãªæšå¥šã«åŸã£ãŠããŸãããªãªãžãã« Stackroom ã®ãã€ããªã ãœãŒã¹ã³ãŒããã¢ã€ã³ã³ãUI ã¹ã¯ãªãŒã³ã·ã§ãããSparkle ã¹ã¿ã€ã«ã®ãã©ã³ãã£ã³ã°ã¢ã»ãã㯠åé åžããŠããŸããããã£ã¹ã¯äžã®ã©ã€ãã©ãªãã©ãŒãããã®ã¿ã芳å¯ããåå®è£ ããŠããŸãã
- aroma æ°ã®ãªãªãžãã« Stackroom: https://aromaticsapp.blogspot.com/p/stackroom.html
- aroma æ°ã®ãªãªãŒã¹ããã°: https://aromaticsapp.blogspot.com/
- ã©ã€ãã©ãªãã©ãŠãº: ã°ãªãã / ãªã¹ãã® 2 ãã¥ãŒãBrowser paneïŒå±æ§å¥ã«ã©ã ãã£ã«ã¿ïŒãDetail paneïŒã¡ã¿ããŒã¿ç·šéïŒ
- æ€çŽ¢: ããŒã«ããŒã®æ€çŽ¢ã㌠+ SQLite FTS5 ã«ããå šææ€çŽ¢ïŒå€§ããã¹ã¯ããŒã«ããç¶æ ã§çµã蟌ããšãäžèЧã¯èªåã§å é ãžæ»ãïŒ
- ãã«ãå€ãã£ãŒã«ã: ãžã£ã³ã« / äœè / ããŒã¯ãŒã A / B / C ã¯ã«ã³ãåºåãã§è€æ°å€ãä¿æããBrowser pane ã§åå¥å€ããšã«çµã蟌ãã
- ã¹ããŒãã·ã§ã«ã: æ¡ä»¶åŒïŒN æ¡ä»¶ à AND/OR à 4 ãããã¿ã€ãïŒã§åçã«ã³ã¬ã¯ã·ã§ã³ãæ§æãApple Mail é¢šã®æ¡ä»¶ãšãã£ã¿ã§ãã€ã³ããŒããã Stackroom ã¹ããŒããã¬ã€ãªã¹ããåçè©äŸ¡
- ã¹ã¿ã³ããã€ã³: ãŠãŒã¶å®çŸ©ã® chipïŒ5 åãæ¶å» / å€ / æ°èŠè¿œå ïŒã§è€æ°æ¬ã«äžæ¬å±æ§ä»äž
- éè€æ€åº: å¥ãã£ã¬ã¯ããªã«ããåäžå å®¹ã®æ¬ã SHA-256 ã®ãã€ãäžèŽïŒããã³ã·ãªãŒãº + å·»æ°ã®äžèŽïŒã§æ€åºã解決ã·ãŒãã§ãç»é²ã®ã¿åé€ãããã¡ã€ã«ããŽãç®±ãžããã°ã«ãŒãåäœã®ç¡èŠã«å¯Ÿå¿
- ã©ãã«ã«ã¹ã¿ãã€ãº: å 容系ãã£ãŒã«ãïŒãžã£ã³ã« / ãã¿ / ããŒã¯ãŒã A / B / CïŒãš bookType 6 çš®ãã©ã€ãã©ãªããšã«ä»»æåãžå€æŽã§ããå šè¡šç€ºç®æïŒåããã / ãœãŒã / Detail / ã¹ã¿ã³ã / ãã£ã«ã¿ / ã¹ããŒãã·ã§ã«ãïŒãžäžè²«åæ
- ãã¥ãŒã¢ããŒåå²åœ: èšå® âž ã㌠ã§å èµãã¥ãŒã¢ã®å šæäœãä»»æããŒãžåå²åœïŒç«¶åã¯æåŠãè¡ããš / å šäœã®æ¢å®ã«æ»ããããã«ã衚ã¯çŸåšã®å²åœãåæ ïŒ
- å€§èŠæš¡ã©ã€ãã©ãªæ§èœ: æ°åãæ°äžä»¶èŠæš¡ã§ãœãŒããæé©åïŒICU ç §åããŒã®åèšç®ã«ããããªã¹ãæŽæ°ããšã®åãœãŒããé«éåïŒ
- å èµãã¥ãŒã¢: å°çšãŠã£ã³ã㊠/ å šç»é¢ã§ãzip / cbz / cbr / 7z / ãã©ã«ã / åäžç»å / PDF ãçµ±äžãã€ãã©ã€ã³è¡šç€ºããã£ããããã³ã / ± ãºãŒã ããã©ãã°ã§ãã³ããŸãŒã³ã¯ãªã㯠/ ç¢å° / Space ã§ããŒãžéããæ°åããŒã§äœçœ®ãžã£ã³ããèŠéãè¡šç€ºïŒæ¬ããšã«äžæžãïŒãæ¬ããšã®ããŒãžæ¹åïŒå³âå·Š / å·Šâå³ïŒãã¹ã©ã€ãã·ã§ãŒãç¶ãããèªããå·»æ«æåïŒåæ¢ / 次ã®å·» / ã«ãŒãïŒãååŸå·»ãããå šç»é¢ã§éããæäœããŒã®ãã«åå²åœïŒèšå® âž ããŒïŒã»ããã€ã³ã¹ã¿ã³ã¹ç®¡çã§åãæ¬ã®éè€èµ·åã鲿¢ããèšå®ã§æ¬ããšã«å¥ãŠã£ã³ããŠãéžã¹ããå èµ / å€éšãã¥ãŒã¢ã¯èšå®ã§åæ¿
- 衚çŽç·šé: 忬ã®è¡šçŽããã¢ãŒã«ã€ãå ã®ä»»æããŒãžéžæã衚瀺ç¯å²ã®ã¯ããããå€éšç»åã® D&DïŒãŸãã¯ãå€éšç»åã衚çŽã«èšå®âŠãã¡ãã¥ãŒïŒã§å·®ãæ¿ããèŠãç®ïŒãµã ãã€ã«ïŒã ãã®å€æŽã§ãã¢ãŒã«ã€ãæ¬äœãå ãã¡ã€ã«ã¯å€æŽããŸãããããŒã«ã«ã§ããªã¢ãŒãïŒç·šéããŒã¯ã³ïŒã§ãå©çšã§ãããµãŒãåŽã§è¡šçŽãå€ããã°ãªã¢ãŒãã®ã¯ã©ã€ã¢ã³ããäžèЧãªããŒã / 忥ç¶ã§è¿œåŸ
- ãã¡ã€ã«æäœ: ã©ã€ãã©ãªãžã®è¿œå / åé€ãâ« åé€ / ââ« ãŽãç®± / â§âR ãªããŒã / âD ãã¡ã€ã«ç§»åãå皮確èªãã€ã¢ãã°
- ããŒããŒããã: ã°ãªãã / ãªã¹ãã®ç¢å°ãShift+ç¢å°ïŒç¯å²éžæïŒãâââãHome / EndãPageUp / DownãEnter ã§éã
- ã°ãªãããµã€ãº: ã©ã€ãã©ãªããšã«æ°žç¶åããããµã ãã€ã«ãµã€ãºã®ã¹ã©ã€ããŒ
- ãã¹ã¯ãŒãããã¯: ã©ã€ãã©ãªããšã« SHA-256ïŒsalt ä»ãïŒã§ããã¯èšå®å¯èœãTouch ID / Apple Watch ã«ããçäœèªèšŒè§£é ã«ã察å¿
- 察å¿åœ¢åŒ: ã¢ãŒã«ã€ã㯠ZIP / CBZ / RAR / CBR / 7zïŒlibarchive çµç±ïŒãš PDFïŒPDFKitïŒãç»å㯠JPEG / PNG / GIF / WebP / HEIC / HEIF / TIFF / AVIFïŒNSImage çµç±ïŒ
- ååèµ·åãŠã£ã¶ãŒã: ååèµ·åæã«ããŒãžéãåŒãŠã£ã¶ãŒãã§ãç»åã®éãæ¹ïŒå èµ / å€éšãã¥ãŒã¢ïŒâïŒå èµéžææïŒãã¥ãŒã¢åæèšå® â æåã®ã©ã€ãã©ãªïŒæ°èŠ / éã / åã蟌ã¿ïŒããèšå®ãèšå® âž äžè¬ ãããã€ã§ãå衚瀺å¯èœ
- ã€ã³ããŒã: æ¢å Stackroom ã©ã€ãã©ãª XML ãã SQLite DB ãžç§»è¡
- ç£èŠãã©ã«ãïŒèªåå蟌ïŒ: æå®ãã©ã«ããç£èŠãã眮ãããã¢ãŒã«ã€ã / ç»åãã©ã«ããèªåã§ã©ã€ãã©ãªãžåã蟌ã¿ïŒãã©ã«ãããšã®åœåããªã»ãããååãã¬ãã¥ãŒãå蟌èŠçŽãããŒïŒãèªååé¡ïŒbookTypeïŒãåãéŸå€ã¯ã©ã€ãã©ãªããšã«äžæžãå¯èœïŒãStackNest èšå®ã®å€ã«åŸãã/ å奿å®ïŒ
- ãªã¢ãŒãå ±æïŒãµãŒãïŒ: ã©ã€ãã©ãªã HTTP ã§é ä¿¡ãå ±æããŒã¯ã³ã§çžæããšã«é²èЧ / ç·šé / 管çè ã®æš©éãšèŠããã©ã€ãã©ãªïŒscopeïŒãåããããŒã¯ã³ãçºè¡ã§ããããŒã¯ã³å¥ã® QR / URLãNIC éžæ / IPv6ãçž®å°é ä¿¡ãããã¯åº«ã® unlock ã«å¯Ÿå¿ãããŒã¯ã³ã®çºè¡ / åç§°å€æŽ / åçæ / ç¡å¹åã¯ãµãŒãåèµ·åãªãã§å³æåæ ãWeb ãã©ãŠã¶ããé²èЧïŒlist / gridãFTS æ€çŽ¢ããœãŒããããŒãžéãïŒã§ããWeb ãªãŒããŒïŒå èªã¿ãèŠéã / 1 é éããç¶ããããèªã¿æ¹åã®åæ¹å峿åæãå·»æ«ãããPWA ã¢ã€ã³ã³ïŒã§èªãã
- ãã€ãã£ããªã¢ãŒãã¯ã©ã€ã¢ã³ã: å¥ Mac ã® StackNest ããå ±æãµãŒããžæ¥ç¶ããŠé²èЧãšç·šéãã§ããããµã€ãã㌠/ ãã¡ã»ãã / ãã£ã«ã¿ / ã°ãªãã / ãªã¹ã / 詳现ãã€ã³ã®ãã«ãã©ãŠãºãå èµãã¥ãŒã¢ã鲿ã®ãµãŒãåæã«å¯Ÿå¿ãRWïŒç·šéå¯ïŒããŒã¯ã³ãªã詳现ãã€ã³ã§ç·šéã§ããã¡ã¿ããŒã¿ã®äžæ¬ç·šéãã¹ã¿ã³ãã衚çŽç·šéãèªã¿æ¹å倿Žãã©ãã«ã«ã¹ã¿ãã€ãºããªã¢ãŒãããè¡ããïŒç®¡çè ããŒã¯ã³ãªãæ¬ã®åé€ãå¯èœãR ããŒã¯ã³ã§ãã¬ãŒã / æªèªã¯å ±æè©äŸ¡ / é²èŠ§ç¶æ ãšããŠç·šéå¯ïŒãåãæ¶ã / ããçŽãïŒâZ / ââ§ZïŒã«ã察å¿ããã¡ã¿ããŒã¿ç·šéã®åãæ¶ãã¯ãµãŒãã®ç·šéåå€ãã埩å ããŠåæç·šéãäžæžãããããŽãç®±åé€ã®åãæ¶ãã¯ãã¡ã€ã«ãå ã®å ŽæãžåŸ©å ãã
- ãªã¢ãŒãé²èЧã®ãã£ã¹ã¯æ°žç¶ãã£ãã·ã¥: ãªã¢ãŒãã®ããŒãž / 衚çŽã端æ«ã«ãã£ã¹ã¯æ°žç¶ãã£ãã·ã¥ïŒLRU + å¯èŠä¿è· + TTLïŒããåæ¥ç¶ / åèµ·ååŸããã£ãã·ã¥ãå¹ãïŒèšå®ããªã¢ãŒããã£ãã·ã¥ãã§äžé / ä¿ææé / 䜿çšé / ã¯ãªã¢ã管çïŒãå èµãã¥ãŒã¢ã®å èªã¿ïŒåæ¹åªå + ã¹ãããã¹ãã©ã€ããæ¬ 1 ååã®å šåå èªã¿ãã°ã«ïŒãããã°ã¬ã¹ããŒãžã®ãã£ãã·ã¥æžã¿ç¯å²ã®åž¯è¡šç€ºããµãŒãåŽã®è¡šçŽå€æŽãžã®è¿œåŸã«ã察å¿
- ãªãã©ã€ã³ããŠã³ããŒã: ãªã¢ãŒãã®æ¬ãéžãã§ããŒã«ã«ä¿åããæ¥ç¶ãªãã§äžèЧãšé²èЧïŒç¶ãããïŒãã¿ã€ãã«ç»é¢ / File ã¡ãã¥ãŒã®ããªãã©ã€ã³ãããèµ·åãè€æ°éžæã§äžæ¬ããŠã³ããŒã / äžæ¬åé€
- ãªã¢ãŒã / ãªãã©ã€ã³å·»éã: å èµãã¥ãŒã¢ã®å / 次ã®å·»ããªã¢ãŒãïŒé£æ¥å·»ãã¹ããªãŒã ãæª DL å¯ïŒã§ããªãã©ã€ã³ïŒDL æžã®é£ç¶å·»ïŒã§ãåäœãèªã¿ããã®å·»ã¯ãç¶ã / æåããéžæ
- ããŒã«ã«ã¢ã¯ã»ã¹ïŒCLI / MCP èªååïŒ: 忢±ã®
stacknest-cliã§ã©ã€ãã©ãªãã³ãã³ãã©ã€ã³æäœïŒäžèЧ / 远å / åé€ / ã¡ã¿ç·šé / æ£ CRUD / ç£èŠ / ãã㯠/ åã蟌㿠/ åãªã³ã¯ / éè€ / å ±æããŒã¯ã³ / ã¹ã¿ã³ã / ã©ãã«ïŒã**MCP ãµãŒãïŒmcp-stacknestïŒ**çµç±ã§ AI ãšãŒãžã§ã³ããããæäœã§ããããŒã«ã«ãšã³ããã€ã³ã㯠OpenAPI 3.1 + Redoc ã® API ããã¥ã¡ã³ãä»ã
- macOS 14 Sonoma 以éïŒäž»èŠã¿ãŒã²ãã㯠macOS 26 TahoeïŒ
- Apple Silicon ãã€ãã£ãïŒx86_64 åã Universal Binary ãçæïŒ
- ãœãŒã¹ãããã«ãããã«ã¯ Xcode 26+
ãªãªãŒã¹ç㯠CI ã§èªå·±çœ²åïŒåºå® identityïŒããã Universal ãã«ããé
åžããŸãïŒå¿åã®èªå·±çœ²åèšŒææžãApple Developer å
¬èšŒãªãïŒãGitHub ã® Releases ãã StackNest.appïŒzipïŒãããŠã³ããŒããã/Applications ãªã©ãžå±éããŠãã ãããidentity ãåºå®ã®ãããFull Disk Access ãªã©ã¢ããªã«ä»äžããæš©éã¯ã¢ããããŒãããŸããã§æç¶ããŸãã
èªå·±çœ²åã¢ããªã¯ Gatekeeper ã«ãããã¯ããããããååã®ã¿èš±å¯æäœãå¿ èŠã§ãïŒ2 åç®ä»¥éã¯éåžžã©ããããã«ã¯ãªãã¯ã§èµ·åïŒã
éèŠïŒmacOS 15 Sequoia 以éïŒ: macOS 15 以éã¯ãå³ã¯ãªã㯠âãéãããã§ã® Gatekeeper åé¿ã廿¢ãããŸãããæªçœ²å / èªå·±çœ²åã¢ããªã¯ããã£ãããããã¯ãããããšã«ã·ã¹ãã èšå®ããæç€ºçã«èš±å¯ããå¿ èŠããããŸãã
æ¹æ³ AïŒæšå¥šãGUI / macOS 15ã26 ã§ç¢ºèªïŒ
StackNest.appã/Applicationsã«çœ®ããããã«ã¯ãªãã¯ããïŒãéããŸããããã€ã¢ãã°ãåºãã®ã§ãå®äºãïŒã- ã·ã¹ãã èšå® â ãã©ã€ãã·ãŒãšã»ãã¥ãªã㣠ãéããäžéšã®ãã»ãã¥ãªãã£ãã»ã¯ã·ã§ã³ã«è¡šç€ºããã ã"StackNest" ã¯âŠãããã¯ãããŸãããã®å³ã® ããã®ãŸãŸéãã ãã¯ãªãã¯ã
- èªèšŒïŒTouch ID ãŸãã¯ãã°ã€ã³ãã¹ã¯ãŒãïŒãæ±ãããããå ¥åãã確èªãã€ã¢ãã°ã§å床 ããã®ãŸãŸéããã
æ¹æ³ BïŒã¿ãŒããã«ïŒ â quarantine 屿§ãé€å»ããŠããèµ·åïŒã·ã¹ãã èšå®ã®æäœãäžèŠïŒïŒ
xattr -dr com.apple.quarantine /Applications/StackNest.appmacOS 14 以åã§ã¯ãå³ã¯ãªã㯠âãéãããã§ãéããŸãããmacOS 15 以éã§ã¯äžèšã®æ¹æ³ AïŒã·ã¹ãã èšå®ããã®èš±å¯ïŒãŸãã¯æ¹æ³ B ã䜿ã£ãŠãã ããã
â ïž èªå·±çœ²åã¯ãæ£èŠã®éçºå ããä¿èšŒããŸããïŒèšŒææžã¯å¿åã§ãïŒãä¿¡é Œã§ããå ¥æå ïŒæ¬ãªããžããªã® ReleasesïŒããã®ã¿å°å ¥ããŠãã ãããæ¬ãããžã§ã¯ã㯠Apple Developer å ¬èšŒãè¡ããŸããïŒèªå·±çœ²åé åžã§ç¢ºå®ïŒãèªåã§ãã«ãããå Žåã¯äžèšããã«ãããåç §ããŠãã ããã
App/ -- macOS App ã¿ãŒã²ããïŒxcodegen çµç±ã§çæãxcodeproj 㯠gitignoredïŒ
Sources/
StackroomFormat/ -- Stackroom ã©ã€ãã©ãª XML/plist ã®èªã¿åãïŒã€ã³ããŒãçšïŒ
LibraryStore/ -- SQLiteïŒGRDBïŒãªããžããªãMigrationãFTS5ããã«ã倿£èŠå
ImageCache/ -- ãµã ãã€ã«æç» / ãã£ãã·ã¥
ArchiveAdapter/ -- libarchive çµç±ã® ZIP / CBZ / RAR / CBR / 7z èªã¿èŸŒã¿
AppCore/ -- ã¢ããªã¬ãã«ã®ããžãã¯ïŒLibrarySettings, AppPreferences, LibraryLock, ãšã©ãŒåãå€éšãã¥ãŒã¢èµ·åïŒâ ãã¹ãå®¹ææ§ã®ãã SwiftUI éäŸå
LibraryServer/ -- å
±æãµãŒãïŒHummingbirdïŒãWeb UI / ãªãŒããŒãOpenAPI/Redocãã¢ã¯ã»ã¹ãã£ã¢ / ã°ã©ã³ã
LibraryServerAPI/ -- ãµãŒã / ã¯ã©ã€ã¢ã³ãå
±æã® DTO
RemoteClient/ -- ãã€ãã£ããªã¢ãŒãã¯ã©ã€ã¢ã³ãïŒHTTP ã¯ã©ã€ã¢ã³ããL1/L2 ãã£ãã·ã¥ãå
èªã¿ïŒ
StackroomImportCLI/ -- ã€ã³ããŒã¿å®è¡ãã¡ã€ã«ïŒswift run stackroom-importïŒ
StackNestCLI/ -- ãããã¬ã¹ CLIïŒstacknest-cliãããŒã«ã« / ãªã¢ãŒãæäœïŒ
mcp-stacknest/ -- MCP ãµãŒãïŒPythonãstacknest-cli ãå
ããAI ãšãŒãžã§ã³ã飿ºïŒ
Tests/ -- Swift Testing ã¢ãžã¥ãŒã«ïŒswift-testingïŒ
docs/ -- ã¢ãŒããã¯ãã£ãèšèšã¡ã¢ãsmoke checklist
swift build
swift test
swift run stackroom-import --xml "$HOME/Library/Application Support/stackroom/Stackroom Library.xml" --out /tmp/stackroom.sqlite --forcexcodeproj 㯠gitignore ãããŠããããããŸã xcodegen ã§çæããŸãã
cd App && xcodegen && cd ..
xcodebuild \
-project App/StackNest.xcodeproj \
-scheme StackNest \
-configuration Debug \
-destination 'platform=macOS' \
buildUniversal BinaryïŒarm64 + x86_64ïŒã§ã®ãªãªãŒã¹ãã«ãïŒ
xcodebuild \
-project App/StackNest.xcodeproj \
-scheme StackNest \
-configuration Release \
-derivedDataPath build \
CODE_SIGN_IDENTITY=- CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO \
ARCHS="arm64 x86_64" ONLY_ACTIVE_ARCH=NO \
buildxcodegen å®è¡åŸã¯ App/StackNest.xcodeproj ã Xcode ã§éãããšãã§ããŸãã
CLI ã€ã³ããŒã¿ã®ãªãã¡ã¬ã³ã¹ã¯ docs/importer.md ãåç
§ããŠãã ããã
ã¢ããªã®ãã«ããŸã㯠xcodebuild ã®å®è¡åŸãmacOS ã¢ããªãèµ·åããŸãïŒ
open ~/Library/Developer/Xcode/DerivedData/StackNest-*/Build/Products/Debug/StackNest.appååèµ·åæïŒæ°èŠã€ã³ã¹ããŒã«ã§èšå®ãªãïŒã¯ååèµ·åãŠã£ã¶ãŒãã衚瀺ãããç»åã®éãæ¹ãšæåã®ã©ã€ãã©ãªãé ã«èšå®ããŸãã2 åç®ä»¥éãã©ã€ãã©ãªæªéžææã¯ã¿ã€ãã«ç»é¢ã衚瀺ãããæ¬¡ã® 3 ã€ã®éžæè¢ãæç€ºããŸãïŒ
- æ°ããã©ã€ãã©ãªãäœæ: ä»»æã®å Žæã«ç©ºã®
.stacknestbundle ãäœæããŠéã - æ¢åã®ã©ã€ãã©ãªãéã: æ¢åã®
.stacknestbundle ãéžæããŠéã - Stackroom Library ããåã蟌ã: aroma æ°ã®ãªãªãžãã« Stackroom ãåºåãã
Stackroom Library.xmlãèªã¿èŸŒã¿ãæ°èŠ.stacknestbundle ãšããŠä¿å
å .stacknest bundle ã¯ç¬ç«ããã©ã€ãã©ãªïŒSQLite DB + assets ãå«ã macOS bundleïŒã§ãããããç¬ç«ãã window ã§åæã«éããŸããåãã©ã€ãã©ãªã 2 åéãããšãããšæ¢å window ãåé¢ã«æ¥ãŸãïŒOpenLibraryRegistry ã«ããäºé open 鲿¢ïŒã
èµ·åã¢ãŒãã¯ã¢ããªèšå®ïŒâ,ïŒã®ãèµ·åæãã§åæ¿å¯èœã§ãïŒ
- ã¿ã€ãã«ç»é¢ã衚瀺ïŒdefaultïŒ
- ååéããŠããã©ã€ãã©ãªãéã: çµäºæã« open ããŠããå š library ãå床éã
- æå®ã©ã€ãã©ãªãæ¯åéã: èšå®ã§æå®ããç¹å® library ã®ã¿æ¯åéã
æ¢å®ã§ã¯æ¬ã¯å
èµãã¥ãŒã¢ã§éããŸããå
èµ / å€éšã®åæ¿ã¯ èšå® ➠衚瀺 âž ç»åãã¥ãŒã¢ âž ãã¥ãŒã¢ ã§è¡ããŸããå€éšãã¥ãŒã¢ã䜿ãå Žå㯠èšå® ➠衚瀺 âž ç»åãã¥ãŒã¢ïŒâ,ïŒã§å€éšãã¥ãŒã¢ãèšå®ããŠãã ããã
ãéžæâŠããã¯ãªãã¯ããŠç»åãã¥ãŒã¢ã¢ããªïŒcooViewerãAvianããã¬ãã¥ãŒ çïŒãéžãã§ãã ããã
èšå®ããªãå Žåãã·ã¹ãã ã® Archive Utility ã .zip ãå±éããã ãã«ãªããŸãã
éžæããå€éšãã¥ãŒã¢ã¯ UserDefaults ãéããŠèµ·åéã§ä¿æãããŸãã
èšå®æžã¿ã§ããã°ãã°ãªããã§æ¬ãããã«ã¯ãªãã¯ãããšãã¡ã€ã«ïŒãŸãã¯ã«ããŒç»åïŒã çŽæ¥éžæããå€éšãã¥ãŒã¢ã§éããŸãã
ã¿ã€ãã«ç»é¢ã®ãStackroom Library ããåã蟌ãããšåã DB ã¯ãã³ãã³ãã©ã€ã³ãã swift run stackroom-import ã§çæããããšãã§ããŸãïŒdocs/importer.md åç
§ïŒãçæããã SQLite DB ã .stacknest bundle å
ã«é
眮ããŠããæ¢åã®ã©ã€ãã©ãªãéããããéããŸãã
StackNest ã¯åãã¢ããªããµãŒãïŒå ±æïŒã«ãã¯ã©ã€ã¢ã³ãã«ããªããŸããå¥ã® MacãiPhoneãã¿ãã¬ããã®ãã©ãŠã¶ãããèªåã®ã©ã€ãã©ãªãé²èЧã§ããŸãã
ãµãŒãåŽïŒå ±æããïŒ
- å ±æãããã©ã€ãã©ãªãéããããŒã«ããŒã®ã¢ã³ããïŒé ä¿¡ã€ã³ãžã±ãŒã¿ïŒãŸãã¯å ±æèšå®ã§å ±æã ON ã«ããŸãã
- ãµãŒãèšå®ã®å ±æããŒã¯ã³ã§ãçžæããšã«æš©éïŒé²èЧ / ç·šé / 管çè ïŒãšèŠããã©ã€ãã©ãªïŒscopeïŒãåããããŒã¯ã³ãäœãããã® URL / QR ã³ãŒã / ããŒã¯ã³ãæ¥ç¶åŽãžæž¡ããŸãïŒNIC éžæãIPv6 察å¿ïŒãããŒã¯ã³ã®çºè¡ / åç§°å€æŽ / åçæ / ç¡å¹åã¯ãµãŒãåèµ·åãªãã§å³æåæ ãããŸããããã¯åº«ã¯æ¥ç¶åŽã§ãã¹ã¯ãŒã unlock ãå¿ èŠã§ãã
- ã»ãã¥ãªãã£: ããŒããçŽæ¥ã€ã³ã¿ãŒãããã«å ¬éãããTailscale çã® VPN çµç±ã§ã®å©çšãæšå¥šããŸãïŒLAN å å©çšãåæïŒã
Web ãã©ãŠã¶ããèŠã
- æ¥ç¶åŽã®ãã©ãŠã¶ã§å ±æ URL ãéããšãlist / gridãå šææ€çŽ¢ããœãŒããããŒãžéãã§ãã©ãŠãºã§ããæ¬ãéããš Web ãªãŒããŒïŒå èªã¿ãèŠéã / 1 é éããç¶ããããèªã¿æ¹ååæïŒã§èªããŸãã
ãã€ãã£ãã¯ã©ã€ã¢ã³ãïŒå¥ Mac ã® StackNest ããïŒ
- ã¿ã€ãã«ç»é¢ïŒãŸã㯠File ã¡ãã¥ãŒïŒã® ããµãŒãã«æ¥ç¶âŠã ãã URL ãšããŒã¯ã³ãå ¥åããŠæ¥ç¶ããŸãããµã€ãã㌠/ ãã¡ã»ãã / ãã£ã«ã¿ / 詳现ãã€ã³ã®ãã«ãã©ãŠãºãšå èµãã¥ãŒã¢ã§é²èЧã§ããèªæžé²æã¯ãµãŒããžåæãããŸããRWïŒç·šéå¯ïŒããŒã¯ã³ã§æ¥ç¶ããå Žåã¯ããªã¢ãŒãã®ãŸãŸã¡ã¿ããŒã¿ç·šéïŒåäž / è€æ°äžæ¬ïŒãã¹ã¿ã³ãã衚çŽç·šéïŒã¢ãŒã«ã€ãå ããŒãžéžæ / ã¯ããã / å€éšç»åã D&Dããå€éšç»åã衚çŽã«èšå®âŠãã¡ãã¥ãŒã§è¡šçŽã«ïŒãèªã¿æ¹å倿Žãã§ããŸãïŒR ããŒã¯ã³ã¯èªã¿åãå°çšïŒã衚çŽã¯èŠãç®ã®ã¿ã®å€æŽã§ã¢ãŒã«ã€ãæ¬äœã¯äžå€ã§ããå ±æå ãã»ãã®ã¯ã©ã€ã¢ã³ãã§è¡šçŽãå€ãã£ãå ŽåããäžèЧãªããŒã / 忥ç¶ã§è¿œåŸããŸãã
ãªãã©ã€ã³ïŒæ¥ç¶ãªãã§èªãïŒ
- æ¥ç¶äžã«æ¬ãå³ã¯ãªã㯠âãããŠã³ããŒããã§ããŒã«ã«ä¿åããŸãããéžæãã¢ãŒãã§è€æ°éžæ â äžæ¬ããŠã³ããŒããå¯èœã§ãïŒã·ãªãŒãºããã¡ã»ãã / æ€çŽ¢ã§çµã£ãŠããã¹ãŠéžæãã䟿å©ïŒã
- ã¿ã€ãã«ç»é¢ / File ã¡ãã¥ãŒã® ããªãã©ã€ã³ïŒããŠã³ããŒãæžã¿ïŒã ããããµãŒãã«æ¥ç¶ããŠããªããŠãããŠã³ããŒãæžã¿ã®æ¬ãäžèЧãšé²èЧãã§ããŸãïŒç¶ããããå·»éã察å¿ïŒãäžèŠã«ãªã£ãæ¬ã¯ãéžæãã¢ãŒãã§äžæ¬åé€ã§ããŸãã
StackNest ã¯ãGUI ãä»ããã«ã³ãã³ãã©ã€ã³ã AI ãšãŒãžã§ã³ãããã©ã€ãã©ãªãæäœã§ããŸãã
- æå¹å: ã¢ããªèšå®ïŒ
â,ïŒã® ãäžè¬ âž ããŒã«ã«ã¢ã¯ã»ã¹ã ã§æå¹ã«ããŸãïŒ127.0.0.1éå®ã®ããŒã«ã«å¶åŸ¡ãšã³ããã€ã³ãïŒã - CLI: ã¢ããªã«å梱ã®
stacknest-cliã§ãäžèЧã远å ãåé€ãã¡ã¿ããŒã¿ç·šéãæ£ CRUDãç£èŠèšå®ãããã¯ãåã蟌ã¿ãåãªã³ã¯ãéè€ã¹ãã£ã³ãå ±æããŒã¯ã³ç®¡çãã¹ã¿ã³ã / ã©ãã«ãæäœã§ããŸãïŒstacknest-cli --helpïŒããã¹ã¯ãŒã㯠stdin å ¥åã§ argv ã«é²åºããŸããã - MCP:
mcp-stacknestïŒModel Context Protocol ãµãŒãïŒãç»é²ãããšã察å¿ãã AI ãšãŒãžã§ã³ãããåçã®æäœãã§ããŸãã詳现ã¯mcp-stacknest/README.mdãåç §ã - API ããã¥ã¡ã³ã: ããŒã«ã«ãšã³ããã€ã³ã㯠API å°çšã§ããã©ãŠã¶ã§ã«ãŒãïŒ
/ïŒãéããš RedocïŒOpenAPI 3.1ïŒ ã® API ãªãã¡ã¬ã³ã¹ã衚瀺ãããŸãã
å .stacknest ã©ã€ãã©ãªã«ã¯ãã¹ã¯ãŒãããã¯ãèšå®ã§ããŸããTouch ID / Apple Watch 飿ºã«ã察å¿ããŠããŸãã
ãªã«ããªãŒææ®µã¯æäŸããŠããŸãããããã¯ã¯ãç°¡æçã«ä»è ããã®å¶çºçã¢ã¯ã»ã¹ãé²ããç®çã®æ©èœã§ãæå·åã¯ãããŠããŸããããã¹ã¯ãŒããå¿ããŠéããªããªã£ãã©ã€ãã©ãªã¯ã以äžã®æé ã§ DB ãçŽæ¥ç·šéããããšã§è§£é€ ã§ããŸãã
sqlite3 /path/to/MyLibrary.stacknest/library.sqlite \
"DELETE FROM library_settings WHERE key IN ('lock_password_hash', 'lock_password_salt', 'lock_use_biometric');"å®è¡åŸã¯ããã¯ãªãç¶æ ã«ãªããStackNest ããå床éããããã«ãªããŸããå¿ èŠã«å¿ã㊠File menuããã®ã©ã€ãã©ãªã®èšå®âŠã(â§â,) ããåèšå®ããŠãã ããã
泚æç¹:
- ããã¯ã¯å¹³æ hash + salt ã® SHA-256 ã§ä¿è·ãããŠããã®ã¿ã§ãã©ã€ãã©ãª DB / ç»åãã¡ã€ã«æ¬äœã¯æå·åãããŠããŸãã
- 匷ãç§å¿æ§ãå¿ èŠãªæ å ±ã¯å¥ã®ææ®µ (Disk encryption, FileVault ç) ã§ä¿è·ããŠãã ãã
ã¯ã©ãŠãåæäžã§ã® DB ç Žæã«åããå .stacknest ã©ã€ãã©ãªã¯ç·šéã®ãã£ãã»ãã·ã§ã³ãéãããã³ã«ããã³ãã«å
Backups/ ãžäžä»£ããã¯ã¢ããïŒè»œéãªã¡ã¿ããŒã¿ DB ã®ã¹ãããã·ã§ããïŒãèªåä¿åããŸããé²èЧã®ã¿ã§å€æŽããªããã°äžä»£ã¯å¢ããŸããã
- æå¹/ç¡å¹ãšä¿æäžä»£æ°ïŒ1ã20ãæ¢å® 5ïŒã¯ã©ã€ãã©ãªèšå®ã®ãããã¯ã¢ãããã¿ãã§å€æŽã§ããŸãã
- ã©ã€ãã©ãªãéããšãã«æŽåæ§ãã§ã㯠(
PRAGMA quick_check) ãè¡ããç Žæãæ€ç¥ãããšãææ°ã®æ£åžžãªããã¯ã¢ãããã埩å ããŸããïŒããšæ¡å ããŸãã - ããã¯ã¢ããããã®åŸ©å
ãã§ããªãå Žåã¯ãç¶ããŠ**ã.recover ã§ä¿®åŸ©ã詊ãã**ïŒã¢ããªå
ïŒãéžã¹ãŸããã·ã¹ãã ã®
sqlite3 .recoverã§å¯èœãªç¯å²ã®ããŒã¿ãæåºãã埩å ã§ããæ¬ã®ä»¶æ°ãæç€ºããŠããéããŸãïŒå£ããæ¬äœã¯library.prerecover-*/library.corrupt-*ãšããŠæ®ããŸãïŒã - ããã§ãçŽããªãå Žåãæåã§å€ãäžä»£ãžæ»ãããå Žåã¯ãDB 埩æ§ã¬ã€ã ãåç
§ããŠãã ããïŒæå
sqlite3 .recoveræé ãå«ãïŒã
éçºã¯æ®µéçãã§ãŒãºã§é²ããŠããŸããèŠçŽïŒ
| ãã§ãŒãº | å 容 | ç¶æ³ |
|---|---|---|
| 2.1 | Stackroom XML ã€ã³ããŒã¿ïŒCLI + SQLite/GRDBïŒ | â å®äº |
| 2.2 | ã°ãªãã / ã¢ã€ã³ã³è¡šç€ºããµã ãã€ã«ãã¢ãŒã«ã€ãèªã¿èŸŒã¿ | â å®äº |
| 2.3 | ãµã€ãããŒïŒã©ã€ãã©ãª / ãæ°ã«å ¥ã / æè¿ïŒãã·ã§ã«ãã詳现ãã€ã³ | â å®äº |
| 2.4 | ãªã¹ã衚瀺ãããŒã«ã㌠/ ãã¡ã»ãããã£ã«ã¿ãFTS5 æ€çŽ¢ãç·šé | â å®äº |
| 2.5 | ãã«ãã©ã€ãã©ãªããã¡ã€ã« CRUDã衚çŽç·šéãUndoãããã¯ãåœåãèªååé¡ãPDF å蟌 | â å®äº |
| 2.5k | ã°ãªãã / ãªã¹ãã®ããŒããŒãããã²ãŒã·ã§ã³ | â å®äº |
| 2.6a | ã¹ããŒãã·ã§ã«ã MVPïŒæ¡ä»¶åŒã³ã¬ã¯ã·ã§ã³ïŒ | â å®äº |
| 2.6b | å èµãã¥ãŒã¢ ã³ã¢MVPïŒãã«ã¹ã¯ãªãŒã³ããã£ãã / ãºãŒã / ãã³ãããŒãžéããPDF / ã¢ãŒã«ã€ã / ãã©ã«ã / åäžç»åïŒ | â å®äº |
| 2.6b-2 | å èµãã¥ãŒã¢æ¡åŒµïŒèŠéãè¡šç€ºãæ¬ããšããŒãžæ¹åãã¹ã©ã€ãã·ã§ãŒèªåé²è¡ãç¶ãããèªããå·»æ«æå æ¬¡ã®å·» / ã«ãŒããå šç»é¢ã§éããHEIC / HEIF / TIFF / AVIF 察å¿ïŒ | â å®äº |
| 2.6c | ååèµ·åãŠã£ã¶ãŒãïŒå èµ / å€éšãã¥ãŒã¢éžæãå èµãã¥ãŒã¢åæèšå®ãæåã®ã©ã€ãã©ãªäœæãèšå®ããåè¡šç€ºïŒ | â å®äº |
| 2.7 | ãã©ãã·ã¥ã¢ããïŒæ§èœïŒéè€æ€åºããã£ãŒã«ã / bookType ã©ãã« ã«ã¹ã¿ãã€ãºããœãŒãæé©åããã¥ãŒã¢ããŒåå²åœ UIãè€æ°åœåãã©ãŒãããããªã»ããïŒ | â å®äº |
| 2.8 | ã©ã€ãã©ãªä¿å šïŒãªã³ã¯åãåæå®ãDB èªåããã¯ã¢ãã + æŽåæ§ãã§ãã¯ãNFC æ£èŠåä¿®æ£ïŒ | â å®äº |
| 2.9 | DB 修埩ïŒã¢ããªå
.recover ã«ããç ŽæããŒã¿æåºãæåºä»¶æ°æç€ºïŒ |
â å®äº |
| 4.0+ | ãµãŒã / ã¯ã©ã€ã¢ã³ãïŒå
±æãµãŒããWeb ãã©ãŠã¶ / ãªãŒããŒããã€ãã£ãã¯ã©ã€ã¢ã³ãããªãã©ã€ã³ DLãå
±æããŒã¯ã³ïŒ»é²èЧ / ç·šé / 管çè
à scopeããªã¢ãŒãç·šéã¡ã¿ / ã¹ã¿ã³ã / 衚çŽ: ããŒãžéžæãã¯ããããå€éšç»åã衚çŽã« / ãªã¢ãŒã远å ãåé€ / åãæ¶ããããçŽãïŒâZ / ââ§ZïŒïŒœããªã¢ãŒãé²èЧã®ãã£ã¹ã¯æ°žç¶ãã£ãã·ã¥ + å
èªã¿ + 衚çŽãã£ãã·ã¥ã®ãµãŒã远åŸãç»é¢ãµã€ãºã«å¿ããç»åé
ä¿¡ãç£èŠãã©ã«ãèªåå蟌ïŒèšå®ãåã蟌ã¿ãã¿ãã«çµ±åïŒãå
èµãã¥ãŒã¢ ã€ã³ã¹ã¿ã³ã¹ç®¡çïŒéè€èµ·å鲿¢ããè€æ°ãã¥ãŒã¢ã®èµ·åãèš±å¯ãèšå®ïŒãundo å¿ å®åºŠïŒåæç·šéãäžæžãããªãããŽãç®±åé€ã®åãæ¶ãã¯ãã¡ã€ã«ã埩å
ïŒãçµãèŸŒã¿æã«äžèЧãèªåã§å
é ãžãã»ãã¥ãªãã£åŒ·åïŒãªã¢ãŒã埩å
çµç±ã®ä»»æãã¡ã€ã«ç§»åã鲿¢ïŒãããŒã«ã«ã¢ã¯ã»ã¹ïŒCLI stacknest-cli / MCP mcp-stacknest / OpenAPI + RedocïŒ â v0.12.0 RC ã§ãªã¢ãŒã parity å®è£
å®çµïŒ |
â å®äº |
| 5.0+ | ãããã¬ã¹ / Docker 察å¿ïŒå ±æãµãŒãã StackNest.app ã«äŸåããåžžæçšŒåãã³ã³ããé åžãããã〠/ èšå®ã®æŽåïŒ | â³ äºå® |
å¡äŸ: â å®äº / ð é²è¡äž / â³ äºå® / ð å°æ¥æ§æ³
Phase 3ïŒå®å®çãªãªãŒã¹ååŒïŒã¯æ¬ãããžã§ã¯ãã®æ¹éã«åããªãããè§£äœããã¢ã€ã³ã³ / ãã©ã³ãã£ã³ã°çã®éæé ç®ãå Phase ãžåžåããŸããã
ãªãªãŒã¹ããšã®å€æŽç¹ã¯ CHANGELOG.mdïŒEnglishïŒãåç §ããŠãã ããã
質åãèŠæãäžå ·åå ±åãæŽ»çšäŸã®å ±æã¯ GitHub Discussions ãžã©ããïŒè³ªå㯠Q&AãèŠæã¯ Ideas ã«ããŽãªïŒãåçŸæé ã®ãããã°ã¯ Issues ã§ãåãä»ããŸãã
MIT â LICENSE ãåç
§ã
- aroma æ° / aromatics soft â ãªãªãžãã« Stackroom ã®éçºãšãSwift ã§ã®æžãçŽããžã® æç€ºçãªåŸæŒãã«æè¬ããŸãã
