åæ§ã®ããšã詊ã¿ãããã«ãYandex MVPã§Webã·ãã¥ã¬ãŒã¿ãŒãèµ·åããŸããããã®ã·ãã¥ã¬ãŒã¿ãŒã§ã¯ããŠãŒã¶ãŒãã³ãŒããã¹ã¯ãªããããã®ä»ãã¹ãŠãããŸããŸãªã¿ãã«èšè¿°ã§ããé£ã«ããããã¹ãŠãæçµçµæãšããŠè¡šç€ºããŸããã

MVPã¯ããèªäœãããŸã瀺ããYandex.Practiceã§çåŸã®ç¥èããã¹ãããããã®æ¬æ ŒçãªããŒã«ã®ã¬ãã«ã«Webã·ãã¥ã¬ãŒã¿ãŒããããããŸãããç§ã®ååã¯Artemã§ããWebéçºãæããããã®ã·ãã¥ã¬ãŒã¿ãŒãã©ã®ããã«äœæããããã©ã®ããã«æ©èœããäœãã§ãããã説æããŸãã
å€ããèŠããšãããã§ã¯ãã¹ãŠãåçŽãªããã§ãããã¹ãŠã®ã«ã¹ã¿ã ã³ãŒããiframeã«è©°ã蟌ã¿ãpostmessageã§æçš¿ããŠãããå¯èœãªéãã¬ã³ããªã³ã°ãããšããã¹ãŠãæ©èœããŸãããã®ãããªãããã«ãã³ãããããªã³ã©ã€ã³ã³ãŒããã¬ãã¥ãŒã
ãããããã¥ã¢ã³ã¹ããããŸãã
äœ¿ãæ¹
æåã«ãèããããåé¡ã«æ°ã¥ããŸãããããšãã°ãã¯ãŒã¯ã·ã§ããèªäœãªã©ã®Yandexãã¡ã€ã³ã«ã·ãã¥ã¬ãŒã¿ãŒããããã€ãããšããŠãŒã¶ãŒãããå°ã奜å¥å¿ããããããå¯èœæ§ããŒãã§ã¯ãããŸãããã€ãŸãã圌ãã¯ããã€ãã®ã³ãŒããåã蟌ãã§ã·ãã¥ã¬ãŒã¿ãŒã«æå ¥ããã·ãã¥ã¬ãŒã¿ãŒã¯ãããç±å¿ã«åŠçããŸãããŸããã³ãŒãã¯äžæ£ã§ããããšã倿ããæ¢åã®Yandex Cookieãåé€ããŠãµãŒãããŒãã£ã®ãµãŒãã¹ã«æ¿å ¥ããŸãããã®åŸãè©æ¬ºåž«ã¯Yandexã®ãŠãŒã¶ãŒã®å人ã¢ã«ãŠã³ããšãã¹ãŠã®å人ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãããã®iframeãyandex.ruãã¡ã€ã³ã«ããå Žåããããå®è£ ããã®ã¯éåžžã«ç°¡åã§ãããã®ãããyandex.netã«ã·ãã¥ã¬ãŒã¿å°çšã®å¥ã®ãã¡ã€ã³ãäœæããFeynmanãšããååãä»ããŸããããªãã£ãŒãã«æ¬æã衚ããŠãã¯ãã
äžè¬ã«ãã·ãã¥ã¬ãŒã¿ã¯ãããã¯ãšã³ãã«éä¿¡ãããã¡ã€ã«ããã¬ãŒã³ããã¹ããjsonãããã³ç»åã®base64圢åŒã§ä¿åããŸããæ¬¡ã«ããããã¯å®éã®ãã¡ã€ã«ã«å€æãããéçãªåœ¢åŒã§ãã§ã«é åžãããŠããŸãããããiframeã«å ¥ããŠã¬ã³ããªã³ã°ããããšãã§ããŸãã
ãã ããããã§ã¯æ§æã®åŒ·èª¿è¡šç€ºãè¡ãã ãã§ãªããç¥èããã¹ãããããã®ã·ãã¥ã¬ãŒã¿ãŒããããŸãããããã£ãŠããã®ã³ãŒãããªã³ã¶ãã©ã€ã§ãã¹ãããã³ãã§ãã¯ããå¿ èŠããããŸããã€ãŸããäœããã®æ¹æ³ã§iframeããã»ã¹ã«ãŠã§ããžãããŠãŒã¶ãŒã倿°ã«ååãä»ããæ¹æ³ãªã©ããã¹ãŠãæ£ããè¡ããããã©ããããŸãã¯ãã¹ãŠãdivã§æ£åžžãã©ããã確èªããå¿ èŠããããŸãã
ãããŠããã§åã³ãã¡ã€ã³ã«ééããŸããç§ããã§ã«æžããããã«ããŠãŒã¶ãŒã³ãŒãã¯Feynmanãã¡ã€ã³ã®ã·ãã¥ã¬ãŒã¿ãŒã«å ¥ããããpraktikum.yandex.ruãã¡ã€ã³ã®Yandexãããã§ãã¯ããŸãããã©ãŠã¶ã®åããªãªãžã³ããªã·ãŒã¯èŠæãããŠãããç°ãªããã¡ã€ã³ãããå Žåã¯iframeã®å éšãæ¹ããããããšã¯ã§ããŸããã
ãã®ãããiframeãiframeã«è©°ã蟌ãããšã«ããŸããã

