ç§ãã¡ã¯ãæ¥ã®ããã«ãœã³DevDaysã®ãããžã§ã¯ãã«ã€ããŠè©±ãç¶ããŸããDevDaysã§ã¯ã修士ããã°ã©ã
ããœãããŠã§ã¢éçº/ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ãã®åŠçãåå ããŸããã
ãšããã§ãç§ãã¡ã¯ãèªè
ãããžã¹ãã©ã·ãŒã®
VKã°ã«ãŒãã«åå ãããããšæã£ãŠããŸãã ãã®äžã§ãåéãšç 究ã«é¢ããææ°ãã¥ãŒã¹ãå
¬éããŸãã Open Dayã®ãããªãã°ã«ãŒãã«ãããŸãã ãç¥ããããŸãïŒã€ãã³ãã¯4æ29æ¥ã«éå¬ãã
ãŸã ã詳现
ã¯ãµã€ããã芧ãã ããã
Telegram Desktop Voice Message Parser
ã¢ã€ãã¢ã®èè
ããã·ã§ãã»ã¢ã«ãã§ãŒã
ããŒã æ§æKhoroshev Artem-ãããžã§ã¯ããããŒãžã£ãŒ/éçºè
/ QA
ãšãªãŒãšãã¢ã³ãã³-ããžãã¹ã¢ããªã¹ã/ããŒã±ãã£ã³ã°ã¹ãã·ã£ãªã¹ã
Kuklina Maria-UIãã¶ã€ããŒ/éçºè
Bakhvalov Pavel-UIãã¶ã€ããŒ/éçºè
/ QA
ç§ãã¡ã®èŠ³ç¹ããèŠããšãTelegramã¯çŸä»£çã§äŸ¿å©ãªã¡ãã»ã³ãžã£ãŒã§ããããã®PCããŒãžã§ã³ã¯äººæ°ããããªãŒãã³ãœãŒã¹ã§ãããããå€æŽããããšãå¯èœã§ãã ã¯ã©ã€ã¢ã³ãã¯ããªãè±å¯ãªæ©èœãæäŸããŸãã æšæºã®ããã¹ãã¡ãã»ãŒãžã«å ããŠãé³å£°é話ããããªã¡ãã»ãŒãžãé³å£°ã¡ãã»ãŒãžãå«ãŸããŠããŸãã ãããŠãåŸè
ãåä¿¡è
ãäžäŸ¿ã«ããããšããããŸãã å€ãã®å Žåãã³ã³ãã¥ãŒã¿ãŒãŸãã¯ã©ãããããã§é³å£°ã¡ãã»ãŒãžãèãæ¹æ³ã¯ãããŸããã åšå²ã®ãã€ãºãããããã©ã³ã®æ¬ åŠãå¹²æžããå ŽåããããŸãããŸãã¯ãã¡ãã»ãŒãžã®å
容ã誰ã«ãèããããªãå ŽåããããŸãã ã¹ããŒããã©ã³ã§é»å ±ã䜿çšããå Žåãã©ããããããPCãšã¯ç°ãªããè³ã«æã£ãŠããããšãã§ããããããã®ãããªåé¡ã¯ã»ãšãã©çºçããŸããã ãã®åé¡ã解決ããããšããŸããã
DevDaysã§ã®ãããžã§ã¯ãã®ç®æšã¯ãåä¿¡ããé³å£°ã¡ãã»ãŒãžãTelegramãã¹ã¯ãããã¯ã©ã€ã¢ã³ãïŒä»¥äžãTelegram DesktopïŒã®ããã¹ãã«å€æããæ©èœãè¿œå ããããšã§ããã
çŸæç¹ã§ã®ãã¹ãŠã®ã¢ããã°ã¯ãé³å£°ã¡ãã»ãŒãžãéä¿¡ã§ãããããã§ããã代ããã«ããã¹ããåä¿¡ã§ããŸãã ããã¯ç§ãã¡ã«ãšã£ãŠããŸã䟿å©ã§ã¯ãããŸãããã¡ãã»ãŒãžããããã«è»¢éããããšã¯ããŸã䟿å©ã§ã¯ãããŸããããã€ãã£ãæ©èœã欲ããã§ãã ããã«ããããã¯é³å£°èªèAPIãšãŠãŒã¶ãŒã®éã®ä»²ä»è
ãšããŠæ©èœãããµãŒãããŒãã£ã§ãããããã¯å°ãªããšãå®å
šã§ã¯ãããŸããã
åè¿°ã®ããã«ãé»å ±ãã¹ã¯ãããã«ã¯ã軜éæ§ãšé床ãšãã2ã€ã®å©ç¹ããããŸãã ããã¯å¶ç¶ã§ã¯ãããŸãããå®å
šã«C ++ã§æžãããŠããããã§ãã ãŸããæ°ããæ©èœãã¯ã©ã€ã¢ã³ãã«çŽæ¥è¿œå ããããšã«ãããããC ++ã§éçºããå¿
èŠããããŸããã
ç§ãã¡ã®ããŒã ã«ã¯4人ãããŸããã åœåã2人ã¯é³å£°èªèã«é©ããã©ã€ãã©ãªãæ¢ããŠããŸããã1人ã¯Telegramãã¹ã¯ãããã®ãœãŒã¹ã³ãŒãã調æ»ãããã1人ã¯
Telegram Desktopãããžã§ã¯ãã®ãã«ããå±éããŠããŸããã ãã®åŸã誰ããUIã®ä¿®æ£ãšãããã°ã«è¿œãããŸããã
æå³ããæ©èœã®å®è£
ã¯é£ãããªãããã«èŠããŸãããããã€ãã®ããã«ãå°é£ãçããŸããã
ãã®åé¡ã®è§£æ±ºçã¯ã2ã€ã®ç¬ç«ãããµãã¿ã¹ã¯ã§æ§æãããŠããŸãããé³å£°èªèã®ããã®é©åãªæ段ã®éžæãšãæ°ããæ©èœã®ããã®UIã®å®è£
ã§ãã
é³å£°èªèçšã®ã©ã€ãã©ãªãéžæãããšããèšèªã¢ãã«ã¯å€ãã®ã¹ããŒã¹ãå æãããããããã«ãã¹ãŠã®ãªãã©ã€ã³APIãæŸæ£ããå¿
èŠããããŸããã ãã ããããã¯1ã€ã®èšèªã«ãããŸããã ãªã³ã©ã€ã³APIã䜿çšããå¿
èŠãããããšãæããã«ãªããŸããã åŸã«ãGoogleãYandexãMicrosoftãªã©ã®å·šå€§äŒæ¥ã®é³å£°èªèãµãŒãã¹ã¯ãŸã£ããç¡æã§ã¯ãªãããšãå€æããè©Šçšæéã«æºè¶³ããå¿
èŠããããŸãã ãã®çµæãGoogle Speech-To-TextãéžæãããŸãããããã¯ããµãŒãã¹ã䜿çšããããã®ããŒã¯ã³ãååŸã§ããããã§ãã
ééãã2çªç®ã®åé¡ã¯ãC ++ã®æ¬ ç¹ã®ããã€ãã«é¢é£ããŠããŸã-äžå€®ãªããžããªããªãå Žåã®ããŸããŸãªã©ã€ãã©ãªã®åç©åã§ãã Telegram Desktopãç¹å®ã®ããŒãžã§ã³ã®ä»ã®å€ãã®ã©ã€ãã©ãªã«äŸåããŠããããšãããŸããŸèµ·ãããŸããã å
¬åŒãªããžããªã«ã¯ããããžã§ã¯ãããã«ãããããã®
æ瀺ããããŸãã ãŸãããã«ãã®åé¡ã«é¢ããæªè§£æ±ºã®åé¡ãå€æ°ãããŸãïŒããšãã°ã
1åãš
2åïŒ ã ãã¹ãŠã®åé¡ã¯ããã«ãã¹ã¯ãªãããUbuntu 14.04çšã«èšè¿°ãããŠãããšããäºå®ã«é¢é£ããŠããããšãå€æããŸãããUbuntu18.04ã§ãã¬ã°ã©ã ãæ£åžžã«ãã«ãããã«ã¯ãå€æŽãå ããå¿
èŠããããŸããã
Telegram Desktopèªäœã¯ããªãæéãããããŸããIntelCore i5-7200UãæèŒããã©ãããããã§ã¯ããã¹ãŠã®äŸåé¢ä¿ãå«ãå®å
šãªã¢ã»ã³ããªïŒ-j 4ãã©ã°ïŒã¯çŽ3æéããããŸãã ãããã®ãã¡ãã¯ã©ã€ã¢ã³ãèªäœããªã³ã¯ããã«ã¯çŽ30åããããŸããïŒåŸã§ããããã°æ§æã§ã¯ãªã³ã¯ã«çŽ10åãããããšãå€æããŸããïŒãå€æŽãè¡ããã³ã«ãªã³ã¯æé ãç¹°ãè¿ãå¿
èŠããããŸãã
åé¡ã«ãããããããUbuntu 18.04ã®
ãã«ãã¹ã¯ãªãããæŽæ°ããã ãã§ãªããã¢ã€ãã¢ãå®è£
ããããšãã§ããŸããã ä»äºã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã¯
ããã§èŠãããšãã§ã
ãŸã ã ãŸããããã€ãã®ã¢ãã¡ãŒã·ã§ã³ãé©çšããŸãã ãã¹ãŠã®é³å£°ã¡ãã»ãŒãžã®è¿ãã«ãã¿ã³ã衚瀺ãããã¡ãã»ãŒãžãããã¹ãã«ç¿»èš³ã§ããŸãã å³ã¯ãªãã¯ãããšããªãã·ã§ã³ã§ç¿»èš³ã«äœ¿çšãããèšèªãæå®ã§ããŸãã ã¯ã©ã€ã¢ã³ãã¯
ããªã³ã¯ããããŠã³ããŒãã§ããŸãã
ãªããžããªãç§ãã¡ã®æèŠã§ã¯ãå€ãã®ãŠãŒã¶ãŒã«ãšã£ãŠäŸ¿å©ãªåªããæŠå¿µå®èšŒæ©èœãå€æããŸããã Telegram Desktopã®å°æ¥ã®ãªãªãŒã¹ã§ãããæåŸ
ããŠããŸãã
IntelliJ IDEAã®æ¡åŒµãããèªç¶èšèªãµããŒã
ã¢ã€ãã¢ã®èè
æŠè»ãŽã©ãã£ã¹ã©ã
ããŒã æ§æTanks VladislavïŒããŒã ãªãŒããLanguageToolããã³IntelliJ IDEAã§äœæ¥ïŒ
Sokolov NikitaïŒLanguageToolã®äœ¿çšãšUIã®äœæïŒ
Hvorov AlexanderïŒLanguageToolã®äœ¿çšãšããã©ãŒãã³ã¹ã®æé©åïŒ
Sadovnikov AlexanderïŒããŒã¯ã¢ããèšèªãšã³ãŒãã®è§£æã®ãµããŒãïŒ
IntelliJ IDEAã®ãã©ã°ã€ã³ãéçºããããŸããŸãªããã¹ãïŒã³ã¡ã³ããšããã¥ã¡ã³ããã³ãŒãå
ã®ãªãã©ã«è¡ãMarkdownãŸãã¯XMLããŒã¯ã¢ããã§ãã©ãŒããããããããã¹ãïŒã®ææ³ãã¹ãã«ãã¹ã¿ã€ã«ã®å¿ å®åºŠïŒè±èªã§ã¯æ ¡æ£ãšåŒã°ããŸãïŒããã§ãã¯ããŸãã
ãã®ãããžã§ã¯ãã®ã¢ã€ãã¢ã¯ãæšæºã®ã¹ãã«ãã§ãã¯IntelliJ IDEAãGrammarlyã®èŠæš¡ã«æ¡åŒµããIDEå
ã§äžçš®ã®Grammarlyãäœæããããšã§ããã
ãªã³ã¯ãã¯ãªãã¯ãããšãäœãèµ·ãã£
ãããèŠãããšãã§ããŸãã
ããŠã以äžã§ã¯ãã©ã°ã€ã³ã®æ©èœãšãäœæäžã«çºçããåé¡ã«ã€ããŠè©³ãã説æããŸãã
ããæ°èªç¶èšèªã§ããã¹ããæžãããã«èšèšãããå€ãã®è£œåããããŸãããã³ãŒãã«é¢ããããã¥ã¡ã³ããšã³ã¡ã³ãã¯ã»ãšãã©ã®å Žåéçºç°å¢ã§æžãããŠããŸãã åæã«ãIDEã¯ã³ãŒãã®èšè¿°ãšã©ãŒãèŠã€ããã®ã«éåžžã«åœ¹ç«ã¡ãŸãããèªç¶èšèªã®ããã¹ãã«ã¯ããŸãé©ããŠããŸããã ãã®ãããææ³ãå¥èªç¹ããŸãã¯ã¹ã¿ã€ã«ãééããããšã¯éåžžã«ç°¡åã§ãããéçºç°å¢ã¯ããããæã瀺ããŸããã ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®èšè¿°ãééãããšãã³ãŒãã®ããããããã ãã§ãªããéçºããã¢ããªã±ãŒã·ã§ã³èªäœã®ãŠãŒã¶ãŒã«ã圱é¿ãããããæãéèŠã§ãã
æã人æ°ãããéçºãããŠããéçºç°å¢ã®1ã€ã¯ãIntelliJ IDEAãšIntelliJãã©ãããã©ãŒã ã«åºã¥ãIDEã§ãã IntelliJ Platformã«ã¯ãã§ã«ã¹ãã«ãã§ãã«ãŒãçµã¿èŸŒãŸããŠããŸãããæãåçŽãªææ³ãšã©ãŒããä¿åããŸããã 人æ°ã®ããèªç¶èšèªåæã·ã¹ãã ã®1ã€ãIntelliJ IDEAã«çµ±åããããšã«ããŸããã
å®è£
ç¬èªã®ããã¹ãæ€èšŒã·ã¹ãã ãäœæãããšããã¿ã¹ã¯ãèšå®ããªãã£ããããæ¢åã®ãœãªã¥ãŒã·ã§ã³ã掻çšããŸããã æãé©åãªãªãã·ã§ã³ã¯
LanguageToolã§ããã ãã®ã©ã€ã»ã³ã¹ã«ãããç§ãã¡ã®ç®çã«åãããŠèªç±ã«äœ¿çšããããšãã§ããŸãããç¡æã§ãJavaã§èšè¿°ããããªãŒãã³ãœãŒã¹ã§ã¬ã€ã¢ãŠããããŠããŸãã ããã«ã25ã®èšèªããµããŒããã15幎以äžã«ããã£ãŠéçºãããŠããŸãã ãã®ãªãŒãã³æ§ã«ãããããããLanguageToolã¯ææã®ããã¹ãæ€èšŒãœãªã¥ãŒã·ã§ã³ãšã®æ·±å»ãªç«¶äºçžæã§ãããããŒã«ã«ã§åäœã§ãããšããäºå®ã¯æåéããã®ãã©ãŒæ©èœã§ãã
ãã©ã°ã€ã³ã³ãŒãã¯
GitHubã®
ãªããžããªã«ãããŸã ã ãããžã§ã¯ãå
šäœãKotlinã§æžãããUIã«Javaãå°ãè¿œå ãããŸããã ããã«ãœã³äžã«ãããŒã¯ããŠã³ãJavaDocãHTMLãããã³ãã¬ãŒã³ããã¹ãã®ãµããŒããå®è£
ããããšãã§ããŸããã ããã«ãœã³ã®åŸã倧ããªæŽæ°ã«ãããXMLãJavaã®æååãªãã©ã«ãKotlinãPythonãããã³ã¹ãã«ãã§ãã¯ã®ãµããŒããè¿œå ãããŸããã
é£ããLanguageToolã®ãã§ãã¯ã®ããã«æ¯åãã¹ãŠã®ããã¹ãããã£ãŒããããšãæ€æ»èªäœãUIã¹ããªãŒã ããããã¯ãããããIDEAã€ã³ã¿ãŒãã§ãŒã¹ã¯å€å°ãªããšãæ·±å»ãªããã¹ãã§ããªãŒãºããããšã«ããã«æ°ä»ããŸããã ãã®åé¡ã¯ã `ProgressManager.checkCancelled`ããã§ãã¯ããããšã§è§£æ±ºãããŸãã-IDEAãæ€æ»ãäžæ¢ãã¹ãã ãšå€æããå Žåããã®é¢æ°ã¯äŸå€ãã¹ããŒããŸãã
ããã«ãããã³ã°ãå®å
šã«æé€ãããŸãããã䜿çšããããšã¯ã§ããŸãããããã¹ãã¯éåžžã«é·ãéåŠçãããŠããŸããã ããã«ãç§ãã¡ã®ã±ãŒã¹ã§ã¯ãã»ãšãã©ã®å Žåãããã¹ãã®ããäžéšãå€æŽããããããçµæãäœããã®æ¹æ³ã§ãã£ãã·ã¥ããããšæããŸãã ãããç§ãã¡ãããããšã§ãã æ¯åãã¹ãŠããã§ãã¯ããªãããã«ã確å®çã«ããã¹ããæçã«åå²ããå€æŽããããã®ã®ã¿ããã§ãã¯ããŸããã ããã¹ãã¯å€§ãããªãå¯èœæ§ãããããã£ãã·ã¥ãããŒãããããªããããããã¹ãèªäœã§ã¯ãªããããã·ã¥ãä¿åããŸããã ããã«ããã倧ããªãã¡ã€ã«ã§ããã©ã°ã€ã³ãã¹ã ãŒãºã«æ©èœããããšãã§ããŸããã
LanguageToolã¯25ãè¶
ããèšèªããµããŒãããŠããŸããã1人ã®ãŠãŒã¶ãŒãããããã¹ãŠãå¿
èŠãšããããšã¯ã»ãšãã©ãããŸããã ãªã¯ãšã¹ãã«å¿ããŠç¹å®ã®èšèªã®ã©ã€ãã©ãªãããŠã³ããŒãããæ©äŒãæäŸãããã£ãïŒUIã®ãã§ãã¯ããŒã¯ãä»ããŠããå ŽåïŒã ç§ãã¡ããããå®è£
ããŸããããããŸãã«ãè€éã§ä¿¡é Œæ§ãäœãããšãå€æããŸããã ç¹ã«ãå¥åã®ã¯ã©ã¹ããŒããŒãšããŠæ°ããèšèªã»ããã䜿çšããŠLanguageToolãããŒããããããæ
éã«åæåããå¿
èŠããããŸããã åæã«ããã¹ãŠã®ã©ã€ãã©ãªã¯ãŠãŒã¶ãŒ.m2ãªããžããªã«ãããåéå§æã«æŽåæ§ããã§ãã¯ããå¿
èŠããããŸããã æçµçã«ããŠãŒã¶ãŒããã©ã°ã€ã³ã®ãµã€ãºã«åé¡ãããå Žåãæã人æ°ã®ããèšèªã®ããã€ãã«åå¥ã®ãã©ã°ã€ã³ãæäŸããããšã«ããŸããã
ããã«ãœã³åŸããã«ãœã³ã¯çµäºããŸãããããã©ã°ã€ã³ã®äœæ¥ã¯ããçãæ§æã§ç¶è¡ãããŸããã è¡ãã³ã¡ã³ããããã«ã¯å€æ°åãã¯ã©ã¹åãªã©ã®èšèªæ§æèŠçŽ ãŸã§ãµããŒããããã£ãã®ã§ãã çŸåšãããã¯JavaãKotlinãPythonã§ã®ã¿ãµããŒããããŠããŸããããã®ãªã¹ããå¢ããããšãé¡ã£ãŠããŸãã å€ãã®å°ããªãã°ãä¿®æ£ããIdeaãã«ãã€ã³ã¹ãã«ãã§ãã«ãŒãšã®äºææ§ãé«ããŸããã ããã«ãXMLãµããŒããšã¹ãã«ãã§ãã¯ãç»å ŽããŸããã ãããã¯ãã¹ãŠãæè¿å
¬éãã2çªç®ã®ããŒãžã§ã³ã«ãããŸãã
次ã¯ïŒãã®ãããªãã©ã°ã€ã³ã¯ãéçºè
ã ãã§ãªãããã¯ãã«ã«ã©ã€ã¿ãŒïŒããšãã°ãIDEã§XMLã䜿çšããããšãå€ãïŒã«ãšã£ãŠãæçšã§ãã æ¯æ¥ãèªç¶èšèªã䜿çšããªããã°ãªãããèµ·ãããããšã©ãŒã«é¢ããç·šéè
ã®ãã³ãã®åœ¢ã§ã¢ã·ã¹ã¿ã³ããçšæããå¿
èŠã¯ãããŸããã ãã©ã°ã€ã³ã¯ãã®ãããªãã³ããæäŸããé«åºŠãªç²ŸåºŠã§æäŸããŸãã
ãã©ã°ã€ã³ã¯ãæ°ããèšèªãè¿œå ããããã¹ãæ€èšŒãæŽçããäžè¬çãªã¢ãããŒããæ€èšããããšã§éçºããäºå®ã§ãã è¿ãå°æ¥ãã¹ã¿ã€ã«ãããã¡ã€ã«ã®å®è£
ïŒããã¹ãã®ã¹ã¿ã€ã«ã¬ã€ããå®çŸ©ããäžé£ã®ã«ãŒã«ãããšãã°ãæžããªãã§ãå®å
šãªãã©ãŒã ãæžããïŒãèŸæžãæ¡åŒµãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãæ¹åããŸãïŒç¹ã«ããŠãŒã¶ãŒã«åèªãç¡èŠããã ãã§ãªãã圌ãèŸæžã«å
¥ããŠãåè©ã瀺ããŸãïŒã