ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒïŒPiPïŒæ©èœã®å®è£ æè¡ããã©ãããã©ãŒã ãAPIãUXããã¹ããã©ã¯ãã£ã¹ã解説ããããªãªãŒããŒã¬ã€äœéšãåäžãããããã®å æ¬çã¬ã€ãã§ãã
ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒïŒãããªãªãŒããŒã¬ã€å®è£ ã®å æ¬çã¬ã€ã
ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒïŒPiPïŒã¯ãçŸä»£ã®ãããªåçäœéšã«ãããŠãã©ãã«ã§ãããæ©èœãšãªããŸããããã¹ã¯ããããã©ãŠã¶ããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãŸã§ãPiPã¯ãŠãŒã¶ãŒããããªãäž»èŠãªã³ã³ããã¹ãããåãé¢ããä»ã®ã³ã³ãã³ãã®äžã«ãªãŒããŒã¬ã€è¡šç€ºããããšãå¯èœã«ãããã«ãã¿ã¹ã¯ãšãŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ãã®åäžãå®çŸããŸãããã®ã¬ã€ãã§ã¯ãããŸããŸãªãã©ãããã©ãŒã ããã©ãŠã¶ãAPIããããŠäžçäžã®éçºè ã®ããã®ãã¹ããã©ã¯ãã£ã¹ãç¶²çŸ ããPiPå®è£ ã®å æ¬çãªæŠèŠãæäŸããŸãã
ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒïŒPiPïŒãšã¯ïŒ
ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒã¯ããããªããããŒãã£ã³ã°ãŠã£ã³ããŠïŒå€ãã®å Žåãå ã®ãããªèŠçŽ ããå°ããïŒã«è¡šç€ºããç»é¢äžã®ä»ã®ã³ã³ãã³ãã«éããŠè¡šç€ºã§ãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹æ©èœã§ããããã«ããããŠãŒã¶ãŒã¯ä»ã®ã¢ããªã±ãŒã·ã§ã³ãWebããŒãžãæäœããªããããããªã®èŠèŽãç¶ããããšãã§ããŸããããã¯ãããžã¿ã«ã¯ãŒã¯ã¹ããŒã¹å šäœã§ãŠãŒã¶ãŒã远éãããå°åã§åžžã«æåé¢ã«è¡šç€ºããããããªãã¬ãŒã€ãŒãšèããããšãã§ããŸãã
ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒå®è£ ã®ã¡ãªãã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäžïŒ PiPã¯ããããªèŠèŽäœéšãäžæããããšãªãããŠãŒã¶ãŒããã«ãã¿ã¹ã¯ãè¡ããããã«ããŸããããã¯ç¹ã«ãæè²ã³ã³ãã³ãããã¥ãŒããªã¢ã«ããã¥ãŒã¹æŸéããšã³ã¿ãŒãã€ã¡ã³ãã«ãšã£ãŠæçã§ãã
- ãšã³ã²ãŒãžã¡ã³ãã®åäžïŒ ä»ã®ã¢ããªã±ãŒã·ã§ã³ãšå¯Ÿè©±ããªãããããªã³ã³ãã³ãã衚瀺ãç¶ããããšãå¯èœã«ããããšã§ãPiPã¯ãšã³ã²ãŒãžã¡ã³ããšãã©ãããã©ãŒã ã§ã®æ»åšæéãå¢å ãããããšãã§ããŸãã
- ã¢ã¯ã»ã·ããªãã£ã®æ¹åïŒ PiPã¯ããããªãèŠãªããä»ã®ã¢ããªã±ãŒã·ã§ã³ã®æ å ±ãåç §ããå¿ èŠããããŠãŒã¶ãŒã«ãšã£ãŠæçã§ãã
- ã¢ãã³ãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ïŒ PiPãå®è£ ããããšã¯ãçŸä»£ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãã¬ã³ãã«åèŽããããæŽç·Žããã䜿ããããäœéšãæäŸããŸãã
ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒããµããŒããããã©ãããã©ãŒã ãšãã©ãŠã¶
PiPãµããŒãã¯ãããŸããŸãªãã©ãããã©ãŒã ããã©ãŠã¶ã§å©çšå¯èœã§ãããã ããå ·äœçãªå®è£ ãå©çšå¯èœãªæ©èœã¯ç°ãªãå ŽåããããŸãã
ãã¹ã¯ããããã©ãŠã¶
- Google ChromeïŒ Chromeã¯HTML5ãããªAPIãéããŠå ç¢ãªPiPãµããŒããæäŸããŠããŸãã
- Mozilla FirefoxïŒ Firefoxããã€ãã£ãã®PiPãµããŒããæäŸããŠããŸãã
- SafariïŒ macOSããã³iOSäžã®Safariã¯ãWebãããªã®PiPããµããŒãããŠããŸãã
- Microsoft EdgeïŒ ChromiumããŒã¹ã®Edgeã¯ãHTML5ãããªAPIãéããŠPiPããµããŒãããŠããŸãã
ã¢ãã€ã«ãã©ãããã©ãŒã
- AndroidïŒ Androidã¯ã¢ããªã±ãŒã·ã§ã³åãã«ãã€ãã£ãã®PiPãµããŒããæäŸããŠããŸãã
- iOSïŒ iOSãã¢ããªã±ãŒã·ã§ã³å ã®ãããªã³ã³ãã³ãã«å¯ŸããŠPiPããµããŒãããŠããŸãã
Webã§ã®ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒã®å®è£
Webã§PiPãå®è£ ããäž»ãªæ¹æ³ã¯ãHTML5ãããªAPIã䜿çšããããšã§ãããã®APIã¯ããããªåçãå¶åŸ¡ããPiPæ©èœãããªã¬ãŒããæšæºåãããæ¹æ³ãæäŸããŸãã
HTML5ãããªAPI
HTML5ãããªAPIã«ã¯`requestPictureInPicture()`ã¡ãœãããå«ãŸããŠãããããã«ããã¹ã¯ãªããã¯ããã°ã©ã ã§ãããªèŠçŽ ã®PiPã¢ãŒããèŠæ±ã§ããŸãããã®åŸããã©ãŠã¶ãPiPãŠã£ã³ããŠã®äœæãšç®¡çãåŠçããŸãã
äŸïŒåºæ¬çãªPiPå®è£
以äžã¯ãJavaScriptãšHTML5ãããªAPIã䜿çšããŠPiPãå®è£ ããåºæ¬çãªäŸã§ãïŒ
<video id="myVideo" src="your-video.mp4" controls></video>
<button id="pipButton">ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒãéå§</button>
<script>
const video = document.getElementById('myVideo');
const pipButton = document.getElementById('pipButton');
pipButton.addEventListener('click', async () => {
try {
if (document.pictureInPictureElement) {
document.exitPictureInPicture();
} else {
await video.requestPictureInPicture();
}
} catch (error) {
console.error('Error entering Picture-in-Picture:', error);
}
});
</script>
解説ïŒ
- HTMLã«ã¯ããããªèŠçŽ ãšPiPãããªã¬ãŒããããã®ãã¿ã³ãå«ãŸããŠããŸãã
- JavaScriptã³ãŒãã¯ããã¿ã³ã«ã€ãã³ããªã¹ããŒã远å ããŸãã
- ãã¿ã³ãã¯ãªãã¯ããããšãã³ãŒãã¯PiPèŠçŽ ãæ¢ã«ååšãããã©ããã確èªããŸããååšããå ŽåãPiPã¢ãŒããçµäºããŸãã
- ãã以å€ã®å Žåã`video.requestPictureInPicture()`ãåŒã³åºããŠPiPã¢ãŒããèŠæ±ããŸãã
- PiPéå§æã«çºçããå¯èœæ§ã®ããåé¡ããã£ããããããã®ãšã©ãŒãã³ããªã³ã°ãå«ãŸããŠããŸãã
ã¯ãã¹ãã©ãŠã¶äºææ§
HTML5ãããªAPIã¯æšæºåãããã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸããããã©ãŠã¶åºæã®ãã¥ã¢ã³ã¹ã¯äŸç¶ãšããŠååšããå¯èœæ§ããããŸããäžè²«ããåäœãä¿èšŒããããã«ãç°ãªããã©ãŠã¶ã§å®è£ ããã¹ãããããšãéèŠã§ããPiPããµããŒããããŠããªãã±ãŒã¹ãé©åã«åŠçããããã«ãæ©èœæ€åºã䜿çšã§ããŸãã
äŸïŒæ©èœæ€åº
if ('pictureInPictureEnabled' in document) {
// PiPããµããŒããããŠããŸã
const pipButton = document.getElementById('pipButton');
pipButton.addEventListener('click', async () => {
try {
if (document.pictureInPictureElement) {
document.exitPictureInPicture();
} else {
await video.requestPictureInPicture();
}
} catch (error) {
console.error('Error entering Picture-in-Picture:', error);
}
});
} else {
// PiPã¯ãµããŒããããŠããŸãã
document.getElementById('pipButton').style.display = 'none'; // ãã¿ã³ãé衚瀺ã«ããŸã
console.log('ãã®ãã©ãŠã¶ã§ã¯ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒã¯ãµããŒããããŠããŸããã');
}
ãã®ã³ãŒãã¹ããããã¯ã`document`ãªããžã§ã¯ãã®`pictureInPictureEnabled`ããããã£ããã§ãã¯ããŸãããã®ããããã£ãååšããå ŽåãPiPã¯ãµããŒããããŠããããã¿ã³ã¯æå¹ã«ãªããŸãããã以å€ã®å Žåããã¿ã³ã¯é衚瀺ã«ãªããã³ã³ãœãŒã«ã«ã¡ãã»ãŒãžãèšé²ãããŸãã
PiPãŠã£ã³ããŠã®ã«ã¹ã¿ãã€ãº
HTML5ãããªAPIã¯äž»ã«PiPãŠã£ã³ããŠã®äœæãšç®¡çãåŠçããŸãããäžéšã®ãã©ãŠã¶ã§ã¯ãŠã£ã³ããŠã®å€èгãåäœãã«ã¹ã¿ãã€ãºããããã®éå®çãªãªãã·ã§ã³ãæäŸãããå ŽåããããŸãããããã®ãªãã·ã§ã³ã¯å€ãã®å Žåãã©ãŠã¶åºæã§ããããã¹ãŠã®ãã©ãããã©ãŒã ã§å©çšã§ããããã§ã¯ãããŸããã
äŸãã°ãäžéšã®ãã©ãŠã¶ã§ã¯ããã°ã©ã ã§PiPãŠã£ã³ããŠã®ãµã€ãºãšäœçœ®ãå¶åŸ¡ã§ããŸãããä»ã®ãã©ãŠã¶ã§ã¯ãããã®åŽé¢ããŠãŒã¶ãŒã®å¥œã¿ã«ä»»ããããšããããŸãã
ã¢ãã€ã«ãã©ãããã©ãŒã ã§ã®ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒã®å®è£
ã¢ãã€ã«ãã©ãããã©ãŒã ã§PiPãå®è£ ããã«ã¯ãéåžžããã©ãããã©ãŒã åºæã®APIã䜿çšããŸããAndroidãšiOSã®äž¡æ¹ãPiPã®ãã€ãã£ããµããŒããæäŸããŠããŸãããå®è£ ã®è©³çްã¯ç°ãªããŸãã
Androidã®ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒ
Androidã§ã¯ã`PictureInPictureParams`ã¯ã©ã¹ãš`enterPictureInPictureMode()`ã¡ãœããã䜿çšããŠPiPãå®è£ ããŸãã`PictureInPictureParams`ãªããžã§ã¯ãã䜿çšããŠãPiPãŠã£ã³ããŠã®ã¢ã¹ãã¯ãæ¯ãšåæå¢çãæå®ã§ããŸãã
äŸïŒAndroidã®PiPå®è£ ïŒç°¡æçïŒ
// Kotlinã®äŸ
import android.app.PictureInPictureParams
import android.util.Rational
fun enterPipMode() {
val aspectRatio = Rational(videoView.width, videoView.height)
val params = PictureInPictureParams.Builder()
.setAspectRatio(aspectRatio)
.build()
enterPictureInPictureMode(params)
}
解説ïŒ
- ãã®ã³ãŒãã¹ããããã¯ããããªãã¥ãŒã®ã¢ã¹ãã¯ãæ¯ãèšç®ããŸãã
- æå®ãããã¢ã¹ãã¯ãæ¯ã§`PictureInPictureParams`ãªããžã§ã¯ããäœæããŸãã
- PiPã¢ãŒãã«å ¥ãããã«ã`PictureInPictureParams`ãªããžã§ã¯ããšãšãã«`enterPictureInPictureMode()`ãåŒã³åºããŸãã
iOSã®ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒ
iOSã§ã¯ãPiPã¯äž»ã«`AVPictureInPictureController`ã¯ã©ã¹ã«ãã£ãŠåŠçãããŸãããã®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããããã`AVPlayerLayer`ã«é¢é£ä»ããŠPiPæ©èœãæå¹ã«ããããšãã§ããŸãã
äŸïŒiOSã®PiPå®è£ ïŒç°¡æçïŒ
// Swiftã®äŸ
import AVKit
var pipController: AVPictureInPictureController?
func setupPip() {
guard AVPictureInPictureController.isPictureInPictureSupported() else { return }
pipController = AVPictureInPictureController(playerLayer: playerLayer)
pipController?.delegate = self
pipController?.start()
}
解説ïŒ
- ã³ãŒãã¯ãããã€ã¹ã§PiPããµããŒããããŠãããã©ããããã§ãã¯ããŸãã
- `playerLayer`ã«é¢é£ä»ãããã`AVPictureInPictureController`ã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã
- ã³ã³ãããŒã©ãŒã®ããªã²ãŒããèšå®ããPiPã¢ãŒããéå§ããŸãã
ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«é¢ããèæ ®äºé
PiPãå®è£ ããéã«ã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãèæ ®ããããšãéèŠã§ãã以äžã¯ãçæãã¹ãäž»èŠãªèŠçŽ ã§ãïŒ
- çŽæçãªã³ã³ãããŒã«ïŒ PiPã¢ãŒããžã®ç§»è¡ãšçµäºã®ããã®æç¢ºã§çŽæçãªã³ã³ãããŒã«ãæäŸããŸãããŠãŒã¶ãŒãæ £ã芪ããã æšæºçãªã¢ã€ã³ã³ãã©ãã«ã䜿çšããŠãã ããã
- ã·ãŒã ã¬ã¹ãªç§»è¡ïŒ éåžžã®åçã¢ãŒããšPiPã¢ãŒãã®éã§ã¹ã ãŒãºãªç§»è¡ãä¿èšŒããŸãããããªã®ãµã€ãºãäœçœ®ã®æ¥æ¿ãªå€åãé¿ããŠãã ããã
- ã«ã¹ã¿ãã€ãºãªãã·ã§ã³ïŒ ãŠãŒã¶ãŒãPiPãŠã£ã³ããŠã®ãµã€ãºãšäœçœ®ãã«ã¹ã¿ãã€ãºã§ããããã«ããŸããããã«ãããããããŒãœãã©ã€ãºãããäœéšãæäŸãããŸãã
- ã³ã³ããã¹ãèªèïŒ PiPã䜿çšãããã³ã³ããã¹ããèæ ®ããŸããäŸãã°ããŠãŒã¶ãŒããããªããŒãžããé¢ãããšãã«èªåçã«PiPã¢ãŒãã«å ¥ãããã«ããããšãã§ããŸãã
- ã¢ã¯ã»ã·ããªãã£ïŒ PiPãŠã£ã³ããŠãé害ãæã€ãŠãŒã¶ãŒã«ãã¢ã¯ã»ã¹å¯èœã§ããããšãä¿èšŒããŸããããŒããŒãããã²ãŒã·ã§ã³ãšã¹ã¯ãªãŒã³ãªãŒããŒã®ãµããŒããæäŸããŠãã ããã
ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒå®è£ ã®ãã¹ããã©ã¯ãã£ã¹
以äžã¯ãPiPãå®è£ ããéã«åŸãã¹ããã¹ããã©ã¯ãã£ã¹ã§ãïŒ
- å¯èœãªéãHTML5ãããªAPIã䜿çšããïŒ HTML5ãããªAPIã¯ãWebã§PiPãå®è£ ããããã®æšæºåãããã¯ãã¹ãã©ãŠã¶äºæã®æ¹æ³ãæäŸããŸãã
- ã¢ãã€ã«ã«ã¯ãã©ãããã©ãŒã åºæã®APIã䜿çšããïŒ ã¢ãã€ã«ãã©ãããã©ãŒã ã§ã¯ãAndroidãšiOSãæäŸãããã€ãã£ãã®PiP APIãæŽ»çšããŸãã
- 培åºçã«ãã¹ãããïŒ ç°ãªããã©ãŠã¶ããã©ãããã©ãŒã ãããã€ã¹ã§å®è£ ããã¹ãããäžè²«ããåäœãä¿èšŒããŸãã
- ãšã©ãŒãé©åã«åŠçããïŒ PiPã®éå§ãŸãã¯åçäžã«çºçããå¯èœæ§ã®ããåé¡ããã£ããããããã«ãé©åãªãšã©ãŒãã³ããªã³ã°ãå®è£ ããŸãã
- ããã©ãŒãã³ã¹ãæé©åããïŒ PiPãŠã£ã³ããŠãä»ã®ã¢ããªã±ãŒã·ã§ã³ãWebããŒãžã®ããã©ãŒãã³ã¹ã«æªåœ±é¿ãäžããªãããã«ããŸãã
- æç¢ºãªæç€ºãæäŸããïŒ å¿ èŠã§ããã°ãPiPæ©èœã®äœ¿ç𿹿³ã«ã€ããŠãŠãŒã¶ãŒã«æç¢ºãªæç€ºãæäŸããŸãã
é«åºŠãªãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒæè¡
PiPã®åºæ¬çãªå®è£ ãè¶ ããŠããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã«äœ¿çšã§ããããã€ãã®é«åºŠãªæè¡ããããŸãïŒ
åæåç
PiPãããªã®åçãããŒãžäžã®ä»ã®ã³ã³ãã³ããšåæãããããšãã§ããŸããäŸãã°ããããªãšäžç·ã«ãé¢é£æ å ±ãã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ã衚瀺ããããšãã§ããŸãã
ã€ã³ã¿ã©ã¯ãã£ããªPiPãŠã£ã³ããŠ
äžéšã®ãã©ãããã©ãŒã ã§ã¯ãã³ã³ãããŒã«ãä»ã®UIèŠçŽ ãå«ãã€ã³ã¿ã©ã¯ãã£ããªPiPãŠã£ã³ããŠãäœæã§ããŸããããã¯ãããæ²¡å ¥æã®ããé åçãªäœéšãæäŸããããã«äœ¿çšã§ããŸãã
è€æ°ã®PiPãŠã£ã³ããŠ
äžè¬çã§ã¯ãããŸããããäžéšã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯è€æ°ã®PiPãŠã£ã³ããŠããµããŒãããå ŽåããããŸããããã¯ãè€æ°ã®ãããªã¹ããªãŒã ãåæã«è¡šç€ºããã®ã«åœ¹ç«ã¡ãŸãã
課é¡ãšèæ ®äºé
PiPã®å®è£ ã«ã¯ãããã€ãã®èª²é¡ã䌎ãããšããããŸãïŒ
- ãã©ãŠã¶ã®äºææ§ïŒ HTML5ãããªAPIã®ãµããŒãã¬ãã«ã®éãããã©ãŠã¶åºæã®ãã¥ã¢ã³ã¹ã«ãããç°ãªããã©ãŠã¶éã§äžè²«ããåäœãä¿èšŒããããšã¯å°é£ãªå ŽåããããŸãã
- ãã©ãããã©ãŒã ã®æçåïŒ ã¢ãã€ã«ãã©ãããã©ãŒã ã«ã¯ç°ãªãPiP APIãããããã©ãããã©ãŒã åºæã®å®è£ ãå¿ èŠã§ãã
- ããã©ãŒãã³ã¹ã®æé©åïŒ ç¹ã«ãªãœãŒã¹ãéãããããã€ã¹ã§PiPã䜿çšããå Žåãæé©ãªããã©ãŒãã³ã¹ãç¶æããã«ã¯æ éãªæé©åãå¿ èŠã§ãã
- ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹èšèšïŒ ç¹ã«ç°ãªãç»é¢ãµã€ãºãå ¥åæ¹æ³ãèæ ®ããå ŽåãPiPã®ããã®çŽæçã§ã¢ã¯ã»ã¹ãããããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãèšèšããããšã¯å°é£ãªå ŽåããããŸãã
- ã»ãã¥ãªãã£äžã®æžå¿µïŒ PiPã®å®è£ ã¯ãæ éã«è¡ããªããšã»ãã¥ãªãã£äžã®æžå¿µãåŒãèµ·ããå¯èœæ§ããããŸããPiPãŠã£ã³ããŠãé©åã«ãµã³ãããã¯ã¹åããããŠãŒã¶ãŒããŒã¿ãä¿è·ãããŠããããšã確èªããŠãã ããã
ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒã®å°æ¥ã®ãã¬ã³ã
PiPã®å°æ¥ã¯ãæ¡åŒµçŸå®ïŒARïŒãä»®æ³çŸå®ïŒVRïŒãªã©ã®ä»ã®æè¡ãšã®çµ±åãé²ãå¯èœæ§ããããŸããçŸå®äžçã®ãªããžã§ã¯ãã«ãããªã¹ããªãŒã ãéããããPiPãŠã£ã³ããŠå ã§ä»®æ³ç°å¢ã衚瀺ãããããããšãæ³åããŠã¿ãŠãã ããã
ããäžã€ã®ãã¬ã³ãã¯ãå ±åäœæ¥ã¢ããªã±ãŒã·ã§ã³ã§ã®PiPã®äœ¿çšãå¢å ããŠããããšã§ããäŸãã°ããããªäŒè°ããŒã«ã¯PiPã䜿çšããŠããŠãŒã¶ãŒãä»ã®ã¿ã¹ã¯ã«åãçµã¿ãªããäŒè°ããç®ãé¢ããªãããã«ããããšãã§ããŸãã
çµè«
ãã¯ãã£ãŒã€ã³ãã¯ãã£ãŒã¯ããããªåçã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå€§å¹ ã«åäžãããããšãã§ãã匷åãªæ©èœã§ããããŸããŸãªå®è£ æè¡ããã©ãããã©ãŒã ããã©ãŠã¶ãAPIãçè§£ããããšã§ãéçºè ã¯äžçäžã®ãŠãŒã¶ãŒã®ããã«ã·ãŒã ã¬ã¹ã§é åçãªPiPäœéšãåµé ã§ããŸããPiPãé²åãç¶ããã«ã€ããŠããããªèŠèŽãšãã«ãã¿ã¹ãã³ã°ã®æªæ¥ã«ãããŠãŸããŸãéèŠãªåœ¹å²ãæããããšã«ãªãã§ãããã
ãã®ã¬ã€ãã§ã¯ãåºæ¬ååããé«åºŠãªæè¡ãŸã§ãããŸããŸãªåŽé¢ãç¶²çŸ ããPiPå®è£ ã®å æ¬çãªæŠèŠãæäŸããŸããããã®ã¬ã€ãã§æŠèª¬ããããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãéçºè ã¯ãŠãŒã¶ãŒã®ããŒãºãæºããé«å質ãªPiPäœéšãåµé ã§ããŸãã