Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ใฏใ˜ใ‚ใซ

ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰้–‹็™บใซใŠใ„ใฆใ€console.log() ใ‚„ fetch()ใฏๆฌ ใ‹ใ›ใชใ„ๅญ˜ๅœจใงใ™ใ€‚
ใ—ใ‹ใ—ใ€ๅฎŸใฏใ“ใ‚Œใ‚‰ใฏJavaScript่จ€่ชž่‡ชไฝ“ใฎๆฉŸ่ƒฝใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚
ใ“ใ‚Œใ‚‰ใฏใƒ–ใƒฉใ‚ฆใ‚ถใŒๆไพ›ใ™ใ‚‹Web APIใงใ‚ใ‚Šใ€JavaScriptใฏใใ‚Œใ‚’ๅ‘ผใณๅ‡บใ—ใฆใ„ใ‚‹ใซ้ŽใŽใพใ›ใ‚“ใ€‚

ใ“ใ‚Œใ‚‰ใฎAPIใซใฏ่ฑŠๅฏŒใช็จฎ้กžใŒใ‚ใ‚Šใพใ™ใ€‚
ๅ…ˆๆ—ฅใ€Web APIไธ€่ฆงใฎMDNใฎใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚’็œบใ‚ใฆใ„ใŸใ‚‰ใ€็Ÿฅใ‚‰ใชใ„APIใŒใŸใใ•ใ‚“ใ‚ใ‚‹ใ“ใจใซๆฐ—ใฅใใพใ—ใŸใ€‚
ใใ“ใงไปŠๅ›žใฏใ€ๆ™ฎๆฎตใ‚ใ‚“ใพใ‚Šไฝฟใ†ใ“ใจใŒใชใ„ใ‘ใฉไพฟๅˆฉใใ†ใƒป้ข็™ฝใใ†ใชAPIใ‚’ใ‚ตใƒณใƒ—ใƒซใ‚’ไบคใˆใฆ็ดนไป‹ใ—ใฆใ„ใใพใ™๏ผ

ใƒ–ใƒฉใ‚ฆใ‚ถใŒๆไพ›ใ™ใ‚‹ๆฉŸ่ƒฝ - Web API

ๅ…ˆ่ฟฐใ—ใŸใ‚ˆใ†ใซใ€console.log()ใ‚„fetch()ใ€DOMๆ“ไฝœใฎๆฉŸ่ƒฝใชใฉใฏJavaScriptใจใ„ใ†่จ€่ชžใใฎใ‚‚ใฎใฎๆฉŸ่ƒฝใงใฏใชใใ€ใƒ–ใƒฉใ‚ฆใ‚ถใŒๆไพ›ใ™ใ‚‹ๆฉŸ่ƒฝ๏ผˆAPI๏ผ‰ใงใ™ใ€‚
JavaScriptใŒๆบ–ๆ‹ ใ—ใฆใ„ใ‚‹ECMAScriptไป•ๆง˜ใซใฏใ€ใ“ใ‚Œใ‚‰ใฎAPIใฏๅฎš็พฉใ•ใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚
ใƒ–ใƒฉใ‚ฆใ‚ถใŒๆไพ›ใ™ใ‚‹ๆฉŸ่ƒฝใซใคใ„ใฆใฎๆจ™ๆบ–ไป•ๆง˜ใฏใ€WHATWGใ‚„W3Cใจใ„ใฃใŸๅ›ฃไฝ“ใŒๆฉŸ่ƒฝใ”ใจใซใพใจใ‚ใฆใ„ใพใ™ใ€‚๏ผˆไพ‹: Console Standard๏ผ‰
ใƒ–ใƒฉใ‚ฆใ‚ถใ”ใจใซใ“ใ‚Œใ‚‰ใฎไป•ๆง˜ใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใฎใงใ€ใƒ–ใƒฉใ‚ฆใ‚ถใซใ‚ˆใฃใฆไฝฟใˆใ‚‹APIใŒ็•ฐใชใฃใŸใ‚Šใ—ใพใ™ใ€‚
ใƒ–ใƒฉใ‚ฆใ‚ถใ”ใจใฎๅฏพๅฟœ็Šถๆณใฏใ€ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใซ่จ˜่ผ‰ใ•ใ‚Œใฆใ„ใ‚‹ใ“ใจใŒๅคšใ„ใงใ™ใ€‚

ใƒ–ใƒฉใ‚ฆใ‚ถใงใชใ‚“ใงใ‚‚ใงใใ‚‹ใž๏ผ่‰ฒใ‚“ใชWeb API

