JJUG CCC 2022 Fallã§ãJavaã®å
¥éãçµãã£ããä½ã®åå¼·ãããã°ããã®ï¼ãã¨ããå
容ã§çºè¡¨ãè¡ãã¾ããã
åºæ¬çãªãã®ãä½ããããã«ãªã£ããã©ããã¤ãã¤ãããã°ã©ã ãçµããªãã¨ããã¨ãã«ãä½ãåå¼·ããã°ããããã¾ã¨ãã¾ããã
å ¥éãçµãã£ã¦ä½ããããã®ãããã°ä½ã£ã¦ããã¾ããããæ¥åã§è¨ããããã®ãä½ã£ã¦è¡ãããã§ããªãã ãã¡ããã¨ãããã®ãä½ããªããªããã£ã¨ã¡ããã¨ãããã®ãä½ããããæ¬¡ã®ã¹ãããã«é²ã¿ããã¨ããã¨ãã«åå¼·ãã¦ããæãã§ãã
è³æã¯ãã¡ãã§ã
ã¨ããããæ¬ã«ã¤ãã¦ã¾ã¨ãã¦ããã¾ãã
- éçºä½æ¥ã«ã¤ãã¦
- æ¦è¦
- ããã°ã©ãã³ã°è¨èª
- ã¢ã¼ããã¯ãã£
- ããã«ã¦ã§ã¢
- ãããã¯ã¼ã¯
- ãããã¤
- çè«
- éçºææ³
- éçºããã»ã¹
- ã¾ã¨ã
ãã¬ã¼ã ã¯ã¼ã¯ã¯å
¥éã§ãã£ã¦ãåæã§ããJavaå
¥éæ¸ãããã«ãªãJavaãã§ã¯Javaã®åºæ¬ããç°¡åãªDBæä½ãSpring Bootã¾ã§åãä¸ãã¦ã¾ãã
éçºä½æ¥ã«ã¤ãã¦
ã¾ãæåã«ãã¦ã¼ã¶ã¼ã¯ç´æ¥çã«ã¯ã³ã³ãã¥ã¼ã¿ã«è¼ã£ãããã°ã©ã ãåãããã¨ã§ãµã¼ãã¹ãä½é¨ããã®ã§ãããã°ã©ããç´æ¥ã¦ã¼ã¶ã¼ã¨é¢ãããã¨ã¯ãªãããããã°ã©ã ã§ããç´æ¥ä½¿ãããããã§ã¯ããã¾ããã
ããã§ããã°ã©ã ãã©ã®ããã«åãã¦ãããã¦ãã®ããã°ã©ã ãã©ã®ããã«ä½ããããã®ããã«å
¨ä½ã¨ãã¦ã©ãããç¥èãå¿
è¦ã«ãªãããã¨ããã¤ã¡ã¼ã¸ãæã¤ãã¨ã大åã§ãã

