noteã®å£ãå£ããŸãããé³å£°ãŠãŒã¶ãŒãèªäœããChromeæ¡åŒµ
åã蟌ã¿ãå
¥ããã
é³å£°ãå
¥ããã
ç»åãå
¥ããã
noteã§èšäºãæžããšãããã®3ã€ã®æäœã«ãã€ãè©°ãŸã£ãŠããã
ã«ãŒãœã«ãåãããããªããå
¥å£ã«ãã©ãçããªãã
é 匵ãã°ã§ãããã§ã¯ãªããããããå°éã§ããªãã
ã ãããChromeæ¡åŒµãèªäœããã
以åããããªèšäºãæžããŸããã
ããã¯äœãšãæäœã¯èªåã§ã§ããŸããã
ããããä»åã¯ã©ãããã°ã£ãŠãç¡çã§ããã
ð€ noteã®ãšãã£ã¿ãŒã§ã€ãŸããã
ä»åã€ãŸãããã®ã¯ãnoteã®Webçãšãã£ã¿ãŒã§ãã
ã·ã§ãŒãã«ããã詊ããŸãããã§ããæéãããã以åã«ãããããæ¿å ¥ãã€ã³ãã«ã«ãŒãœã«ãåãããããªãããšããããŸããã
ç¹ã«ã€ããã®ããåã蟌ã¿ã»é³å£°ã»ç»åãèšäºã®äœéšãäœã倧äºãªéšåã»ã©ãããã§è©°ãŸãã
ããšãã°YouTubeã®åã蟌ã¿ã
ã+ãã¿ã³ãæ¢ã â ã¡ãã¥ãŒãéã â åã蟌ã¿ãéžã¶ â URLãå ¥åã
ãã¿ã³ã«ã¯ãã©ãçãããã§ããæå³ããäœçœ®ã«æ¿å ¥ã§ããªããæ¥µç«¯ãªè©±ãæåãæåŸã«ããå ¥ããããªãã
ããã§è©°ãŸãã ãã§ãå¶äœã®ã¹ããŒããæ°æã¡ãåãããŸãã
ð¡ çºæ³ãå€ãã
å ¬åŒãšãã£ã¿ãŒãäœãå€ããã®ã§ã¯ãªããå ¬åŒãšãã£ã¿ãŒã®äžã«ãèãè£å©ã¬ã€ã€ãè¶³ãã
ãã®ããã«äœã£ãã®ããèªäœChromeæ¡åŒµã® Note Editor Helper ã§ãã
çã£ãã®ã¯ã掟æãªæ©èœã§ã¯ãããŸããã
ããŸã«ãŒãœã«ãããäœçœ®ããããèµ·ç¹ã«ãå¿ èŠãªæ¿å ¥ãæçã§éãã
åã蟌ã¿ãé³å£°ãç»åãç§ãäžçªå°ã£ãŠãããæ¿å ¥ããå©ããããšã ãã«éäžããŸããã
ãã®æ¡åŒµã䜿ããš:
ãAlt+âã§æ®µèœç§»å â Alt+Iã§æ¿å
¥äœçœ®ãèšå® â +ãã¿ã³ããåã蟌ã¿ã
æå³ããäœçœ®ã«ã確å®ã«æ¿å
¥ã§ããã
ð ïž æ¡åŒµã®ç¹åŸŽ
ãã®æ¡åŒµã§ã§ããããšã¯ãã·ã³ãã«ã§ãã
ã·ã§ãŒãã«ããããŒäžèЧ:
| ã㌠| åäœ |
|------|------|
| Alt + T | ç®æ¬¡ãéãïŒèŠåºãäžèЧã«ãžã£ã³ãïŒ |
| Alt + â | åã®ãããã¯ãžç§»å |
| Alt + â | 次ã®ãããã¯ãžç§»å |
| Alt + I | çŸåšäœçœ®ãæ¿å
¥ãã€ã³ãã«èšå® |
| Alt + / | ãã«ãã衚瀺 |
é³å£°èªã¿äžã察å¿:
ç§»åãããã³ã«ã3/10 èŠåºã: çºæ³ãå€ãããã®ããã«çŸåšäœçœ®ãèªã¿äžã
ç®æ¬¡ãéããšãèŠåºãã ããäžèŠ§è¡šç€º
æäœçµæããã¹ãŠé³å£°ã§éç¥
noteã®ãšãã£ã¿ãŒã¯ ProseMirror ãšãããªããããã¹ããšãã£ã¿ã䜿ã£ãŠããŸãããã®æ¡åŒµã¯ããã®äžã«ãããŒããŒãã ãã§æ®µèœãç§»åã§ããå±€ãã远å ããŠããŸãã
ð€ ã³ãŒãã£ã³ã°AIã«äœããã
ä»å䜿ã£ãã®ã¯ãã³ãŒãã£ã³ã°ã«ç¹åããAIãããããããã€ãã³ãŒãã£ã³ã°ããšããææ³ã§ãã
ãã€ãã³ãŒãã£ã³ã°ã«ã€ããŠã¯ã以åã®èšäºã§è©³ããæžããŠããŸãã
ãã€ãã³ãŒãã£ã³ã°ãšã¯ãã³ãŒããèªåã§æžããã«ãAIã«ããããããã®ã欲ããããšäŒããŠäœãããæ¹æ³ãããã°ã©ãã³ã°ã®ç¥èããªããŠããå°ãããšãšçæ³ãèšèã«ã§ããã°ãåããã®ãæã«å ¥ãã
ã³ãŒããæžããªããŠããæ€èšŒãšãã£ãŒãããã¯ãã§ããã°ãèªåå°çšã®ããŒã«ãäœããæä»£ã§ãã
ð AIã«æž¡ããèŠä»¶å®çŸ©
以äžããå®éã«ã³ãŒãã£ã³ã°AIã«æž¡ããããã³ããã§ãããã®ãŸãŸã³ããŒããŠæž¡ãã°ãåãæ¡åŒµãäœããŸãã
ã1. æŠèŠã
note.com ã®ãšãã£ã¿ãŒïŒeditor.note.com ããã³ note.comïŒã§åäœããChromeæ¡åŒµãäœæããŠãã ããã
ç®çã¯ãã¹ã¯ãªãŒã³ãªãŒããŒïŒé³å£°èªã¿äžããœããïŒã䜿ããŠãŒã¶ãŒããããŒããŒãã ãã§ãšãã£ã¿ãŒå
ãç§»åããä»»æã®äœçœ®ã«æ¿å
¥ãã€ã³ããèšå®ã§ããããã«ããããšã§ãã
ã2. 察象ç°å¢ã
- Chromeæ¡åŒµïŒManifest V3ïŒ
- åäœãµã€ã: editor.note.com/* ããã³ note.com/*
- noteã®ãšãã£ã¿ãŒã¯ ProseMirror ã䜿çšããŠããŸã
ã3. æ©èœèŠä»¶ã
3-1. ãããã¯ç§»åæ©èœ
- Alt + â: 次ã®ãããã¯ïŒæ®µèœãèŠåºããåºåãç·ãç»åãªã©ïŒãžç§»å
- Alt + â: åã®ãããã¯ãžç§»å
- ç§»åæãçŸåšäœçœ®ãã3/10 èŠåºã: ã¿ã€ãã«åãã®ããã«èªã¿äžã
- æåãŸãã¯æåŸã®ãããã¯ã«éãããããã®æšãèªã¿äžã
3-2. ç®æ¬¡æ©èœ
- Alt + T: èŠåºãïŒh2ïŒã®äžèЧããã€ã¢ãã°ã§è¡šç€º
- ââããŒã§éžæãEnterã§è©²åœèŠåºããžç§»å
- IããŒã§éžæäžã®èŠåºãã®åŸã«æ¿å
¥äœçœ®ãèšå®
- Escã§ãã€ã¢ãã°ãéãã
- éžæäžã®èŠåºããèªã¿äžã
3-3. æ¿å
¥äœçœ®èšå®æ©èœ
- Alt + I: çŸåšã®ãããã¯ã®æ«å°Ÿãæ¿å
¥ãã€ã³ããšããŠèšå®
- èšå®åŸããæ¿å
¥äœçœ®ãèšå®: ââ ã®åŸããšèªã¿äžã
- ProseMirrorãã«ãŒãœã«äœçœ®ãèªèã§ãããããããŠã¹ã€ãã³ãã®ã·ãã¥ã¬ãŒããè¡ã
3-4. ãã«ãæ©èœ
- Alt + /: ã·ã§ãŒãã«ããããŒäžèЧãalertã§è¡šç€º
ã4. ã¢ã¯ã»ã·ããªãã£èŠä»¶ã
- ãã¹ãŠã®æäœçµæã aria-live="assertive" ã§èªã¿äžã
- ãã€ã¢ãã°ã«ã¯ role="dialog" ãš aria-label ãèšå®
- ãªã¹ãããã¯ã¹ã«ã¯ role="listbox" ãš aria-selected ãèšå®
- ãã©ãŒã«ã¹ç®¡çãé©åã«è¡ãããã€ã¢ãã°ãéããããšãã£ã¿ãŒã«ãã©ãŒã«ã¹ãæ»ã
ã5. ã»ãã¥ãªãã£èŠä»¶ã
- å€éšãµãŒããŒãžã®éä¿¡ã¯äžåè¡ããªã
- ãŠãŒã¶ãŒã®å
¥åå
容ãèšäºããŒã¿ãåéã»éä¿¡ããªã
- localStorage ã cookies ãžã®ã¢ã¯ã»ã¹ã¯è¡ããªã
- DOMæäœã¯ note.com ãã¡ã€ã³å
ã®ã¿ã«éå®ïŒmanifest.jsonã®matchesã§å¶éïŒ
- Content Security Policy ãéµå®
- eval() ã new Function() ã¯äœ¿çšããªã
- innerHTMLãžã®ãŠãŒã¶ãŒå
¥åã®ä»£å
¥ã¯è¡ããªãïŒXSS察çïŒ
- å€éšã©ã€ãã©ãªã¯èªã¿èŸŒãŸãªãïŒäŸåé¢ä¿ãæããªãïŒ
ã6. ãã¡ã€ã«æ§æã
- manifest.json: æ¡åŒµã®èšå®ãã¡ã€ã«
- content.js: ã¡ã€ã³ã®åŠçïŒããŒããŒãã€ãã³ããDOMæäœãèªã¿äžãïŒ
- styles.css: èªã¿äžãçšèŠçŽ ã®é衚瀺ã¹ã¿ã€ã«
ã7. manifest.json ã®èŠä»¶ã
- manifest_version: 3
- content_scripts ã§ note.com ãš editor.note.com ã«ããã
- permissions ã¯æå°éïŒç¹å¥ãªæš©éã¯äžèŠïŒ
- ã¢ã€ã³ã³ã¯48pxãš128pxãçšæ
ã8. å®è£
äžã®æ³šæã
- ProseMirrorãšãã£ã¿ãŒã¯ .ProseMirror ã¯ã©ã¹ã§ååŸ
- ãããã¯èŠçŽ ã¯ h2, p, hr, figure ãã»ã¬ã¯ã¿ã§ååŸ
- ã«ãŒãœã«ç§»å㯠Selection API ãš Range API ã䜿çš
- ProseMirrorã«ã«ãŒãœã«äœçœ®ãèªèããããããmousedown/mouseup ã€ãã³ããã·ãã¥ã¬ãŒã
- ç®æ¬¡ãã€ã¢ãã°ãéããŠãããšãã¯ãä»ã®ã·ã§ãŒãã«ãããç¡å¹åðŠ æ¡åŒµã®æ§æãã¡ã€ã«
Chromeæ¡åŒµã¯3ã€ã®ãã¡ã€ã«ã§æ§æãããŸãã
| ãã¡ã€ã« | åœ¹å² |
|----------|------|
| manifest.json | æ¡åŒµã®ååãããŒãžã§ã³ãåäœãããµã€ããèªã¿èŸŒããã¡ã€ã«ãæå® |
| content.js | ããŒããŒãæäœãåãåãããšãã£ã¿ãŒå
ãç§»åããåŠç |
| styles.css | èªã¿äžãçšã®é衚瀺èŠçŽ ã®ã¹ã¿ã€ã« |
ããããåããã©ã«ãã«å ¥ããŠãChromeã«èªã¿èŸŒãŸããŸãã
ð¥ Chromeã«ã€ã³ããŒãããæ¹æ³
ãã®æ¡åŒµã¯Chrome Web Storeã«å ¬éããŠããŸããããããããããŒã¢ãŒããã§æåã€ã³ã¹ããŒã«ããŸãã
æé :
3ã€ã®ãã¡ã€ã«ãåããã©ã«ãã«å ¥ãã
Chromeã§ `chrome://extensions` ãéã
ç»é¢å³äžã®ãããããããŒã¢ãŒããããªã³ã«ãã
ãããã±ãŒãžåãããŠããªãæ¡åŒµæ©èœãèªã¿èŸŒãããã¯ãªãã¯
ãã¡ã€ã«ãå ¥ã£ããã©ã«ããéžæ
å®äºãnoteã®ãšãã£ã¿ãŒãéããšèªåã§æå¹ã«ãªã
泚æ:
ãã¹ã¯ãããçChromeéå®ã§ã
ChromeãæŽæ°ãããšããŸãã«æ¡åŒµãç¡å¹ã«ãªãããšããããŸãïŒå床æå¹åããã°OKïŒ
ð é åžã«ã€ããŠ
ããåãæ©ã¿ããã£ãŠã詊ããŠã¿ããæ¹ãããã°ãæ¡åŒµãã¡ã€ã«ã®æäŸãèããŠããŸããã³ã¡ã³ãã§ææè¡šç€ºãããã ããã°ãåãæž¡ãæ¹æ³ãæ¡å ããŸãã
â»ãã¹ã¯ãããçChromeéå®ãç°å¢å·®ã§åããªãå ŽåããããŸããåäœä¿èšŒã¯ã§ããŸããããåãå£ã«ã¶ã€ãã£ãŠããæ¹ã®å©ãã«ãªãã°ã
#ã¢ã¯ã»ã·ããªã㣠#èŠèŠé害 #Chromeæ¡åŒµ #note #å šç²ã¯ãªãšã€ã¿ãŒ #AIæŽ»çš #ãã€ãã³ãŒãã£ã³ã°