次ã®ç¶æ³ã倿ããŸããã
- æåã¯å®éã«ã¯ç©ºã®iframeãäœæããŸãã
- 圌ã¯ããçš®ã®ç©ºçœã®ããŒãžãæããŸãã
- ç§ãã¡ã¯ããã³ãããããã¡ã€ã³ãã³ãç§ãã¡ã«äžãããã®ãžã®ãªã³ã¯ãå«ããã¹ãã¡ãã»ãŒãžãæçš¿ããŸãïŒåœŒãçµ±èšããã¹ãããŠããå ŽæããïŒã
- æåã®iframeã¯ãã®ãªã³ã¯ãååŸããå éšiframeã®srcã«çœ®ãæããŸãã
ãã®çµæãæåã®iframeãã³ãŒããææããå éšiframeã§å¿ èŠãªããšãå®è¡ã§ããŸããäºå®äžããã¹ãã¯ãããã¥ã¡ã³ãããŠã£ã³ããŠãªã©ãiframeå ã®ãã¹ãŠã«ã¢ã¯ã»ã¹ã§ããåãªãè©äŸ¡é¢æ°ã§ããããã«ãããåé¡ã®ãã¹ããè¡ããç¹å®ã®iframeã®ãŠã£ã³ããŠã§å®è¡ããæ©äŒãåŸãããŸãã
ãã¹ãã ãã§ã¯ãããŸãã
次ã«ãããã€ãã®äŸ¿å©ãªæ©èœã远å ããããšæããŸããã端æ«ãã³ã³ãœãŒã«ããã°ã«æžã蟌ãã å 容ã«é¢ãããŠãŒã¶ãŒããŒã¿ã衚瀺ããæ©èœããã®ä»ã®æ¥œãã¿ã§ãããã¡ãããã¹ããŒããã©ã³ãã¿ãã¬ããã§çµæãã©ã®ããã«è¡šç€ºããããããŠãŒã¶ãŒã確èªã§ããããã«ãæ¬æ Œçãªã¢ãããã£ãã¢ãŒããäœæããŸããã