้ข็™ฝใ„๏ผไฝฟใฃใฆใฟใŸใ„๏ผใจๆ€ใฃใŸใƒ–ใƒฉใ‚ฆใ‚ถใฎAPIใ‚’็ดนไป‹ใ—ใฆใ„ใใพใ™ใ€‚็ฐกๅ˜ใชใƒ‡ใƒขใ‚’AIใซไฝœใฃใฆใ‚‚ใ‚‰ใ„ใพใ—ใŸใ€‚

ไธปใซChromeใงใฎๅ‹•ไฝœใ‚’ๆƒณๅฎšใ—ใฆใ„ใพใ™ใ€‚Safariใฏใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใฎ่ฆณ็‚นใ‹ใ‚‰ใ‹ใ€ๅฏพๅฟœใ—ใฆใ„ใ‚‹APIใฏไป–ใซๆฏ”ในใ‚‹ใจๅฐ‘ใชใ‹ใฃใŸใงใ™ใ€‚

1. File System Access API

ๆฆ‚่ฆใƒป็‰นๅพด:

ใƒ–ใƒฉใ‚ฆใ‚ถใงใƒ•ใ‚กใ‚คใƒซใฎ่ชญใฟๆ›ธใใŒใงใใ‚‹ใ‚ˆใ†ใซใชใ‚Šใพใ™ใ€‚
ใ“ใฎAPIใ‚’ไฝฟใˆใฐใ€ใƒ–ใƒฉใ‚ฆใ‚ถไธŠใงๅ‹•ไฝœใ™ใ‚‹ใ‚จใƒ‡ใ‚ฃใ‚ฟใฎใ‚ˆใ†ใชใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ไฝœๆˆใ™ใ‚‹ใ“ใจใŒใงใใพใ™๏ผ
VS Code (Web็‰ˆ) ใชใฉใ‚‚ใ“ใฎๆŠ€่ก“ใ‚’ไฝฟใฃใฆใ„ใพใ™ใ€‚

recording.gif

ไฝฟใ„ๆ–น:

let fileHandle;

// ใƒ•ใ‚กใ‚คใƒซใ‚’้–‹ใ
[fileHandle] = await window.showOpenFilePicker();

// ใƒ‡ใƒผใ‚ฟใ‚’ๆ›ธใ่พผใ‚€๏ผˆไธŠๆ›ธใไฟๅญ˜๏ผ‰
const writable = await fileHandle.createWritable();
await writable.write("Hello World!");
await writable.close();

2. Document Picture-in-Picture API

ๆฆ‚่ฆใƒป็‰นๅพด:

Picture-in-Picture (PiP) ใจใ„ใˆใฐๅ‹•็”ปใƒ—ใƒฌใ‚คใƒคใƒผใฎใ‚คใƒกใƒผใ‚ธใŒใ‚ใ‚Šใพใ™ใŒใ€ใ“ใฎAPIใ‚’ไฝฟใ†ใจใ€ไปปๆ„ใฎHTML่ฆ็ด ๏ผˆ<div>ใชใฉ๏ผ‰ใ‚’ๅˆฅใ‚ฆใ‚ฃใƒณใƒ‰ใ‚ฆใจใ—ใฆๅˆ‡ใ‚Š้›ขใ™ใ“ใจใŒใงใใพใ™ใ€‚
ใ„ใคใ‹ใ‚‰ใ‹ใ€Google Meetใงๅˆฅใฎใ‚ฟใƒ–ใ‚’้–‹ใใจๅ‚ๅŠ ่€…ใฎๆ˜ ๅƒใŒๅฐใ•ใ„ใ‚ฆใ‚ฃใƒณใƒ‰ใ‚ฆใจใ—ใฆใƒใƒƒใƒ—ใ‚ขใƒƒใƒ—ใ•ใ‚Œใ‚‹ใ‚ˆใ†ใซใชใ‚Šใพใ—ใŸใŒใ€ใ“ใฎAPIใ‚’ไฝฟใฃใฆใ„ใ‚‹ใฎใ‹ใชใ€‚

recording_2.gif

ไฝฟใ„ๆ–น:

// ๆ–ฐใ—ใ„PiPใ‚ฆใ‚ฃใƒณใƒ‰ใ‚ฆใ‚’้–‹ใ
const pipWindow = await documentPictureInPicture.requestWindow({
  width: 300,
  height: 300,
});

// ้€šๅธธใฎDOMๆ“ไฝœใงใ€ๅ…ƒใฎ็”ป้ขใ‹ใ‚‰่ฆ็ด ใ‚’็งปๅ‹•ใ•ใ›ใ‚‹
pipWindow.document.body.append(myAppElement);

3. Gamepad API

