2013幎ãæåŸã®ãšã³ããªã«ãªããŸãã
ã¯ãŠãªã§ããã°ãå§ããŠã2幎åã»ã©çµéããŸãããå»å¹Žãäžæšå¹Žã¯æ¯ãè¿ããªã©èããŠããªãã£ãã®ã§ãããä»å¹Žã¯å人çã«ã¯å€§ããåãããšæã£ãŠããã®ã§ãã¡ãã£ãšæ¯ãè¿ãããããããšæãã®ã§ãã
ãããŸã§ããã®ããã°ã«é¢ããæ¯ãè¿ãã§ãä»äºãå«ããå 容ã«ã€ããŠã¯äžå觊ããŸããã
2013幎ãäœããã£ãŠããã ã£ãïŒ
ã ããããããã°ã«æžããå
容ãšæéãå³ã«ãããšããããªæãã«ãªããšæããŸãã
ã¡ãªã¿ã«ããã®å³ã«ç»å ŽããèŠçŽ ã®ã»ãšãã©ã¯ãä»äºãšé¢ä¿ãããŸããâŠã
ãŸãããã¯ããŠããããã®ããã°ã®æžãå 容ã«åœ±é¿ã倧ããäžããã®ã¯ã
ãšãããšããã§ããããŸããå»å¹Žãäžæšå¹Žã«æ¯ã¹ãŠãå šäœçã«ããã°ã«æçš¿ããåæ°ãå¢ããŠããã®ãç¹åŸŽã§ãããããã¯ãããŸã§ã«æ¯ã¹ãŠä»äºãæã ã£ãã«éããªããããªâŠã
èšèªé¢ã§ã¯ãå€ãããScalaäžå¿ã§ããã代æ¿ã«Javaãæã£ãŠããããšãå€ããªããŸãããGroovyã¯å€ããããŸã§ã¯ç»å ŽããŠããŸããããã以éã¯ç»å Žé »åºŠãæžã£ãŠããŸããClojureãäžæçã«åéããŸããããæè¿ã¯å°ãScalaã«çµãæ°å³ã§ããã
å
šäœçã«èšèªãã©ã€ãã©ãªãããNoSQLç³»ã®ã³ã³ãã³ãã«æµããèªåããããç解ããããã«æžããšã³ããªãå€ããªã£ãã®ã§ãä»ãŸã§ãã®ããã°ãèªãŸããŠããæ¹ã
ã«ã¯ããããããŠé¢çœããªããªã£ããããããŸããã
ïŒæèŠçã«ãããã¯ããŒã¯ããŠããã ããæ°ã¯äžãã£ãæ°ãããŠããŸã
âŠä»¥åãããé¢çœãã£ããã©ããã¯çåã§ããã
åèãŸã§ã«ããããŸã§ã¯ScalaãGroovyãClojureã§åçºããŒãã§ããããªã®æžããŠã¿ãŸãããçãªãã®ãšãsbtãGradleãLeiningenããããŠMavenã®ãããªåšèŸºããŒã«ã䜿ã£ããšã³ããªãå€ãã£ããšæããŸããå°ãé·ãã«ç¶ããã®ã¯ãOSGiãšNettyãããã ã£ãããšãããã§ããä»å¹Žã®ãã®ã»ã©é·ãæéç¶ããããŒãã¯ãªãã£ãã§ããã©ã
ã§ã¯ãããã¡ãã£ãšæãäžããŸãã
Infinispanã䜿ãå§ããããš
ä»å¹Žã®ããã°ã®å 容ã«ãééããªã倧ããªåœ±é¿ãäžããã®ããInfinispanã䜿ãå§ããããšã§ããå ã»ã©ã®å³ã«ãåºãŠããŸãããã2æã«äœ¿ãå§ããŠã以é幎å ãã£ãšã©ããããã§ãšã³ããªã«ç»å ŽããŠããŸãã
ããšããšã¯ãåæ£ãã£ãã·ã¥çãªãã®ãæ¢ããŠããŠèŠã€ããInfinispanã§ãããäºæ³ä»¥äžã«èå³ãæã¡ãŸããã以éãããŒãžã§ã³ã¢ããã®è©±é¡ãã§ããéãè¿œããããããã«ããŠããŸããããã®çµ¡ã¿ã§ããã°ãTwitterã§ããã€ãããåããããŠããã ãããšããããŸããã
Infinispanã«èå³ãæã£ãããšãããNoSQLãžã®èå³ãåºãããApache CassandraãMongoDBãApache HBaseãšå¥ãžã£ã³ã«ã®ãããã¯ãã«ã€ããŠãåããŠã¿ãŸããããããŠãInfininispanã®æ€çŽ¢ã®ä»çµã¿ãLuceneã ã£ãããšãšãä»äºã§ãLucene絡ã¿ã¯å°ãããã®ã§ããã®ç解ãæ·±ããããã«Luceneãã³ã³ãã³ãã«ç»å Žããããã«ãªããŸãããã
ãããã¯ãŒã¯åšããç解ããããŠãClojureãæã¡åºããŠUDPïŒãã«ããã£ã¹ããå匷ãå§ããããå¥ã®ããŒã¿ã°ãªãããè©ŠããŠã¿ãããŠHazelcastãç»å Žããã®ãããã®åœ±é¿ã§ãã
Infinispanã䜿ã£ãŠããªãã£ãããä»å¹Žã®ããã°ã®å 容ã¯ã ãã¶å€ãã£ãŠãããšæããŸãããããŸã§æžããããã«ãä»å¹Žæžãããšã³ããªã®å€ãã®èŠçŽ ã¯ãInfinispanã䜿ã£ãããšã«ãã觊çºããå§ãŸã£ãŠããããã§ãã
代åãšããŠãScalaãªã©ã®èšèªèªäœã«é¢ãããšã³ããªã®å²åããäžæ°ã«äžãã£ãŠããŸããŸãããã©ã
TwitterãšJava EE
ããã°ã«æžããå 容ã«ã¯çŽæ¥åœ±é¿ããŸããããä»å¹Žã®4æããTwitterãå§ããŸããããé ãïŒããšããããã³ãããããããªæ°ãããã®ãšãä»ã«ããŠã¿ãã°ãããå°ãæ©ãå§ããŠããã°ããã£ããªãããšããæ°æã¡ã§ãã£ã±ãã§ãã
ããããæ å ±ãèŠããŠã倧å€å匷ã«ãªããŸããïŒ
Twitterãå§ããŠæ å ±ãè¿œã£ãŠããŠãNoSQLé¢ä¿ã«ã€ããŠãããããå匷ã«ãªã£ãã®ã§ããããã®ããã°ã«ç¹ã«åœ±é¿ããã®ã¯Java EEã ãšæããŸãã
Java EE 7ã¯ãããªãTwitteräžã§ãçãäžãã£ãŠããŸããã
èªåã¯ãæ£çŽãªãšããWebç³»ã®ããã°ã©ã ã«èå³ããªããããŒã¿ããŒã¹åšãã®ã³ãŒããä»äºä»¥å€ã§ãããŸãæžãæ°ããããŸããã§ãããäºå®ããã®ããã°ã§Java EEé¢é£ã®ãšã³ããªãæžããŸã§ã¯ããããŸã§ServletãŸã§ã®ãšã³ããªããæžããããšããããŸããããããŒã¿ããŒã¹ã䜿ã£ããšã³ããªã¯1床ããïŒãããPHPïŒç»å ŽããŠããŸãããJava EEãè¿œããšãããªãã ãããªããšæã£ãŠããããã§ãã
ããããŸããTwitterã®çãäžããã§èå³ãæã£ãŠãïŒããã°äžã¯ïŒçªç¶Java EEãå§ããããšã«ããŠã¿ãŸããããµãŒãã¯Infinispanãšãã£ãšçµ¡ããã¯ãâŠãšæãïŒããã§ããInfinispanïŒJBoss AS 7ãéžãã ã®ã§ãJava EE 6ã§ãããããããScalaã
çµå±ãç¬èªè·¯ç·ãªã®ã§ããããããšTwitteräžã§ã®äº€æµã®é¢ä¿ããããJava EE Advent Calendar 2013 - Adventarãã«ãèªãããã ããçãããäœãã«åå ããããšããç®çã§ãšã³ããªãæžãããšã«ãªããŸããã
ã³ãŒãã®çšæããšã³ããªèªäœã®å·çã«ããã®ããã°å²äžã§1çªæéãããããã®ãšãªããŸããããåå ããŠæ¥œããã£ãã§ããè¯ãçµéšã«ãªããŸããã
æ¥å¹Žã¯ãäœããããïŒ
ãŸããããããªæ±ºãŸã£ãŠããŸããïŒç¬ïŒã
ãšã¯ããããã€ã£ãšãããªããšãæã£ãŠããŸãã
- Scalaã®è©±é¡ã«ã¯ãã§ããéãè¿œåŸãã
- é©åºŠã«InfinispanãLuceneã«é¢ãããšã³ããªãæžã
- ã«ã©ã æåã®NoSQLïŒCasandra or HBaseïŒããããå°ã䜿ããã
- Java SE 8ã¯ããªãªãŒã¹ãããããã£ã¬ã³ãž
- WildFlyãªãªãŒã¹åŸãJava EE 7ã«ãã£ã¬ã³ãž
ãšããããã§ãèšèªãšããŠã¯å€ãããScalaãäžå¿ã«æ®ãã€ã€ãé©åºŠã«NoSQLã§éãã§ãããããšããæãã§ãããâŠä»å¹ŽãšããããŸãå€ãããªããããä»å¹Žæã¡åºããããŒãããã¯ãçµãæ°ã§ããŸããã
ããšã¯ãåŸåŠã®ããã«Java SE 8ãJava EE 7ãè¿œã£ãŠããããšæã£ãŠããŸãã
ãã¡ãããããŸã§éãããããŸã§ã®ããŒããšã¯å šç¶é¢ä¿ãªãå°ãã¿ã¿ãããªãã®ãæžããšæããŸãããGroovyïŒClojureã䜿ã£ããšã³ããªã®å²åã¯ãããã«äžããæ°ãããŠããŸããâŠã©ãã§ãããïŒ
ãšãŸãããããªæãã§ãã
ä»å¹Žã¯ãæ¬åœã«ãããããšå匷ã«ãªããŸãããæ¥å¹Žããåœããã°ãã芧ã«ãªãæ¹ã ãããã£ããã£ããããããããé¡ãèŽããŸãã
ããã§ã¯ãè¯ãã幎ãã