ãã®ããã«ãå¿ èŠãªãã¹ãŠã®ã¹ã¿ã€ã«ãããŒãããå¿çã¢ãŒãããšãã¥ã¬ãŒãããç¹å¥ãªã©ã€ãã©ãªãäœæãããŸããããŸããå ã®iframeãå°ã倿ŽãããŠãŒã¶ãŒãconsole.logãç»é¢ã«è¡šç€ºã§ããããã«ãããã¹ãŠã®ãã®ã远å ããŸããããã€ãã®åçŽãªãªããžã§ã¯ãã ãã§ãªããæ¬æ Œçãªããã¥ã¡ã³ãdomããªãŒã远å ããŸãã
ããã«å ããŠãäºåãã¹ãã®å®è¡æ¹æ³ãåŠã³ãŸãããããã¯ãåãããšããã§ãã¯ããå€ãã®ãã¹ãããããã䟿å©ã§ããããšãã°ããŠãŒã¶ãŒãã³ãŒãå ã®ã«ãŒãã§ãããããéãããã©ããããã¹ãã«å€¢äžã«ãªã£ããã©ãããªã©ã§ãããããåãã¹ãã§åå¥ã«èª¬æããããšã¯ããŸãæå³ããªããããã³ãŒãããã§ãã¯ããäžé£ã®ç¹å¥ãªäºåãã¹ãã¡ãœãããåãããã¹ãã©ã€ãã©ãªãäœæããŸããããã®æ®µéã§ãã¹ãŠãæ£åžžã§ããã°ãã¡ã€ã³ãã¹ããšè§£æ±ºãããåé¡ã¯ãã§ã«ãã§ãã¯ãããŠããããã®åŸãçµæããŠãŒã¶ãŒã«è¡šç€ºãããŸãã
äºåãã¹ãã®çµæããŠãŒã¶ãŒã«è¿ãããã«ãpostmessageã䜿çšããŸãããšã©ãŒããããã©ããã«é¢ä¿ãªããã¡ãã»ãŒãžãéä¿¡ããŸããã¡ãªã¿ã«ãWebã·ãã¥ã¬ãŒã¿ãŒã®åŠçã®ã³ãŒããããã·ã¢èªã«ç¿»èš³ããães-lint linterãä»ããŠãã§ãã¯ãããåžžã«æ§æãšã©ãŒã匷調衚瀺ãããŸãã
ã³ãŒãã¬ãã¥ãŒã®åé¡ïŒã ãã§ãªãïŒ
ããšãã°ãããŒãžã«ã·ã¹ãã ãŸãã¯ãã©ãŠã¶ã®éç¥ãããå Žåãäœããå ¥åããããã«ææ¡ãããŸãããããã¹ããå®è¡ãããšããŠãŒã¶ãŒã¯éç¥ãšããŒã¿å ¥åã®èŠæ±ãå«ããã©ãŠã¶ãŠã£ã³ããŠãåŒãç¶ã衚瀺ããŸããããã®ããã«ããå¿ èŠããããŸããããŠãŒã¶ãŒãã³ãŒããå«ãããŒãžãèµ·åããŠãã¹ãŠãã©ã®ããã«æ©èœãããã確èªããå Žåããã®ã¢ã©ãŒããæ©èœããå¿ èŠããããŸãããŸãããã¹ãã§æ€èšŒã®ããã«ãã®ã³ãŒããå®è¡ãããšããŠãŒã¶ãŒã®ç»é¢ã«åŒãç¶ãã¢ã©ãŒãã衚瀺ããå¿ èŠããªããªããŸããå®éãããããã¹ãŠã®ã¢ã©ãŒãããã¹ãçšã®ç¬èªã®ã¹ã¿ãïŒã¢ãã¯ïŒã«çœ®ãæããã¢ã©ãŒããããã³ããããŠã£ã³ããŠå ã®ç¢ºèªããªãŒããŒã©ã€ãããŸããããããè¡ããªããšãç¡éã®ã«ãŒããŸãã¯äœãããªã空ã®ã¢ã©ãŒããçºçããå¯èœæ§ããããŸãã
ã¡ãªã¿ã«ãç¡éã«ãŒãã«ã€ããŠãããã§ã®äž»ãªåé¡ã¯ããŠãŒã¶ãŒãæ æã«ç¡éã«ãŒãã«å ¥ãã³ãŒããæå³çã«ååŸããŠæžã蟌ãããšãã§ãïŒãã©ãŠã¶ãŒã«ã¯javascriptã¹ã¬ããã1ã€ãããªãïŒããã®çµæããã©ãŠã¶ãŒå šäœã暪ã«ãªãããšã§ããã
ããã«å¯Ÿæããããã«ãã¬ãã¥ãŒã®ããã«ã³ãŒããéä¿¡ããåã«ãæåã«ãã®ãããªç¡éã«ãŒãã远跡ããããšãåŠã³ãŸããããããè¡ãã«ã¯ãäœããã®æ¹æ³ã§ãŠãŒã¶ãŒã¹ã¯ãªãããäœãçŽãå¿ èŠããããŸãããæ¬¡ã®ããã«ããŸããã
- ãµã€ã¯ã«ããšã«ãåŒã³åºãã®æ°ãã«ãŠã³ãããç¹å®ã®é¢æ°ã远å ããŸãã
- ãã®åŒã³åºãæ°ã100,000ãè¶ ãããšãããã«äŸå€ãã¹ããŒããããã¹ãã¡ãã»ãŒãžã§è¿éãããŸããããã«ã念ã®ããããµã€ã¯ã«ã10ç§ãè¶ ããŠå®è¡ãããå Žåã®ã¿ã€ã ã¢ãŠãã確èªããŸãã
- ãã®éçšã§ãäŸå€ãçºçãããããããã§åé¡ãçºçãããã¹ãèªäœãå®è¡ããæå³ããªããªã£ãããšã远跡ããŸããã³ãŒããã«ãŒãããŸãã
ãªã³ã¯ã®ããç¶æ³ã¯å¥é泚æããå¿ èŠããããŸããã³ãŒãå ã®ãŠãŒã¶ãŒããããŒããã©ãªãªãgithubã¢ã«ãŠã³ããªã©ãæ°ããã¿ããã¯ãªãã¯ãããšéããªã³ã¯ããããšããŸãããŸããiframeå ã§çŽæ¥éãããã«ãã®ãããªãªã³ã¯ã¯å¿ èŠãããŸããã§ãããããããªããšãiframeã®ä»£ããã«ããã®ãªã³ã¯ãå«ãããŒãžãäœæãããŸããTabãä»ããŠãæ°ããã¿ãã§ãã®ãããªãã®ãéãå¿ èŠããããŸããéåžžããã¬ãŒã å ã§ã¯ãªã芪ãã¬ãŒã ã§ãªã³ã¯ãéãã«ã¯ãtarget = "_parent"ãæå®ããã ãã§ããããããç§ãã¡ã®å Žåããªã³ã¯ãå€éšã§ãããã©ãããæ±ºå®ãããã³ãã©ãŒã远å ããå¿ èŠããããŸããã
ãããŠããã¹ãŠã®ãªã³ã¯ã«ã€ããŠãç¹å¥ãªãã³ãã©ãŒãäœæããŸããããªã³ã¯ãå€éšã§ããããšãããã£ãå Žåã¯ããã¹ãã¡ãã»ãŒãžãéä¿¡ãããªã³ã¯ãã³ãã©ãŒèªäœãäžæããŠïŒããã©ã«ããåé¿ïŒããã¹ãã¡ãã»ãŒãžãåé¢ã«æ»ããŸããããã«å€éšãªã³ã¯ãããããšãããããéç¥ã衚瀺ãããŸã-å€éšãµã€ãã«ã¢ã¯ã»ã¹ããŠãããããã§ããïŒãã®åŸãæ°ããã¿ããéããŸãã
ãŸããã¢ã³ã«ãŒãããããã¹ãŠãã¯ããã«ç°¡åã§ããããããã¯iframeå ã§ã¯æ©èœããŸããã§ãããäžè¬çã«ããããã£ãŠãå°ããªããã¯ãšããŠãä»»æã®ãªã³ã¯ã®ã¯ãªãã¯ã€ãã³ãããµãã¹ã¯ã©ã€ãããŸãããã¢ã³ã«ãŒãããå Žåã¯ãscrollIntoViewãç¹å®ã®èŠçŽ ã«èšå®ããŸããã
ãã¹ãŠã®ã¡ã¿ããŒã¿ïŒããšãã°ããŠãŒã¶ãŒãHTMLããŒãžã«ãã¡ãã³ã³ãç»é²ããŠããå ŽåããŸãã¯ç¹å®ã®ã¿ã€ãã«ãæã£ãŠããå ŽåïŒãiframeãããŒããããåŸã«ãã¹ãã¡ãã»ãŒãžãä»ããŠéä¿¡ããŸããquerySelectorã䜿çšããŠãããã2ã€ã®ã¿ã°ãååŸãããã¹ãã¡ãã»ãŒãžãä»ããŠããã³ãã«éãè¿ããŸããããã³ãèªäœããå¿ èŠã«å¿ããŠããããã¹ãŠã®ã¢ã€ã³ã³ãæ¿å ¥ããŸããäºçްãªããšã®ããã§ããããŠãŒã¶ãŒã¯ãã©ãŠã¶å ã«æ¬æ Œçãªãã©ãŠã¶ãæã£ãŠãããããªå°è±¡ãåããŸãã
ã·ãã¥ã¬ãŒã¿ãŒããã€ãã¹ããããšããŸã
ç§ãã¡ã®Webã·ãã¥ã¬ãŒã¿ãŒã¯ãPythonãSQLãªã©ã§è¡ã£ãã·ãã¥ã¬ãŒã¿ãŒãšã¯ç°ãªããããã¯ãšã³ãã§ã¯ãªãããã³ãããã§ãã¯ã«äœ¿çšããŸãããããã£ãŠããŠãŒã¶ãŒããã¹ããæ£ããå®äºãããšã察å¿ããPOSTèŠæ±ãããã¯ãšã³ãã«éä¿¡ãããŸããååãšããŠãé©åãªã¹ãã«ãæã€ãŠãŒã¶ãŒã¯ãåãããšãå®è¡ããŠããã®ãããªèŠæ±ãæåã§éä¿¡ã§ããŸãã
äž¡åã®å£ããããŸããäžæ¹ã§ã¯ã人ããããè¡ãããã®ãã¯ãããžãŒãšåºæ¬çãªããã¯ã«ååã«èå³ãæã£ãŠããã®ã¯ã¯ãŒã«ã§ããäžæ¹ãç§ãã¡ã®ã·ãã¥ã¬ãŒã¿ãŒã¯æ£åŒã«ãOKãããªãã¯äžè¬çã«çŽ æŽãããã§ããããªãã¯ãã¹ãŠãããŸããããåãåãããã§ã¯ãªãã®ã§ãããã¯è¶³ã®ã·ã§ããã«å°ã䌌ãŠããŸãããæ£åžžã«åäœããæ¹æ³ãåŠã¶ããã«ãééãã«æ°ã¥ããŠä¿®æ£ããŠãã ãããäžè¬çã«ã¯ããžã ã«è¡ã£ãŠãã³ããã¬ã¹ã«5åé座ã£ãŠãããFacebookã«ã100ããã§3ã»ãããããŸããããšæžããããªãã®ã§ããèªå°å¿ã楜ããããšã¯ã§ããŸãããææã¯ããã§æ¢ãŸããŸãã
å®éããã®ãã§ãã¯ãããã¯ãšã³ãã«è¡ããªãã®ã¯ãã®ããã§ããåæ§ã®åé¡ã解決ãããŸãã人ã ã¯ãä»®æ³ã®ææã§ã¯ãªããå®éã®ä»äºïŒããããã¯ãŒã¯ã·ã§ããèªäœã§ïŒãåŸãããã«å匷ããããã«ãªããŸãã
ç¬èªã®ãŠã£ãã·ã¥ãªã¹ããšãŠãŒã¶ãŒããã®ãã£ãŒãããã¯ã®äž¡æ¹ã䜿çšããŠãWebã·ãã¥ã¬ãŒã¿ãŒãåžžã«æ¹åããŠããã®ã§ããã®éçºã«ã€ããŠåŒãç¶ã説æããŸããçŸåšãç¹å®ã®ãã¯ãããžãŒãæ±ããåŠçã®ããŒãºãèæ ®ããŠãæçµæ±ºå®äžã§ããããšãã°ãReactãšNodeJSã§ã®äœæ¥ã远å ããŸããã Webã·ãã¥ã¬ãŒã¿ãŒãæã人æ°ããããPythonã·ãã¥ã¬ãŒã¿ãŒãããã«ç¶ããŸããããã¯äž»ã«ããšã³ããªã®ãããå€ãäœãããšãšããã¯ãããžãŒèªäœã®äººæ°ã®äž¡æ¹ãåå ã§ããæè¡çãªéšåã«å ããŠãã€ã³ã¿ã©ã¯ãã£ãçè«ãæäœããããã®ã·ãã¥ã¬ãŒã¿ãŒå ã®å€ãã®ã¡ã«ããºã ããããŸãïŒãããŠç§ãã¡ã®ãã¹ãŠã®ã³ãŒã¹ã§ãããã®ååãªæ°ããããŸãïŒããã¹ã¿ãŒãåŠç¿ããã¯ã€ãºãšã¹ã¿ã³ãã®ç¹å¥ãªã»ãããäœæãããQAå°éåéå°çšã®åå¥ã®ã·ãã¥ã¬ãŒã¿ãŒã¯ãããŸãããã¡ãªã¿ã«ããã¹ã¿ãŒã®ã«ããã«ãçŸåšç§ãã¡ãã¯ãŒã¯ã·ã§ãããè¡ãã®ãæäŒã£ãŠããã®ã¯ç§ãã¡ã®åæ¥çã§ãQAã³ãŒã¹ã
C ++çšã®ã·ãã¥ã¬ãŒã¿ãŒã𿩿¢°åŠç¿çšã®ã·ãã¥ã¬ãŒã¿ãŒã¯ãã£ãšè€éã§ããèå³ãããã°ãæ¬¡ã®æçš¿ã§ãããã«ã€ããŠè©±ãããšããŸãã
èªãã§ããã ãããããšãããããŸããã·ãã¥ã¬ãŒã¿ãŒãã¯ãŒã¯ã·ã§ããå šè¬ã«ã€ããŠè³ªåãããå Žåã¯ãæžããŠãã ãããåçããŸãã