Web Share APIã䜿ã£ãŠããŠã§ãã¢ããªã±ãŒã·ã§ã³å šäœã§ã·ãŒã ã¬ã¹ãªå ±æäœéšãå®çŸããŸãããããã€ãã£ãçµ±åããã©ãããã©ãŒã ã®åäœããããŠã°ããŒãã«ãªãŒãã£ãšã³ã¹åãã®ãã¹ããã©ã¯ãã£ã¹ãæ¢ããŸãã
Web Share API: ãã€ãã£ãå ±ææ©èœã®çµ±åãšãã©ãããã©ãŒã åºæã®åäœ
Web Share APIã¯ããŠã§ãéçºè ããŠãŒã¶ãŒã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ãã€ãã£ãå ±ææ©èœããŠã§ãã¢ããªã±ãŒã·ã§ã³ããçŽæ¥åŒã³åºãããšãå¯èœã«ããŸããããã«ããããŠãŒã¶ãŒã¯ãªã³ã¯ãããã¹ãããã¡ã€ã«ãªã©ã®ã³ã³ãã³ãããããã€ã¹ã§æ £ã芪ããã åãã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããŠãé£çµ¡å ãä»ã®ã¢ããªãšå ±æã§ããŸãããã®ããã°èšäºã§ã¯ãWeb Share APIããã®å©ç¹ããã©ãããã©ãŒã åºæã®åäœã«ããå¶éãæ¢ããå®è£ ã®ããã®å®è·µçãªã¬ã€ãã³ã¹ãæäŸããŸãã
Web Share APIãšã¯ïŒ
Web Share APIã¯ãããã€ã¹ã®ãã€ãã£ãå ±æã¡ã«ããºã ããŠã§ãã¢ããªã±ãŒã·ã§ã³ããããªã¬ãŒããããã®ãã·ã³ãã«ã§æšæºåãããæ¹æ³ãæäŸãããŠã§ãæšæºã§ããéçºè ã¯ãã«ã¹ã¿ã ã®å ±æãœãªã¥ãŒã·ã§ã³ïŒå€ãã®å Žåãè€éãªUIèŠçŽ ãåã ã®ãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ãšã®çµ±åã䌎ãïŒãäœæãã代ããã«ãWeb Share APIãæŽ»çšããŠããŠãŒã¶ãŒã®ããã€ã¹ãšçµ±åãããŠãããã®ããã«æããããã·ãŒã ã¬ã¹ã§äžè²«ããå ±æäœéšãæäŸã§ããŸããããã«ãããç¹ã«ããã°ã¬ãã·ããŠã§ãã¢ããªïŒPWAïŒã«ãããŠããŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ãã®åäžãšããããã€ãã£ãã©ã€ã¯ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®æè§ŠãåŸãããŸãã
äž»ãªæ©èœ:
- ãã€ãã£ãçµ±å: APIã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«çµã¿èŸŒãŸããå ±æãã€ã¢ãã°ãå©çšãããŠãŒã¶ãŒã«éŠŽæã¿ã®ããäžè²«ããäœéšãæäŸããŸãã
- ç°¡çŽ åãããå ±æ: éçºè ã¯ãæå°éã®ã³ãŒãã§ãªã³ã¯ãããã¹ãããã¡ã€ã«ãç°¡åã«å ±æã§ããŸãã
- ã¯ãã¹ãã©ãããã©ãŒã äºææ§: APIã¯äžè²«æ§ãç®æããŠããŸãããåãã©ãããã©ãŒã ã§å©çšå¯èœãªå ±æãªãã·ã§ã³ã«é©å¿ããŸãã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäž: ãŠãŒã¶ãŒããŠã§ãã¢ããªã±ãŒã·ã§ã³ããã³ã³ãã³ããå ±æããããã®ãããéããããçŽæçãªæ¹æ³ãæäŸããŸãã
Web Share APIã䜿çšããå©ç¹
Web Share APIãå®è£ ããããšã¯ããŠã§ãéçºè ãšãŠãŒã¶ãŒã®äž¡æ¹ã«ããã€ãã®å©ç¹ããããããŸãã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäž: ãã€ãã£ãã®å ±æäœéšã¯ãã«ã¹ã¿ã æ§ç¯ããããœãªã¥ãŒã·ã§ã³ãããé«éã§çŽæçãªå Žåãå€ãã§ãããŠãŒã¶ãŒã¯ãããã€ã¹äžã®å ±æãã€ã¢ãã°ãã©ã®ããã«æ©èœãããããã§ã«çè§£ããŠããŸãã
- ãšã³ã²ãŒãžã¡ã³ãã®å¢å : ã³ã³ãã³ããç°¡åã«å ±æã§ããããã«ããããšã§ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã³ãã«ã€ããŠåºããããšãä¿ãããšãã§ããŸãã
- éçºåŽåã®åæž: APIã¯å ±æããã»ã¹ãç°¡çŽ åããã«ã¹ã¿ã å ±æãœãªã¥ãŒã·ã§ã³ãæ§ç¯ããå Žåãšæ¯èŒããŠãéçºè ã®æéãšåŽåãç¯çŽããŸãã
- PWAçµ±åã®æ¹å: Web Share APIã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ãšãã€ãã£ãã¢ããªéã®ã®ã£ãããåããã®ã«åœ¹ç«ã¡ãPWAããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ããçµ±åãããŠããããã«æããããŸãã
- ã¢ã¯ã»ã·ããªãã£: ãã€ãã£ãå ±æã·ãŒããå©çšããããšã§ãã«ã¹ã¿ã æ§ç¯ãããå®è£ ãããåªããã¢ã¯ã»ã·ããªãã£ãµããŒããæäŸãããããšããããããŸãã
ãã©ãããã©ãŒã åºæã®åäœãšèæ ®äºé
Web Share APIã¯ã¯ãã¹ãã©ãããã©ãŒã ã®äžè²«æ§ãç®æããŠããŸãããç°ãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã©ãŠã¶ãç¬èªã®åäœãå¶éã瀺ãå¯èœæ§ãããããšãçè§£ããããšãéèŠã§ãã倿§ãªããã€ã¹ãæã€ã°ããŒãã«ãªãŒãã£ãšã³ã¹ã«ã¹ã ãŒãºãªå ±æäœéšãæäŸããããã«ã¯ããããã®ãã¥ã¢ã³ã¹ãçè§£ããããšãéåžžã«éèŠã«ãªããŸãã
ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®éã
ãã€ãã£ãå ±æã·ãŒãã®å€èŠ³ãšæ©èœã¯ãåºç€ãšãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠç°ãªããŸããäŸãã°ïŒ
- Android: Androidã®å ±æã·ãŒãã¯é«åºŠã«ã«ã¹ã¿ãã€ãºå¯èœã§ããŠãŒã¶ãŒã¯å¹ åºãã¢ããªããµãŒãã¹ããéžæã§ããŸãã
- iOS: iOSã¯ãã¢ããªã±ãŒã·ã§ã³å šäœã§äžè²«ããå€èŠ³ãšæäœæãæã€ãããå¶åŸ¡ãããå ±æã·ãŒããæäŸããŸãã
- ãã¹ã¯ããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã (Windows, macOS, Linux): æ©èœã¯ãã·ã¹ãã ã¬ãã«ã®å ±æãªãã·ã§ã³ãŸãã¯ããã©ã«ãã®ã¢ããªã±ãŒã·ã§ã³ïŒäŸïŒã¡ãŒã«ã¯ã©ã€ã¢ã³ããã¯ã©ãŠãã¹ãã¬ãŒãžãµãŒãã¹ïŒã«éå®ãããå ŽåããããŸãã
ãã©ãŠã¶ã®äºææ§
Web Share APIã®ãã©ãŠã¶ãµããŒãã¯å€§å¹ ã«åäžããŸããããå®è£ åã«äºææ§ã確èªããããšãäžå¯æ¬ ã§ãã2023幎æ«çŸåšãã»ãšãã©ã®ææ°ãã©ãŠã¶ã¯APIããµããŒãããŠããŸãããå€ãããŒãžã§ã³ãããŸãäžè¬çã§ãªããã©ãŠã¶ã¯ãµããŒãããŠããªãå ŽåããããŸããCan I use...ãªã©ã®ãªãœãŒã¹ã䜿çšããŠãçŸåšã®ãã©ãŠã¶ãµããŒãã確èªã§ããŸãã
APIã䜿çšããåã«ãæ©èœæ€åºã䜿çšããŠAPIãå©çšå¯èœã§ããããšã確èªããããšããå§ãããŸãã
if (navigator.share) {
// Web Share API is supported
navigator.share({
title: 'Example Title',
text: 'Example Text',
url: 'https://example.com'
})
.then(() => console.log('Successful share'))
.catch((error) => console.log('Error sharing', error));
} else {
// Web Share API is not supported, provide a fallback
console.log('Web Share API not supported');
}
ãã¡ã€ã«å ±æã®å¶é
Web Share APIã䜿çšãããã¡ã€ã«ã®å ±æã¯ããã©ãããã©ãŒã åºæã®å¶éããã¡ã€ã«ãµã€ãºã®å¶éã«ãããããè€éã«ãªãå¯èœæ§ããããŸããäžéšã®ãã©ãããã©ãŒã ã§ã¯ãå ±æã§ãããã¡ã€ã«ã®çš®é¡ã®å¶éãããã¡ã€ã«ã«ãµã€ãºå¶éã課ãå ŽåããããŸãããã¡ã€ã«å ±ææ©èœãå®è£ ããéã«ã¯ããããã®å¶çŽãèæ ®ããããšãéèŠã§ãã
äŸãã°ãiOSã¯Androidãšæ¯èŒããŠããã¡ã€ã«ã®çš®é¡ããµã€ãºã«é¢ããŠããå³ããå¶éãããããšãå€ãã§ãã倧ããªãããªãã¡ã€ã«ã®å ±æã¯åé¡ã«ãªãå¯èœæ§ãããããã¡ã€ã«ãã¯ã©ãŠãã¹ãã¬ãŒãžãµãŒãã¹ã«ã¢ããããŒãããŠãªã³ã¯ãå ±æãããªã©ã®ä»£æ¿æ¹æ³ãå®è£ ããå¿ èŠããããããããŸããã
ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
Web Share APIã¯ã»ãã¥ãªãã£ãèæ ®ããŠèšèšãããŠããŸããå®å šãªã³ã³ããã¹ãïŒHTTPSïŒããã®ã³ã³ãã³ãå ±æã®ã¿ãèš±å¯ããŸããããã«ãããå ±æãããããŒã¿ãæå·åãããååããä¿è·ãããŸããWeb Share APIã䜿çšããã«ã¯ããŠã§ããµã€ããåžžã«HTTPSã§æäŸãããŠããããšã確èªããŠãã ããã
Web Share APIã®å®è£ : å®è·µã¬ã€ã
ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã«Web Share APIãå®è£ ããããã®ã¹ããããã€ã¹ãããã¬ã€ãã以äžã«ç€ºããŸãã
- æ©èœæ€åº: APIã䜿çšããåã«ãåžžã«
navigator.share
ããããã£ãååšãããã©ããã確èªããŸãã - å ±æããŒã¿ã®æ§ç¯: å ±æããããŒã¿ïŒã¿ã€ãã«ãããã¹ããURLãããã³/ãŸãã¯ãã¡ã€ã«ïŒãå«ããªããžã§ã¯ããäœæããŸãã
navigator.share()
ã®åŒã³åºã: å ±æããŒã¿ãªããžã§ã¯ããæå®ããŠnavigator.share()
ã¡ãœãããåŒã³åºããŸãã- æåãšãšã©ãŒã®åŠç:
then()
ã¡ãœãããšcatch()
ã¡ãœããã䜿çšããŠãå ±ææäœã®æåãšå€±æã®ã±ãŒã¹ãåŠçããŸãã - ãã©ãŒã«ããã¯ã®æäŸ: Web Share APIããµããŒããããŠããªãå Žåã代æ¿ã®å ±æã¡ã«ããºã ïŒäŸïŒã«ã¹ã¿ã å ±æãã¿ã³ãŸãã¯ã¯ãªããããŒããžã®ã³ããŒæ©èœïŒãæäŸããŸãã
ã³ãŒãäŸ: ãªã³ã¯ã®å ±æ
次ã®ã³ãŒãã¹ããããã¯ãWeb Share APIã䜿çšããŠãªã³ã¯ãå ±æããæ¹æ³ã瀺ããŠããŸãã
function shareLink() {
if (navigator.share) {
navigator.share({
title: 'Check out this amazing website!',
text: 'This website is really cool.',
url: 'https://example.com'
})
.then(() => console.log('Shared successfully'))
.catch((error) => console.log('Error sharing:', error));
} else {
alert('Web Share API is not supported on this device/browser.');
// Provide a fallback, e.g., copy the link to the clipboard
navigator.clipboard.writeText('https://example.com')
.then(() => alert('Link copied to clipboard!'))
.catch(err => console.error('Failed to copy: ', err));
}
}
// Add an event listener to a button or link
document.getElementById('shareButton').addEventListener('click', shareLink);
ã³ãŒãäŸ: ãã¡ã€ã«ã®å ±æ
ãã¡ã€ã«ãå
±æããã«ã¯ããã¡ã€ã«éžæãåŠçããFile
ãªããžã§ã¯ããäœæããå¿
èŠããããããããå°ãèšå®ãå¿
èŠã§ããç°¡ç¥åãããäŸã次ã«ç€ºããŸãã
async function shareFiles(files) {
if (!navigator.canShare) {
alert("Web Share API not supported.");
return;
}
const shareData = {
files: files,
title: 'Shared Files',
text: 'Check out these files!'
};
try {
if (navigator.canShare(shareData)) {
await navigator.share(shareData);
console.log("Files shared successfully");
} else {
console.log("Cannot share these files");
}
} catch (err) {
console.error("Couldn't share files", err);
}
}
// Example usage:
const fileInput = document.getElementById('fileInput');
fileInput.addEventListener('change', (event) => {
const files = Array.from(event.target.files);
shareFiles(files);
});
ãã¡ã€ã«å ±æã«é¢ããéèŠãªèæ ®äºé :
navigator.canShare
: ããã䜿çšããŠãå ±æããããšããŠãããã¡ã€ã«ãå®éã«å ±æå¯èœãã©ããã確èªããŸãã- ãã¡ã€ã«ãµã€ãºã®å¶é: ãã©ãããã©ãŒã åºæã®ãã¡ã€ã«ãµã€ãºã®å¶éã«æ³šæããŠãã ããã
- ãã¡ã€ã«ã¿ã€ãã®å¶é: äžéšã®ãã©ãããã©ãŒã ã§ã¯ãå ±æã§ãããã¡ã€ã«ã®ã¿ã€ããå¶éãããå ŽåããããŸãã
- éåææäœ: ãã¡ã€ã«æäœã¯éåæã§ããããšãå€ãããã
async/await
ã䜿çšããŠé©åã«åŠçããŠãã ããã
Web Share APIã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
è¯å¥œãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã確ä¿ããWeb Share APIã®å¹æãæå€§åããããã«ã以äžã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããŠãã ããã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåªå ãã: å ±æããã»ã¹ãå¯èœãªéãçŽæçã§ã·ãŒã ã¬ã¹ãªãã®ã«ããŸãã
- æç¢ºãªæç€ºãæäŸãã: ãŠãŒã¶ãŒããã€ãã£ãå ±æã¡ã«ããºã ã䜿çšããŠã³ã³ãã³ããå ±æã§ããããšãæç¢ºã«ç€ºããŸãã銎æã¿ã®ããã¢ã€ã³ã³ïŒäŸïŒå ±æã¢ã€ã³ã³ïŒã䜿çšããŠãçºèŠãããããåäžãããŸãã
- ãšã©ãŒãé©åã«åŠçãã: å ±ææäœã倱æããå Žåãæçãªãšã©ãŒã¡ãã»ãŒãžãæäŸããŸãã
- ãã©ãŒã«ããã¯ãæäŸãã: ãã©ãŠã¶ãããã€ã¹ãWeb Share APIããµããŒãããŠããªããŠãŒã¶ãŒã®ããã«ãåžžã«ä»£æ¿ã®å ±æã¡ã«ããºã ãæäŸããŸãã
- 培åºçã«ãã¹ããã: ç°ãªãããã€ã¹ããã©ãŠã¶ã§å®è£ ããã¹ãããäºææ§ã確ä¿ãããã©ãããã©ãŒã åºæã®åé¡ãç¹å®ããŸããç¹ã«ãç°ãªãããŒãžã§ã³ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãæã€iOSããã³Androidããã€ã¹ã§ã®ãã¹ãã«æ³šæãæã£ãŠãã ããã
- ã³ã³ããã¹ããèæ ®ãã: å ±æãããã³ã³ãã³ãããŠãŒã¶ãŒã®ã¢ã¯ãã£ããã£ã®ã³ã³ããã¹ãã§æå³ããªãããšã確èªããŸããäŸãã°ãå ±æããã³ã³ãã³ãã«é¢ããé¢é£æ å ±ã§å ±æããã¹ããäºåã«å ¥åããŸãã
- ãŠãŒã¶ãŒã®ãã©ã€ãã·ãŒãå°éãã: å ±ææäœãå®äºããããã«å¿ èŠãªæå°éã®æ å ±ã®ã¿ãå ±æããŸããæ©å¯æ§ã®é«ããŠãŒã¶ãŒããŒã¿ã®å ±æã¯é¿ããŠãã ããã
ã°ããŒãã«ãªèæ ®äºé ãšããŒã«ãªãŒãŒã·ã§ã³
ã°ããŒãã«ãªãŒãã£ãšã³ã¹åãã«Web Share APIãå®è£ ããå ŽåãããŒã«ãªãŒãŒã·ã§ã³ãšæåçå·®ç°ãèæ ®ããããšãäžå¯æ¬ ã§ãã以äžã«çæãã¹ãéèŠãªãã€ã³ããããã€ã瀺ããŸãã
- èšèªãµããŒã: å ±æããŒã¿ãªããžã§ã¯ãã§æäŸããã¿ã€ãã«ãšããã¹ããããŠãŒã¶ãŒã®å¥œã¿ã®èšèªã«ããŒã«ã©ã€ãºãããŠããããšã確èªããŸãã
- æåçæåæ§: å ±æã¡ãã»ãŒãžãäœæããéã¯ãæåçèŠç¯ãšæåæ§ã«é æ ®ããŠãã ãããç¹å®ã®æåã§äžå¿«ãŸãã¯äžé©åãšã¿ãªãããå¯èœæ§ã®ããèšèãç»åã®äœ¿çšã¯é¿ããŠãã ããã
- ã¿ã€ã ãŸãŒã³: ã¢ããªã±ãŒã·ã§ã³ãæéã«é¢ããæ å ±ãå ±æããå ŽåããŠãŒã¶ãŒã®ã¿ã€ã ãŸãŒã³ãèæ ®ããå ±æãããã³ã³ãã³ããããã«å¿ããŠèª¿æŽããŸãã
- æ¥ä»ãšæ°å€ã®åœ¢åŒ: ãŠãŒã¶ãŒã®ãã±ãŒã«ã«é©ããæ¥ä»ãšæ°å€ã®åœ¢åŒã䜿çšããŸãã
- å³ããå·Šãžã®èšèª: ã³ã³ãã³ããå ±æããéã«ãã¢ããªã±ãŒã·ã§ã³ãå³ããå·Šãžã®èšèªïŒäŸïŒã¢ã©ãã¢èªãããã©ã€èªïŒãé©åã«ãµããŒãããŠããããšã確èªããŸãã
é«åºŠãªäœ¿çšæ³ãšå°æ¥ã®æ¹åæ§
Web Share APIã¯åžžã«é²åããŠãããæ°ããæ©èœãæ©èœãéæè¿œå ãããŠããŸããããã€ãã®é«åºŠãªäœ¿çšã·ããªãªãšæœåšçãªå°æ¥ã®æ¹åæ§ã«ã¯ä»¥äžãå«ãŸããŸãã
- ããŒã¿URLã®å ±æ: ããŒã¿URLïŒäŸïŒbase64æååãšããŠãšã³ã³ãŒããããç»åïŒã®å ±æã¯ãåçã«çæãããã³ã³ãã³ããå ±æããã®ã«åœ¹ç«ã¡ãŸãã
- é£çµ¡å ã®å ±æ: APIã®å°æ¥ã®ããŒãžã§ã³ã§ã¯ãé£çµ¡å æ å ±ãçŽæ¥å ±æããæ©èœããµããŒããããå¯èœæ§ããããŸãã
- å ±æã·ãŒãã®ã«ã¹ã¿ãã€ãº: APIã¯ãã€ãã£ãã®å ±æäœéšãæäŸããŸãããå°æ¥ãå ±æã·ãŒãã®å€èŠ³ãšæ©èœãã¢ããªã±ãŒã·ã§ã³ã®ãã©ã³ãã«ããåãããŠã«ã¹ã¿ãã€ãºããæ©äŒããããããããŸããããã ããããã¯ãŠãŒã¶ãŒã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšã®äžè²«æ§ãç¶æããããã«æ éã«æ€èšããŠè¡ãã¹ãã§ãã
çµè«
Web Share APIã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããããšã³ã²ãŒãžã¡ã³ããä¿é²ããããã®åŒ·åãªããŒã«ã§ãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ãã€ãã£ãå ±ææ©èœã掻çšããããšã§ãéçºè ã¯ãŠãŒã¶ãŒã®ããã€ã¹ãšçµ±åãããŠãããã®ããã«æããããã·ãŒã ã¬ã¹ã§äžè²«ããå ±æäœéšãæäŸã§ããŸããããããç°ãªãããã€ã¹ããã©ãŠã¶å šäœã§è¯å¥œãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã確ä¿ããããã«ã¯ãAPIã®ãã©ãããã©ãŒã åºæã®åäœãšå¶éãçè§£ããããšãäžå¯æ¬ ã§ãããã®ããã°èšäºã§æŠèª¬ãããŠãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãéçºè ã¯Web Share APIã广çã«å®è£ ããã°ããŒãã«ãªãŒãã£ãšã³ã¹åãã«ãããé åçã§å ±æå¯èœãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸããå®è£ ã¯åžžã«åŸ¹åºçã«ãã¹ãããAPIããµããŒãããŠããªããŠãŒã¶ãŒã®ããã«ãã©ãŒã«ããã¯ãæäŸããããšãå¿ããªãã§ãã ããã