ๆฆ‚่ฆใƒป็‰นๅพด:

PCใ‚„ใ‚นใƒžใƒ›ใซๆŽฅ็ถšใ•ใ‚ŒใŸใ‚ฒใƒผใƒ ใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผใฎๅ…ฅๅŠ›ใ‚’ใ€JavaScriptใ‹ใ‚‰็›ดๆŽฅ่ชญใฟๅ–ใ‚‹ใ“ใจใŒใงใใ‚‹APIใงใ™ใ€‚
ใƒœใ‚ฟใƒณใฎON/OFFใ ใ‘ใงใชใใ€ใ‚ขใƒŠใƒญใ‚ฐใ‚นใƒ†ใ‚ฃใƒƒใ‚ฏใฎๅ‚พใใ‚‚ใƒชใ‚ขใƒซใ‚ฟใ‚คใƒ ใซๅ–ๅพ—ใงใใพใ™ใ€‚

ใƒ‡ใƒขใจใ—ใฆPS5ใฎDualSenseใ‚’ๆŽฅ็ถšใ—ใฆใฟใพใ—ใŸใ€‚DualSenseใฎใƒˆใƒชใ‚ฌใƒผใฃใฆใ€่ปฝใ็ตžใฃใŸใ‚Šใงใใ‚‹ใ‚“ใงใ™ใŒใ€ใƒˆใƒชใ‚ฌใƒผใฎinputใ‚‚0/1ใงใฏใชใ0.4ใฟใŸใ„ใชๆ„Ÿใ˜ใงใ€Œ็ตžใ‚‰ใ‚Œๅ…ทๅˆใ€ใŒๅ€คใจใ—ใฆ่ฟ”ใฃใฆใใฆใ„ใฆ้ฉšใใพใ—ใŸใ€‚PSใƒœใ‚ฟใƒณใ‚„ใ€ใ‚นใƒ†ใ‚ฃใƒƒใ‚ฏๆŠผใ—่พผใฟใ‚‚ๆคœ็Ÿฅใงใใ‚‹ใ€‚ใ™ใ”ใ„ใž๏ผ

recording_3.gif

ไฝฟใ„ๆ–น:

window.addEventListener("gamepadconnected", (e) => {
  console.log("ใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผๆŽฅ็ถš:", e.gamepad.id);
});

// ใ‚ฒใƒผใƒ ใƒซใƒผใƒ—ๅ†…ใงๅ…ฅๅŠ›ใ‚’็›ฃ่ฆ–ใ™ใ‚‹ใฎใŒไธ€่ˆฌ็š„
function loop() {
  const gamepads = navigator.getGamepads();
  const gp = gamepads[0]; // 1ใค็›ฎใฎใ‚ณใƒณใƒˆใƒญใƒผใƒฉใƒผ
  if (gp && gp.buttons[0].pressed) {
     // Aใƒœใ‚ฟใƒณใŒๆŠผใ•ใ‚ŒใŸ๏ผ
  }
  requestAnimationFrame(loop);
}

4. Summarizer API

ๆฆ‚่ฆใƒป็‰นๅพด:

ใƒ–ใƒฉใ‚ฆใ‚ถใซๅ†…่”ตใ•ใ‚Œใฆใ„ใ‚‹AIใƒขใƒ‡ใƒซใ‚’็”จใ„ใฆใ€ใƒ†ใ‚ญใ‚นใƒˆใ‚’่ฆ็ด„ใ™ใ‚‹APIใงใ™ใ€‚๏ผˆๅฎŸ้จ“ๆฎต้šŽ๏ผ‰ๅฏพๅฟœใ—ใฆใ„ใ‚‹ใƒ–ใƒฉใ‚ฆใ‚ถใฏๅฐ‘ใชใใ€ไฝฟ็”จใ™ใ‚‹้š›ใ‚‚ใ€ChromeใฎๅฎŸ้จ“็”จใฎใƒ•ใƒฉใ‚ฐใ‚’onใซใ—ใชใใฆใฏใชใ‚Šใพใ›ใ‚“ใงใ—ใŸใŒใ€้žๅธธใซ็พไปฃ็š„ใชAPIใงใ™ใ€‚
ใƒ–ใƒฉใ‚ฆใ‚ถใซๅ†…่”ตใ•ใ‚Œใฆใ„ใ‚‹ใ‚‚ใฎใ‚’ไฝฟใ†ใฎใงใ€้€šไฟกใŒ็™บ็”Ÿใ—ใพใ›ใ‚“ใ—ใ€ใƒ—ใƒฉใ‚คใƒใ‚ทใƒผใ‚‚ๅฎˆใ‚‰ใ‚Œใพใ™ใ€‚
่ฆ็ด„ใ‚ฟใ‚คใƒ—ใ‚„ใ€็”Ÿๆˆใ™ใ‚‹ใƒ†ใ‚ญใ‚นใƒˆใฎ้•ทใ•ใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

