File System Access APIãæãäžããããŒã«ã«ãã¡ã€ã«æäœã®æ©èœãšããŠãŒã¶ãŒããŒã¿ãä¿è·ããããã«ããã²ãŒãããéèŠãªã»ãã¥ãªãã£å¢çã«ã€ããŠè©³è¿°ããŸãã
File System Access APIïŒããŒã«ã«ãã¡ã€ã«æäœãšã»ãã¥ãªãã£å¢çã®ããã²ãŒã·ã§ã³
ããžã¿ã«ã©ã³ãã¹ã±ãŒãã¯ãŸããŸããã€ãããã¯ã«ãªãããŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯åãªãã³ã³ãã³ãé ä¿¡ããããŠãŒã¶ãŒããŒã¿ãåºç€ãšãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšãã察話ããæŽç·ŽãããããŒã«ãžãšé²åããŠããŸãããã®é²åã®æ¥µããŠéèŠãªèŠçŽ ã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ãããŒã«ã«ãã¡ã€ã«æäœãå®è¡ã§ããèœåã§ããæŽå²çã«ããŠã§ããã©ãŠã¶ãããŠãŒã¶ãŒã®ãã¡ã€ã«ã·ã¹ãã ãžã®çŽæ¥ã¢ã¯ã»ã¹ã¯é倧ãªã»ãã¥ãªãã£äžã®æžå¿µã§ãããå³ããå¶éã«ã€ãªãã£ãŠããŸãããããããçŸä»£ã®ãŠã§ãAPIãç¹ã«File System Access APIã®ç»å Žã«ããããããã现ããªå¶åŸ¡ãæäŸãããšåæã«å ç¢ãªã»ãã¥ãªãã£å¯Ÿçã匷å¶ããããšã§ããã®ãã©ãã€ã ã¯å€ããã€ã€ãããŸãããã®èšäºã§ã¯ãFile System Access APIã®æ©èœã«ã€ããŠæãäžãããããã©ã®ããã«ããŒã«ã«ãã¡ã€ã«æäœãå¯èœã«ãããããããŠãŠãŒã¶ãŒã®ãã©ã€ãã·ãŒãšã·ã¹ãã ã®å®å šæ§ãä¿è·ããããã«ããã²ãŒãããªããã°ãªããªãéèŠãªã»ãã¥ãªãã£å¢çã«ã€ããŠèå¯ããŸãã
ãŠã§ããã©ãŠã¶ã«ããããã¡ã€ã«ã¢ã¯ã»ã¹ã®é²å
é·å¹Žã«ãããããŠã§ããã©ãŠã¶ã¯å³æ Œãªãµã³ãããã¯ã¹ã¢ãã«ã®äžã§åäœããŠããŸããããã®ã¢ãã«ã¯ããŠã§ãã³ã³ãã³ããå®å šãªç°å¢å ã«éé¢ããæ©å¯æ§ã®é«ããŠãŒã¶ãŒããŒã¿ãžã®ã¢ã¯ã»ã¹ãããŒã«ã«ãã·ã³äžã§ã®ä»»æã®æäœãé²ããŸãããã¡ã€ã«ãšã®äž»ãªå¯Ÿè©±ã¡ã«ããºã ã¯ä»¥äžã®éãã§ããïŒ
- ãã¡ã€ã«ã¢ããããŒãïŒ
<input type="file">
ïŒïŒãŠãŒã¶ãŒã¯ããŒã«ã«ã·ã¹ãã ãããã¡ã€ã«ãéžæããŠãŠã§ããµãŒããŒã«ã¢ããããŒãã§ããŸãããããã¯ãŠãŒã¶ãŒã«ãã£ãŠéå§ãããäžæ¹åã®æäœã§ããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯æç€ºçã«æäŸããããã®ä»¥å€ã®ãã¡ã€ã«ã®å Žæãã¡ã¿ããŒã¿ã§ã¯ãªãããã¡ã€ã«ã®å 容ã®ã¿ãåãåããŸããã - ãã¡ã€ã«ããŠã³ããŒãïŒãŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãã¡ã€ã«ã®ããŠã³ããŒããéå§ã§ããŸããããããããã©ãŠã¶ã¯éåžžããŠãŒã¶ãŒã«ããŠã³ããŒãå Žæãéžæããããä¿ããããã¡ã€ã«ãããã©ã«ãã®ããŠã³ããŒããã£ã¬ã¯ããªã«ä¿åããããããŠãŒã¶ãŒã®ç£ç£äžã§è¡ãããŸããã
- ããŒã«ã«ã¹ãã¬ãŒãžãšã»ãã·ã§ã³ã¹ãã¬ãŒãžïŒãããã®ã¡ã«ããºã ã«ããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãã©ãŠã¶ã«å²ãåœãŠãããã¹ãã¬ãŒãžå ã«å°éã®ããŒã¿ïŒããŒãšå€ã®ãã¢ïŒãä¿åã§ããŸããããã®ããŒã¿ã¯ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®ãªãªãžã³ïŒãã¡ã€ã³ïŒã«éé¢ãããŠããããŠãŒã¶ãŒã®ã·ã¹ãã äžã®åŸæ¥ã®ãã¡ã€ã«ãšããŠã¯ã¢ã¯ã»ã¹ã§ããŸããã§ããã
- IndexedDBïŒãã€ããªããŒã¿ãå«ã倧éã®æ§é åããŒã¿ãä¿åããããã®ãããå ç¢ãªã¯ã©ã€ã¢ã³ããµã€ãããŒã¿ããŒã¹ãããŒã¿ãããŒã«ã«ã«ä¿åã§ããŸããããããã§ããã©ãŠã¶ã®ãµã³ãããã¯ã¹å ã«ããããã¡ã€ã«ãšããŠçŽæ¥ã¢ã¯ã»ã¹ããããšã¯ã§ããŸããã§ããã
ãããã®æ¹æ³ã¯é«ã¬ãã«ã®ã»ãã¥ãªãã£ã確ä¿ããŸãããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã匷åãªãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ãšããŠæ©èœããå¯èœæ§ãå¶éããŠããŸãããããŒã«ã«ãã¡ã€ã«åæã䌎ããªã¢ã«ã¿ã€ã ã®å ±åããã¥ã¡ã³ãç·šéãé«åºŠãªç»åã»åç»ç·šéããŒã«ããŸãã¯çµ±åéçºç°å¢ïŒIDEïŒãªã©ãå€ãã®é«åºŠãªæ©èœã¯ããããã®å¶éã«ãã£ãŠäžå¯èœã§ãã£ãããèãã劚ããããŠããŸããã
File System Access APIã®ç޹ä»
File System Access APIã¯ã倧ããªåé²ã象城ããŠããŸããããã¯ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã«ãŠãŒã¶ãŒã®ãã¡ã€ã«ã·ã¹ãã ãžã®ããã°ã©ã çãªã¢ã¯ã»ã¹ãæäŸãããã¡ã€ã«ã®èªã¿åããæžã蟌ã¿ãæäœãªã©ã®æäœãå¯èœã«ããŸãããã®APIã¯ã»ãã¥ãªãã£ãæåªå äºé ãšããŠèšèšãããŠãããä»äžããããã¹ãŠã®ã¢ã¯ã»ã¹ã¯æç€ºçã§ããŠãŒã¶ãŒäž»å°ã§ãããå®çŸ©ãããå¢çå ã«éå®ãããŸãã
File System Access APIã®äž»ãªæ©èœ
ãã®APIã¯ãéçºè ããã¡ã€ã«ããã£ã¬ã¯ããªãšå¯Ÿè©±ããããã®äžé£ã®ã€ã³ã¿ãŒãã§ãŒã¹ãå ¬éããŠããŸããäž»èŠãªã³ã³ããŒãã³ãã¯ä»¥äžã®éãã§ãïŒ
window.showOpenFilePicker()
ïŒãŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã§èªã¿æžããããã¡ã€ã«ã1ã€ä»¥äžéžæã§ããããã«ããŸãããã®ã¡ãœããã¯FileSystemFileHandle
ãªããžã§ã¯ãã®é åãè¿ããŸããwindow.showSaveFilePicker()
ïŒãŠãŒã¶ãŒã«ããŒã¿ã®ä¿åå Žæãšãã¡ã€ã«åãéžæããããä¿ããŸããããã¯åäžã®FileSystemFileHandle
ãªããžã§ã¯ããè¿ããŸããwindow.showDirectoryPicker()
ïŒãŠãŒã¶ãŒããã£ã¬ã¯ããªãéžæã§ããããã«ããã¢ããªã±ãŒã·ã§ã³ã«ãã®å 容ãšãµããã£ã¬ã¯ããªãžã®ã¢ã¯ã»ã¹ãèš±å¯ããŸããããã¯FileSystemDirectoryHandle
ãªããžã§ã¯ããè¿ããŸããFileSystemFileHandle
ïŒåäžã®ãã¡ã€ã«ã衚ããŸãããã¡ã€ã«ã®è©³çްïŒååããµã€ãºãæçµæŽæ°æ¥ïŒãååŸããããŒã¿ãæžã蟌ãããã®FileSystemWritableFileStream
ãååŸããã¡ãœãããæäŸããŸããFileSystemDirectoryHandle
ïŒãã£ã¬ã¯ããªã衚ããŸããvalues()
ãkeys()
ãentries()
ã䜿çšããŠãã®å 容ïŒãã¡ã€ã«ãšãµããã£ã¬ã¯ããªïŒãå埩åŠçã§ããŸãããŸããgetFileHandle()
ãgetDirectoryHandle()
ãªã©ããã®äžã®ç¹å®ã®ãã¡ã€ã«ããã£ã¬ã¯ããªã®ãã³ãã«ãååŸããã¡ãœãããæäŸããŸããFileSystemWritableFileStream
ïŒãã¡ã€ã«ã«ããŒã¿ãæžã蟌ãããã«äœ¿çšãããŸããããã¹ããBlobããŸãã¯ãã€ãé åã®æžã蟌ã¿ãªã©ã®æäœããµããŒãããéèŠãªããšã«ããã¡ã€ã«ãåãè©°ãããããŒã¿ã远èšãããã®ãªãã·ã§ã³ãæäŸããŸãã
å®è·µçãªãŠãŒã¹ã±ãŒã¹
File System Access APIã¯ãæ°äžä»£ã®åŒ·åãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãè§£æŸããŸãã以äžã®äŸãèããŠã¿ãŠãã ããïŒ
- é«åºŠãªããã¥ã¡ã³ããšãã£ã¿ïŒãŠã§ãããŒã¹ã®ã¯ãŒãããã¹ãã¬ããã·ãŒãããã°ã©ã ããã¬ãŒã³ããŒã·ã§ã³ããŒã«ã¯ããŠãŒã¶ãŒã®ããŒã«ã«ãã©ã€ãããçŽæ¥ãã¡ã€ã«ãã·ãŒã ã¬ã¹ã«ä¿åã»èªã¿èŸŒã¿ã§ããããã«ãªãããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ãšèŠåããã€ããªãäœéšãæäŸããŸãããŸãããŠãŒã¶ãŒãéžæããç¹å®ã®å Žæã«èªåä¿åæ©èœãå®è£ ããããšãã§ããŸãã
- ç»åã»åç»ç·šéãœãããŠã§ã¢ïŒã¡ãã£ã¢ãã¡ã€ã«ãæäœããã¢ããªã±ãŒã·ã§ã³ã¯ããããã«çŽæ¥ã¢ã¯ã»ã¹ããŠå€æŽã§ããããããŠãŒã¶ãŒã倿Žããããã¡ã€ã«ãæåã§ããŠã³ããŒãããŠåã¢ããããŒãããå¿ èŠãªããããè€éãªã¯ãŒã¯ãããŒãå¯èœã«ãªããŸãã
- éçºããŒã«ïŒãªã³ã©ã€ã³ã®ã³ãŒããšãã£ã¿ãIDEã¯ããŠãŒã¶ãŒãããŒã«ã«ãã·ã³ãããããžã§ã¯ããã©ã«ãå šäœãéãããä¿åãããã§ããããã«ããããšã§ãããçµ±åãããéçºäœéšãæäŸã§ããŸãã
- ããŒã¿ç®¡çããŒã«ïŒããŒã¿ïŒäŸïŒCSVãJSONãã¡ã€ã«ããïŒãã€ã³ããŒããŸãã¯ãšã¯ã¹ããŒãããã¢ããªã±ãŒã·ã§ã³ã¯ãæå®ããããã£ã¬ã¯ããªå ã®ãã¡ã€ã«ãšçŽæ¥å¯Ÿè©±ããããšã§ãããã¹ã ãŒãºãªãŠãŒã¶ãŒäœéšãæäŸã§ããŸãã
- ããã°ã¬ãã·ããŠã§ãã¢ããªïŒPWAïŒïŒPWAã¯ãã®APIãæŽ»çšããŠããããã¹ã¯ãããã©ã€ã¯ãªæ©èœãå®çŸãããã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã®ããé åçãªä»£æ¿ææ®µãšããããšãã§ããŸããäŸãã°ãå人ã®è²¡åã管çããããã®PWAã¯ããŠãŒã¶ãŒãéžæããCSVãã¡ã€ã«ããçŽæ¥ãã©ã³ã¶ã¯ã·ã§ã³ããŒã¿ãèªã¿æžãã§ããŸãã
ã»ãã¥ãªãã£å¢çïŒä¿¡é Œã®ç€
ããŒã«ã«ãã¡ã€ã«ã«ã¢ã¯ã»ã¹ããèœåã¯ãæ éã«ç®¡çãããªãå Žåãé倧ãªã»ãã¥ãªãã£ãªã¹ã¯ããããããŸããFile System Access APIã¯ããããã®ãªã¹ã¯ã軜æžããããã«è€æ°ã®ã»ãã¥ãªãã£å±€ã§èšèšãããŠããŸãïŒ
1. ãŠãŒã¶ãŒã®åæãæåªå
æé»ã®èš±å¯ã§åäœããå¯èœæ§ã®ããåŸæ¥ã®ãŠã§ãAPIãšã¯ç°ãªããFile System Access APIã¯ããã¹ãŠã®ãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªãžã®ã¢ã¯ã»ã¹ã«å¯ŸããŠæç€ºçãªãŠãŒã¶ãŒã®æäœã矩åä»ããŠããŸãããããæãéèŠãªã»ãã¥ãªãã£æ©èœã§ãïŒ
- ããã«ãŒããŒã¹ã®ã¢ã¯ã»ã¹ïŒ
showOpenFilePicker()
ãshowSaveFilePicker()
ãshowDirectoryPicker()
ãªã©ã®æäœã¯ããã€ãã£ãã®ãã©ãŠã¶ãã€ã¢ãã°ãããªã¬ãŒããŸãããŠãŒã¶ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ãã¢ã¯ã»ã¹ã§ãããã¡ã€ã«ããã£ã¬ã¯ããªãç©æ¥µçã«éžæããå¿ èŠããããŸããã¢ããªã±ãŒã·ã§ã³ã¯ãã©ã®ãã¡ã€ã«ã«ã§ãå æ¬çãªã¢ã¯ã»ã¹èš±å¯ãæã€ããã§ã¯ãããŸããã - ã¹ã³ãŒãä»ãã®æš©éïŒãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªãéžæããããšãã¢ããªã±ãŒã·ã§ã³ã¯ãã®ç¹å®ã®ãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªãšãã®çŽæ¥ã®åïŒãã£ã¬ã¯ããªã®å ŽåïŒã«ã®ã¿ã¢ã¯ã»ã¹ãèš±å¯ãããŸãããã®åŸã®ãŠãŒã¶ãŒæäœãéããŠæç€ºçã«èš±å¯ãããªãéãããã£ã¬ã¯ããªããªãŒãäžã«ãã©ã£ãããå åŒãã¡ã€ã«/ãã£ã¬ã¯ããªã«ã¢ã¯ã»ã¹ãããããããšã¯ã§ããŸããã
- ãªãªãžã³ããšã®ã¢ã¯ã»ã¹ïŒä»äžãããæš©éã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®ãªãªãžã³ïŒãããã³ã«ããã¡ã€ã³ãããŒãïŒã«çµã³ä»ããããŠããŸãããŠãŒã¶ãŒããµã€ãããé¢ããããã¿ããéããããããšããããã®æš©éã¯é垞倱ãããå°æ¥ã®ã¢ã¯ã»ã¹ã®ããã«ã¯å確èªãå¿ èŠã«ãªããŸãã
2. ãµã³ãããã¯ã¹åã¯åŒãç¶ãæå¹
ãã©ãŠã¶ã®åºæ¬çãªãµã³ãããã¯ã¹ã¢ãã«ã¯ãFile System Access APIã«ãã£ãŠè§£äœãããããã§ã¯ãããŸãããAPIã¯ãã¡ã€ã«ã·ã¹ãã ãšå¯Ÿè©±ããããã®ã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸããããŠã§ãã¢ããªã±ãŒã·ã§ã³èªäœã®å®è¡ç°å¢ã¯éé¢ããããŸãŸã§ããããã¯æ¬¡ã®ããšãæå³ããŸãïŒ
- ä»»æã®å®è¡ã¯äžå¯ïŒAPIã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã®ãã·ã³äžã§ä»»æã®ã³ãŒããå®è¡ããããšãèš±å¯ããŸããããã¡ã€ã«æäœã¯ãèªã¿åããæžã蟌ã¿ãã¡ã¿ããŒã¿æäœã«éå®ãããŸãã
- å¶åŸ¡ãããå®è¡ã³ã³ããã¹ãïŒJavaScriptã³ãŒãã¯ãã©ãŠã¶ã®ã»ãã¥ãªãã£ã³ã³ããã¹ãå ã§å®è¡ãããåäžãªãªãžã³ããªã·ãŒããã®ä»ã®ç¢ºç«ããããŠã§ãã»ãã¥ãªãã£ååã«åŸããŸãã
3. æš©é管ç
ãã©ãŠã¶ã¯ããŠãŒã¶ãŒããŠã§ããµã€ãã«ä»äžãããæš©éã管çããããã®ã¡ã«ããºã ãæäŸããŸããFile System Access APIã®å Žåãããã¯é垞以äžãå«ã¿ãŸãïŒ
- æ°žç¶çãªæš©éïŒãŠãŒã¶ãŒã®ãªããã€ã³ããïŒïŒçŽæ¥ã¢ã¯ã»ã¹ã«ã¯åžžã«ããã«ãŒãå¿ èŠã§ãããAPIã¯ç¹å®ã®ãã¡ã€ã«ããã£ã¬ã¯ããªãžã®æ°žç¶çãªèªã¿æžãã¢ã¯ã»ã¹ã®ãªã¯ãšã¹ãããµããŒãããŠããŸãããŠãŒã¶ãŒããããèš±å¯ãããšããã©ãŠã¶ã¯ãã®ãªãªãžã³ãšãã¡ã€ã«/ãã£ã¬ã¯ããªã«å¯Ÿããæš©éãèšæ¶ããç¹°ãè¿ãããã«ãŒã衚瀺ããå¿ èŠæ§ãæžããããšãã§ããŸãããã ããããã¯æç¢ºãªèŠåãšå ±ã«æç€ºãããããšãå€ããæå³çãªãŠãŒã¶ãŒã®éžæã§ãã
- æš©éã®åãæ¶ãïŒãŠãŒã¶ãŒã¯éåžžããã©ãŠã¶ã®èšå®ãéããŠãŠã§ããµã€ãã«ä»äžãããæš©éã確èªããåãæ¶ãããšãã§ããŸããããã«ããããµã€ãã«éå°ãªã¢ã¯ã»ã¹ãèš±å¯ããããšæããå Žåã«ãŠãŒã¶ãŒãå¶åŸ¡ãåãæ»ãããšãã§ããå®å šç¶²ãæäŸãããŸãã
4. ãã¡ã€ã«ã·ã¹ãã ãã³ãã«ãšã»ãã¥ãªãã£ããŒã¯ã³
ãŠãŒã¶ãŒããã¡ã€ã«ããã£ã¬ã¯ããªãžã®ã¢ã¯ã»ã¹ãèš±å¯ãããšãAPIã¯FileSystemFileHandle
ãŸãã¯FileSystemDirectoryHandle
ãè¿ããŸãããããã®ãã³ãã«ã¯åçŽãªãã¡ã€ã«ãã¹ã§ã¯ãããŸããã代ããã«ããããã¯ãã©ãŠã¶ãæ¿èªãããã¢ã¯ã»ã¹ãå
éšçã«è¿œè·¡ããããã«äœ¿çšããäžéæãªãªããžã§ã¯ãã§ãããã®æœè±¡åã«ããããŠã§ãã¢ããªã±ãŒã·ã§ã³ãçã®ãã¡ã€ã«ãã¹ãçŽæ¥æäœããããšãé²ããããŸããŸãªæ»æã«æªçšãããå¯èœæ§ãæé€ããŸãã
ãã¡ã€ã«ãã¹ãçŽæ¥å ¬éããããšã®ã»ãã¥ãªãã£äžã®åœ±é¿ãèããŠã¿ãŠãã ãããæ»æè ã¯ãã¢ã¯ã»ã¹ããããšæ©å¯æ§ã®é«ãã·ã¹ãã ãã¡ã€ã«ïŒäŸïŒWindowsã®`C:\Windows\System32\config\SAM`ïŒã«ã¢ã¯ã»ã¹ããããšããæªæã®ããURLãäœæããå¯èœæ§ããããŸããçã®ãã¡ã€ã«ãã¹ã¢ã¯ã»ã¹ã§ã¯ãããã¯é倧ãªè匱æ§ãšãªããŸããFile System Access APIã¯ããã³ãã«ã䜿çšããããšã§ããŠãŒã¶ãŒãæç€ºçã«éžæãããã¡ã€ã«ã®ã¿ãå ¬éããããã«ãŒãä»ãããŠãŒã¶ãŒæäœãèŠæ±ããããšã«ããããããé²ããŸãã
5. 誀çšãšæœåšçãªè匱æ§ã®å±éºæ§
å ç¢ãªã»ãã¥ãªãã£å¯Ÿçã«ãããããããéçºè ã¯æœåšçãªèœãšãç©Žã«æ³šæããå¿ èŠããããŸãïŒ
- ãµãŒãã¹æåŠïŒDoSïŒïŒæªæãæã£ãŠäœæãããã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã«ç¹°ãè¿ããã¡ã€ã«ã¢ã¯ã»ã¹ãä¿ãããŠãŒã¶ãŒãå§åããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãäœäžãããå¯èœæ§ããããŸãã
- ããŒã¿ã®äžæžãïŒèšèšãäžååãªã¢ããªã±ãŒã·ã§ã³ã¯ããã¡ã€ã«ã®æžã蟌ã¿ãæ éã«åŠçããªãå Žåãæå³ããã«éèŠãªãŠãŒã¶ãŒãã¡ã€ã«ãäžæžãããå¯èœæ§ããããŸããéçºè ã¯ãç Žå£çãªæäœã«å¯ŸããŠé©åãªãšã©ãŒåŠçãšç¢ºèªãã€ã¢ãã°ãå®è£ ããå¿ èŠããããŸãã
- æ å ±æŒæŽ©ïŒä»»æã®ãã¡ã€ã«ãžã®çŽæ¥ã¢ã¯ã»ã¹ã¯é²æ¢ãããŠããŸããããã£ã¬ã¯ããªãžã®ã¢ã¯ã»ã¹ãèš±å¯ãããã¢ããªã±ãŒã·ã§ã³ã¯ãã³ã³ãã³ããèªã¿åããªããŠãããã¡ã€ã«åããµã€ãºãæŽæ°æ¥ã芳å¯ããããšã§æ å ±ãæšæž¬ã§ããå¯èœæ§ããããŸãã
- é«åºŠãªãã£ãã·ã³ã°æ»æïŒæªæã®ãããŠã§ããµã€ãããæ£èŠã®ã¢ããªã±ãŒã·ã§ã³ã®ãã¡ã€ã«ããã«ãŒãã€ã¢ãã°ã«ãªãããŸããŠããŠãŒã¶ãŒãã ãŸããŠæ©å¯ãã¡ã€ã«ãžã®ã¢ã¯ã»ã¹ãèš±å¯ãããããšããå¯èœæ§ããããŸããããããçŸä»£ã®ãã©ãŠã¶UIã¯äžè¬çã«ããã®ãããªãªãããŸããå°é£ã«ããããã«èšèšãããŠããŸãã
ã®ã£ãããåããïŒããã°ã¬ãã·ããŠã§ãã¢ããªãšãã€ãã£ãæ©èœ
File System Access APIã¯ãããã°ã¬ãã·ããŠã§ãã¢ããªïŒPWAïŒããã€ãã£ãã«è¿ãæ©èœãå®çŸããããã®éèŠãªã€ããŒãã©ãŒã§ããPWAã¯ãŠã§ãäžã§ã¢ããªã®ãããªäœéšãæäŸããããšãç®æããŠãããå€ãã®é«åºŠãªãŠãŒã¹ã±ãŒã¹ã«ãšã£ãŠããŒã«ã«ãã¡ã€ã«ã·ã¹ãã ã®æäœã¯äžå¯æ¬ ã§ãã
ã¢ããªã±ãŒã·ã§ã³éçºã®åœéçãªäºäŸ
ããŸããŸãªå°åããã®APIãã©ã®ããã«æŽ»çšããããèããŠã¿ãŸãããïŒ
- ã¢ãã€ã«æ®åçãé«ããåŸæ¥ã®ãã¹ã¯ãããå©çšãéãããŠããå°åïŒäŸïŒã¢ããªã«ãæ±åã¢ãžã¢ã®äžéšïŒã§ã¯ãFile System Access APIã«ãã£ãŠåŒ·åããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãã¢ãã€ã«ãã©ãŠã¶ããçŽæ¥åŒ·åãªçç£æ§ããŒã«ãæäŸã§ããã¢ããªã¹ãã¢ããã€ãã£ãã¢ããªéçºãžã®äŸåãæžããããšãã§ããŸããã±ãã¢ã®å°å ã®è·äººã¯ããŠã§ãããŒã¹ã®åšåº«ç®¡çããŒã«ã䜿çšããŠãæºåž¯é»è©±ã®ã¹ãã¬ãŒãžã«ä¿åãããŠããååç»åã«çŽæ¥ã¢ã¯ã»ã¹ããŠæŽæ°ããããšãã§ããŸãã
- çç£æ§ãœãããŠã§ã¢ã«éç¹ã眮ãå é²åžå ŽïŒäŸïŒåç±³ããšãŒãããïŒã§ã¯ãäŒæ¥ã¯ããè€éãªã¯ãŒã¯ãããŒããŠã§ãã«ç§»è¡ã§ããŸããäŸãã°ããã€ãã®æ³åŸäºåæã¯ãåŒè·å£«ãããŒã«ã«ã«ä¿åãããã¯ã©ã€ã¢ã³ãã®äºä»¶ãã¡ã€ã«ã«çŽæ¥ã¢ã¯ã»ã¹ããŠç·šéã§ãããŠã§ãããŒã¹ã®ææžç®¡çã·ã¹ãã ã䜿çšãããŠã§ãã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠç®¡çããã匷åãããã»ãã¥ãªãã£ãšç£æ»èšŒè·¡ãåããããšãã§ããŸãã
- è€æ°ã®åœã«ãŸãããå ±åäœæ¥ç°å¢ïŒäŸïŒå€åœç±ã®ç ç©¶ãããžã§ã¯ãïŒã§ã¯ããŠã§ãããŒã¹ã®å ±åãã©ãããã©ãŒã ãAPIã䜿çšããŠãç ç©¶è ã®ãã·ã³ã«ããŒã«ã«ã«ä¿åãããç ç©¶ããŒã¿ãå®éšçµæããŸãã¯ããŒã¿ã»ãããåæãããå°ççã«åæ£ããããŒã éã§äžè²«æ§ã確ä¿ã§ããŸããããªãæ¥æ¬ãç±³åœã®å€©äœç©çåŠè ã®ããŒã ã¯ãå ±æãŠã§ãã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠãããŒã«ã«ãã¡ã€ã«ã·ã¹ãã ããçŽæ¥èŠ³æž¬ããŒã¿ãå ±åã§åæããããšãã§ããŸãã
éçºè åãã®ãã¹ããã©ã¯ãã£ã¹
File System Access APIã广çãã€å®å šã«å®è£ ããããã«ãéçºè ã¯ä»¥äžã®ãã¹ããã©ã¯ãã£ã¹ã«åŸãã¹ãã§ãïŒ
-
åžžã«æç€ºçãªãŠãŒã¶ãŒã®åæãæ±ãã
èš±å¯ããããšæ±ºããŠæã蟌ãŸãªãã§ãã ããããŠãŒã¶ãŒããã¡ã€ã«ã¢ã¯ã»ã¹ãå¿ èŠãšããã¢ã¯ã·ã§ã³ïŒäŸïŒãååãä»ããŠä¿åããã¿ã³ã®ã¯ãªãã¯ããã¡ã€ã«ã®ã€ã³ããŒãïŒãæç€ºçã«èŠæ±ããå Žåã«ã®ã¿ããã¡ã€ã«ããã«ãŒïŒ
showOpenFilePicker
ãshowSaveFilePicker
ãshowDirectoryPicker
ïŒãããªã¬ãŒããŠãã ããã -
æç¢ºãªãŠãŒã¶ãŒãã£ãŒãããã¯ãæäŸãã
ã¢ããªã±ãŒã·ã§ã³ãã©ã®ãã¡ã€ã«ããã£ã¬ã¯ããªã«ã¢ã¯ã»ã¹ããå¿ èŠãããã®ãããããŠãã®çç±ããŠãŒã¶ãŒã«äŒããŠãã ãããã¢ã¯ã»ã¹ãèš±å¯ããå©ç¹ã説æããŠãã ããã
-
æš©éãé©åã«åŠçãã
ãŠãŒã¶ãŒãèš±å¯ãæåŠããå Žåãç¹°ãè¿ãããã³ããã衚瀺ããªãã§ãã ããã代ããã«ããã圌ããèããå€ããå Žåã«ããã©ãŠã¶ã®èšå®ãžã®ãªã³ã¯ãªã©ãéããŠèš±å¯ãäžããæ¹æ³ãæ¡å ããŠãã ããã
-
å ç¢ãªãšã©ãŒåŠçãå®è£ ãã
ãã¡ã€ã«æäœã¯å€ãã®çç±ïŒæš©éã®åé¡ããã¡ã€ã«ã䜿çšäžããã£ã¹ã¯ããã£ã±ããªã©ïŒã§å€±æããå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³ã¯ãããã®å€±æãäºæž¬ãããŠãŒã¶ãŒã«æçãªãšã©ãŒã¡ãã»ãŒãžãæäŸãã¹ãã§ãã
-
ããŒã¿æŽåæ§ã«æ³šæãæã
æžãèŸŒã¿æäœãç¹ã«æ¢åã®ãã¡ã€ã«ãäžæžãããæäœã«ã€ããŠã¯ãå¶çºçãªããŒã¿æå€±ãé²ãããã«ç¢ºèªãã€ã¢ãã°ã远å ããããšãæ€èšããŠãã ããã
showSaveFilePicker
ã®mode
ãªãã·ã§ã³ïŒäŸïŒå¶çºçãªäžæžããé¿ããããã®readwrite
ãread
ïŒãæ éã«äœ¿çšããŠãã ããã -
ãŠãŒã¶ãŒãéžæããå Žæãå°éãã
ãã¡ã€ã«ãä¿åããéãããã©ã«ãã®å Žæãæšæž¬ããã匷å¶ãããããã®ã§ã¯ãªãã
showSaveFilePicker
ã«ãã£ãŠæäŸããããã¹ã䜿çšããŠãã ãããããã¯ãŠãŒã¶ãŒã®ãã¡ã€ã«ç®¡çã®å¥œã¿ãå°éããŸãã -
ãã³ãã«ã®ã¹ã³ãŒããçè§£ãã
ãã³ãã«ã¯ãªãªãžã³ã«ã¹ã³ãŒããããŠããããšãå¿ããªãã§ãã ãããã¢ããªã±ãŒã·ã§ã³ãç°ãªãã»ãã¥ãªãã£ã³ã³ããã¹ããæã€ç°ãªããµããã¡ã€ã³ããŸããã§äœ¿çšãããå Žåããã³ãã«ãåååŸããå¿ èŠããããããããŸããã
-
æ©å¯æ§ã®é«ãã·ã¹ãã ãã¹ãé¿ãã
APIã¯ä»»æã®ãã¹ãžã®çŽæ¥ã¢ã¯ã»ã¹ãé²ããŸãããéçºè ã¯ç¹å®ã®ã·ã¹ãã ãã£ã¬ã¯ããªãããŒãã³ãŒãããããã¢ã¯ã»ã¹ãæåŸ ããããã¹ãã§ã¯ãããŸããããŠãŒã¶ãŒã®éžæã«ã¢ã¯ã»ã¹å¯èœãªãã¡ã€ã«ãå§ããŠãã ããã
-
ãã©ãŠã¶ãšãã©ãããã©ãŒã éã§ãã¹ããã
File System Access APIã¯ãŸã é²åäžã§ããããã©ãŠã¶ã®ãµããŒãã¯ç°ãªãå ŽåããããŸããç°ãªããã©ãŠã¶ïŒChrome, Edge, Operaãªã©ïŒããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§å®è£ ã培åºçã«ãã¹ãããäžè²«ããåäœã確èªããŠãã ããã
-
ã¢ã¯ã»ã·ããªãã£ãèæ ®ãã
ãã¡ã€ã«ã¢ã¯ã»ã¹ãèš±å¯ããããã»ã¹ããé害ãæã€ãŠãŒã¶ãŒã«ãã¢ã¯ã»ã¹å¯èœã§ããããšã確èªããŠãã ãããããã«ã¯ããã¡ã€ã«ããã«ãŒã®æäœã«ã€ãªããã«ã¹ã¿ã UIèŠçŽ ã«å¯Ÿããé©åãªARIA屿§ãããŒããŒãããã²ãŒã·ã§ã³ãå«ãŸããŸãã
ãŠã§ãã«ãããããŒã«ã«ãã¡ã€ã«æäœã®æªæ¥
File System Access APIã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ãšãã€ãã£ããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã®å¢çç·ãææ§ã«ããããã®éèŠãªäžæ©ã§ããããŒã«ã«ãã¡ã€ã«ãžã®å¶åŸ¡ãããã¢ã¯ã»ã¹ãæäŸããããšã§ãéçºè ã¯ãã匷åã§ã倿©èœã§ããŠãŒã¶ãŒãã¬ã³ããªãŒãªäœéšãæ§ç¯ããããšãã§ããŸãããŠãŒã¶ãŒã®åæãšå ç¢ãªãµã³ãããã¯ã¹åãéèŠããããšã§ããã®æ©èœã®åäžãã»ãã¥ãªãã£ãç ç²ã«ããªãããšãä¿èšŒãããŸãã
ãŠã§ãæè¡ãæçãç¶ããã«ã€ããŠããã®APIãæŽ»çšããããã«é©æ°çãªã¢ããªã±ãŒã·ã§ã³ãç»å ŽããããšãæåŸ ã§ããŸãããŠãŒã¶ãŒã®ãã¡ã€ã«ã·ã¹ãã ãšå¯Ÿè©±ããèœåã¯ãä»ã®åŒ·åãªãŠã§ãAPIãšçžãŸã£ãŠãäžçäžã®ãŠãŒã¶ãŒã«ãšã£ãŠããçµ±åãããçç£çãªãªã³ã©ã€ã³äœéšãããããããšã¯ééããããŸãããéçºè ã«ãšã£ãŠãFile System Access APIãçè§£ãã責任ãæã£ãŠå®è£ ããããšã¯ããŸããŸãçžäºæ¥ç¶ãããããžã¿ã«äžçã®èŠæ±ã«å¿ããæ¬¡äžä»£ã®æŽç·ŽããããŠã§ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äžå¯æ¬ ã§ãã
ãŠã§ããã©ãŠã¶ã«ããããã¡ã€ã«ã¢ã¯ã»ã¹ã®éã®ãã¯ãæ©èœæ§ãšã»ãã¥ãªãã£ã®ãã©ã³ã¹ãåããã®ã§ãããFile System Access APIã¯ãæçããå®å šãªã¢ãããŒãã代衚ãããŠãŒã¶ãŒãšãã®ããŒã¿ãä¿è·ããéèŠãªã»ãã¥ãªãã£å¢çãç¶æããªããã匷åãªããŒã«ã«ãã¡ã€ã«æäœãå¯èœã«ããŸãã