ãã®ã¨ã³ããªã§ã¯ãããããªæ¬ãåãä¸ãã¾ãããã©ã®ãããªåéãå¿
è¦ã«ãªãããææ¡ãã¦ãæ¬å±ããã«è¡ã£ã¦èªåã®ã¬ãã«ã«åãæ¬ãé¸ã¶ã®ãããã®ã§ã¯ãªããã¨æãã¾ãã
ä½ãä½ãã«ãã¦ãå¿
è¦ã«ãªãããã°ã©ãã³ã°ã®åºæ¬ã§ããä½ããããã®ãä½ãã°ããã¨ã³ã¡ã³ããããã¾ãããããã§åãä¸ãã¦ããåºç¤ãåå¼·ããã¨ãä½ããããã®ãèªä½ã®ã¬ãã«ãããã£ã¦ããã¨æãã¾ãã
æ¦è¦
ããã§åãæ±ãå 容ã¯ã³ã³ãã¥ã¼ã¿ãµã¤ã¨ã³ã¹ãè¨ç®æ©ç§å¦ã¨ãã£ãåéã¨ãã¦ã¾ã¨ã¾ã£ã¦ãã¾ããã¤ã¾ããã³ã³ãã¥ã¼ã¿ãµã¤ã¨ã³ã¹ãã¾ãã¹ããªãããã¾ããããã¨ãã話ãªãã§ãããããã£ã½ãã¿ã¤ãã«ã®æ¬ã«ã ãããã¾ã¨ã¾ã£ã¦ãã¾ãã
ãã ãã³ã³ãã¥ã¼ã¿ãµã¤ã¨ã³ã¹ã¨ããã¿ã¤ãã«ã®æ¬ã¯ç´°ããæ£ããæ¸ããã¦ãã¦ååãèªã¿ã«ããã£ããããã®ã§ãå¿ç¨æ
å ±æè¡è
試é¨ã®æ¬ãèªã¿ãããã§ãããã ããåé¨å¯¾çã§ã¯ãªãå
容çè§£ã®ããã®æ¬ã大äºã§ãããããåé¨å¯¾çã®ã»ãã人æ°ãããã
髿©éº»å¥ããã®æ¬ããªã¹ã¹ã¡ãªã®ã§ãããåé¨å¯¾çã«ã¯åãã¦ããªãã®ã§ç´çã¯åºãªããªã£ã¦ãã¾ãããKindle Unlimitedã§èªããã®ã§ããµã¼ãã¹å©ç¨è
ã¯è¿½å ã®èª²éãªãã«èªãã¾ãã
ããã°ã©ãã³ã°è¨èª
è³æã¨ã¯é çªéãã¾ãããå
ã«ããã°ã©ãã³ã°è¨èªãã
ããã°ã©ããç´æ¥é¢ããã®ã¯ããã°ã©ãã³ã°è¨èªãå©ç¨ãã¦æ¸ãã½ã¼ã¹ã³ã¼ãã§ãã
å
¥éæ¸ã¯ã¨ã«ããåãããããã«ãªããã¨ã«ä¸»ç¼ãç½®ãããã®ã§ãç´°ããæ¡ä»¶ãèæ¯ãªã©ã¯çç¥ãããã¡ã§ããããã©ãå
¥éãçµãã£ããããå°ãçªã£è¾¼ãã 解説ãå¿
è¦ã«ãªãã¾ãã
Javaã§ã¯ãJavaæ¬æ ¼å
¥éããæãã¦ãã¾ãã
ãã ããã£ã¨çªã£è¾¼ãã åå¼·ããããã¨ããã¨ãã«ãè¨èªä»æ§ãªã©ãèªãå¿
è¦ãåºã¦ãã¾ãããè¨èªä»æ§ãèªãããã«ã¯ãããã°ã©ãã³ã°è¨èªãã¨ãããã®ãããããä½ãã¨ãããã¨ãç¥ã£ã¦ããå¿
è¦ãããã¾ãã
ããã§å
¥å£ã¨ãã¦ãå½é¡è«çãè¿°èªè«çãªã©ã®è«çå¦ãããã©ã ãè¨ç®ãåä»ã©ã ãè¨ç®ã¨ããæµãã§åå¼·ããã®ããããã¨æãã¾ãã
ããã¦ãåçè«ã§ãããåã·ã¹ãã å
¥éãã¨ããæ¬ãããã¾ããããã¾ããªã¹ã¹ã¡ãã¾ãããåçè«ãæ¬æ ¼çã«åå¼·ããã«ã¯å¿
ãèªã¾ãªãã¨ãããªãæ¬ã§ãããåºãåå¼·ããä¸é¨ã¨ãã¦ã¯å°éçããã¾ãã
ããã§ãããã°ã©ãã³ã°è¨èªã®åºç¤ç¥èãããããããã¾ãããã®æ¬ã¯ãåã·ã¹ãã å
¥éãã®ãã¤ã¸ã§ã¹ãã®ãããªæ¬ã§ããã£ãã®176ãã¼ã¸ï¼ãã ããï¼è¡èªãã®ã«1æéããã£ãããã¾ãã
å
ã«ã³ã³ãã¤ã©ãä½ã£ã¦ã¿ãã¨ããã®ãæã§ããããµã¤ãã®ã³ã³ãã¤ã©ãã¤ããããã§ã¯JavaCCã使ã£ããã¼ãµã¼ããã¨ã«x86ã³ã¼ããåºåããã³ã³ãã¤ã©ãä½ã£ã¦ãã¾ãããã ããã¤ãã£ãã³ã³ãã¤ã«ãããã®ã§ã¯ãªããã¤ã³ã¿ããªã¿ã ãä½ã£ã¦ãããã¨æãã¾ãã
ã¢ã¼ããã¯ãã£
ããã°ã©ãã³ã°è¨èªãããã£ãããæ¬¡ã¯ããã°ã©ã ãå®è¡ããç°å¢ã§ãã
Javaã§ããã°ãJVMãã©ã®ããã«åãããç¹ã«JITã¨GCã«ã¤ãã¦çè§£ãã¦ããå¿
è¦ãããã¾ãããJavaããã©ã¼ãã³ã¹ãã«ã¯ãã®ãããããã説æããã¦ãã¾ãããã¥ã¼ãã³ã°ã®è©±ã¾ã§é²ãã¨é£ãããªã£ã¦ããã¾ãããæ¦è¦ã®èª¬æã¯ãããªã«é£ãããªãã§ãã
OSãããã»ã¹ã¾ããã¯ææ¡ãã¦ãããã»ãããããã©ããå
¥éã³ã³ãã¥ã¼ã¿ç§å¦ãã§ã®èª¬æãããã§ããããªã
èªããªããã®ãããããä»®æ³åãã³ã³ããã¾ã§è§¦ãããã¦ã¾ãã
ããã»ããµã«ã¤ãã¦ã¯ãããã»ããµãæ¯ããæè¡ããæãã¦ãããã©ãããç¯å²ã®åºããã³ã³ãã¥ã¼ã¿ã¢ã¼ããã¯ãã£æè¡å
¥éãããããããããªããã³ã³ãã¥ã¼ã¿ã®å¦çãçè§£ããããã«ããã¤ãã©ã¤ã³ããã£ãã·ã¥ã¨ãã£ãä»çµã¿ã¯ç¥ã£ã¦ããå¿
è¦ãããã¾ãã
æ©ä¼ãããã°ãFPGAã§ãã¼ãã¦ã§ã¢ããããã£ã¦CPUãä½ã£ããããã¨ãã³ã³ãã¥ã¼ã¿ãåãã¤ã¡ã¼ã¸ã®è§£å度ãããªãé«ããªãã¾ãã
ããã«ã¦ã§ã¢
ãµã¼ãã¹ãæ§ç¯ããã¨ãã«ããããããªå½¹å²ã®ãµã¼ãã¼ãå¿
è¦ã«ãªãã¾ãããã®ä¸ã§ããªã¬ã¼ã·ã§ãã«ãã¼ã¿ãã¼ã¹ã¯éè¦ãªã®ã§ãã¡ããã¨åå¼·ãã¾ãããã
ã¾ãã¯æ£è¦åãªã©ã®ãã¼ãã«è¨è¨ã確èªãã¦ããã¾ãããã
ã¾ãããªã¬ã¼ã·ã§ãã«ãã¼ã¿ãã¼ã¹ãã©ã®ããã«åããã¨ããã®ã¯ãNoSQLãã¼ã¿ãã¼ã¹ã«ãå¿ç¨ãã§ããã®ã§ãã²ã¨ã¨ããç¥ã£ã¦ããã¨ããã§ãã
ãã®æ¬ã¯MS SQLãµã¼ãã¼ã®ä»çµã¿ã§ããã大æ ã¯ã©ã®RDBMSã§ãåããªã®ã¨ãããã¾ã§èªã¿ããããã¼ã¿ãã¼ã¹ã®ä»çµã¿ã解説ããæ¬ãä»ã«ãªãã®ã§ãèªãã§ããã¨ããã§ãã
è³æã«ããã¦ãRDBMSè§£åå¦ã¯çµ¶çã§ä¸å¤ãé«ãã»ã»ã»
ãã¨ã¯ãã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã£ã®åºç¤ãã«éç¨ãå«ãã¦ç´°ãã解説ããã¦ãã¾ãã
ãããã¯ã¼ã¯
ãµã¼ãã¼ãæ§ç¯ãã¦è¤æ°ã®ã³ã³ãã¥ã¼ã¿ã飿ºãããã¨ãå¿
ããããã¯ã¼ã¯ã§éä¿¡ãã¾ãã
ããããã¯ã¼ã¯ã¯ãªãã¤ãªããã®ããã«ã¯ãã¤ã¼ãµããããå
ã±ã¼ãã«ã¨ãã£ãç©ç層ãTCP/IPãªã©éä¿¡ãããã³ã«ãã¾ã¨ã¾ã£ã¦ããã®ã§ãä¸åº¦èªãã¨ããã§ãã
ãããã«ãªãJavaãã§ã¯ã½ã±ããéä¿¡ã§HTTPã¯ã©ã¤ã¢ã³ãã»ãµã¼ãã¼ãæ§ç¯ãããµã³ãã«ãè¼ãã¦ããã®ã§ãå®è£ ãã¦ã¿ãã¨ããã¨æãã¾ãã
ãããã¤
ããã°ã©ã ãåããç°å¢ãçè§£ãã¦ãããã°ã©ã ãæ¸ããã¨ãã¦ãããããã³ã³ãã¥ã¼ã¿ã«è¼ããªãã¦ã¯ã¦ã¼ã¶ã¼ã¯ä½¿ãã¾ããã
ããã§ãããã°ã©ã ãã³ã³ãã¥ã¼ã¿ä¸ã«é
ç½®ãããããã¤ã®ä½æ¥ãå¿
è¦ã«ãªãã¾ãã
ãã¾ã§ã¯ã½ã¼ã¹ã³ã¼ãããå®è¡ãã¡ã¤ã«ã使ãã¦ãµã¼ãã¼ã«é
åããæé ã¯è¤éåãã¦ããã®ã§ãèªååã大åã§ããããã¦ãä½ã£ããã®ããªãã¹ãæ©ã使ã£ã¦ããã£ã¦ãã£ã¼ãããã¯ãå¾ãå¿
è¦ãåºã¦ããã¨ãããã¨ã§ç¶ç¶çã¤ã³ãã°ã¬ã¼ã·ã§ã³(CI)ã¨ããèãæ¹ãå¿
è¦ã«ãªãã¾ãã
ã¾ããä½ã£ãããã°ã©ã ãå
¬éããã¨ãã«ã¯ãããã°ã©ã ãå¤ãªåããããªããã©ãã確èªããå¿
è¦ãããã¾ãããã®ãããªä½æ¥ããã¹ãã¨ããã¾ããã¦ããããã¹ãã§èªååãããã¨ã大äºã§ããããããããã¹ãã¨ããã®ã¯ã©ããã使¥ãã¨ãããã¨ãç¥ã£ã¦ããå¿
è¦ãããã¾ãã
çè«
ãããã°ã©ãã³ã°ã«æ°å¦ã¯å¿
è¦ãï¼ãã®ãããªè°è«ãèµ·ããã¨ãã«ããç©çã·ãã¥ã¬ã¼ã·ã§ã³ãçµããªãå¾®åç©åå¿
è¦ã ãããã©ã¢ããªã±ã¼ã·ã§ã³ã«ããã®ã§ã¯ï¼ãã®ãããªè©±ããã人ããã¾ããã颿£æ°å¦ã¯ã³ã³ãã¥ã¼ã¿ã®åä½ã®åºç¤ã§ããããããã¢ããªã±ã¼ã·ã§ã³ã«ãããå¿
è¦ã§ãã颿£æ°å¦ã¯ãã¨ããããã©ãããå
å®¹ãæ±ã£ã¦ãããã確èªãã¦ããã¨ããã¨æãã¾ãã
éåãè«çã«é¢ãã¦ã¯ããè«çã¨è¨ç®ã®ããã¿ãã§æ±ããã¦ããã®ã§ããã¡ããè¦ã¦ãã ããã
è«çã«ã¤ãã¦ã¯éç¢å
çã®æ¬ãè¦ã¦ããã®ãããã§ãããè«çã¯ããã°ã©ãã³ã°ã«ã¨ã©ã¾ããå
¨ã¦ã®äºæã«ã¤ãã¦ãæ£ããèããããã«å¿
è¦ã§ãã
ã¾ããã°ã©ãçè«ãéè¦ãªã®ã§ã¡ããã¨åå¼·ãã¦ããã»ããããã§ããããã®æ¬ã¯ç©èªã«ãªã£ã¦ãã¦èªã¿ãããã§ãã
ã½ã¼ããæ¢ç´¢ã¨ãã£ãã¢ã«ã´ãªãºã ãããã¦ã¢ã«ã´ãªãºã ã®è¨è¨æ³ã大åã§ãã
ææããã£ã¦ç¢ºèªããã®ã ãã©ããã¼ã¿æ§é ãã°ã©ãã¨ãã£ã話é¡ãæ±ã£ã¦ãããã¡ãã®ã»ããããããã
ã¢ã«ã´ãªãºã ã«é¢ãã¦ã¯ãã¬ã¼ãã³ã°ã大åãªã®ã§ãLeetCodeã®easyåé¡ãã²ããããã£ã¦ããã¨ãã大äºã§ãã
https://leetcode.com/problemset/algorithms/?difficulty=EASY&page=1
è¨ç®å¯è½æ§ã®è©±ã¯ããæ°å¦ã¬ã¼ã«/ä¹±æã¢ã«ã´ãªãºã ãããããããã¾ãã
ç©èªã®åé·æ§ãã¾ã ãã£ããã人ã¯ãã¡ããã
ãè¨ç®çè«ã®åºç¤ãã¯çµ¶çãã»ã»ã»
ãã¨ããããã«ãªãJavaãã§ã¯ãããã°ã©ã ã®è¤éããåè§£ãã¦é ã«ç·´ç¿ãã¦ããã¨ãããµã³ãã«ããã£ã¦ãã¾ããç¥ãéãä»ã«ã¯ãªãã¢ããã¼ããªã®ã§ãé£ããå¦çãæ¸ããããã«ãªããªãã¨ãã人ã¯ãJavaã§ã¯ãªãè¨èªã§ã§ãæ¸ãã¦ã¿ãã®ãããã¨æãã¾ãã
éçºææ³
ãã¦ãããã°ã©ã ãã³ã³ãã¥ã¼ã¿ã®åããææ¡ã§ããã¨ãã¦ããã¦ã¼ã¶ã¼ããããããã¨ãå®ç¾ã§ããªããã°æå³ãããã¾ããã
ãã®å
¥å£ã«ãªãã®ã¯ãã¦ã¼ã¶ã¼ã®è¦ä»¶ãã¾ã¨ããè¦ä»¶å®ç¾©ã§ãããã¯ããããï¼è¦ä»¶å®ç¾©ãã¯èªã¿ãããããã¾ã¨ã¾ã£ã¦ãã¦ããããã§ãã
è¦ä»¶ãåºã¾ã£ãããããã·ã¹ãã ã«å®è£
ã§ãããã詳細åãè¡ãå¿
è¦ãããã¾ãããã®ããã®ææ³ã¨ãã¦DDDãå®çªã«ãªã£ã¦ãã¾ãããã¨ãªãã¯ã»ã¨ã´ã¡ã³ã¹ã®æ¬ã¯ããã®ã¨ãã½ã¼ãã«ï¼ãã¼ã¸è¦ãï¼ãã¿ãããªã®ãå¤ãã¦èªãã®ãã¤ããã®ã§ãæåã¯ãã®ããããèªãã®ãããã¨æãã¾ãã
ãã¨ãDDDã¯å
·ä½çãªä½æ¥ã©ããããï¼ã¨ããã®ããããã«ããã®ã§ãICONIXã¨ããã¦ã¼ã¹ã±ã¼ã¹ã¨ããã¹ããã¹å³ãåºæ¬ã«ããåæææ³ãç¥ã£ã¦ããã¨ããããããã¾ããã
æ¥åã·ã¹ãã ã®å ´åã¯ãæ¥åç¥èã®æ¦è¦ãããã¨ããã§ãã
Webãµã¼ãã¹ã«ãã¦ã販売管çãæµé管çãçç£ç®¡çãªã©ã¯è£å´ã§å¿
è¦ã«ãªããã¨ãå¤ãã§ãã
éçºããã»ã¹
éçºããã»ã¹ã¨ãã¦ã¯ããã¾ãã¢ã¸ã£ã¤ã«ãå½ããåã«ãªã£ã¦ãã¾ããã
ãã«ã¤ã¼ã³ã¸ã£ã¼ãã¼ãã¯ã²ã¨ãããå§ãã¦ãã¼ã ã«ã¢ã¸ã£ã¤ã«ããã»ã¹ã浸éããã¦ãã話ã§ãèªã¿ãããå®ç¨çã§ããã§ãã
åãèè
ãã¡ã®ããã¡ã°ãããããã¢ã¸ã£ã¤ã«éçºã®ææ¬ãã¯ãã¢ã¸ã£ã¤ã«ã«ã¤ãã¦ãã£ã¨ç¥ãããå ´åã«ããã¨æãã¾ãã
ã¾ãããã¾ã¯å ±å使¥ã«GitHub(or 代æ¿ãµã¼ãã¹)ãä¸å¯æ¬ ã§ããGitHubãããããããªäººã¯ããããªãããããã¼ã¡ãããã®æ¬ãèªãã§ããã¾ãããã
ã¾ã¨ã
åå¼·ãããã¨ããã¨ã«ããããããããã¾ãããæéãæ±ºã¾ã£ã¦ããããã§ã¯ãªã10å¹´15å¹´ããã¦åå¼·ãã¦ããã°ããã®ã§ããã£ãããã£ãããã£ã¦ããã°ããã¨æãã¾ãã
æåã«ãããçµµãå°å³ã¨ãã¦ããã¤ãå
¨é¨ãããããã«ãªããã¨ããææããã£ã¦æ¥ã
ãããããã£ã¦å°ããã¤ã§ãè¿ã¥ãã¦ããã°ããã®ãã¡ãããããããããã«ãªã£ã¦ããã¨æãã¾ãã









![[試ãã¦ç解]Linuxã®ããã¿ãâå®é¨ã¨å³è§£ã§å¦ã¶OSãä»®æ³ãã·ã³ãã³ã³ããã®åºç¤ç¥èãå¢è£æ¹è¨çã [試ãã¦ç解]Linuxã®ããã¿ãâå®é¨ã¨å³è§£ã§å¦ã¶OSãä»®æ³ãã·ã³ãã³ã³ããã®åºç¤ç¥èãå¢è£æ¹è¨çã](https://m.media-amazon.com/images/I/51CKe00bsfL._SL500_.jpg)





