recording_summarizer.gif

ไฝฟใ„ๆ–น:

const summarizer = await window.ai.summarizer.create({
  type: 'tldr', 
  length: 'medium', 
  outputLanguage: 'ja'
});

const summary = await summarizer.summarize("้•ทใ„ๆ–‡็ซ ...");
console.log(summary);

summarizer.destroy();

5. WebRTC API

ๆฆ‚่ฆใƒป็‰นๅพด:

ใƒ—ใƒฉใ‚ฐใ‚คใƒณใชใ—ใงใƒ–ใƒฉใ‚ฆใ‚ถๅŒๅฃซใŒP2P๏ผˆPeer-to-Peer๏ผ‰้€šไฟกใ‚’่กŒใ†ใŸใ‚ใฎAPIใงใ™ใ€‚
Zoomใ‚„Google Meetใชใฉใฎใƒ“ใƒ‡ใ‚ชไผš่ญฐใ‚ทใ‚นใƒ†ใƒ ใฎๅŸบ็›คๆŠ€่ก“ใงใ‚ใ‚Šใ€ๆ˜ ๅƒใƒป้Ÿณๅฃฐใ ใ‘ใงใชใใ€ไปปๆ„ใฎใƒ‡ใƒผใ‚ฟ๏ผˆใƒ†ใ‚ญใ‚นใƒˆใ‚„ใƒ•ใ‚กใ‚คใƒซ๏ผ‰ใ‚‚้ซ˜้€Ÿใซ้€ๅ—ไฟกใงใใพใ™ใ€‚

้€šไฟก้–‹ๅง‹ๅ‰ใซๅฟ…่ฆใชใ€ใŠไบ’ใ„ใฎๆƒ…ๅ ฑใ‚’ไบคๆ›ใ™ใ‚‹ใ€Œใ‚ทใ‚ฐใƒŠใƒชใƒณใ‚ฐใ€ใจใ„ใ†ๅทฅ็จ‹ใ‚’ๆ‰‹ๅ‹•ใง่กŒใชใฃใฆใƒ‡ใƒขใ‚’ใ—ใฆใฟใพใ—ใŸใ€‚ๆœฌๆฅใฏใ€ใ‚ทใ‚ฐใƒŠใƒชใƒณใ‚ฐใฏใ‚ตใƒผใƒใƒผ็ตŒ็”ฑใง่กŒใ‚ใ‚Œใพใ™ใ€‚
ใ€Œใ‚„ใฃใปใƒผ๏ผใ€ใจใ‚นใƒžใƒ›ๅดใงๆ‰“ใกใ€PCๅดใงใ€ŒๅŒๆœŸใ•ใ‚Œใฆใพใ™ใญ๏ผใ€ใจๆ‰“ใฃใฆใ„ใพใ™ใ€‚ๅณๅบงใซไบ’ใ„ใฎใƒ‡ใƒใ‚คใ‚นใซๅๆ˜ ใ•ใ‚Œใฆใ„ใพใ™ใญใ€‚๏ผˆไป•็ต„ใฟใฏใ‚‚ใฃใจๅ‹‰ๅผทใ›ใญใฐใ€‚ใ€‚๏ผ‰

recording_5.gif

ไฝฟใ„ๆ–น:

const peer = new RTCPeerConnection();

// ใƒ‡ใƒผใ‚ฟ้€ไฟก็”จใฎใƒใƒฃใƒณใƒใƒซใ‚’ไฝœๆˆ
const channel = peer.createDataChannel("chat");
channel.onopen = () => channel.send("ใ‚„ใฃใปใƒผ๏ผ");

// ็›ธๆ‰‹ใ‹ใ‚‰ใฎใƒ‡ใƒผใ‚ฟๅ—ไฟกใ‚’็›ฃ่ฆ–
peer.ondatachannel = (event) => {
  const receiveChannel = event.channel;
  receiveChannel.onmessage = (e) => console.log("ๅ—ไฟก:", e.data);
};

// โ€ป ใ“ใฎๅพŒใ€ใ‚ทใ‚ฐใƒŠใƒชใƒณใ‚ฐ๏ผˆ็›ธๆ‰‹ใจใฎๆŽฅ็ถšๆƒ…ๅ ฑใฎไบคๆ›๏ผ‰ใ‚’็ตŒใฆ้€šไฟก้–‹ๅง‹

