åé¡

æåã¯ããã¹ãŠãã·ã³ãã«ã§ããããã©ãã·ã¥ãã€ã³ã¹ããŒã«ãããŠãŒã¶ãŒã¯ããã©ãã·ã¥ããŠã³ããŒããŒãä»ããŠã¡ãã»ãŒãžã«ãã¡ã€ã«ãæ·»ä»ããŸããã äžåºŠã«è€æ°ã®ãã¡ã€ã«ãããŠã³ããŒããããµã€ãºã決å®ããŠãããŠã³ããŒãããã»ã¹ãå¶åŸ¡ããããšãã§ããŸããã
ãããããã©ãã·ã¥ã®ãªããŠãŒã¶ãŒïŒæ¯æ¥ã®èŠèŽè ã®8ã10ïŒ ïŒã®å Žåãããã¯ããå°é£ã§ããã
/>
䜿çšããŠãéåžžã®ãã©ãŒã ãããã¡ã€ã«ãã¢ããããŒãããããšããå§ãããŸãã ããããã®ãã¡ã€ã«ã¯ãæçŽèªäœã®å 容ãšãšãã«iframeãä»ããŠéä¿¡ãããããã«ã¯å€ãã®æéãããããŸããã ãéä¿¡ããã¿ã³ãã¯ãªãã¯ããããšã«ããããŠãŒã¶ãŒã¯ãã¡ã€ã«ãã¢ããããŒãããããŸã§é·æéåŸ æ©ããŸããã
ãããŠãå°ããªãã¡ã€ã«ïŒæ倧25 MBïŒãç¹å®ã®åé¡ãåŒãèµ·ãããªãã£ãå Žåã倧ããªãã¡ã€ã«ã¯æ°ããåé¡ãäœæããŸããïŒãã¡ã€ã«ãµã€ãºã蚱容é床ãè¶ ããå ŽåãYandex.NarodãµãŒãã¹ã䜿çšããŠããYandex.Diskã䜿çšããå¿ èŠããããŸããïŒæ°ããæ·»ä»ãã¡ã€ã«ã§ãã¡ã€ã«ã¹ãã¬ãŒãžãå€æŽããŸããïŒ *ã
*éä¿¡ãã¡ã€ã«ã®ãµã€ãºã®å¶éã¯ãYandex.Mailã®æè¡çãªå¶éã§ã¯ãªãããµãŒãããŒãã£ã®ã¡ãŒã«ãµãŒããŒã®åé¡ã«ãã£ãŠèª¬æãããŠããŸãã ãã¹ãŠã®äººã倧ããªæçŽãåãåã£ãŠä¿ç®¡ããæºåãã§ããŠããããã§ã¯ãããŸããã ãã®ãããªæçŽãå®å ã«å±ãããã«ãYandex.Diskã«25 MBãè¶ ããæ·»ä»ãã¡ã€ã«ãä¿åããæçŽã«ãªã³ã¯ãè¿œå ããŸãã
ãã©ãã·ã¥ãªãã®ãŠãŒã¶ãŒã®ãã¡ã€ã«ãµã€ãºã決å®ããããã«ã次ã®ããã«æ©èœããå éšãµãŒãã¹ãçºçãããŸãããã¯ã©ã€ã¢ã³ãã¯ããªã¯ãšã¹ããå«ãPOSTãã¡ã€ã«ãç¹å¥ãªURLã«éä¿¡ãããµãŒããŒã¯ãªã¯ãšã¹ãã®Content-LengthããããŒãèªã¿åããæ¥ç¶ãéããŸããã
ãã¹ãŠã®ãã©ãŠã¶ã§ã®ãã¡ã€ã«ã¢ããããŒãã®å®è£ ã¯ããã¡ã€ã«ãå®å šã«éä¿¡ãããŸã§ãµãŒããŒããã®å¿çãæåŸ ããªãããã«èšèšãããŠããŸãã ãããã£ãŠããµãŒããŒã¯ããã«ãã¡ã€ã«ãµã€ãºãå ±åã§ããŸããã ãã®åé¡ã解決ããããã«ããµãŒããŒãããŠã³ããŒããããã¡ã€ã«ã®ãµã€ãºã«çããContent-LengthããããŒå€ãã¯ã©ã€ã¢ã³ãã«æž¡ã2åç®ã®GETèŠæ±ãè¡ããŸããã
é»åã¡ãŒã«ã«ãã¡ã€ã«ãæ·»ä»ããéã®åé¡ã¯ãäž¡æ¹ã®ã«ããŽãªã®ãŠãŒã¶ãŒã§çºçããå¯èœæ§ããããŸãã ããšãã°ããã©ãã·ã¥ããŒããŒã§ã¯ãè€æ°ã®ãã¡ã€ã«ãéžæããŠãµã€ãºã決å®ã§ããŸããã次ã®ããã«ãªããŸãã
- ãŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ããå¿ èŠããããµãŒãããŒãã£ã®ãã©ã°ã€ã³ã§ãããä»ã®ãã©ã°ã€ã³ãŸãã¯æ¡åŒµæ©èœã«ãã£ãŠãããã¯ãããå¯èœæ§ããããŸãã
- SSLæ¥ç¶ãšã»ãã¥ãªãã£ã«åé¡ããããŸãã
- ãã¡ã€ã«ãããŠã³ããŒãããéã®åé¡ããšã©ãŒã解決ããã®ãé£ããã
éåžžã®
/>
ã§ã¯ãå°ãªããšããã«ãã¢ã¿ããã¯ãããŸããã
ãã¡ãããç§ãã¡ã¯ãã®ç¶æ³ã«æºè¶³ããŠãããããããã®åé¡ã®å¹æçãªè§£æ±ºçãæ¢ãããšãæ¢ããŸããã§ããã
æ©äŒ
éå»1幎éããã¹ãŠã®ãã©ãŠã¶ãŒã¯ããã¡ã€ã«ã䜿çšããŠäœæ¥ãåå¥ã«æŽçããæ¹æ³ãåŠç¿ããŸããïŒãµãŒãããŒãã£ã®ãã©ã°ã€ã³ãæ¥ç¶ããããšãªãïŒã Mozilla Developer Network Webãµã€ãã®èšäºã§ããããã®ææ°æ©èœã®ãã¹ãŠã詳ããèŠãããšãã§ããŸããHTML5ã®éçºã«äŒŽã£ãæ°ããæ©èœã¯æ¬¡ã®ãšããã§ãã
-å ¥åã¿ã°ã®è€æ°ã®å±æ§ïŒChrome 4ãFirefox 3.6ãIE 10ãOpera 11ãSafari 5以éïŒ;
- ãã©ãã°ã¢ã³ãããããAPI ïŒChrome 4ãFirefox 3.5ãIE 5.5ãOpera 12ãSafari 3ïŒ;
-FormData ïŒChrome 7ãFirefox 4ãIE 10ãOpera 12ãSafari 5ïŒ;
-XMLHttpRequestã¬ãã«2 + CORS + é²æã€ãã³ã ïŒChrome 7ãFirefox 4ãIE 10ãOpera 12ãSafari 5ïŒã
çè«çã«ã¯ã1幎ååã«å®è£ ã§ããŸããããå€æŽã¯ChromeãšFirefoxã«ã®ã¿åœ±é¿ããŸãã ãããã®ãã©ãŠã¶ã¯å šäœã§ããªãã®å²åãå ããŠããŸããããç¬å è ã§ã¯ãããŸããã§ããã OperaãšIEã¯ãŸã ãããã®æ©èœããµããŒãããŠããŸããã ãããã£ãŠãèŽè¡ã®ååã¯ãŸã ãã©ãã·ã¥ã«æ®ãããŠããå¿ èŠããããŸãã
ããã§åŸ ã£ãã ãããŠãå¿ èŠãªæè¡ãå°å ¥ã§ããOpera 12ã®6æã®ãªãªãŒã¹ãè¿ã¥ãåã«ãéçºãéå§ããŸããã
IE10ã«é¢ããŠã¯ãè¿ããã¡ã«ãªãªãŒã¹ãããäºå®ã§ãã
å®è£
åè¿°ã®ããã«ããã¡ã€ã«ã倧å°ã«åé¢ããå¿ èŠããããŸãã ããšãã°ããŠãŒã¶ãŒãã¡ãŒã«ã«10åã®ãã¡ã€ã«ãæ·»ä»ããããšããŠããŸããããã®ãã¡9åã¯èš±å®¹é床ã«åãŸãã10åç®ã¯æ®ãã®2åã®å€§ããã§ãã ãã¡ã€ã«ãåå¥ã«ã¢ããããŒãããæ©èœããªããã°ã10åã®ãã¡ã€ã«ãã¹ãŠãYandex.Diskã«ä¿åãããŸãã ãã ããããã¯åççã§ã¯ãªãããã§ããæåŸã®1ã€ã®ãã¡ã€ã«ã®ã¿ããã£ã¹ã¯ã«éä¿¡ããæ®ããã¬ã¿ãŒã«ã¢ããããŒãããããšããå§ãããŸãã ããã§ãåãã¡ã€ã«ãåå¥ã«ããŠã³ããŒãããããšã«ããŸãããéåžžããã¡ã€ã«ã¯æšæºåœ¢åŒã§ã¢ããããŒããããŸãã
<form action="/upload" method="post"> <input type="file" multiple="true"/> <input type="submit"/> </form>
é衚瀺ã®iframeã§ãã©ãŒã ãéä¿¡ãããšããŸãã ãã®å Žåããã©ãŠã¶ã¯éžæããããã¹ãŠã®ãã¡ã€ã«ãå ¥åããèªã¿åãïŒãã¡ã€ã«ãå€æ°ããå Žåã§ãïŒãPOSTèŠæ±ã§ã¢ããããŒã/ã¢ããããŒãããŸãã ããããããã§ã¯ãã¡ã€ã«ã¯ãã¹ãŠäžç·ã«ããŒããããŸãããããã¯ç§ãã¡ã«ã¯é©ããŠããŸããã
AJAXãã©ã®ããã«åœ¹ç«ã€ããèŠãŠã¿ãŸãããã AJAXçµç±ã§ãã¡ã€ã«ãéä¿¡ããã«ã¯ãFormDataãµããŒããå¿ èŠã§ãã ããããªããšãå ¥åã®ãã¡ã€ã«ãèªã¿åã£ãŠãªã¯ãšã¹ãã«è¿œå ã§ããŸããã ãããè©ŠããŠã¿ãŸãããïŒ
var formElement = document.getElementById("myFormElement"); var xhr = new XMLHttpRequest(); xhr.open("POST", "/upload", true); xhr.send(new FormData(formElement));
ãã ãããã®å Žåããã¹ãŠã®ãã¡ã€ã«ã¯å ¥åããéä¿¡ãããŸãã åãã¡ã€ã«ãåå¥ã«ååŸããããŠã³ããŒãããå ŽæïŒãã£ã¹ã¯ãŸãã¯ã¬ã¿ãŒïŒã決å®ãããã€ãŸããåå¥ã«åŠçããå¿ èŠãããããšãããããŸããã
for (var i = 0, j = input.files.length; i < j; i++) { upload(input.files[i]); } function upload(file) { var url = ""; if (file.size > MESSAGE_LIMIT) { url = "uploader.disk.yandex.ru"; } else { url = "uploader.mail.yandex.ru"; } var data = new FormData(); data.append("attachment", file); var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); xhr.send(data); }
1ã€ã®ãã¡ã€ã«ãããŒãããéã®ãšã©ãŒãä»ã®ãã¡ã€ã«ã«å¹²æžããªãããããã¡ã€ã«ãåå¥ã«ã¢ããããŒãããããšã䟿å©ã§ãã
ãã¹ãŠã®äžè¬çãªãã©ãŠã¶ããµããŒãããŠããŸããããã¹ãŠãææ°ã®ãã¯ãããžãŒããµããŒãããŠããããã§ã¯ãããŸããã æ©èœæ€åºããªã·ãŒã«åŸã£ãŠãæ°ããæ©èœãæå¹ã«ããããã«4ã€ã®ãã§ãã¯ãè¿œå ããŸããã
- FormDataã®ãµããŒããªã-> iframeã䜿çšããŸãã
- FormDataã®ãµããŒãããããŸã-> AJAXã䜿çšããŸãã
- Drag-n-Dropããã³FormDataã®ãµããŒããããããã¡ã€ã«ãããŒãžã£ãŒãããã¡ã€ã«ããã©ãã°ã¢ã³ãããããããæ©èœãæå¹ã«ãªããŸãã ããšãã°ãIEã«ã¯æåã®ãã®ããããŸããã2çªç®ã®ãã®ã¯ãªãããããã©ãã°ããããã¡ã€ã«ãéä¿¡ããããšã¯ã§ããŸããã
- è€æ°ã®å ¥åãšFormDataã®ãµããŒãããããŸã->å€ãã®ãã¡ã€ã«ãéžæããæ©èœãæå¹ã«ããŸãã ããšãã°ãOpera 11.6ã§ã¯è€æ°ã®å ¥åããããŸãããããããFormDataã¯ãããŸããããã¡ã€ã«ã1ã€ãã€éä¿¡ããããšã¯ã§ããŸããã
3çªç®ãš4çªç®ã®ãã§ãã¯ã®çµæã Modernizrã®ãã¹ããè¡ââãããŸããã
Modernizr .addTest('draganddrop-files', function() { return !!(Modernizr['draganddrop'] && window['FormData'] && window['FileReader']); }) .addTest('input-multiple', function() { return !!(Modernizr['input']['multiple'] && window['FormData'] && window['FileReader']); });
Safari 5.1 for Windowsã§ã¯ããã°ãããã«èŠã€ãããŸãããè€æ°ã®ãã¡ã€ã«ãéžæãããšããã¹ãŠã®ãã¡ã€ã«ã®ãµã€ãºããŒãã«ãªãããµãŒããŒã«éä¿¡ãããŸããã ãã®ãã©ãŠã¶ã§ã¯ããã¹ãŠã®æ°æ©èœããªãã«ããå¿ èŠããããŸããã
AJAXãã©ã³ã¹ããŒãã«å ããŠã Progressã€ãã³ãã䜿çšããŠçŸããããã°ã¬ã¹ããŒãã¬ã³ããªã³ã°ãå§ããŸããã
次ã®ããã«äœ¿çšããŸãã
var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload', true); if (xhr.upload) { xhr.upload.addEventListener('progress', processProgressEvent, false); } else { drawCommonProgressbar() }
ããŒã¿ããµãŒããŒã«ããŒããããšããã€ãã³ããã³ãã©ãŒã¯xhr.uploadããããã£ã§ãã³ã°ãããµãŒããŒããããŒã¿ãããŒããããšãã¯xhrèªäœã§ãã³ã°ããå¿ èŠãããããšã«æ³šæããŠãã ããã
File APIããµããŒããããã©ãŠã¶ãŒã§ã¯ããã¡ã€ã«ãªããžã§ã¯ããããã¡ã€ã«ãµã€ãºã確èªã§ããŸãã ä»æ§ã®å€ãããŒãžã§ã³ã§ã¯ãããããã£ã¯fileSizeãšåŒã°ããçŸåšã¯åãªããµã€ãºã§ãã
File APIããµããŒãããŠããªããã©ãŠã¶ãŒïŒããã³ãããããå°ãªããã©ãŠã¶ãŒïŒã§ã¯ãå éšãã¡ã€ã«ãµã€ãºå€æŽãµãŒãã¹ã®äœ¿çšã«äœäžããŠããŸãã
ãšããã§ãæ°ããæè¡ãžã®ç§»è¡ã«ãããæ·»ä»ãã¡ã€ã«ããã©ãã°ã¢ã³ãããããã§èªã¿èŸŒããšããé·å¹Žã®ã¢ã€ãã¢ãå®çŸããããšãã§ããŸããã ãã©ãã°ã¢ã³ãããããAPIã¯éåžžã«äžè¬çã§ãã ããã¯ãã¡ã€ã«ã ãã§ãªããããŒãžäžã®ãªããžã§ã¯ãã®ãã©ãã°ã«ãé©çšãããŸãã ãããã£ãŠã絶察ã«ãã¹ãŠããã¡ã€ã«é åã«ç§»åã§ããŸãã
ãã®åé¡ã解決ããå¿ èŠããããŸããããã¡ã€ã«ãããŠã³ããŒãããæ©èœã®ã¿ãã¡ãŒã«ã«æ®ãæ¹æ³ã¯ïŒ
ãã©ãŠã¶èªäœã¯å€ãã®ããšãè¡ããŸããããã¹ãŠã§ã¯ãããŸããã ãã¡ãããevent.dataTransfer.filesããããã£ã®ããããã€ãã³ãã§ã¯ããã¡ã€ã«ã·ã¹ãã ããã®ãªããžã§ã¯ãã®ã¿ãååšããŸãã ãã ãããããã®ãªããžã§ã¯ãã¯ãã©ã«ããŒãšãã¡ã€ã«ã®äž¡æ¹ã«ããããšãã§ããŸãã ãã©ã«ãã®ããŠã³ããŒããçŠæ¢ããã«ã¯ïŒãã¹ãŠã®ãã©ãŠã¶ããã©ã«ããããã¡ã€ã«ãããŒãã§ããããã§ã¯ãããŸãã-Chrome 21ãæåã§ãFirefox ã¯ååãšããŠãããæåŠããŸããïŒãFileReaderã䜿çšããŸãã ãã®APIã䜿çšãããšããã£ã¹ã¯ãããã¡ã€ã«ãèªã¿åããJavaScriptã§æäœã§ããŸãã ãªããžã§ã¯ããèªã¿åãããå Žåãããã¯ãã¡ã€ã«ã§ãã ãã®ã¡ãœãããå®è£ ããå°ããªé¢æ°ã¯GitHubã§èŠãããšãã§ããŸãã
function isRegularFile(file, callback) { // , 4, if (file.size > 4096) { callback(true); return; } if (!window['FileReader']) { // callback(null); } else { try { var reader = new FileReader(); reader.onerror = function() { reader.onloadend = reader.onprogress = reader.onerror = null; // Chrome (Linux/Win), Firefox (Linux/Mac), Opera 12.01 (Linux/Mac/Win) callback(false); }; reader.onloadend = reader.onprogress = function() { reader.onloadend = reader.onprogress = reader.onerror = null; // abort if (e.type != 'loadend') { // reader.abort(); } callback(true); }; reader.readAsDataURL(file); } catch(e) { // Firefox/Win callback(false); } } }
ãã ãããã®ãã§ãã¯ã¯ãã¹ãŠã®ãã©ãŠã¶ãŒã«å¿ èŠãªããã§ã¯ãããŸãããChromefor Macããã³IE10 for Windows 8ã¯ãã©ã«ããŒèªäœãé€å€ããŸãã
FileReaderã¯ãç¹ã«å®å®ããŠåäœããªãChromeã§ç¹ã«æ³šæããŠåŠçããå¿ èŠããããŸãã21çãŸã§ã¯ãæ°çŸã¡ã¬ãã€ãã®ãã¡ã€ã«ãèªã¿èŸŒããšã¿ãããããããã21æ¥ã«å°ããªãã¡ã€ã«ã«åé¡ããå§ããŸããã ãã®ãã©ãŠã¶ã§FileReaderã®äœ¿çšãæŸæ£ããå¿ èŠãããããŸããã
ãšãããããã¡ã€ã«ããã©ãã°ã¢ã³ãããããããããã®é åã®å€èŠ³ã®ããžãã¯ããããã«æ¹åããŸããã ããã§ãåé¡ãçºçããŸããããŠãŒã¶ãŒãã©ãã«ãæåã«ãã©ãã°ããããããšãã°ã誀ã£ãŠã€ã³ã¿ãŒãã§ã€ã¹ããç»åããã©ãã°ãå§ããããšããããŸãã
dragoverãã³ãã©ãŒãšdragenterãã³ãã©ãŒã§ãã®åé¡ã解決ããããã«ã次ã®ãã§ãã¯ãè¡ããŸããã
var types = event.dataTransfer.types; if (types) { for (var i = 0, j = types.length; i < j; i++) { if (types[i] == 'Files') { showDragArea(); return false; } } }
ããã¡ã€ã«ãã¿ã€ãã¯ããã©ãã°ããããªããžã§ã¯ãã«å®éã®ãã¡ã€ã«ãããããšãæå³ãããfalseãè¿ããããã©ãã°ã¢ã³ãããããããã»ã¹ã®å§ãŸãã§ãã ãã®ãã§ãã¯ã¯ãã¹ãŠã®ãã©ãŠã¶ãŒã§æ©èœããããã§ã¯ãããŸããããã€ã³ã¿ãŒãã§ãŒã¹ããããã«æ¹åãããŸãã
ãŸããã€ãã³ãdragenterãdragoverãdragleaveã¯ãããã¥ã¡ã³ãã«ãã³ã°ããå Žåãmouseoverãmouseoutãšåãåé¡ã®åœ±é¿ãåããããšãå€æããŸãããDOMããŒãéã移åãããã³ã«ã¹ããŒãããŸãã
ãã®åé¡ã¯ããããã®ã€ãã³ããåŠçããã¿ã€ã ã¢ãŠãã«ãã£ãŠè§£æ±ºãããŸããã
var processTimer = null; $(document).on({ 'dragover dragenter': function() { window.clearTimeout(processTimer); showDragArea(); }. 'dragleave': function() { processTimer = window.setTimeout(function() { hideDragArea(); }, 50); } });
ã¯ãã¹ãã¡ã€ã³ãªã¯ãšã¹ã
ãã£ã¹ã¯ã«ã¢ããããŒãããã«ã¯ãã¯ãã¹ãã¡ã€ã³ã¯ãšãªã®ãµããŒããå¿ èŠã§ãããããã¯æ¬¡ã®ããã«ç¢ºèªã§ããŸãã window['XMLHttpRequest'] && 'withCredentials' in new XMLHttpRequest()
ãã©ã³ã¹ããŒããå®çŸ©ããããã®ããªã·ãŒã¯åããŸãŸã§ãã
ã¯ãã¹ãã¡ã€ã³ãªã¯ãšã¹ãã®å Žåããããªãã©ã€ããOPTIONSãªã¯ãšã¹ããæ£ããåŠçããå¿ èŠããããŸãã ãããã®ãªã¯ãšã¹ãã§ã¯ããã©ãŠã¶ã¯ãªã¢ãŒããµãŒããŒã«çŸåšã®ãã¡ã€ã³ããã¢ã¯ã»ã¹ã§ãããã©ãããå°ããŸãã ãããã¯æ¬¡ã®ããã«ãªããŸãã
OPTIONS /upload HTTP/1.1 Host: disk-storage42.mail.yandex.net Origin: https://mail.yandex.ru Access-Control-Request-Method: POST Access-Control-Request-Headers: origin, content-type
ãµãŒããŒã¯ãããšãã°æ¬¡ã®ããã«ããããŒã解決ããŠããã«å¿çããå¿ èŠããããŸãã
Access-Control-Allow-Origin: https://mail.yandex.ru Allow: POST, PUT, TRACE, OPTIONS
ãã®ãããªèŠæ±ã¯åžžã«çºçããããã§ã¯ãããŸããããæ£ããåŠçãããããšãèŠããŠæ€èšŒããå¿ èŠããããŸãã
ãã©ãŠã¶ãã¯ãã¹ãã¡ã€ã³ãªã¯ãšã¹ãã®èš±å¯ãåãåããªãå Žåããªã¯ãšã¹ãã¯ã¹ããŒã¿ã¹= 0ã§çµäºããŸãïŒããã¯onreadystatechangeã§åŠçã§ããŸãïŒã ãŸãããŠãŒã¶ãŒãŸãã¯ãµãŒããŒã«ãã£ãŠèŠæ±ãäžæãããããšãæå³ããŸãã ãããã«ãããiframeã®èªã¿èŸŒã¿ã§ãã©ãŒã«ããã¯ãè¡ãå¿ èŠããããŸãã
Yandex.Diskã«ãã¡ã€ã«ãã¢ããããŒãããããã»ã¹ã¯æ¬¡ã®ããã«ãªããŸãïŒæåã«ããã©ã€ãã®ããã¯ãšã³ããããã¡ã€ã«ããªããžããªã«ã¢ããããŒãããURLãããã³æäœã®ã¹ããŒã¿ã¹ãèŠæ±ã§ããoidïŒæäœIDïŒãè¿ãèŠæ±ãè¡ãããŸãã ããŠã³ããŒãã¯åææäœã§ã¯ãããŸãããã¯ã©ã€ã¢ã³ãããã®ãã¡ã€ã«éä¿¡ã®çµäºã¯ããµãŒããŒäžã§ãã¡ã€ã«ã®æºåãæŽã£ãããšãæå³ãããã®ã§ã¯ãããŸãããé©åãªå Žæã«ä¿åãããŠã€ã«ã¹å¯Ÿçããã°ã©ã ã«ãã£ãŠãã§ãã¯ããããŒã¿ããŒã¹ã«æžã蟌ãå¿ èŠããããŸãã
é²è¡ç¶æ³ã€ãã³ãã®ãµããŒããããå Žåããã¡ã€ã«ãããŠã³ããŒãããããŸã§æäœã®ã¹ããŒã¿ã¹ã¯èŠæ±ãããããã©ãŠã¶ã䜿çšããŠé²è¡ç¶æ³ããŒãæç»ãããŸãã ããã«ããããµãŒããŒã®è² è·ãå€§å¹ ã«åæžããããã¹ã ãŒãºãªé²æãå®çŸã§ããŸãã
é²è¡ã€ãã³ãããµããŒããããŠããªãå ŽåããµãŒããŒããã¡ã€ã«ã®æºåãå®äºãããšèšããŸã§ã1ã2ç§ããšã«ããŠã³ããŒãã¹ããŒã¿ã¹ãèŠæ±ããŸãã
æå
ç§ãã¡ã®æèŠã§ã¯ãã²ãŒã ã¯ããããã®äŸ¡å€ããããŸããã çŸåšã®ãœãªã¥ãŒã·ã§ã³ã¯ããã©ãã·ã¥ã®å©ç¹ã倱ãããšãªããå€ãã®åé¡ã解決ãããããªã©ãå®å šã«ç§ãã¡ã«åã£ãŠããŸãã- ãæ°Žäžããã¯ããæé€-æçŽã®éä¿¡ãšæ·»ä»ãã¡ã€ã«ã®ããŠã³ããŒãã«é¢ãããŠãŒã¶ãŒã®åé¡ã
- ãã©ãã·ã¥ã®äœ¿çšãæåŠããŸããã
- 䞻芳çã«-ãŠãŒã¶ãŒãæ·»ä»ãã¡ã€ã«ä»ãã®é»åã¡ãŒã«ã®éä¿¡ã«è²»ããæéãççž®ããŸããã
- ãã£ã¹ã¯ãžã®ãã¡ã€ã«ã®ããŠã³ããŒãæ°ãPeopleã«æ¯ã¹ãŠåå¢ããŸããã