6. DeviceOrientation Event

ๆฆ‚่ฆใƒป็‰นๅพด:

ใ‚ปใƒณใ‚ตใƒผAPIใฎไธ€ใคใงใ€ใ‚นใƒžใƒ›ใ‚„ใ‚ฟใƒ–ใƒฌใƒƒใƒˆใฎๅ†…่”ตใ‚ธใƒฃใ‚คใƒญใ‚ปใƒณใ‚ตใƒผใ‚’ๅˆฉ็”จใ—ใฆใ€ใƒ‡ใƒใ‚คใ‚นใฎใ€Œๅ‚พใใ€ใ‚„ใ€Œๅ›ž่ปขใ€ใ‚’ๆคœ็Ÿฅใ—ใพใ™ใ€‚iOSใงๅ‹•ไฝœใ•ใ›ใ‚‹ใซใฏใƒฆใƒผใ‚ถใƒผใฎ่จฑๅฏใ‚’ๅพ—ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ—ใŸใ€‚
ARใ‚ณใƒณใƒ†ใƒณใƒ„ใฎ่ฆ–็‚นๆ“ไฝœใชใฉใซๆดป็”จใงใใพใ™ใ€‚
ใ‚ฟใƒ–ใƒฌใƒƒใƒˆใ‚’ๅ‚พใ‘ใฆใƒœใƒผใƒซใ‚’่ปขใŒใ™่ฟท่ทฏใฟใŸใ„ใชใ‚ฒใƒผใƒ ใ€ๆ˜”ใ‚„ใฃใฆใพใ—ใŸใ€‚

ไฝฟใ„ๆ–น:

// ใ‚คใƒ™ใƒณใƒˆใƒชใ‚นใƒŠใƒผใงๅ€คใ‚’ๅ–ๅพ—
window.addEventListener('deviceorientation', (event) => {
  const { alpha, beta, gamma } = event;
  console.log(`Zๅ›ž่ปข:${alpha}, Xๅ‚พใ:${beta}, Yๅ‚พใ:${gamma}`);
});

7. document.designMode

ๆฆ‚่ฆใƒป็‰นๅพด:

ๆœ€ๅพŒใฏAPIใ˜ใ‚ƒใชใ„ใ‚“ใงใ™ใŒใ€่ชฟในใฆใ„ใฆ้ข็™ฝใ„ใชใจๆ€ใฃใŸใ‚‚ใฎใงใ™ใ€‚
ใ“ใ‚Œใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹ใจใ€่กจ็คบใ—ใฆใ„ใ‚‹Webใƒšใƒผใ‚ธๅ…จไฝ“ใŒใƒ†ใ‚ญใ‚นใƒˆใ‚จใƒ‡ใ‚ฃใ‚ฟใฎใ‚ˆใ†ใซ็ทจ้›†ๅฏ่ƒฝใซใชใ‚Šใพใ™ใ€‚ๆ˜”ใ‹ใ‚‰ใ‚ใ‚‹ใ‚‚ใฎใฎใ‚ˆใ†ใงใ™ใ€‚
ใ„ใŸใšใ‚‰ใฎ็”จ้€”ใ—ใ‹ๆ€ใ„ๆตฎใ‹ใณใพใ›ใ‚“ใ€‚

recording_designmode.gif

ไฝฟใ„ๆ–น:

document.designMode = 'on';

ใŠใ‚ใ‚Šใซ

Web APIใ€ๆ„ๅค–ใจ่‰ฒใ‚“ใชใ“ใจใŒใงใใ‚‹ใชใจๆ€ใ„ใพใ—ใŸใ€‚
ใ“ใ‚Œใ‹ใ‚‰ใ‚‚ใฉใ‚“ใฉใ‚“ใงใใ‚‹ใ“ใจใŒๅข—ใˆใฆใ„ใใ ใ‚ใ†ใ—ใ€Webใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒใ‚‚ใฃใจๅฝ“ใŸใ‚Šๅ‰ใซใชใฃใฆใ„ใใฎใ‹ใ‚‚ใ—ใ‚Œใพใ›ใ‚“ใญใ€‚
AI็ณปใฎAPIใ‚‚็™ปๅ ดใ—ใฆใ„ใŸใฎใซใฏใณใฃใใ‚Šใ—ใพใ—ใŸใ€‚ไปŠๅพŒใ‚‚ใ‚ฆใ‚ฉใƒƒใƒใ—ใฆใ„ใ“ใ†ใจๆ€ใ„ใพใ™๏ผ

12
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Comments

No comments

Let's comment your feelings that are more than good

12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Login to continue?

Login or Sign up with social account

Login or Sign up with your email address