JJUG CCC 2014 Springã«åå ãã¦ãã¾ãã
æ¬æ¥ãæ¥æ¬Javaã¦ã¼ã¶ã¼ã°ã«ã¼ãï¼JJUG)主å¬ã®CCC 2014 Springã¨ããJavaã®åå¼·ä¼ã«è¡ã£ã¦ãã¾ãããä¼å ´ã¯ãベルサール西新宿ã§ãé½å¶å¤§æ±æ¸ç·é½åºåã®A5åºå£ãåºã¦ãæ°å®¿ä¸å¤®å ¬åã®5åãããæ©ããã¨ããã«ããã¾ãããä»ã¯ã¹ãã¼ããã©ã³ã§å°å³ã確èªããªããè¡ããã®ã§ãåãã¦ã®å ´æã§ãæ¹åé³ç´ã®ç§ã§ãé»è»ã®é§ ããééããªããã°å¤§ä¸å¤«ã§ããã
CCCã¨ããã®ã¯Cross Community Conferenceã®ç¥ã§ããã¾ãã¾ãªã³ãã¥ããã£ã¼ã®äº¤æµã®å ´ã¨ãªãä¼è°ã¨ãã趣æ¨ã§ããããï¼ãã®CCCã¨ããã¤ãã³ãã¯2012ããéå¬ããã¦ãããããªã®ã§ããï¼CCC | 日本Javaユーザーグループï¼ãä»ååãã¦åå ããã¦ããã ãã¾ãããæ®å¿µãªããå人çãªé½åãããåºèª¿è¬æ¼ã¨åå¾ã®ååã®ã»ãã·ã§ã³ã®ã¿ã§å¾åã¨æ親ä¼ã«ã¯åå ã§ãã¾ããã§ããããåå ããã»ãã·ã§ã³ã«ã¤ãã¦ã¾ã¨ãã¾ãããã®ä»ã®ã»ãã·ã§ã³ã«ã¤ãã¦ã¯ã以ä¸ã«æ å ±ãããã¾ãã
- JJUG CCC 2014 Spring – Session | 日本Javaユーザーグループ
- JJUG CCC 2014 Spring #jjug_ccc - Togetter
- JJUG CCC 2014 Spring ( #jjug_ccc ) - セッション資料の一覧 - 地平線に行く
K-1 詳説 Java SE 8 – CCC Editionï¼æ«»åº ç¥ä¸æ°ï¼
æåã®ã»ãã·ã§ã³ã¯ãæå 端ã®Javaæè¡ãç 究ããæè¿Java8ç´¹ä»è¨äºãå¤ãå·çããã¦ããæ«»åºãã(@skrb)ãããJava SE8ã®æ°æ©è½ã®ãã¤ã³ãã«ã¤ãã¦ç´¹ä»ãã¦ããã ãã¾ãããJava SE8ã¨ããã¨ãã¾ããLambdaプロジェクトã®ææã§ããã©ã ãå¼ãã¹ããªã¼ã APIã使ã£ãæ°ããé¢æ°åã®Javaããã°ã©ãã³ã°ã注ç®ããã¾ããããã以å¤ã«ãã
- 新しいDate & Time APIï¼JSR-310ï¼
- Nashornï¼JavaScriptå®è¡ç°å¢,invokeDynamicå½ä»¤ï¼
- JavaFX*1
- タイプアノテーションã¨ãã®å¿ç¨ä¾ã¨ãã¦ã®nullãã§ãã¯ãã¬ã¼ã
- Java Flight RecorderやJava Mission Controlã¨ãã£ãæ°ãããã¼ã«
ãªã©ããã®ä»ã®æ°æ©è½ã«ã¤ãã¦ã解説ããã¾ãããéä¸ã
ãforæãforEachã使ã£ããè² ããã©ã ãå¼ç¦æ¢ã¨æ¦ããã
ã¨ããã³ã¡ã³ããå°è±¡çã§ãããç¾ç¶ã¯å¾ã®å²©å´æ°ã®è¬æ¼ã§èª¬æããã£ãããã«ãã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¼ãªã©ã®å¯¾å¿ãé²ãã§ããªãã¨ããå¶ç´ãããJava8ãå®éã®æ¡ä»¶ã§æ®åããã¾ã§ã«ã¯ã«ã¯ãããã°ããæéããããã ããã¨ã¯æãã¾ãããä»ã®ãã¡ã«æ°ããæ©è½ã«ã¤ãã¦å è¡ãã¦å¦ç¿ãã¦ãããå®é使ãããã£ã³ã¹ããã£ããã便å©ãªæ°æ©è½ãç©æ¥µçã«å°å ¥ã§ããããæºåãã¦ããããã§ããã
ãªãããã®åºèª¿è¬æ¼ã®å
ãã¿ã¯ããç¾å¨ãITpro ã«ããã¦é£è¼ãã¦ãã詳説 Java SE 8 ã CCC ã§åç¾ãã¾ãããã¨ã®ãã¨ã§ãã®ã§ã
詳解 Java SE 8 第1回 Java SE 8概説
ããã¯ãã¾ããç´ æ´ããã詳細ãªé£è¼è¨äºãæ¯éã覧ãã ããã
K-2 Java 8 ã©ã ãå¼ã¨ Stream ã®æ¦è¦ã«ã¤ãã¦ï¼Stuart Marksæ°ï¼
åºèª¿è¬æ¼ã®2çªç®ã¯ããªã©ã¯ã«ã®Stuart Marksæ°ãããã©ã ãå¼ãã¹ããªã¼ã APIã«ã¤ãã¦ãåºæ¬çãªã¨ãããã解説ãã¦ããã ãã¾ããããããªããæ°ããé¢æ°åã®è¨è¿°æ¹æ³ã§èª¬æãããã¨ãæ
£ãã¦ããªãå ´åæ··ä¹±ããå ´åãããã¨æãã¾ããã以åã®æ¸ãæ¹ã¨å¯¾å¿ãããªããä¸å¯§ã«è§£èª¬ãã¦ããã ããç解ããããã£ãã§ãã
ä»åã®è¬ç¾©ã§ç¹ã«å°è±¡çã ã£ãã®ã¯ãé¢æ°åãä¸å¤æ§ã¨ãã話ãåæã«ãããããã¾ã§ãå¾æ¥ããããç¡åå
é¨ã¯ã©ã¹ã®ä»£æ¿ã¨ãã¦åå®å
¨ã«ã³ã¼ããããã¯ã渡ãããã®ä¾¿å©ãªè¨æ³ãå
é¨ã¤ãã¬ã¼ã¿ã¼ã®è¨è¿°æ段ã¨ãã¦ã©ã ãå¼ã説æãã¦ãããã¨ã§ããä¾ã¨ãã¦
List<Person> list = ... ; // Java7 for (Iterator<Person> iter = list.iterator(); iter.hasNext();) { Person p = iter.next(); if("Jones".equals(p.getName())) { iter.remove(); } } // Java8 list.removeIf(p -> "Jones".equals(p.getName()));
ã®ããã«ãCollectionã¤ã³ã¿ã¼ãã§ã¼ã¹ã«è¿½å ããã¦ãããremoveIfã使ã£ã¦ãå¾æ¥ã®ã¤ãã¬ã¼ã¿ã¼ã®å¦çãç½®ãæããã³ã¼ããåºã¦ãã¾ãããããã«ãå¾æ¥ã®å¤é¨ã¤ãã¬ã¼ã¿ã¨foræã使ã£ã¦å¦çããå ´åã¨æ¯è¼ãã¦ãåæåãå¿ è¦ãªã³ã¬ã¯ã·ã§ã³ã®å ´åã«ããã¡ãã¨åæåããã¦ãããã¨ãããããªã¨ããã便å©ã§ããã*2
å ã®æ«»åºããã®çºè¨ã«ãããã¾ãããä»ã¾ã§ç§èªèº«ã©ã ãå¼ã使ã以ä¸ããªãã¹ãé¢æ°åã®çºæ³ã§èããã¹ãã§ãããå¯å¤ãªï¼mutableï¼ãªæä½ã¯é¿ããã¹ãã¨èãã¦ãã¾ãããããããªããããã¨ãã¨ãJavaã¯å¯å¤ãªå¤æ°ãå½ããåã«ä½¿ãæç¶ãå(imperative)ãªã³ã¼ããåæã¨ãã¦ãããä¸å¤æ§ãªã©ã¯å¾ãã追å ãããã¨ããã¨ãããããã¾ããããã®ããã«ã©ã ãå¼ã¯å¯å¤ãªæä½ã«ã使ããã®ã ã¨ããã®ã¯ããã£ã¦æ°é®®ãªçºè¦ã§ãããç¹ã«ãå¤ãã³ã¼ããã©ã ãå¼ã使ã£ã¦ç°¡æ½ã«ãªãã¡ã¯ã¿ãªã³ã°ããã¨ããå ´åãªã©ã«ã¯ãããã¦ä¸å¤æ§ã«ãã ãããªãã¨ããã®ãä¸ã¤ã®èãæ¹ããããã¾ããã
Stuartæ°ã®è©±ã§ãããä¸ã¤å°è±¡çã ã£ãã®ã¯å¤§éã®åºæ¬åã®æ°å¤ã使ã£ãè¨ç®ã«ãã¹ããªã¼ã APIãé©ç¨ããã¨ãã以ä¸ã®ä¾*3ã§ãã
System.out.println( LongStream.range(0, 1_000_000L) .parallel() .map(i -> ((i & 1) == 0 ? 1 : -1 * (2 * i + 1)) .mapToDouble(i -> 4.0 / i) .sum());
å¾æ¥ã®å¸¸èã¨ãã¦ã¯ã大éã®æ°å¤ãList
R1-1 Java 8 for Java EE 7/6(å²©å´ æµ©ææ°)
éèã製é ãå
Œ
±ãªã©æ§ã
ãªãã¡ã¤ã³ã§JavaEEã使ã£ãå¤ãã®ã·ã¹ãã éçºãæ
å½ãã¦ããããéèªçã¸ã®å·çãããã¦ãã楽天ã®å²©å´æ°(@HirofumiIwasaki)ãããã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¼ã®Java8対å¿ã®ç¶æ³ã«ã¤ãã¦ã話ããã ãã¾ããã
JavaSE 8ãæ£å¼ã«ãªãªã¼ã¹ãããã¨ãããã¨ã§ãæ©éç¾å¨ã®ããã¸ã§ã¯ãã§æ´»ç¨ãããã¨ããæ°ã«ãªã£ã¦ãã¾ãã¾ãããå®éã®ã¨ããã¯ãJavaEE 7ã§ã¯JavaSE 8ã¯ãµãã¼ã対象å¤ã§ãããããã«ãããããJavaEE 7ã«å¯¾å¿ããã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¼ãGlassfishãWildFlyã¨ãã£ããªã¼ãã³ã½ã¼ã¹ã®ãµã¼ãã¼ã«éããããã®ä»ã®åç¨ã®ãµã¼ãã¼ã§ã¯ãã¾ã ã«JavaEE6ãããµãã¼ãããã¦ããªãã¨ããäºå®ãããã¾ãããã ããè¬ç¾©ä¸ã§ç´¹ä»ããã¦ããããã«Glassfishã®daily buildçã§ã¯Java8ã使ããã¨ãããã¨ã§ãããWildFlyãªã©ä»ã®ãµã¼ãã¼ã«ã¤ãã¦ãæ¯è¼çæ©ã対å¿ãããã®ã§ã¯ãªããã¨ããæå¾
ãããã¾ããã
ã¾ãããã©ã¬ã«ã³ã¬ã¯ã·ã§ã³ãªã©ã¯é常ã®EJBã®ãããªãªã³ã©ã¤ã³ãã©ã³ã¶ã¯ã·ã§ã³ç³»ã®ã·ã¹ãã ã¨ã¯ç¸æ§ãæªãã¨æãã¾ããããããEJBãJavaEEã®ãã¹ã¦ã§ã¯ãªãã§ãããJavaSE 8ãå©ç¨ã§ããããã«ãªãã°ãæ¥ä»APIãã©ã ãã使ã£ããã¸ãã¯ã®ç°¡æ½åãªã©ããããããªã¡ãªããããããã®ã¨æå¾ ããã¾ãã
ãªããæ¥æ¬èªã®æ
å ±ãå°ãªãã¨ããåé¡ã¯ããã¾ãããJavaEEã«ã¤ãã¦ã¯ä»¥ä¸ã®NetBeansã®ãã¥ã¼ããªã¢ã«ã«ãããµã³ãã«ã«åãçµãã®ãããã¨ã®ãã¨ã§ãã
https://netbeans.org/kb/trails/java-ee.html
H-2 Javaãã©ãã«ã«åããã(ä¸å¦» å®äººæ°)
ä¸å¦»æ°ã¯見習いプログラミング日記ã§Java EEãä¸å¿ã¨ããæ å ±ã®çºä¿¡ãããã¦ãã¾ãããåã«ããã°ã©ãã³ã°ãä¸å¿ã¨ããéçºææ³ã®ã¿ãªãããéç¨æã«å¿ è¦ãªã¢ãã¿ãªã³ã°ãã¼ã«ã®ç¥èãªã©æç¨ãªæ å ±ãæ¸ããã¦ãã¾ããã©ããã¦ããæ°ããAPIãè¨èªã®æ©è½ãéçºãã¼ã«ãªã©ã«èå³ããããã¡ã§ãããå®éã«ã¯éç¨æã®ãã©ãã«ã·ã¥ã¼ãã£ã³ã°ãããããã®ãã°è§£æææ³ãªã©ã¯é常ã«å¤§åã§ããã¾ããå¿ è¦ãªãã¼ã«ãæ£ãã使ãããªãã°ããã©ãã«ã·ã¥ã¼ãã£ã³ã°ã容æã§ããã¨ããã®ãJavaã®éè¦ãªç¹å¾´ã®ä¸ã¤ãªã®ã§ã¯ãªããã¨æãã¾ããã¤ã¾ããJavaã¯åã«ããã°ã©ãã³ã°è¨èªã¨ããã ãã§ã¯ãããããã¤ã¡ã³ãã»éç¨æã®ç°å¢ã¾ã§å«ãããã©ãããã©ã¼ã ãªã®ã§ããã¨ãããã¨ã§ããã
è¬ç¾©ã®ä¸ã§ã¯ããã©ãã«ã·ã¥ã¼ãã£ã³ã°ã®ããã«é©åãªæ å ±ã®åå¾ã大åã§ããã¨ãã¦ãã¾ãã以ä¸ã®æ å ±åºåã®æ¹æ³ã«ã¤ãã¦èª¬æããã¾ããã
- GCãã°ã®åºåè¨å®
- ã¯ã©ã¹ãã¹ãã°ã©ã ã®åºå
- ãã¼ããã³ãã®åºåã¨è§£æ
- ã¹ã¬ãããã³ãã®åºå
ããã«ãOutOfMemoryErrorãçºçãããã¾ãã¾ãªã±ã¼ã¹ãçªåºåãããããåãªã©ãã¿ã¼ã³ãã¨ã«è§£æããææ³ã«ã¤ãã¦è§£èª¬ããã¾ãããåºæ¬çãªææ³ã¯æãã大ããå¤ãã£ã¦ããªãã¨ã¯ãããå
·ä½çãªã³ãã³ãã®ä½¿ãæ¹ã¯ãã¼ã¸ã§ã³ã«ãã£ã¦ç°ãªã£ã¦ãããããä¸å¦»æ°ã®æè¿ã®çµé¨ã«åºã¥ããæ
å ±ã¯é常ã«æç¨ãªãã®ã§ããã¨æãã¾ããããããã©ãã«ãçºçããã¨ç¦ã£ã¦ãã¾ããå·éãªå¤æãã§ããªãã¨ãããã¨ãããã¨æãã¾ãã®ã§ãJavaã®ã¨ã³ã¸ãã¢ã¨ãã¦ã¯æ¥é ãããããã解æã®ææ³ã«æ
£ãã¦ãããã¨ã¯å¤§åã ã¨æãã¾ããã*4
H-3 åãã¦ã® Java EE éçºããå¦ãã ãã¨(èç° æ´ä¸æ°)
æ ªå¼ä¼ç¤¾ æ§é è¨ç»ç 究æã®èç°æ°(@kikutaro_)ããããèªèº«ãåãã¦Java EEã®éçºã«åãçµã¾ããããã¸ã§ã¯ãã®çµé¨ããã¨ã«ã話ããã¾ãããèç°æ°ã¯ä»¥ä¸ã®ããã°ã§ãJava EEã®æ å ±ãçºä¿¡ãã¦ãããã¾ããChallenge Java EE !
æ¥ããããªãããè¬æ¼ã®ä¸ã§ç§ã®ããã°ãã¡ãã£ã¨ç´¹ä»ãã¦ããã ããã®ã§ããã3å¹´è¿ãåï¼ãããããªã«çµã¤ãã§ããï¼ã«ã¡ãã£ã¨JavaEE 6ã«ã¤ãã¦èª¿ã¹ã¦ãã®ããã°ã§ãç´¹ä»ãããã¨ããã£ãï¼Java EE6標準の範囲でフルスタックのWebアプリケーションが簡単に作成できることを確かめてみました。 - 達人プログラマーを目指してï¼ã®ã§ãæã®ãã¨ãæãåºãã¦ã¡ãã£ã¨æããããªãã¾ããã
æ®å¿µãªãããç§èªèº«ã¯ãã®å¾JavaEEããé¢ãã¦ãã¾ããæ°ããEEã®ãã¬ã¼ã ã¯ã¼ã¯ãå®éã®æ¡ä»¶ã§ä½¿ããã¨ã¯ã§ããªãã£ãã®ã§ãããèç°æ°ã®çºè¡¨ã¯JavaEEãå®éã«é©ç¨ããææã«åºã¥ããã®ã¨ãã¦ã大å¤èå³æ·±ãè´ããã¦ããã ãã¾ããã
çºè¡¨ã«ãããããã«ããã¨ãã¨.NETç³»ã®éçºããJavaEEã«ç§»è¡ããã¦ãã¾ã ã»ãã®ä¸å¹´åã¨ããçãæéã«ãé¢ãããããã¼ã¿å±¤ãããã¬ã¼ã³å±¤ã¾ã§ããã«ã¹ã¿ãã¯ãã®ã¢ã¼ããã¯ãã£ãæ§ç¯ãããã¨ãããã¨ã¯å¤§å¤æéãåãã¾ãããããã¯ãã¡ããèç°æ°ã®åªåã®è³ç©ã ã¨æãã¾ãããJavaEEãæ¨æºã®ãã¬ã¼ã ã¯ã¼ã¯ãçµã¿åãããã ãã§å®ç¨çã«ä½¿ããã.NET並ã¿ã«ç°¡åã«ä½¿ããããã«ãªã£ãã¨ãããã¨ã®è¨¼æã¨ãªãäºä¾ãªã®ã§ã¯ãªããã¨æãã¾ãã
- æ¨æºä»¥å¤ã®ãã¬ã¼ã ã¯ã¼ã¯ããã¼ã«ããããããã£ã¦é¸æã«ã¾ãããã©ãããããæ©ãã®ã¯æ¥½ãã
- æ¥æ¬èªã®æ¸ç±ãå°ãªã
- Javaã¯ã³ãã¥ããã£ã¼ãçãã§åå¿è ã«ãéå£ãåºã
ã¨ãã£ããã¨ã¯ãç§ã以åããæãã¦ãããã¨ã§ãå¤ãã®ç¹ã§å¤§å¤å
±æãã¾ãããèç°ãããæ¬äººã®ä»¥ä¸ã®ã¨ã³ããªã¼ãã©ãã
#JJUG_CCC Spring 2014で「初めての Java EE 開発から学んだこと」というタイトルで発表させて頂きました! - Challenge Java EE !
*1:æéã®é¢ä¿ã§æ®å¿µãªããã»ã¨ãã©ã¹ãããããã¾ããããæ«»åºããã¯JavaFXãæ¨é²ããã¦ãããæ¥é ãã¬ã¼ã³è³æèªä½ãJavaFXã§ä½æãã¦ããã¨ã®ãã¨ã§ããhttp://www.slideshare.net/skrb/20140321-javafx8ãåèã«ãªãã¾ãã
*2:Coolectionsã®ãããªã¦ã¼ãã£ãªãã£ã¯ã©ã¹ã¨éããã¤ã³ã¿ã¼ãã§ã¼ã¹ã«å®ç¾©ãããããã©ã«ãã¡ã½ããã¯ãªã¼ãã¼ã©ã¤ãå¯è½ãªã®ã§ããµãã¯ã©ã¹ãã¨ã«ç¬èªã®å®è£ ãæã¦ãã
*3:åå¨çãè¨ç®ãããã¤ã©ã¼ç´æ°ã®è¨ç®
*4:DevOpsã¨ããèãæ¹ãããããã«ãæè¿ã¯ããã°ã©ãã¼ãéçºã ãã§ãªãããµã¼ãã¼ã®éç¨ããã©ãã«ã·ã¥ã¼ãããããã¨ãå¤ãã¨æããã¾ãã
éçºãã¼ã ã«ã¢ã¼ããã¯ããããªããªã¨æãã¦ãã¾ããããªãæ®å¿µãªã³ã¼ãã¹ã¡ã«ã®ä¾
ã¾ã£ããå人çãªã¢ããã¼ã·ã§ã³ã®åé¡ãããååã®æçµæ´æ°ãã2年以ä¸ãçµéãã¦ãã¾ããå¤ãã®èªè ã®ã¿ãªããã«ã¯ãå¿é ãããããããã¾ããããããã°ã©ãã³ã°ã«é¢ãã¦èª¿ã¹ããã¨ãæ¥ã æãããã¨ãã¡ã¢ã¨ãã¦æ®ãã¦ããããã¨æãã¾ãããã¨ãããã¨ãã¨ã®åç¹ã«ç«ã¡è¿ã£ã¦ããã¾ãæ°è² ããã«ãã¾ãä»å¾ãæã æ´æ°ãã¦ããããã¨æãã¾ããä»ã¾ã§ãã®ããã°ã®ä¸»ãªãã¼ãã¨ãã¦ãJavaEEãSpringã¨ãã£ããããªãããããæ¥åéçºã§ä½¿ããããããªæè¡ãä¸å¿ã¨ãã¦ããããã§ãããæè¿Springã使ã£ãJavaã®éçºã«ï¼ã¢ã¼ããã¯ãã§ã¯ãªãï¼ããã°ã©ãã¼ã¨ãã¦ã¡ãã£ã¨åå ããæ©ä¼ããã£ãã®ã§ããã®ææ°ã¥ãããã¨ãæãããã¨ãæ¸ãã¦ã¿ããã¨æãã¾ãã
ãã¦ãçããã¯ã¢ã¼ããã¯ãã£ãã¢ã¼ããã¯ãã¨ããè¨èã«å¯¾ãã¦ã¯ã©ã®ãããªãã®ãã¤ã¡ã¼ã¸ããã§ãããããã·ã¹ãã ã®ã»ãã¥ãªãã£ã確ä¿ããããã®æ¹å¼ã§ãã£ããã大éã®ãã¼ã¿ãçæéã«å¦çãã並ååã®ä»çµã¿ã§ãã£ãããã¾ããå¹ççãªæ¥åããã¼ã®æ§ç¯ã ã£ãããã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã£ã¨ããè¨èã¯ã³ã³ããã¹ãã«ãã£ã¦å®ã«æ§ã ãªå¯¾è±¡ãæå³ãã¾ããå®éã«ã¯ãã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã¨ãã£ã¦ããã¾ãã¾ãªä»äºããããã¾ããããããã®åéã«ããã¦è¨å¤§ãªç¥èãå¿ è¦ãªãããæè¿ã§ã¯ãå»è ããã®ããã«å°éã®å¾æåéã«ç¹åããããå¾ãªãã¨ãããã¨ãããããããã¾ãããåºæ¬çã«ã¯ãã¢ã¼ããã¯ãã¯ããã¸ã§ã¯ãã®æåãå·¦å³ãããããªåºæ¬çãªè¨è¨æ¹éãæè¡ã®é¸æã¨ãã£ããã¨ã«é¢ãã£ã¦ãã¾ãã
ããã§ã¯ç¹ã«ãã¯ã©ã¹ãããã±ã¼ã¸ãè¨å®ãã¡ã¤ã«ã®åå²ã¨ãã£ãéçºä½æ¥ã«æ·±ããããã£ã¦ãããããã°ã©ãã³ã°ã®åºæ¬æéã®ãã¨ãåã«ã¢ã¼ããã¯ãã£ã¨å¼ã¶ãã¨ã«ãã¾ããèªåã®çµé¨ãããããã®ããã°ã©ãã³ã°ã«é¢ããã¢ã¼ããã¯ãã£ã¯ããã°ã©ãã¼ã®éçºçç£æ§ããå¾ã ã®ã³ã¼ãã®åå©ç¨æ§ãä¿å®æ§ã¨ãã£ãç¹ã«æ·±ããããã£ã¦ããéçºã®æéè¦ãã¤ã³ãã®ä¸ã¤ã§ãããä»ã®ã¢ã¼ããã¯ãã£æéã¨ã¨ãã«ããã¸ã§ã¯ãæåã®ããã«ã¯è»½è¦ã§ããªããã®ã§ããã¨èãã¦ãã¾ãããã®æå³ã«ããã¦æå¹ãªã¢ã¼ããã¯ãã£ãæ§ç¯ããã«ããã£ã¦ã¯ãã¢ã¼ããã¯ããã¢ããªã±ã¼ã·ã§ã³éçºãã¼ã ã®ã¡ã³ãã¼ã¨ãã¦ä»äºãããããå°ãªãã¨ããæ·±ãé¢ä¸ããã¨ãããã¨ã大åã ã¨æãã¾ããã¢ã¼ããã¯ãèªèº«ãã¢ããªã±ã¼ã·ã§ã³éçºè ã®ã³ã¼ããå°ãªãã¨ãã¬ãã¥ã¼ã§ããä½å¶ã«ãªã£ã¦ããã¹ãã ãããç¾å ´ã®ããã°ã©ãã¼ã®æ°æã¡ãããããç¶æ ãæã¾ããã¨æãã¾ããããã«ããããã£ãããã°ã©ãã³ã°ã¢ã¼ããã¯ãã£ã¯äºåã«ããããã決ãããããã®ã§ã¯ãªããç¹°ãè¿ãã®ãªãã¡ã¯ã¿ãªã³ã°ãéãã¦ãç¹°ãè¿ãæ´ç·´ãã¦ããã¨ããã¢ã¸ã£ã¤ã«ãªããã»ã¹ãå¿ é ã§ããã¨æãã¾ãã以åããç§ããä¸æµã¢ã¼ããã¯ããã¨ããè¨èãä½åã使ã£ã¦ãã¾ããããå°ãªãã¨ãæå¹ãªããã°ã©ãã³ã°ã¢ãã«ãæ§ç¯ããã«ããã£ã¦ãã¢ã¼ããã¯ãã¯éå½¹æ¤ åã«åº§ã£ã¦ãã¯ã¼ãã¤ã³ãã®è³æãç·¨éãã¦ããã ãã§ã¯ãªãã¦ãå®éã«éçºãã¼ã ãçããããã°ã©ãã¼ã§ãããã¹ããªã®ã§ããï¼アーキテクトもプログラミングするべきか? - 達人プログラマーを目指してï¼
æ®å¿µãªãããå¤ãã®ããã¸ã§ã¯ãã«ããã¦ã¯ãéçºãã¼ã ã®ä¸ã«ããããã¢ã¼ããã¯ããããªãã®ã§ãªããã¨æãããã¨ãããã¾ããå®éã«ããããã£ãäºå®ã¯å®éã«ã½ã¼ã¹ã³ã¼ããèªãã§ããã¨ããã¤ãã®ç¹å¾´ããæããã«ãªãã¾ããããã§ã¯ãã¢ã¼ããã¯ãä¸å¨ãæããã½ã¼ã¹ã³ã¼ãã®ä¸åãªèãï¼ã¹ã¡ã«ï¼ã®ä¾ã«ã¤ãã¦ãããã¤ãæ¸ãã¦ã¿ããã¨æãã¾ãã
ééã£ãéå°ãªã³ã³ãã¼ãã³ãï¼ããã¸ã§ã¯ãï¼åå²
åå¿è
ã®ã½ããã¦ã§ã¢ã¢ã¼ããã¯ãã§ããæåã«èããã§ããããã¨ã¯ãä½ã¨ããã¦å
¨ä½ã®ã³ã¼ããåå²ããªãã¦ã¯ãªããªãã¨ãããã¨ã§ããããã¢ããªã·ãã¯ï¼ä¸æ岩ï¼ãªã¢ã¼ããã¯ãã£ããã¡ã¨ããèããããããããã¨ã«ãããã³ã¼ããããã¤ã®ã³ã³ãã¼ãã³ãã«åå²ããããªãã¾ããå
¨ä½ã®ã½ã¼ã¹ã³ã¼ããå¤ãã®ã³ã³ãã¼ãã³ãã«åå²ããã¦ããã°ãããã ãã§ããä»äºãããæ°åã«ãªã£ã¦ãã¾ãã¨ããã¨ãããããããããã¾ããã*1
ããããªãããã³ã³ãã¼ãã³ãã®åå²ã«ã¯ä¸å®ã®ã³ã¹ããä¼´ãã¨ãããã¨ãå¿ãã¦ãã¯ããã¾ãããåã«ãã§ãã¯ã¢ã¦ããã¦IDEã®ä¸ã§æ±ããªãã¦ã¯ãããªãããã¸ã§ã¯ããå¤ããã°ããã ãé¢åãå¢ãã¾ãããå
¨ä½çãªãã«ãæéãåå²ãå¢ããã«ãããã£ã¦æ¥éã«é·ããªãå¾åããããããCIã®å¹ççãªå®è¡ã«æ¯éãåºã¾ããXPçãªè¦ä»¶ãæºãããã£ã¨ãã·ã³ãã«ãªè¨è¨ãç®æãã®ã§ããã°ãã©ããã¦åå²ãå¿
è¦ãªã®ãã¨ããã¡ãªãããèæ
®ããããã§ãåå²ã¯å¿
è¦æä½éã«ããã¹ãã ã¨æãã¾ããé©åãªã³ã³ãã¼ãã³ãã®åå²ã¯ç°¡åããã§ãã¦ãå®ã¯é常ã«é£ããã¨ãããããã¨æãã¾ãããå®éãè¦ä»¶ã«åã£ãæé©ãªåå²ã¯ä½åãã®ã¤ãã¬ã¼ã·ã§ã³ãçµã¦ããããå°éã§ããã¨ãããã¨ãçããããã¾ãããä¸æ¹ããã¼ã ã«ã¢ã¼ããã¯ããä¸å¨ã ã¨ã以ä¸ã®ãããªå½¢å¼çãªåå²ã®åºæºããããããã«ã¼ã«ã¨ãã¦è¨å®ãã¦ãã¾ããçµæã¨ãã¦éçºçç£æ§ã大ããä¸ããã¨ãããã¨ã«ãªããã¡ã§ãã
- ç»é¢ãã¨ã«åå²ãã
- æ©è½ãã¨ã«åå²ãã
- ã¤ã³ã¿ã¼ãã§ã¼ã¹ãã¢ããã¼ã·ã§ã³ãã¯ã©ã¹ãè¨å®ã¨ãã£ãã½ã¼ã¹ã®ç¨®é¡ãã¨ã«åå²ãã*2
ããããå½¢å¼çãªåºæºã«å¾ã£ã¦åå²ããå ´åãä¸ã¤ã®éçºãã¼ã ã«å²ãå½ã¦ãããããã¸ã§ã¯ãã®æ°ãä½ç¾åã«ãªããã¨ããããã¾ããå®éåé¡ã¨ãã¦ãããã¸ã§ã¯ãã®æ°ä»¥ä¸ã«åé¡ãªã®ã¯ãããããå½¢å¼çãªåå²æ¹æ³ã«ãã£ã¦å¾ãããã®ã¯å¤ãã®å ´åãå¯çµåã§åéæ§ã®ä½ãã¢ã¼ããã¯ãã£ã§ããã¨ãããã¨ã§ããè¦ããã«ãä¸è¦ãããã«ã³ã³ãã¼ãã³ããåå²ããã¦ããããã«ã¿ããããå®éã¯é¢é£ããæ©è½ããã¡ãã¡ã«åæ£ããå®è³ªã¯ã¢ããªã·ãã¯ãªã·ã¹ãã ã¨å¤ãããªããçµå±ã¯ä½ãåå²ãããã¨ã«ãªã£ã¦ã¯ããªãã¨ããç¶æ ã§ããä¾ã¨ãã¦ãSpringã®beanå®ç¾©ãxmlã§è¨è¿°ãã¦ããã¨ãã¦*3ãxmlã®beanå®ç¾©ãã¡ã¤ã«ã¨å®éã®beanã®å®è£ ã¯ã©ã¹ãå¥ã ã®ããã¸ã§ã¯ãã«åå²ãã¦ç®¡çããã¨ããã«ã¼ã«ãèãã¦ã¿ã¦ãã ãããå½ç¶beanã®å®ç¾©ã¨å®éã®ã¯ã©ã¹ã¯å¯æ¥ã«ä¾åãåã£ã¦ããã®ã§ãé常ã¯åæã«æ´æ°ããå¿ è¦ãããã¾ãããå¥ã ã®ããã¸ã§ã¯ãã¨ãã¦ãã«ããããã¨ã§å¸¸ã«ä¸æ´åãçºçãããã¨ãé¿ãããã¾ãããããã°ã©ãã¼ã®æ°æã¡ãããã£ã¦ããã¢ã¼ããã¯ãã§ããã°ãæåãããããªã«ã¼ã«ã«ã¯ããªããããããã¢ããã¼ã·ã§ã³ã使ã£ããJavaã½ã¼ã¹ã使ã£ã¦beanã®è¨å®ã¨ã¯ã©ã¹å®ç¾©ãè¿ãã«é ç½®ããã¨ãããã¨ãèããã¨æãã¾ãããããã§ãªãã¨ãè¨å®ãã¡ã¤ã«ã¯å¥ã ã®ããã¸ã§ã¯ãã§ç®¡çãããã®ã¨ãã常èã§èãã¦ãã¾ãã¾ãã
ç§ã¨ãã¦ã¯eclipseããã¸ã§ã¯ãã®ãããªãã«ãã®åä½ã¨ãªãã³ã³ãã¼ãã³ãã®åå²ã¯æä½éã«ãããã¨ããå§ããã¾ãããã¡ãããåå²ããã¡ãªããã¨ãã¦ã
- å¥ã ã«ãã«ãã»ãããã¤ã§ããï¼SOAçã«ã³ã³ãã¼ãã³ããã¨ã«å¥ã ã®ãã¼ã ã§éç¨ããå ´åãªã©ï¼*4
- ä¾åé¢ä¿ãå¼·å¶ã§ããï¼ãã¼ã¿å±¤ãããã¬ã¼ã³å±¤ã®ã¯ã©ã¹ãééã£ã¦åç §ã§ããªããªã©ï¼
- ãã¥ã¼ãªã©é »ç¹ã«å¤æ´ãããé åã¨ãã¡ã¤ã³ãã¸ãã¯ãªã©å®å®ããé åãåãã
ã¨ãã£ããããªãã¨ãããã¾ãããæ¯è¼çå°è¦æ¨¡ãªããã¸ã§ã¯ãã§ããã°ã
- å ±éãã¬ã¼ã ã¯ã¼ã¯
- ãã¼ã¿å±¤
- ãã¬ã¼ã³å±¤
ãããã®åå²ããã¹ã¿ã¼ãããã®ã§ååãªã®ã§ã¯ãªããã¨æãã¾ããããããæåããéå°ã«åå²ãããæ§é ã§é²ãããããå®éä¸ã¯ã¯ããã«çç£æ§ãé«ãã¨æãã¾ãã
ãã¬ã¼ã ã¯ã¼ã¯ã«ãã£ã¦å¼·å¶ããããã©ã¬ã«ç¶æ¿
ããã¯ããã£ã¨ä»¥åã«侵略的なフレームワーク - 達人プログラマーを目指してã§æ¸ãããã¨ã®ç¹°ãè¿ãã«ãªãã¾ããããã¬ã¼ã ã¯ã¼ã¯ã®è¦ç´ã«ãã£ã¦ä¸ã¤ã®æ©è½ãã¨ã«æ§ã ãªã¯ã©ã¹ãè¨å®ãä½æããªãã¦ã¯ãªããªãã«ã¼ã«ã«ãªã£ã¦ããå ´åãããããã¾ãããã¨ãã°ã
- MusicTrackDao
- MusicTrackModel
- MusicTrackService
- MusicTrackView
- MusicTrackViewModel
- musicTrack.jsp
- JSPã®
ã¿ã° - åã ã®beanå®ç¾©
- åã ã®åä½ãã¹ãã¯ã©ã¹
ã¨ãã£ãããã«ãåãååã§å§ã¾ã大éã®ã½ã¼ã¹ãåå¨ãã¦ããã°ãパラレル継承ã®ã¹ã¡ã«ãçºãã¦ããã¨ãã£ã¦ééãããã¾ããã*5
ãªããé¢é£ãã¦ãã®ãããªã±ã¼ã¹ã§ã¯ãã¬ã¤ã¤ã¼ãã¨ã«å¤ã®å ¥ãç©ã¨ãã¦å¥ã ã®ã¯ã©ã¹ãå®ç¾©ãããã¨ãå¼·å¶ããã¦ããå ´åãå¤ãã®ã§ãããå®éã«å¤ãã®å ´å
musicTrackViewModel.setTitle(musicTrackModel.getTitle());
musicTrackViewModel.setTrackData(musicTrackModel.getTrackData());
...
ã®ããã«ãè¨è¿°ããã³ã¼ãã®å¤§åãåãªãå¤ã®è»¢è¨ã¨ãªããã¨ãããã¾ãã
ããããå®éã«ããã¸ã§ã¯ãã«ã¢ã¼ããã¯ããåå ãã¦ããã°ããããªãã³ã»ã³ã¹ãªè¨è¨ã«ã¼ã«ã«ã¯ããªãã¯ããªã®ã§ãããäºåã«ã¢ããªã±ã¼ã·ã§ã³éçºãã¼ã ã¨ã¯å¥ã®æ¨æºãã¬ã¼ã ã¯ã¼ã¯ãã¼ã ãã«ã¼ã«ã決ããå ´åãªã©ããã®ã¢ã³ããã¿ã¼ã³ã«ããåºä¼ãã¾ããã³ã³ãã¼ãã³ãåå²ã®å ´åã¨åæ§ã«ããããã®ã¯ã©ã¹ãä½æããããã¨ã§ãã¡ã³ããã³ã¹å¯è½ãªã¢ã¼ããã¯ãã£ãä½ã£ã¦ãããã ã¨ããæ°åã«ãªãã¨ãã人ãããããããã¾ããããå®éã®ã¨ããã¯ããããå¯çµåã»ä½åéãªã¢ã¼ããã¯ãã£ã®åå ã¨ãªããçç£æ§ã大ããä½ä¸ãããå
ã¨ãªãã¾ãã大éã®ç¡é§ãªã¯ã©ã¹ãä½æããªãã¦ã¯ãªããªãããã«ãåæã®éçºã«æéããããã¨ããç¹ã«å ãã¦ããããªãåé¡ã¯ã変更の分散ãã¨ãã£ãã³ã¼ãã¹ã¡ã«ã®åå ã¨ãªããã¨ã«ããã¾ãããã¤ã¾ããå¾ã
ã®ã¡ã³ããã³ã¹ã§ãã¡ãã¡ã®ãã¡ã¤ã«ãåæã«ç·¨éããªãã¦ã¯ãªããªãã¨ãããã¨ã§ãã
ãã¡ãããæ¬å½ã«ç¶æ¿ãé©åãªãã°ç¶æ¿ã使ãã°ããã®ã§ãããJUnitãSpringMVCã®æã®ãã¼ã¸ã§ã³ã¨ä»ã®ææ°ãã¼ã¸ã§ã³ãæ¯è¼ãã¦ã¿ãã¨ãããããã«ãæè¿ã®ãã¬ã¼ã ã¯ã¼ã¯ã§ã¯å
±éã®ãã¼ã¹ã¯ã©ã¹ãé¿ããå¾åãããã¨æãã¾ãã*6
å ±éã³ã¼ãã®ãã«ã¢ãããããã¦ããªã
ä½ããã®MVCã®ãã¬ã¼ã ã¯ã¼ã¯ã§ã¢ããªã±ã¼ã·ã§ã³ãä½ã£ã¦ããã¨ãã¦ã以ä¸ã®ãããªã³ã¼ãããã£ãã¨ãã¾ãããã£ãããä½ãåé¡ãªã®ã§ããããã
/** * å ±éãã¼ã¹ã³ã³ããã¼ã©ã¼ */ public abstract class AbstractController { protected abstract void execute(RequestContext context); ... } /** * è¿åããªã·ã¼ã®ãªã³ã¯ãæç»ããããã®ã³ã³ããã¼ã©ã¼ */ public class ReturnPolicyController extends AbstractController { public static final String RETURN_POLICY_MODEL_ID; @Inject private ModelRegistory modelRegistry; protected void execute(RequestContext context) { ReturnPolcyViewModel viewModel = modelRegistory.findModel(ReturnPolcyViewModel.class, RETURN_POLICY_MODEL_ID); if (viewModel == null) { throw new InvalidConfigrationException("No model found for " + RETURN_POLICY_MODEL_ID); } viewModel.setURL(URLConverter.convertURL(context, model.getURL())); ..... context.setViewModel(viewModel); } } /** * é³æ¥½ã®ãã©ãã¯æ å ±ãæç»ããããã®ã³ã³ããã¼ã©ã¼ */ public class MusicTracksController extends AbstractController { public static final String MUSIC_TRACKS_MODEL_ID; @Inject private ModelRegistory modelRegistry; @Inject private MusicTracksDataSource musicTracksDataSource; protected void execute(RequestContext context) { MusicTracksViewModel viewModel = modelRegistory.findModel(MusicTrakcsViewModel.class, MUSIC_TRACKS_MODEL_ID); if (viewModel == null) { throw new InvalidConfigrationException("No model found for " + MUSIC_TRACKS_MODEL_ID); } ..... context.setViewModel(viewModel); } } ...ä¼¼ããããªãµãã¯ã©ã¹ãä½ç¾ã¨åå¨
æ®éã®æè¦ã§ããã°ãåãµãã¯ã©ã¹ã®ã³ã¼ãã®é¡ä¼¼æ§ã«æ°ã¥ãã¨æãã¾ããå ±éã®ãã¸ãã¯ã親ã¯ã©ã¹ã«ç§»åï¼ãã«ã¢ããï¼ãããªã©ãã¦ãéè¤ãæ¸ããã¹ãã§ããããããããããã§ã¯ã¤ã¡ã¼ã¸ãªã®ã§å®éã®ãã¸ãã¯ãçç¥ãã¦ãã¾ãããå®éã«åç»é¢ãã¨ã®ãã¸ãã¯ãè¨è¿°ããã¦ããå ´åããã®é¡ä¼¼æ§ã«æ°ã¥ããã«å¤§éã®ä¼¼ããããªã¯ã©ã¹ãä½æãã¦ãã¾ããã¨ãããã¾ããããããã³ã¼ãã®é¡ä¼¼æ§ã¯å®éã«ããã¤ãã®ãµãã¯ã©ã¹ãä½æãã¦ã¿ãªãã¨æ°ã¥ããªããã¨ãå¤ãããã¬ã¼ã ã¯ã¼ã¯ãã¼ã ããä¸ãããããã¼ã¹ã¯ã©ã¹ã¯å¤ãã®å ´åéè¤ã³ã¼ãã®åæ¸ã®ããã«ãã¾ãå½¹ç«ã¡ã¾ãããã¢ã¼ããã¯ããéçºã«ãããã£ã¦ããã®ã§ããã°ãããããéè¤ãçºè¦ããé½åº¦ãªãã¡ã¯ã¿ãªã³ã°ã«ãã£ã¦åãé¤ãåªåããã¹ãã ã¨æãã¾ãã
æç¶ãåã®ã³ã¼ã
ããã¯ãã®ããã°ã§ãä½åº¦ãåãä¸ãã¦ãããã¨ã§ãããJavaãªã©ã®ãªãã¸ã§ã¯ãæåã®è¨èªã使ã£ã¦ããã«ãé¢ããããã»ã¨ãã©æ´»ç¨ã§ãã¦ããªãã¨ããã±ã¼ã¹ãçµæ§ããã¨æãã¾ããå®éããããã£ãããã¸ã§ã¯ãã§ä½æãããã³ã¼ããã¿ãã¨ã
- ãã¼ã¿ã¨getterãsetterã ãã®ã¯ã©ã¹
- ãã¹ã¦staticã¡ã½ãããããªãXXXUtilã¯ã©ã¹*7ããããã¯å·¨å¤§ãªãµã¼ãã¹ã¯ã©ã¹
- ããªã¢ã¼ãã£ãºã ï¼å¤æ æ§ï¼ã使ãã¦ããããEnumãåã«ãã£ã¦ä¼¼ããããªswitchæã®æ§é ãç¹°ãè¿ãç¾ãã
ã¨ãã£ããããªæç¶ãåã®è¨èªã§è¨è¨ããã®ã¨å¤§å·®ã®ãªãæ§é ã«ãªã£ã¦ãã¾ã£ã¦ãã¾ããããã¯ãè¦ä»¶ããã¼ã ã®ã¹ãã«ã«ãã£ã¦ã¯å¿ ãããã¢ã³ããã¿ã¼ã³ã¨ã¾ã§ã¯è¨ããªãããããã¾ãããããã¯ããããã°ã©ãã³ã°è¨èªã®ããã¹ãè¨è¨ã使ãããªããã¢ã¼ããã¯ãããã¼ã ã«åå¨ãã¦ããªãã®ãåå ã®ä¸ã¤ãªã®ã§ã¯ãªããã¨æãã¾ãã
ã¨ããã©ããã«æ£å¨ããå®é¨ã³ã¼ãã®çè·¡
ã³ã¼ãã®ã¢ã¼ããã¯ãã£ã®ã¹ã¡ã«ã¯ããªã«ãã¹ãã«ã®ä½ãããã°ã©ãã¼ã®ã¿ã§æ§æããããã¼ã ã§èµ·ããã¨ã¯éãã¾ãããé常ã«ã¢ããã¼ã·ã§ã³ããã£ã¦ãããæ°ã®ããããã°ã©ãã¼ã§ããã°ãèªç¶ãªãã¨ã¨ãã¦ãããããã¨èªåã®æ°ããã¢ã¤ãã¢ãã©ãã©ã試ããããªãã¾ããããã¯ãæè¡è
ã¨ãã¦ã¯ãã°ããããã¨ãªã®ã§ãããæ¥åã¢ããªã±ã¼ã·ã§ã³éçºã®ããã¸ã§ã¯ãã®é¡§å®¢ã®è¦ä»¶ãæçã§æºããã¨ããå¶ç´ãããæ¡ä»¶ã®ä¸ã§ã¯ãããç¨åº¦ç¯åº¦ããã£ã¦è¨ç»çã«ãããªãã¨åé¡ã¨ãªããã¨ãããã¾ããå®éããã¾ããããªãã£ãã¢ã¤ãã¢ãªã©ã¯æªç·´ãæ¨ã¦ã¦æ©æã«ã¯ãªã¼ã³ã¢ããããã¹ãã ã¨æãã¾ãããå®éä¸ã¯æéã®å¶ç´ãããããããã¯ããã°ã©ãã¼ãå
¥ãæ¿ãã£ãããããã¨ããã©ããã«éå»ã®éºç£ããããã³ã¼ãã¨ãã¦æ®ããããã¨ãããã¾ãããããã£ããããã³ã¼ããåå¨ãã¦ããã¨ãé害ã®è§£æãå°é£ã«ãªã£ãããå¾ã
æ©è½è¿½å ã大å¤ã«ãªã£ããã¡ã³ããã³ã¹ã®ä¸ã§è¦å´ãããã¨ã«ãªãã¾ãã
ãããã£ãåé¡ãé²ãããã«ã¯ããã¯ãã¢ã¼ããã¯ãçãªè¦ç¹ããã³ã¼ãã®ç¶æ
ãç£è¦ãã常ã«ä½åãªè¤éæ§ãåãæ®ãããªãããã«ããåªåãããã»ã¹ãå¿
è¦ã ã¨æãã¾ãã
æå¾ã«ãæè¿æ°ã¥ãããã¨ã
æå¾ã«ãæè¿ã«ãªã£ã¦æ°ã¥ããèªåã®ééãã«ã¤ãã¦æ¸ãã¦ãããªãã¦ã¯ãªãã¾ãããã以åã§ããã°ããããè¨è¨ä¸ã®åé¡ã¯æ¥æ¬ã®SIæ¥çã®æ§é ãåé¡ãªã®ã§ããã¨ãã話ããã¦ããããããã¾ãã(^_^;)ããããã§æ¸ãããããªè©±ã¯å¤å°ãã£ã¯ã·ã§ã³ãå ¥ã£ã¦ããã¨ã¯ãããå®éç§ãSIæ¥ç以å¤ã®ä»ã®ä¼ç¤¾ã§ä½é¨ãããã¨ã«åºã¥ãã¦ããã¨åç½ããªãã¦ã¯ãªãã¾ãããè¨èªã®ç¹æ§ãããJavaã§éçºãã¦ããã¨ããããã£ãè¨è¨ä¸ã®åé¡ãèµ·ããããã¨ãããã¨ãããå¯è½æ§ãããã¾ããããããã£ã話ã¯SIer以å¤ã§ããã©ãã®å½ã®éçºãã¼ã ã§ãããã®ã ãªã¨ãããã¨ã§ããã
ããããè¨è¨ã«é¥ãåå ã¨ãã¦èããããã®ã¯ãSIæ¥çã®æ§é ã¨ãããããããããã¢ã¼ããã¯ããã¢ããªã±ã¼ã·ã§ã³éçºãã¼ã ã¨ä¸ç·ã«ä»äºãã¦ããªãã¨ããåé¡ã«ããã®ã§ã¯ãªããã¨æãã¾ããããã¦ãå®éå¤ãã®å ´åãããã¬ã¼ã ã¯ã¼ã¯ãã¼ã ããå ±éãã¼ã ãã¨ããã®ãã¢ããªã±ã¼ã·ã§ã³éçºãã¼ã ã¨ã¯åãé¢ããã¦åå¨ãã¦ããããã¬ã¼ã ã¯ã¼ã¯ãéçºããã¸ã§ã¯ããéå§ããåã«ä½æãã¦æä¾ããã¨ãããããªã¢ãã«ã®å ´åã«èµ·ãããã¡ãªã®ã§ã¯ã¨æãã¾ããããã«ãé常ã«ãããããã¿ã¼ã³ã¨ãã¦ããããã¼ã¸ã§ã³ã®ãã¬ã¼ã ã¯ã¼ã¯ã使ã£ã¦ã¢ããªã±ã¼ã·ã§ã³ã®éçºãé²ãããã¦ããæç¹ã§ã¯ããã¬ã¼ã ã¯ã¼ã¯ã¯æ¢ã«ã¢ã¯ãã£ãã«éçºããã¦ãããããã¬ã¼ã ã¯ã¼ã¯ã®æ¹åã«èå³ããªãã¨ãããã¨ãããã¾ããæ¢ã«ãã¬ã¼ã ã¯ã¼ã¯ãã¼ã ã¯ã次ä¸ä»£ãã¬ã¼ã ã¯ã¼ã¯ãã®éçºã«ç®ã移ã£ã¦ãã¦ãå¤ããã¬ã¼ã ã¯ã¼ã¯ã¯ãã»ã©ã®ãã°ããªãéãæãä»ããªãã¨ãããããªã±ã¼ã¹ãå¤ãããããã¾ããã
èªåã¨ãã¦ã¯ããªãã¹ããªã¼ãã³ã½ã¼ã¹ã®ãã¬ã¼ã ã¯ã¼ã¯ãæ´»ç¨ãããªã©ãã¦ãèªç¤¾ãã¬ã¼ã ã¯ã¼ã¯ã®é¨åãæå°éã«ããã¢ã¼ããã¯ãã¯ã¢ããªã±ã¼ã·ã§ã³ã®ã¢ã¼ããã¯ãã£ã®æ¹åã«ãã£ã¨ç®ãåããã¹ããªã®ã§ã¯ãªããã¨æãã®ã§ããããã¾ãã¾ãªæ¿æ²»çããã¸ãã¹ççç±ãããããã§ããªãã®ãåé¡ã§ãªããã¨æãã¾ããã
*1:ãªããããã§ã¯ã³ã³ãã¼ãã³ãã¨ã¯Javaããã±ã¼ã¸ã®ãããªè«ççãªåå空éã®åå²ã§ã¯ãªãã¦ãeclipseãmavenã®ããã¸ã§ã¯ãã«ç¸å½ãããããªãã«ãã»ãããã¤ã®åå²åä½ã®ãã¨ãæããã®ã¨ãã¾ãã
*2:å ´åã«ãã£ã¦ã¯ã¤ã³ãã¼ãã§ã¼ã¹ãã¢ããã¼ã·ã§ã³ãåããã®ãæå¹ãªå ´åããã¡ããããã¾ãããããã«ã¯ã¡ããã¨ããçç±ãããã¾ãããªã¢ã¼ãã®ãµã¼ãã¹ã§ã¤ã³ã¿ã¼ãã§ã¼ã¹ã ããã¯ã©ã¤ã¢ã³ããã使ãã¨ããæã®Springããããã¦ããããã«ãJDK1.4ããµãã¼ãããããã«ãã¢ããã¼ã·ã§ã³ä¾åã®é¨åãåããã¨ãã£ããããªä¾ãããã¾ã
*3:ã¬ã¬ã·ã¼ã³ã¼ãã ã£ããã¨ãããããæ°ããããã¸ã§ã¯ãã§xmlã«åã ã®beanå®ç¾©ãæ¸ããããªè¦ç´ã ã£ãããããèªä½ããªãçåãªè¨è¨æ¹éãªã®ã§ãã
*4:ã³ã³ãã¼ãã³ãåå²ã®æ§é ã¨ãã¼ã ã®æ§é ãããããã¦ããã®ã¯åºæ¬çã«ãããã¨ã ã¨èãããã¾ãã
*5:ããã¦ãå¤ãã®å ´åä½æãã¹ãåã³ã¼ãã«ãã¼ã¹ã¨ãªã親ã¯ã©ã¹ãã¤ã³ã¿ã¼ãã§ã¼ã¹ãåå¨ãã¦ãããç¶æ¿ãã¦ä½æããã«ã¼ã«ã«ãªã£ã¦ããã®ã§ãããå®é親ã¯ãã¼ã«ã¼ã¨ããããå®éã«ãªããæ¬è³ªçãªå½¹å²ãæã£ã¦ããªãã¨ããå ´åãå¤ãã§ããããã¯è¦ªã¯ã©ã¹ãå®éã®å¿ è¦æ§ããä½ãããã®ã§ã¯ãªããæåããã«ã¼ã«ã¨ãã¦åå¨ãã¦ããã¨ããä½ããã®è¨¼æ ã¨ããã¾ãã
*6:ããããPlain Old Java Object=POJOã¨ãã¦ä½æå¯è½ãç¶æ¿ãªã©ã¯ã¢ããªã±ã¼ã·ã§ã³å´ã®è£éã§èªç±ã«ä½¿ããããã«ããã
*7:StringUtilsãCollectionsã®ãããªæ¨æºã®ã©ã¤ãã©ãªã¼ã«ãã¿ãããããã«ãã©ãã®ã¯ã©ã¹ã«ãå±ããªããã¸ãã¯ã®æ ¼ç´å ´æã¨ãã¦ãæä½éã®Utilã¯ã©ã¹ã¯ç¹ã«åé¡ã§ã¯ãªãã¨æãã¾ããããã§åé¡ã¨ãã¦ããã®ã¯ã大é¨åã®ãã¸ãã¹ãã¸ãã¯ãUtilã¯ã©ã¹ã§æ¸ããã¦ããã¨ãããããªã±ã¼ã¹ã§ããã
ã¢ãã¾ã³ã«ãããã½ããã¦ã§ã¢éçºã®ä»äºã«ã¤ãã¦æãããã¨
ã¡ããã©ãå æ¥ã¢ãã¾ã³ã®オープンハウスã¨ããã¤ãã³ãã§ã話ãããã¦ããã ãæ©ä¼ããã£ãã®ã§ãããéçºè åãã®20æ¥ã®ã»ã¯ã·ã§ã³ã ãã§90åè¿ãã®æ¹ã ã«ãåå ããã ãã¾ãããå¹³æ¥ã«ãããããããå¤æ°ã®æ¹ã ã«ãåå ããã ããã©ãããããã¨ããããã¾ããã
ç§èªèº«ã¯ãæ¨å¹´ç§ã«SIerããã¢ãã¾ã³ã«è»¢è·ãã¦ã¾ã åå¹´ã§ããããã®æ©ä¼ã«ã¢ãã¾ã³ã«ãããã½ããã¦ã§ã¢éçºã®æåãèãæ¹ã«ã¤ãã¦ãããã°ã§ãç´¹ä»ã§ããç¯å²ã§ã¾ã¨ãã¦ã¿ããã¨æãã¾ãã
ç§ã¯ããã£ã¨ããã°ã«æ¸ãã¦ããããã«SIæ¥çããã®è»¢è·ã ã£ãã®ã§ãããä¸è¬çãªSIerã«ãããã½ããã¦ã§ã¢éçºã®èãæ¹ãææ³ã¨ãããããªé¢ã§éã£ã¦ããã¨ãããã¨ã¯äºæ³ãã¦ããã¨ãããããã¨ãã¨è¦æã®ä¸ã§ã®è»¢è·ã§ãããããã§ããã¯ãæåã®ãã¡ã¯ãã¾ãã«ã大ããªå¤åã«èªåã®ä»äºã®ã¹ã¿ã¤ã«ãåãããã®ã«ããããã¨è¦å´ãã¾ãããåºæ¬çã«ã¯è»¢è·ããã¦ã®é ã«æ±ããææ³ï¼転職して感じたウォーターフォール文化とアジャイル文化の違いについて - 達人プログラマーを目指してï¼ãã大ããã¯å¤ãã£ã¦ããªãã®ã§ãããå¾ã ã«ä¼ç¤¾ã®æåãä»äºã®ã¹ã¿ã¤ã«ã«æ £ããã¾ããéçºç°å¢ããã¼ã«ã«ãç¿çãã¦ããã«ã¤ãã¦ãå§ãã®é ã®ä¸å®ãæ¸æããããããèãã¦ãå¾ã ã«èªä¿¡ãé¢ç½ã¿ã«å¤åãã¦ããããªã¨ãã段éã§ãã
SDEã¯ãã¯ãããã°ã©ãã³ã°ãä»äºã®ä¸å¿
ã¢ãã¾ã³ã§ãã¢ããªã±ã¼ã·ã§ã³éçºããã¤ã³ãã©ãã³ã³ãµã«ãã£ã³ã°ã¾ã§æ§ã ãªã¨ã³ã¸ãã¢ã®ãã¸ã·ã§ã³ãããã®ã§ãããç§ã¯ã½ããã¦ã§ã¢éçºæè¡è ï¼Software Development EngineerãSDEï¼ã¨ããå½¹å²ã§ãæºå¸¯é»è©±ç¨ã®Webãµã¤ããéçºããAnywhereã¨ãããã¼ã ã§åãã¦ãã¾ãã*1SDEã¨ã¯ããããããã°ã©ãã¼ã®ãã¨ãªã®ã§ãSIerã§åãã¦ããé ã¨éã£ã¦ãå®éã«ã¢ããªã±ã¼ã·ã§ã³ã®ã³ã¼ããèªåã§ä½æã»ä¿®æ£ããã¨ãããã¨ãä»äºã®ä¸å¿ã¨ãªãã¾ãã
ãã¡ãããéçºç°å¢ãåããªããªã£ã¦ãã©ãã«ã·ã¥ã¼ãã«æéãåãããããä»ã®ãã¼ã ã¨ã®ã³ãã¥ãã±ã¼ã·ã§ã³ã«å¿ è¦ãªæéããããããæ¯æ¥ãã¹ã¦ã®æéãã³ã¼ãã£ã³ã°ä½æ¥ã«è²»ããã¨ãããã¨ãå¯è½ãªããã§ã¯ããã¾ããããã§ããéãã³ã¼ãã£ã³ã°ã«æéããããããã«ãããã¨ãçç£æ§ã®é«ãSDEã¨ãã¦ã¯ç¾©åã§ãã権å©ã§ãããã¨èãããã¦ãã¾ããåè·ã§ã¯ä½ãæãExcelã®è¨è¨æ¸ãæ¸ãããããã¯ã¼ãã¤ã³ãã®ææ¡è³æãèãããã¨ããææããããã³ã¼ããæ¸ããã¨ãä»ã®éçºè åãã®ãµã³ãã«ç¨åº¦ã¨ããããã¸ã§ã¯ããå¤ããããããã°ã©ãã¼ã¨ãã¦ã¯æ¬²æ±ä¸æºã«ãªã£ã¦ãã¾ãå ´åãå¤ãããã¾ãããç¾è·ã§ã¯ãã¨ã«ããå®éã«ã¢ããªã±ã¼ã·ã§ã³ã®æ©è½ãèªåèªèº«ã§å®è£ ããã¨ããä»äºã«å ã ã¨éä¸ãããã¨ãã§ããããã°ã©ãã³ã°æè¡ãçºæ®ããããã«è ã磨ãããã¨èãã¦ããç§ã«ã¨ã£ã¦ã¯å¤§å¤ã«é©åããä»äºã§ããããæã£ã¦ãã¾ãã
ããããããããã£ã¦ãSDEã®æ¡ç¨é¢æ¥ã§ã¯ãã¾ãä½ãããããã°ã©ãã³ã°ãéçºã®åºç¤åãåããã¾ããããã°ã©ãã³ã°è¨èªã使ã£ããã¸ãã¯ã®è¨è¿°ããããã¼ã¿æ§é ãã¢ã«ã´ãªãºã ã¨ãã£ãã³ã³ãã¥ã¼ã¿ã¼ãµã¤ã¨ã³ã¹ã®åºç¤ç¥èãåãããããã§ããå人çã«ã¯å®éã®éçºã«å¿ è¦ãªçµé¨ãç¥èã¯ãã以å¤ã«ãéçºãã¼ã«ããã¬ã¼ã ã¯ã¼ã¯ãããã«ã¦ã§ã¢ã使ãããªããã¨ãéè¦ã ã¨ã¯æãã¾ãããå¤ãã®å ´åã¯é¢æ¥ã§è½åã測ãåºæºã¨ãã¦ã¯åºç¤åãéè¦ãã¦ããããã§ããã
ããã¸ã§ã¯ãã®è¦æ¨¡ã¨ãã¼ã¹
ãããããSIerã®å ´åã¨å¤§ããç°ãªããã¨ã¨ãã¦ãä¸è¬ã«åã ã®ãã¼ã ãããã¸ã§ã¯ãã®è¦æ¨¡ãå°ãã*2ãã¨ã«ããæ°é±éããæ°ãæã¨ãã£ãæ©ããã¼ã¹ã§æ©è½ãé£ç¶çã«ãªãªã¼ã¹ãã¦ããã¨ãããã¨ãããã¾ãããªã¼ãã³ãã¦ã¹ã§ãç´¹ä»ããããã«ãã¢ãã¾ã³ã§ã¯ãScrumã¨ããã¢ã¸ã£ã¤ã«ããã»ã¹ãæ¨æºçã«å¤ãã®ãã¼ã ã§æ¡ç¨ããã¦ãã¾ããé常ã¯ææ¡ãç»é¢è¨è¨ã«ä½ãæãè²»ããã¨ãããã¨ã¯ããã¾ããããããã¸ã§ã¯ããããã¯ãªããããã®æ¥ã®ãã¡ãããããã¿ã¤ãã®çæã«åãæããã¨ãããã¨ãæ®éã§ããããã¦ãæ°é±éããæ°ãæã¨ãã£ãåä½ã§æ§ã ãªããã¸ã§ã¯ãã並è¡ãã¦æ´»åãã次ã ã¨æ©è½è¿½å ããªãªã¼ã¹ãã¦ããã¾ãã
ãã¡ãããã¢ãã¾ã³ã§ããã³ãã«ããã©ã¤ã ã¨ãã£ããã¸ãã¹ã¢ãã«ã«å¤§ããå½±é¿ãä¸ãããããªããã¸ã§ã¯ãã ã¨ä¸çä¸ã®ããããã®éçºè ãåå ãã大è¦æ¨¡ãªããã¸ã§ã¯ãã«ãªãããã§ãããåã ã®ãã¼ã ã¯æ¯è¼çå°è¦æ¨¡ãªãã¼ã ã«åããã¦ãã¾ãã®ã§ãä¸ã¤ã®ãã¼ã ã®åä½ã¨ãã¦ã¯1人ãããããã5人ç¨åº¦ã®å°è¦æ¨¡ãªã°ã«ã¼ãã§ä½æ¥ãã¾ãã
ææ¸åã®ä½æ¥ã¯ã©ããã¦ãåªå 度ã大å¤ã«ä½ãã¨èãããã¦ããã®ã§ãæåã®ãã¡ã¯å¼ã³åºãAPIãããããªãã¨ããããããæºåããã¦ããªãã¨ãã£ããã¨ãããªãªã¼ã¹ç´åã®UATã®æ®µéã§UIã®å¤æ´ãå ¥ã£ããã¨ãããã¨ãããã¾ããä¸è¬çãªSIæ¡ä»¶ã®ããã«æ±ºã¾ã£ãè¨è¨æ¸ãå¿µå ¥ãã«æºåãã¦ããã®éãã«ä½æãç´åããã¨ããèãæ¹ã¨ã¯å½ç¶å¤§ããéã£ã¦ãã¾ããç§ããExcelæ¹ç¼ç´ãªã©ã«ç´°ããä»æ§ãè¨è¿°ããæ¹æ³ã¯å«ããªã®ã§ãããAPIã®ããã¥ã¡ã³ããã¢ã¼ããã¯ãã£æ¦è¦ã®ããã¥ã¡ã³ããªã©ã¯ããå°ããã£ãããããã®ãããã°ãªãã¨æã æããã¨ã¯ããã¾ããç¹ã«ãèªåã®è±èªåã®åé¡ãããå£é ãã©ããªã¡ã¼ã«ã§èª¬æãããããããã©ã¼ãã«ãªææ¸ãåºæºã¨ãã¦ãã£ãæ¹ã便å©ãªã®ã«ã¨æãããã¨ã¯ããã¾ãããå¤åã®ãã¼ã¹ãã¨ã«ããéãã®ã§ãææ¸åã¯ã©ããã¦ãå¾åãã«ãªã£ã¦ãã¾ãå¾åãããããã§ãã
SDEã«ä¸ãããã大ããªæ¨©é
åã ã®SDEã¯åã«ã³ã¼ããè¨è¿°ããã¨ããã ãã§ãªããä»æ§å¤æ´ããªãªã¼ã¹ææã®èª¿æ´ãªã©ãå«ãã¦ãããã¯ãããã¼ã¸ã£ããã¶ã¤ã³ãã¼ã ã«å¯¾ãã¦æè¦ãè¿°ã¹ããã¨ãæå¾ ããã¾ããã¾ãããªãã¡ã¯ã¿ãªã³ã°ããã¼ã«ãããã»ã¹ã®æ¹åãªã©ãç©æ¥µçã«å·¥å¤«ããèªãããã¸ã§ã¯ãã¨ãã¦ææ¡ããã¨ãããããªæ´»åã¯å¤§ãã«æè¿ããã¾ãã*3ã¨ã«ãããæãåããã¨ãããã¨ãè©ä¾¡ãããããã§ããã
ããããããããã¤ã¡ã³ãã®èªååãªã©ã®ãã¼ã«ã¯å å®ãã¦ããã®ã§ãSDEã®æ¨©éã§æ¬çªç°å¢ãå«ãã¦æ§ã ãªç°å¢ã«ã¢ããªã±ã¼ã·ã§ã³ããªãªã¼ã¹ãããã¨ãå¯è½ã§ããç·æ¥ã®å¤§ããªé害ãçºçãããããªå ´åãä¸è¬ã®ã¹ã±ã¸ã¥ã¼ã«ã¨ã¯å¥ã«æ¥ãã試é¨ããªãªã¼ã¹ã¹ã±ã¸ã¥ã¼ã«ãç«ã¦ãæ¬çªã¸ã®ãªãªã¼ã¹ãè¡ãã¨ãã£ããã¨ãçºçãã¾ãããã¡ãããããã«å¤§ããªé害ã«ã¤ãªããæããããããã§ãããã¯ãç§ããªããªãæåã¯ãããç·å¼µããã®ã§ãããæè¿ã¯ããããèãæ®ãã£ã¦ããããªã¨ããæãã§ãã
æ°è¦éçºããããæ¢åã·ã¹ãã ã®æ¹å
ç§ã®æ å½ããSIeræ¡ä»¶ã§ã¯ãã¢ã¼ããã¯ãã£ã®ææ¡ããã¸ãã¹ããã»ã¹ã¢ããªã³ã°ã¨ãã£ãä¸æµå·¥ç¨ããããã¸ã§ã¯ããéå§ããã¨ãããã¨ã¯çµæ§æ®éã§ãããç§ã¯ã¢ã¼ããã¯ãã¨ããå½¹å²ãããæ¯è¼çæ°ãããã¬ã¼ã ã¯ã¼ã¯ã®æ´»ç¨æ¹æ³ãèããããå ¨ä½çãªã·ã¹ãã ã®ããã¿ãèããã¨ãã£ããã¨ãããã¾ãããç¾å¨ã®èªåã®çµé¨ã¨ç«å ´ã§ã¯ããã¾ã§å¤§ããªè¦ç¹ã§ã·ã¹ãã ãèããã¨ãã段éã§ã¯ãªãã¨ãããããã¾ãããæ¢åã®ãã°ãä¿®æ£ãããããªãã¡ã¯ã¿ãªã³ã°ãè¡ã£ããã¨ããä½æ¥ãæ¥ã ã®ä½æ¥ã®ä¸å¿ã¨ãªã£ã¦ãã¾ããSOAã®ãããªå¤§ããªã¢ã¼ããã¯ãã£ã¯é·ãæéã®éã«å¾ã ã«å®æããããã¦ãããããåºæ¬çã«ã¯å°ããªæ¹åããã¤ãã¤ã¨ç©ã¿éããã¨ããããã ã¢ããã®ã¢ããã¼ãã§ãããã ããæ°ããæè¡ã®æ¡ç¨ãªã©ãæã«ã¯æããã£ã大ããªå¤æ´ããã¬ã¼ã¯ã¹ã«ã¼ãå¿ è¦ã ã¨æãã¾ãã
å¦ã¶ã¹ããã¼ã«ããã¬ã¼ã ã¯ã¼ã¯ãªã©ãç¡æ°ã«ãã
ã¢ãã¾ã³ã®å ´åã¯ãAWSãªã©ã®å ¬éããããã¼ã«ãããããããã¾ããã社å ã«ã¯ãã以ä¸ã«ããããã®ãã¼ã«ããã¬ã¼ã ã¯ã¼ã¯ãæ´»ç¨ãã¹ããã¼ã¿ãããã¾ããä»ã®ãã¼ã ã®ã½ã¼ã¹ã³ã¼ãã¯ç¤¾å ã§ã¯åºæ¬çã«å ¬éããã¦ãã¾ããæ®å¿µãªãããå¤ãã®ãã¼ã«ã¯å¤é¨ã«ã¯éå ¬éãªã®ã§ãããã§ã¯ãã¾ã詳ããæ¸ãã¾ããããããããæå³ã§ãããããã¨ç 究ã®ããããããã¾ãã
å ·ä½çã«ã½ããã¦ã§ã¢ã®æ¹åå¹æãæ°å¤åããã¦ãã
å æ¥ã®ã¤ãã³ãã§ãA-Bãã¹ã*4ã¨ããèãæ¹ã«ã¤ãã¦ç´¹ä»ããã®ã§ãããã¢ãã¾ã³ã§ã¯ã¬ã¹ãã³ã¹æéãªã©ã·ã¹ãã çãªãã¨ã¯ãã¡ãããã¢ã¯ã»ã¹æ°ã売ãä¸ããªã©ãã¸ãã¹ã«ã¤ãªãããã¾ãã¾ãªã¡ããªã¯ã¹ãèªåè¨æ¸¬ããä»æããæä¾ããã¦ãã¾ãããããã£ã¦ã追å ããæ©è½ãå¹æçãã©ããã¨ãããã¨ãã°ã©ãã¨ãã¦ããã«ããã£ã¦ãã¾ãä»çµã¿ã«ãªã£ã¦ãã¾ããèªåã®ä½æããæ©è½ã®å¹æãã©ããªãã®ãªã®ãããªãªã¼ã¹ç´å¾ãã確ãããããã®ã¯ã楽ãããã®ãããã¾ãã
ãã¡ãããã¢ãã¾ã³ã®ç¤¾å¡ãç®æãã¹ãæã大åãªç®æ¨ã¨ãã¦Customer Obsessionï¼é¡§å®¢ç¬¬ä¸ï¼ã¨ããã®ãããã®ã§ããããã£ãæ å ±ã¯ã¦ã¼ã¶ã¼ã¨ã¯ã¹ããªã¨ã³ã¹ã®åä¸ã«æ´»ç¨ããã¾ãã
è±èªã使ã£ãã³ãã¥ãã±ã¼ã·ã§ã³ã®å¿ è¦æ§
ã¢ãã¾ã³ã¸ã£ãã³ã®å ¬ç¨èªã¯æ¥æ¬èªãªã®ã§ãæ¥æ¬èªãéãã人ã«ã¯å ã ã¨æ¥æ¬èªã使ã£ã¦ãããã®ã§ãããå¤å½äººãæµ·å¤ã®ãã¼ã ã¨ã³ãã¥ãã±ã¼ã·ã§ã³ããéã«ã¯ã©ããã¦ãè±èªã使ããªãã¦ã¯ãªãã¾ãããScrumãªã©ã®ä¼è°ããã¹ã¦è±èªã§è¡ããã¦ãã¾ãã*5
çµå±ãç§ã®æå±ãããã¼ã ã§ã¯ãã»ã¼è±èªã§ã³ãã¥ãã±ã¼ã·ã§ã³ããå¿ è¦ãããã¾ããèªåã®è±èªåã§ã¯ãä½ã¨ãä¼è°ã®è©±ã«ã¤ãã¦è¡ã£ã¦ãé²æãå ±åããã¨ãããããã¯ã§ãã¦ãããªããªãèªç±ã«èªåã®èãæ¹ãä¼ãããã¨ã¯ç°¡åã§ã¯ãªãã¨ããã¨ãããããã¾ãããã¯ãããã®ç¹ã«é¢ãã¦ã¯ç§ã«ã¨ã£ã¦è±èªåã®äººã«æ¯ã¹ã¦ãã®ããããã³ãã£ãããã¨æããããå¾ã¾ããããæè¡åãªã©ã§ã«ãã¼ãã¦ãããããªãã§ããã
è±èªã®ãã³ãã£ã¨ããç¹ã§ã¯å¤ãã®æ¥æ¬äººã ãã§ãªããä¸å½äººãåæ§ã®ãããªã®ã§ãããæä½éã¡ã¼ã«ããã£ãããªã©ã§ä¼è©±ãã§ããã°ä½ã¨ãã³ãã¥ãã±ã¼ã·ã§ã³ã¯ã§ãã¾ããã¾ããã³ã¼ãã¬ãã¥ã¼ãã½ã¼ã¹ã³ã¼ãã®diffã使ã£ã¦ãªã³ã©ã¤ã³ã§ã³ãã¥ãã±ã¼ã·ã§ã³ããã®ã§ã¾ãä½ã¨ããªãã¾ããã
ã¡ãªã¿ã«ãã©ã³ãã¿ã¤ã ã¯éè¦ãªè±ä¼è©±ã¬ãã¹ã³ã®ãã£ã³ã¹ã ã¨æã£ã¦ã§ããéãå¤å½äººã®ååã¨ä¸ç·ã«é£ã¹ã«è¡ãããã«ãã¦ããã®ã§ããããããã§ãã³ãã¼ã¬ã¼ãä¸è¯ãªã©èã£ããé£äºãé£ã¹ãæ©ä¼ãå¤§å¹ ã«å¢ãã¾ãããã¢ãã¾ã³ã®ç®é»æ°ãªãã£ã¹ã§ã¯ç¤¾å¡é£å ãã§ããã®ã§ãä»ã¯èªåã®å¥½ããªã¡ãã¥ã¼ãé¸æã§ããããã«ãªãã¾ãããã
ã¾ã¨ã
以ä¸ãæè¿ä»äºã«ã¤ãã¦æãããã¨ãããã¤ãç°¡åã«æ¸ãã¦ã¿ã¾ãããããããè¦å´ããã¨ãããããã¾ãããèªä¿¡ãæã£ã¦æ¥ã 大ãã«æ¥½ããã§ä»äºãã§ãã¦ããããªã¨æãã¾ãããããããã¨ããã£ã¦ãæè¿ã¯æ å ±ãã¤ã³ããããã¦å¦çããã¨ããæ¹ã«ã©ããã¦ãæéãå²ããã¦ãã¾ããããã®ã¨ãããããã°ã®æ´æ°é »åº¦ãä¸ãã£ã¦ãã¾ããã©ãã¾ã§æè¡çãªãã¨ãæ¸ãã¦ãããã¨ãããã¨ã¯ããã¾ããããJavaãPerlãªã©ã®ä¸è¬çãªè¨èªãå ¬éããã¦ãããã¼ã«ã®è©±ã«ã¤ãã¦ã¯ã大ä¸å¤«ãªããã§ãããã¾ãä½è£ãåºã¦ãããæã æ´æ°ãã¦ãããã°ã¨æãã¾ãã
*1:æ¥æ¬ã«æºå¸¯ãµã¤ãã®éçºãã¼ã ããããã¦ããã®ã¯ããã¯ãä¸ççã«ã¿ã¦ãæ¥æ¬ã®æºå¸¯é»è©±ã®æè¡ã使ãæ¹ãã¦ãã¼ã¯ã§é²ãã§ããã¨ããäºå®ãããã¾ãã
*2:SOAã«å¾ã£ãã½ããã¦ã§ã¢ã®æ§é ã«ãªãããéçºçµç¹ãã«ã¼ããã«ã¿ãã°ãæ¤ç´¢ã注æããã»ã¹ãéç¨åºç¤ãªã©ãã·ã¹ãã ãã¦ã¼ã¹ã±ã¼ã¹åä½ãã¨ã«ç¬ç«ããå°ããªéçºãã¼ã ã«åããã¦ãããå ¨ä½ã¨ãã¦ãã¼ã ãããã¤ããã®ãããææ¡ãå°é£ã
*3:æåç§ãåéããã¦ãã¾ããããã¢ãã¾ã³ãå ¨ç¶çæ³é·ã§ã¯ãªãã®ã§ãããããåé¡ãæ¹åç¹ãããããããã¾ããã¨ã³ã¸ãã¢ã«ã¨ã£ã¦ã¯æ¹åç¹ããããã¨ã¯ã¢ããã¼ã·ã§ã³ã«ã¤ãªããã®ã§ããã®ã§ããã
*4:ç°ãªããã¼ã¸ã§ã³ãä¸å®å²åãã¨ã«åæã«ãªãªã¼ã¹ãã¦ãçµ±è¨çã«å¹æã確ããããã¹ãææ³ã
*5:æã è£ã§ä¸å½èªãæ¥æ¬èªãæ··ããã¾ããã
æ¥æ¬ã®ã¦ã¼ã¶ã¼ä¼æ¥ã¯å¿è ã®ãããªããã°ã©ãã¼ããã£ã¨ç»ç¨ãã¦éç¨ãã¹ãã§ã¯
あの記事ããä¸å¹´ãã²ããããæ°ã以ä¸ã®ã¨ã³ããªã¼ã§ãããã°ã©ãã¼ã¨ãã¦ãæ°ãããµã¼ãã¹ãä½ããã¨ã®é£ããã«ã¤ãã¦æ¸ããã¦ãã¾ãã
僕と君とSIerの生きる道 - yvsu pron. yas
確ãã«ç§èªèº«ã¯ããµã¼ãã¹ãä½ãå´ã«åã£ã(ã¾ã ISIDã«ãããã©ããã³ãã£ã¼ã§åãã¦ãããããªãã®ã§ã)ã®ã§ããã身ãæã£ã¦é¢ç½ããµã¼ãã¹ãä½ãé£ãããçµé¨ãã¾ããã
é¢ç½ããµã¼ãã¹ãä½ãã®ã¯ã»ãã¨ãã«é£ããããã®å¾ãããã¿ã¤ãºã«ãæåããã®ã¯ããã«é£ããããµã¼ãã¹ãä½ãå´ã«åã£ã¦æåããã®ã¯ã»ãã®äººæ¡ãã®äººãªãã§ãã
ãã¨ãã¨ä¸å¹´åã«ãã£ããã£ã¦ãããã¨ã¯ãSIerã®ãã¸ãã¹ã«å°æ¥æ§ã¯ãªãããåªç§ãªããã°ã©ãã¼ã¯èªåã§ãµã¼ãã¹ãä½ãå´ã«åããªãã¦ã¯ãªããªãããåã«ããã³ã¼ããä½ããã ãã§ãªãã¦ãèªåããã¢ã¤ãã¢ãèããããããã«ãªããªãã¦ã¯ãªããªãã¨ãããã¨ã ã£ããã¨æãã¾ããä¸å¹´åãã®è¨äºãèªãã ã¨ãã¯ãç§ã¨ãã¦ã¯ããªãè¡æãåãã¾ãããä¸äººåã®ããã°ã©ãã¼ã¨ãã¦èªããããã«ã¯ããã¯ãåã«ããããªã³ã¼ããæ¸ãæè¡ããã¬ã¼ã ã¯ã¼ã¯ãããã«ã®ç¥èã ãã§ã¯ä¸ååãªã®ã§ãããèªåãããã¸ãã¹ãåµãä¸ããã¢ã¤ãã¢ããªãã¦ã¯ãªãããåã«åå¼·ãã¦æè¡åã磨ãã¨ããã ãã§ã¯ä¸è¶³ã§ããã¨ãããã¨ã®ããã«æãããããã§ãã
ã©ããã¦ããåæ»æ°å³ãªSIæ¥çã®ä¸ã§ã¨ã³ã¸ãã¢ã¨ãã¦åãã¦ããã¨ããã«ã»ã²ã¤ãããã¼ã¯ã»ã¶ãã«ã¼ãã¼ã°ã®ããã«æ°ããæ代ãåãéãã¦æåè
ã¨ãªã£ãããã°ã©ãã¼ã«ããããããã¨ã¯èªç¶ãªãã¨ã§ãããããã°ã©ãã¼ã¨ãã¦å¤§ããªç®æ¨ãæã£ã¦é å¼µãã¨ãããã¨ã¯æªããã¨ã§ã¯ããã¾ãããããããªãããç¾å®åé¡ã¨ãã¦ãããããæåè
ã«èª°ããç°¡åã«ãªããããã§ã¯ãªãã§ãããã
大ããªç®æ¨ãç«ã¦ããã¨ã¯ç«æ´¾ãªãã¨ã ããã©ããããã¯ãæ¦å½æ代ã«ä¾ãããªãã°ããã¹ã¦ã®æ¦å£«ã«å¯¾ãã¦ãä¿¡é·ãç§åãç®æãã¨ãã£ã¦ããã®ã¨åããããã«é£ãããã¨ã®ããã«æããã¾ããããããä¸æ¹ã§ãæ¿æ²»ã®è¡¨èå°ã«ã¯ç»å ´ããªãã¦ããè£æ¹ã¨ãã¦æ´»èºããè»å¸«ãå¿è
ã¨ãã¦æ´»èºãããããªäººãããããããã¨æããã¾ããããããå¿è
ãã¡ã¯ã表åãã®èº«åããä½ãã¦ããèªåã®å£è¡ãè«å ±ã¹ãã«ã磨ããã¨ã§ã大åã«ä¿¡é ¼ããã¦ãæ¦ç¥ä¸éè¦ãªããã¸ã§ã¯ããä»»ããã¦ããã®ã§ã¯ãªãã§ããããã
åºæ¬çã«ãä¿¡é·ã®éæã®ãããªã·ãã¥ã¬ã¼ã·ã§ã³ã²ã¼ã ã«ããã¦ã¯ã大åã®ãããªãããã«ç«ã¤äººã¯ãã¹ã¦ã®è½åã«ããã¦åªç§ã§ãªãã¦ã¯åã¾ããªãã¨æãã¾ãããå¿è
ãè»å¸«ã®ã¿ã¤ãã¯æºè¬ãæ¦åãªã©ä¸é¨ã®è½åã«ç¹åããã¹ãã·ã£ãªã¹ãã¨ãã¦ç»å ´ãã¾ããç§ã¨ãã¦ã¯ãå¤ãã®ããã°ã©ãã¼ã¯å¤§åã¿ã¤ããããããããããããå¿è
ã¿ã¤ããç®æããæ¹ãããã®ã§ã¯ãªããã¨æãã®ã§ãããã
å¿è
ã¯ã¹ãã·ã£ãªã¹ãã§ããã大åã®ãã°ã«ãã¦ãéè¦ãªããã¸ã§ã¯ããå¼ãåãã¾ãã*1ããã¯ãç¾ç¶ã®SIæ¥çã«ãããéçºã大é¨åç¾å§ããè¨æã§ããéãããããªåå
µã«ããéå£æ¦æ³ã«é ¼ã£ã¦ããã®ã¨ã¯å¯¾ç
§çã§ãã
Amazonã§ã¯ã¨ã³ã¸ãã¢ã®ãã¨ãå¿è
ã¨å¼ã¶ãã¨ãããã¾ãããåã«å¤å½äººã®èå³ãå¼ãã¨ãããã¨ã ãã§ãªãããã®å¼ã³æ¹ã¯ã¨ã³ã¸ãã¢ã®è·åã表ç¾ããä¸ã§é常ã«ããããã¦ããã¨èãã¾ãã*2
åæ±ååæ°ã®æ¡å çã§æé·ãç¶ãããªã³ã©ã¤ã³ã¹ãã¢ã ãã§ãªããæå 端ã®ã¯ã©ã¦ãæè¡ãæ´»ãããAmazon Web Servicesï¼AWSï¼ã®å±éã¨ããããªãææ¦ãç¶ããAmazonããã®å½±ã®åå¨ã§ãããªããåããã¨ãããã¨ããæããè¾¼ããAmazonã®ã¨ã³ã¸ãã¢ã¯èªåéãå¿è ï¼Ninja)ã¨å¼ã³ã¾ãã
Amazon エンジニアキャリア採用サイト
army of traveling Code Ninjas
AWSããã©ã¤ã ããã³ãã«ãã¢ãã¤ã«ãªã©ããããã®æ¦ç¥ãæ
å½ãããã¼ã ã®ä¸ã§ãã¨ã³ã¸ãã¢ãå¿è
ã®ããã«è£æ¹ã¨ãã¦æ´»èºãã¦ãã¾ãããããã®å¿è
ãã¡ã¯ãå¿
ãããæå人ã¨ã大éæã¡ã¨ããããã§ã¯ãªãã§ãããã¹ãã«ãæ´»ããã¦ããã¸ãã¹ã®æ¦ç¥ãéè¡ããä¸ã§éè¦ãªå½¹å²ãæ
ã£ã¦ãã¾ãã
ãã¨ãã¨ãå¿è
ã¨ãããã®ãçã¿åºããå½ã§ãããªãããæ¥æ¬ã®SIæ¥çã«ããã¦ã¯å¿è
ã®ããã«ããã°ã©ãã¼ãéç¨ããããã¨ãå°ãªãã®ãä¸æè°ãªãããã§ãã大éã®åå
µè»å£ãããªãéå£æ¦æ³ã使ã£ã¦æ°ã§åè² ã¨ããã ãã§ã¯ãªããå°æ°ç²¾éã®ã¡ã³ãã¼ã§æ¦ç¥çã«åã¤ã¨ãããããªããæ¹ããæ¥æ¬ã®ã¦ã¼ã¶ã¼ä¼æ¥ã§ããã£ã¨ããã¥ã©ã¼ã«ãªãã°ãæ¥æ¬ã§ãä¸ç´ããã°ã©ãã¼ã®æ´»èºããå ´æããã£ã¨å¢ããã®ã§ã¯ãªããã¨æãã¾ãããããããå¿è
è¡ããã°ã«æ±ãã¦ããã°ãã¦ã¼ã¶ã¼ä¼æ¥ã«ã¨ã£ã¦ãITãæ¬å½ã«ãã¸ãã¹ã§æ´»ç¨ããä¸ã§æå¹ãªã®ã§ã¯ãªããã¨æãã¾ãããããã§ããããã
*1:å®éã«ã¯å½æã®å¿è ã«ã¯ä¸å¿ã¨ãä¸å¿ã¨ãã®èº«åããããæé¨åèµã®ãããªæåãªå¿è ãèªåããç¾å ´ã§æ´»èºãããã©ããã¯çãããããã§ããã
*2:PGã¨ããã¨ä¼çµ±çã«ã¢ãã¥ããè·äººãéç ²éå¶ãåéå¶ã®è·äººã®ã¤ã¡ã¼ã¸ãããã¾ãããæè¿ã¯ITã§å¾ãããæ å ±ããç´ æ©ã次ã®ä½æ¦ãéè¡ããã¨ããå½¹å²ãããã®ã§ãå¿è ã¯ã¤ã¡ã¼ã¸ã¨ãã¦åã£ã¦ããã®ã§ã¯ã¨æãã¾ãããã¤ã¾ããä½æ¦ã®èæ¡ããå®è¡ã¾ã§ãä¸æµããä¸æµã¾ã§ããã¸ã§ã¯ããç´ æ©ãã¿ã¤ã ãªã¼ã«éè¡ããã¨ãããã¨ã§ãã
ã½ããã¦ã§ã¢æè¡è 軽è¦ã®ã·ã¹ãã éçºãç¶ããã®ã¯ããéçãããããªã
ã¤ãå
æ¥ãå¯å£«éãã°ã«ã¼ãã§æ±ãã3ä¸äººãã®SEãåæè²ãã¦ãè·å転æãè¡ãè¨ç»ã§ããã¨ãããã¥ã¼ã¹ãç¥ãã¾ããã
富士通の3万人SE職務転換大作戦は成功するのか? - GoTheDistance
ä¸ã¤ã®ã·ã¹ãã ãè¤æ°ã®ä¼æ¥ãªã©ãå©ç¨ããã¯ã©ã¦ããµã¼ãã¹ããã®ã¾ã¾æ®åããã°ã顧客ã®è¦æãèãã¦åå¥ã·ã¹ãã ãä½ãè¾¼ãSEã¯ä»äºããªããªããä½å°äººå¡åé¡ãé¡å¨åããããã ã
ã¯ã©ã¦ãã®æ®åã«ããããªã¼ãã¼ã¡ã¤ãã§ã·ã¹ãã ãã¼ãããæ§ç¯ããå¿
è¦ããªããªãããããã顧客ããã®è¦ä»¶ãã¾ã¨ãã¦ã·ã¹ãã ãè¨è¨ããSEã®ä»äºãä¸è¦ã«ãªã£ãããåºç¤ãæ§ç¯ãéç¨ããã¨ã³ã¸ãã¢ãä¸è¦ã«ãªãã¨ãããã¨ã¯ãæè¿ã«ãªã£ã¦ããè¨ããããã¨ã§ãããç¹ã«æ°ãããã¨ã§ã¯ããã¾ããããã¡ãããã¯ã©ã¦ãã®æ®åã«ãã£ã¦ããããã®ä¼çµ±çãªSEã®ä»äºãå°ãªããªãã人å¡ãä½ãã¨ããè°è«ã¯ééãã§ã¯ãªãã¨æãã¾ãã
ãã ããä¸æ¹ã§ããæ¬è³ªçã«éè¦ãªãã¨ã¯ãã¯ã©ã¦ãã®æ®åã«ãããè¦ä»¶ã®å®ç¾©ããå®ç¾ãéç¨ã¾ã§ã®æéã大å¹
ã«ç縮ã§ããããã«ãªã£ãããåºç¤æ§ç¯ãªã©å¤ãã®ä»äºãèªååããããã¨ã§ãä¸æµããä¸æµã¾ã§ãã¹ã¦ãæ
å½ã§ãããããªçã®ã½ããã¦ã§ã¢æè¡è
ã®å½¹å²ãã·ã¹ãã éçºã§éè¦ã«ãªã£ã¦ãã¦ããã¨ããã¨ããã«ããã¨æãã¾ãããããã£ã¦ãä¸æµæ
å½ã®SEã ããã¨ãã£ã¦ããã°ã©ãã³ã°è¨èªãåºç¤æè¡ã®ãã¨ãã¾ã£ããç¥ããªãã¨ãã£ããã¨ã許ãããªãæ代ã«ãªã£ã¦ãã¦ããã¨ãããã¨ã§ãããã¢ã¡ãªã«çãªæå³ã§ã®ããã°ã©ãã¼ï¼ãã£ããããã¼ï¼ã®ä»äºããã£ã¨éè¦ã«ãªã£ã¦ãã¦ããã¨ãããã¨ãç解ããå¿
è¦ãããã¾ããããã°ã©ãã¼ã¨ããã¨ãåã«è¨è¨æ¸ã«å¾ã£ã¦ã³ã¼ããæã¡è¾¼ãåç´ä½æ¥ããã人ããéã«ãããé£ããè¨ç®å¼ã¨ã¢ã«ã´ãªãºã ã使ããããªç 究è
ãªã©ãã¾ã£ããç°ãªããããããªè·æ¥ãæãæµ®ãã¹ã人ããã¾ãããå°ãªãã¨ãã°ã«ã¼ãã«ãªæå³ã§ã®ã¨ã³ã¿ã¼ãã©ã¤ãºéçºã®ã³ã³ããã¹ãã«ãããããã°ã©ãã¼ã¨ã¯ã顧客ã®è¦ä»¶ãç´ æ©ãå®ç¾ããæ¹æ³ãææ¡ãã¦ããã®ã¾ã¾æ§ç¯ããå ´åã«ãã£ã¦ã¯ãã¹ãèªååããããã¤ã¡ã³ãã¾ã§æ
å½ãã人ã®ãã¨ãæãã¾ããããããæå³ã§ã¯å½ç¶ä¸æµãä¸æµãããã¾ããããã¡ãããçµé¨ãã¹ãã«ã«ãã£ã¦ä¸ç´ããã°ã©ãã¼ããæä¸ç´ã®ããªã³ã·ãã«ããã°ã©ãã¼ã¾ã§å¹
ã¯ããã¾ãããä¸ç´è·ã§ãã£ã¦ãããªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ãã§ããªãã¦ããã¨ãããã¨ã§ã¯ãªããããããææ¬ã¨ãªãã³ã¼ããæ¸ãããã³ã¼ãã¬ãã¥ã¼ãã§ãããã¨ãæ±ãããã¾ãã
ã¯ã©ã¦ãæ代ã«ãªã£ãã®ã§ãæè¡ã®ããããªã人ã§ãã·ã¹ãã ãæ§ç¯ã§ããã¨ãããã¨ãæã
èããã¾ãããã¡ãããä¸é¨ã«ã¯ãã®ãããªã·ã¹ãã ãããã¨ã¯ãããåºå¹¹æ¥åããã¸ãã¹ã®ä¸å¿ã«ãããããããªã·ã¹ãã ã§ããã°ãã¯ã©ã¦ããå©ç¨ããã¨ã¯è¨ããã¢ã¤ãã¢ããããã°ã¾ã£ããã®ç´ 人ãã·ã¹ãã ãæ§ç¯ã§ããã¨ã¯èããã¹ãã§ã¯ãªãã§ãããããã®ç¹ã«ã¤ãã¦ã¯ãã¡ããã©ä¸å¹´ã»ã©åã«ã以ä¸ã§è°è«ãã¦ãã¾ãã
日本のSI業界でこそ、専門の技術者の必要性がもっと見直されるべきではないのか? - 達人プログラマーを目指して
ããããæå³ã«ããã¦ãã¤ãã«å¯å£«éã®ãããªSIerããä»åã®è·å転æã§ä»ã¾ã§ã®ãããªä¸æµåéåã®æè¡è»½è¦ã®èãæ¹ãæ¹ãã
- OSããããã¯ã¼ã¯
- ãã¼ã¿ãã¼ã¹æ§ç¯ãéç¨
- ãªãã¸ã§ã¯ãæåãªã©ããã°ã©ãã³ã°è¨è¨
ãªã©ã®ç¥èãæã£ãå°é家ãã¤ãã«è²æãããã¨ã«ãªãã®ãã¨æå¾
ããã®ã§ãããå®æ
ã¯å¤§ããç°ãªãããã§ããã
富士通が説くSIにおける人材革新のツボ - ITmedia エンタープライズ
ããããã¾ã§ã¯ãããããã¢ãã¥ããã«ç¦ç¹ãå½ã¦ã人æã¥ãããè¡ã£ã¦ãããç¾å¨ãSEãæ ã£ã¦ããã¹ãã«ã¨ãã¦ã¯ãã³ã³ãµã«ãã£ã³ã°ããå ¥ã£ã¦ãéçºã®ããã®ããã¸ã§ã¯ãããã¸ã¡ã³ããæ¥åã¢ã¼ããã¯ãã£ãå質ããã¸ã¡ã³ããITã¢ã¼ããã¯ãã£ããããã¯ãã¢ã¼ããã¯ãã£ãããã¦éç¨ã»ä¿å®ãè¡ããµã¼ãã¹ããã¸ã¡ã³ãããããããããããããã¯é¡§å®¢ä¾¡å¤ã®å®ç¾ã«åãã¦é¡§å®¢ã¨ã¨ãã«èãã¦ããã¨ããåãçµã¿ãä¸å±¤æ±ããããããã«ãªãã
ãããããå³ã®ä¸é¨ã«ç¤ºããã¦ããã¨ããã®ãã¹ãã«ãããã¼ã«ã¸ã®ã·ãããã§ãããå社ãæ°ããªæ代ã«åãã¦åå®ç¾©ãããã¼ã«ãããªãã¡ãå½¹å²ãã«å¿ããè·åã¯ãããã¸ãã¹ãããã¥ã¼ãµãããã£ã¼ã«ãã»ã¤ããã¼ã¿ããã³ã³ãµã«ã¿ã³ããããµã¼ãã¹ã¤ã³ãã°ã¬ã¼ã¿ãã®4ã¤ã
ãã¡ããã詳ããå
容ã¯åãããªãã®ã§ãããçµå±ã®ã¨ããã以åã«ãã¾ãã¦ä¸æµéè¦ã®æ¹éã®ããã«æããã¾ãã*1æ®å¿µãªãããå¯å£«éã®SEã®è·å転æå
ã«ã¯ãï¼ã¢ã¡ãªã«çãªæå³ã§ã®ï¼ããã°ã©ãã¼ãSDET*2ãã¯ã©ã¦ãåºç¤éç¨ç®¡çã®å°é家ãå«ã¾ãã¦ããªãããã§ãã
ã¨ããã§ãæè¿ç¹è¨±åºã®ã·ã¹ãã éçºä¸æã¨ãã以ä¸ã®ãã¥ã¼ã¹ã話é¡ã«ãªã£ã¦ãã¾ãã
http://www.asahi.com/business/update/0124/TKY201201240616.html
調査報告書 平成22年8月20日 特許庁情報システムに関する調査委員会
特許庁の情報システムについて - myatsumoto blog
5å¹´ãåãããã£ã¨è¨è¨ãè¡ã£ã¦çµå±å®æããªãã£ãã¨ãããã¨ã§ããããã®éã³ã¢æ©è½ãå«ãä¸é¨ã®ãµãã·ã¹ãã ã§ããæ§ç¯ãããã¨ã¯ã§ããªãã£ãã®ã§ããããï¼ãã®ããã«ä½å¹´ãããã¦ä¸æµã®è¨è¨ãç¶ãã¦ããã¾ã¨ããªã·ã¹ãã ãä¸ã¤ãå®æããªãã¨ãã話ã¯ç¹è¨±åºã«éã£ããã¨ã§ã¯ãªããã¡ã¬ãã³ã¯ã®åºå¹¹ã·ã¹ãã æ§ç¯ãªã©ãããã¨ããã§è³ã«ãã¾ããããããè¨è¨ã«5å¹´ãããã¦ãã¦ã¯ãæè¡ã®å
容ããã¸ãã¹ã®å
容ã大ããå¤åãã¦ãã¾ãããã§ã¦ã©ã¼ã¿ã¼ãã©ã¼ã«çã«è¨è¨ãåºå®ã§ããããããªãã§ãããä»®ã«ãªãã¨ãå®æã«ããã¤ããã¨ãã¦ã使ãç©ã«ãªããªãã·ã¹ãã ãã§ããã ãã ã¨æãã¾ãã
ããã°ã©ãã¼ã®èªåã®ç®ããè¦ã¦ããã¤ãé常ã«ä¸æè°ã«æãã®ã¯ããããã£ãåé¡ãèµ·ãã£ãå ´åã
- 管çã®æ¹æ³ãæªãã£ã
- 顧客ã¨ã®ä»æ§ã®èª¿æ´ããã¾ããããªãã£ã
- ä¸æµã®åºæ¬è¨è¨ããã¾ãã¾ã¨ã¾ããªãã£ã
ã¨ãããããªè©±ã¯åºã¦ããã®ã§ããã決ãã¦ããã°ã©ã ãåºç¤ã®è¨è¨ãåå ã¨ããããã¨ããªãã¨ãããã¨ã§ãããå®éã«ã¯ãããã£ãå®è£
é¢ã®åé¡ã¯å
¨ãç¡è¦ã§ããã¯ãã¯ãªããã³ãã¼ã¢ã³ããã¼ã¹ãã ããã§è¤éã«ãªããã¾ã£ããæãä»ããããªããªã£ããããã¾ãã«ãæ§è½ãæªãã¦è¦ä»¶ãæºãããªãã¨ãããããªåé¡ã¯ãã»ã©ç°¡åãªã·ã¹ãã ã§ããªãéã大ããªåé¡ã¨ãªãã¯ãã§ããï¼プログラミングと設計は本来切り離せないものなのでは - 達人プログラマーを目指してï¼
ä¼çµ±çã«ãæ¥æ¬ã®SIæ¥çã§ã¯ãã®æ§é ããå®è£
ãæ§ç¯ã®ä½æ¥ã軽è¦ããå¾åããã£ãããã§ãããããå æ¸ã«ãã®ãããªèãæ¹ã§ã·ã¹ãã éçºãç¶ãããã¨ã¯å質ãã³ã¹ããã¹ãã¼ãã®é¢ã§ããéçã«éãã¦ããã¨èããããã®ã§ã¯ãªãã§ããããã
å¯å£«éã®ãããªSIerã¯SEã®è·ç¨®è»¢æãç®æãã®ã§ããã°ãåã«ä¸æµã®ã³ã³ãµã«ã¿ã³ãã ãã§ãªããä¸ç´ã®éçºè
ã®ä»äºããã£ã¨éè¦ãã¹ããªã®ã§ãããã¡ããããã®ããã«ã¯ããå
輩ãæ¸ãã¦ããããã«SIerã¯ãã¸ãã¹ã¢ãã«ã®å¤§å¤é©ãå¿
è¦ã ã¨æãã¾ããããããã¯ãã¦ã¼ã¶ã¼ä¼æ¥ããã£ã¨çå
ãã¦ä¸ç´ã®ããã°ã©ãã¼ãéã£ã¦ããçæéã§å¹çããã·ã¹ãã ãéçºã§ããããã«ãªãã¹ãããããã¾ããããã®å ´åãSIerã¯æåéãã·ã¹ãã çµ±åã®æå©ãã¨ããéçºåºç¤ã®æä¾ãªã©ããã¸ãã¹ã¢ãã«ãªã©ã§ã¯ãªããããéçºã®ã¤ã³ãã©ããã®é¨åãæ
å½ããå½¹å²ãæ
ããã¨ã«ãªãã¨æãã¾ãã
éçºã³ã¹ããæè¡ãªã¹ã¯ãèããªããä¸æµè¨è¨ããã·ã¹ãã ã®è¤éåã¨å¤§è¦æ¨¡ãªé害ã®åå ã¨ãªã£ã¦ããã®ã§ã¯ï¼
çãããæãã¾ãã¦ããã§ã¨ããããã¾ããæ¨å¹´ã®å¾åã¯ç§èªèº«SIæ¥çããWebæ¥çã¸è»¢è·ãããã¨ãªã©ä»äºç°å¢ã®å¤åããããããã°ã®æ´æ°é »åº¦ãéããã¡ã«ãªã£ã¦ãã¾ã£ã¦ãã¾ããããæ¬å¹´ãã©ãããããããé¡ããããã¾ãã
ãã¦ãã¡ããã©ãä¸å¹´åã®ãæ£æã«ã¯ã°ã«ã¼ãã³ã®ããã¡æçäºä»¶ã話é¡ã«ãªã£ã¦ãã¾ããããç§ã¯ããã¡æçã®å質ã¨ITæ¥çã«ãããå質ã®åé¡ã絡ãã¦ã以ä¸ã®è¨äºãæ¸ãã¾ããã
グルーポンのおせち事件を受けてSI業界が本当に教訓とすべきこと - 達人プログラマーを目指して
ãã®è¨äºã§ã¯ãä¸è¬ã«SIerã«ãã£ã¦éçºãããæ¥æ¬ã®ã·ã¹ãã ã¯ãã®äºä»¶ã®ããã¡æçã®ããã«ãä½ãå質ã«çããã¦ããããå¤ãã®å ´åã社å
ã·ã¹ãã ãªã©ã§ã¯ãããã£ãå質ã®åé¡ãå
¬ã«æããã«ããããã¨ãå°ãªãã®ã§ã¯ã¨ãããã¨ãææãã¾ããããã ããã®æã¯ç§ã®å¸æãè¾¼ãã¦
æè¿ã¯OSSãã¯ã©ã¦ããªã©ã®å½±é¿ã§ç¤¾å ã·ã¹ãã ãã©ãã©ããããä¸ã®ãªã¼ãã³ãªä¸çãã調éãããããã«ãªã£ã¦ãã¦ããããã§ãããããå æ¸ã«ããããç¶æ ããã®å ä½å¹´ãç¶ããã¨ã¯ãªãã®ã§ã¯ãªããã¨æãã¾ããã¢ãªã¨ããªã®ãªã¹ã®è©±ã§ã¯ããã¾ããããæ¥ãã¹ãå¬ã®æ代ã«åãã¦ãæ¬ç©ã®æè¡åï¼ããã°ã©ãã³ã°åã ãã§ãªãã¦ææ¡åãªã©ããã®æè¡è ã¨ãã¦ã®ä»äºåãå«ãï¼ãã¤ããåå¼·ããã¦ãããã¨ã¯æ±ºãã¦ç¡é§ãªåªåã«ãªããªãã¨æãã¾ããèªããä½ãåºãã¦æ·±ãé¢ãã£ã¦ããITæè¡ã«ãã£ã¦ãçé¢ç®ã«åå¼·ãã人ãæãããããæ£ç´è ã馬鹿ãè¦ããæ¥çã®ä½è³ªã¯ããããçµããã«ãªããããå¾ãªãã®ã§ã¯ãªãã§ããããï¼
ã®ããã«çµã³ã¾ãããæ®å¿µãªããããã®å¾1å¹´éã§ã·ã¹ãã éçºã®æ¹æ³ã大ããé²åããå質ã®åé¡ãåçã«æ¹åãããã¨ãã話ã¯ãã¾ãèãã¾ãããéã«ãæ¨å¹´3æã®éç½å¾ã«ã¡ã¬ãã³ã¯ãèµ·ããã大è¦æ¨¡é害ãææ°ã¹ãã¼ããã©ã³ã®åä½ä¸å
·åãªã©ãå¤ãã®ã¦ã¼ã¶ã¼ã®çæ´»ãä»äºã«å½±é¿ãä¸ãã大è¦æ¨¡ãªã·ã¹ãã é害ã®ãã¥ã¼ã¹ãããããè³ã«å
¥ã£ã¦ãã¾ãããã¾ãã¾ãB2Cã®ã·ã¹ãã ãéè¦ã«ãªã£ã¦ãã¦ããã¨ããä¸è¬çãªå¾åã®ä¸ã§ãã·ã¹ãã ãç´æ¥æ¶è²»è
ã§ãã顧客ã®ç®ã«è§¦ããä¸å
·åãå¤ããªã£ã¦ãããã¨ã§ããããããã¾ãããå¹ããªããªã£ã¦ãã¦ããã¨ãããã¨ã¯è¨ããããããã¾ããããã¡ãããããã°ã©ã ã«ãã°ã¯ä»ãç©ã§ãããAppleãGoogleãªã©ã®ã©ããªåªç§ãªããã°ã©ãã¼ãä½ã£ãããã°ã©ã ã«ãé害ã¯ããããå«ã¾ãã¦ããããã§ãããããã«ãã¦ããæ¥æ¬è£½ã®ã·ã¹ãã ã¯æè¿å¤ãã®é大ãªé害ãèµ·ããããã«æããã¾ãã
ãã¦ãä»å¹´ã¯æ©éãã³ã¢ã®spã¢ã¼ãã§å
¨å½çã«ã¡ã¼ã«ãéä¿¡ã§ããªããªãã¨ããé害ã®ãã¥ã¼ã¹ãããã¾ããã
http://www.nttdocomo.co.jp/info/network/kanto/pages/120102_1_d.html
http://www3.nhk.or.jp/news/html/20120103/t10015025811000.html
spã¢ã¼ãã¯æ¨å¹´æ«ã«ãé»åã¡ã¼ã«ã®éä¿¡å
ãå
¥ãæ¿ãã£ã¦ãã¾ãã·ã£ããã«åé¡ãªã©é大ãªé害ããã£ãã°ããã§ãããããã¾ã§ããã¾ãããè©å¤ãèããªãããã§ãããä»åã®æ°ããªé害ã®åå ã¯
spã¢ã¼ãã®ãµã¼ãã¼ã®æ é
ã¨çºè¡¨ããã¦ãã¾ããããã¯ããããã»ã©ãã³ãã³é大ãªé害ãèµ·ããã¨ãããã¨ã¯ãåã«å¶ç¶ãã¼ãã¦ã§ã¢ãæ
éããã¨ããç´æ¥çãªåå ã®åã«ããã£ã¨æ ¹æ¬çãªã·ã¹ãã ã®è¨è¨ãéçºææ³ã«åé¡ãããã®ã§ã¯ãªããã¨ã¯èª°ããæ³åããã¨ããã§ããspã¢ã¼ãã«ã¤ãã¦ã¯ä¸é¨ã³ã³ãã³ããããã¤ãã¼ï¼CPï¼åãã®æè¡è³æã以ä¸ã§å
¬éããã¦ãããããã©ã®ãããªéçºãè¡ããã¦ããã®ããä¸é¨ã伺ãç¥ããã¨ãã§ãã¾ãã
http://i.mydocomo.com/docomoid/dlogin/pc/developer.html
ä¸è¨ã®ãµã¤ããããdocomo IDãç¨ãããµã¤ãã®èªè¨¼æ¹å¼ã®ä»æ§æ¸ããã¦ã³ãã¼ãå¯è½ã§ãã
docomo ログイン I/F仕様書
ããã¯ã60ãã¼ã¸ã»ã©ã®ããã¥ã¡ã³ãã§ãã·ã¼ã±ã³ã¹å³ãªã©å¤ãã®å³ãç¨ãã¦ãspã¢ã¼ãã®ãå
¬å¼ãµã¤ããã§docomo IDãåå¾ããããã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã説æããã¦ãã¾ããä»é²ã«ã¯Javaã¨PHPã«ãããµã³ãã«ã³ã¼ããæ¸ããã¦ããã®ã§ãCPå´ã§å®éã«ã©ããªããã°ã©ã ãæ¸ãå¿
è¦ãããã®ãããããã¾ãã
spã¢ã¼ãã¯ãã³ã¢ã®ã¹ãã¼ããã©ã³ã§ã¬ã©ã±ã¼ã®iã¢ã¼ãã®ãããªãµã¼ãã¹ãå©ç¨å¯è½ã«ãªããµã¼ãã¹ãªããã§ããããã¤ã¡ãã¥ã¼ç»é²ãªã©èª²éã¤ã³ãã©ãå©ç¨ããããã«ã¯ãåæã¨ãã¦æºå¸¯é»è©±ã使ã£ã¦ããã¦ã¼ã¶ã¼ãç¹å®ããIDãCPå´ã§åå¾ããå¿
è¦ãããã¾ããå¾æ¥ã®ã¬ã©ã±ã¼ã§ã¯GUIDã¨å¼ã°ããIDã端æ«ã¨ç°¡åã«çµã³ã¤ããããããã§ãããå½ç¶ã¹ãã¼ããã©ã³ã®å ´åã¯ãµã¼ãã¹ãå©ç¨ããåã«ãèªè¨¼ã«ãã£ã¦ã¦ã¼ã¶ã¼ãæ£ããç¹å®ãããã¨ãåæã¨ãªãã¾ããããã§ããã®ä»æ§æ¸ã®è¦ç¹ã¨ãã¦ã¯ãCPã¯ã¹ãã¼ããã©ã³ã®ã¦ã¼ã¶ã¼ãç¹å®ããSUIDãéç¥ãããããã«Open IDãããã³ã«ã®RPãå®è£
ããªãã¦ã¯ãªããªãã¨ãããã¨ããããã¾ãã
Open IDã¨ããã®ã¯èªè¨¼IDãè¤æ°ã®ãµã¤ãã§å
±æããä»çµã¿ã§ãã·ã³ã°ã«ãµã¤ã³ãªã³ã®ã¡ã«ããºã ã®ä¸ã¤ã¨ãã¦å©ç¨ããã¦ãããªã¼ãã³ãªä»æ§ã§ããã¦ã¼ã¶ã¼ããè¦ãã°ãã£ãããã³ã¢ã®ãµã¤ãã§docomo IDã使ã£ã¦ãã°ã¤ã³ããã°ãåã
ã®ãµã¤ããã¨ã«ãã°ã¤ã³åããã¹ã¯ã¼ããåå¥ã«è¨æ¶ããå¿
è¦ããªãã®ã§ä¾¿å©ã§ãããªã¼ãã³ãªæ¨æºä»æ§ã§ããããã¾ãã¾ãªè¨èªã§ã¢ã¯ã»ã¹å©ç¨å¯è½ãªã©ã¤ãã©ãªã¼ãå¤æ°åå¨ãã¦ãã¾ãã
OpenID Wiki / Libraries
èªè¨¼åºç¤ãCPãã¨ã«ä½ããã¾ãªãã¦ããã³ã¢ã«ãã¾ããããã°ããã®ã§ããµã¤ãã®éçºã³ã¹ããæãããã¨ãã§ããã§ãããããã®ããã«èããã¨ããã®ä»æ§ã¯ä¸è¦åççã«ããèãããã¦ããããã«æããã¾ããããããæ¬å½ã«æå¾ã¾ã§ãµã¤ããæ§ç¯ãããã¨ãèããã¨
- Open IDèªä½ã¯è¤éãªä»æ§ã®ããããããã³ã«ãå ¨é¨èªåã§å®è£ ããã®ã¯éç¾å®çã ããå®éã«ã©ã®ã©ã¤ãã©ãªã¼ãå©ç¨ããã°ããã®ãã
- spã¢ã¼ãã®ãã°ã¤ã³ä»æ§ã¯ãè¤æ°åã®HTTPã®ããåããå¿ è¦ã§ãCPãä½ããã®ãµã¼ãã¼ãµã¤ãã®ç¶æ ãä¿æãããã¨ãåæã¨ãããããã³ã«ã¨ãªã£ã¦ããããã«æãããã
- éçºæã«ã¯ã©ã®ãããªæé ã§æ¥ç¶ãã試é¨ããã°ããã®ã
- æ¢åã®ãµã¤ãã§ã·ã³ã°ã«ãµã¤ã³ãªã³ã®æä¾ãé£ããå ´åã¯ã©ãããã°ããã
ãªã©ãªã©ãå®éã«ãä¸æµã®ãéçºè
ã®ç«å ´ã§ãç´°ãããã¨ãæ°ã«ãåºãã¨å
·ä½çã«ã¯å®éã«ã©ããã£ã¦ä½ã£ããããã®ãã¨ãããã¨ãã¾ã£ããæ¸ããã¦ããªããã¨ã«æ°ã¥ãããã¾ããå¤æ°ã®å³ã使ã£ã¦ãä¸è¦é常ã«ãããããã解説ããã¦ã¯ãã¾ãããå®éã®å®è£
ã¬ãã«ãæ³å®ããã¢ã¼ããã¯ãã£ã®è©³ç´°ãã»ã¨ãã©æ¸ããã¦ãã¾ããããæè¡ãªã¹ã¯ã®ãããªãã¨ãååã«æ¤è¨ããã¦ããã¨ã¯è¨ãé£ãã¨ãããããã¾ãã
ãã¡ãããèªåã¯spã¢ã¼ãã·ã¹ãã éçºã®å½äºè
ã§ã¯ããã¾ããããç´æ¥çã«éçºã«ãããã£ããã¨ããªãã®ã§ããã¡ããããã¯ç§ã®åæãªæ³åã®åãåºãªãããã§ãããçµæã¨ãã¦ãéçºå´ã§ç´°ããã¨ããã¯åå¥ã«ä½ã¨ã解決ãããããªããä½ç¨éã«æµã¾ããªãéãããã¹ãã¨ããã¾ãããæ³å以ä¸ã«éçºãªã½ã¼ã¹ãå¿
è¦ã¨ããé常ã«å¤§å¤ãªããã¸ã§ã¯ãã«ãªããã¨ãé ã«æµ®ããã§ãã¾ããéå
¬éã®ä»æ§ã«ã¯ãã£ã¨å¥ã®è¨è¨è³æãéçºSDKãåå¨ããå¯è½æ§ãããã¾ãããå°ãªãã¨ãå
¬éããã¦ããä»æ§æ¸ãèªãéããããã¯ãæ¥æ¬ã®ITæ¥çã«ã¯é常ã«ãããã¡ãªä¸æµã®ä»æ§æ¸ã»è¨è¨æ¸ã®ããã«æããã¾ãã
GoogleãTwitterãªã©å¤å½ã®ITä¼æ¥ã®å ´åããã®ãããªååãè¨è¨æ¸ãç¨æãã以åã«ãã·ã¹ãã é£æºã®ããã®ä¾¿å©ãªAPIã主è¦ãªè¨èªã§ã©ã¤ãã©ãªã¼ã¨ãã¦å®è£
ãã試é¨ç¨ã®SDKã¨ã¨ãã«éçºå´ã«æä¾ããã®ãæ®éã®ããã«æããã¾ããå¤å½ã§ã¯è¨è¨ã«ä¸æµãä¸æµããªãããã¡ãã¨åä½ããä»æããã§ãã¦ãã¦åãã¦è¨è¨ãå®äºãã¦ããã¨èãã¾ããããããã³ã¢ããã®ãããªã©ã¤ãã©ãªã¼ãWebãµã¼ãã¹ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãå®è£
ãã¦å
¬éãã¦ããã°ãå°ãªãã¨ãåCPå´ã®éçºè²»ç¨ã¯ã¯ããã«æããããã¯ãã§ãããããã¸ã§ã¯ãã失æããå±éºãå°ãããªãã®ã§ã¯ã¨æãã¾ãã
ãã¡ãããããã¯å
¬éããã¦ããè³æã«åºã¥ãã¦æ³åãããspã¢ã¼ãã®è¨è¨ã®è¤éæ§ã®ã»ãã®ä¸é¨åã®åé¡ã«éãããä»åã®å¤§è¦æ¨¡é害ã¨ã®ç´æ¥çãªã¤ãªããã¯ãªãã¨æãã¾ãããä»ã®é¨åã§ããã®ããã«éçºå·¥ç¨ãä¸æµãä¸æµã¨åããã¦ã©ã¼ã¿ã¼ãã©ã¼ã«åã§ç´°ããæè¡ãªã¹ã¯ãä¸æµã®ä¸è«ãæ¥è
ã«æ¼ãä»ãã¦ããã®ã§ããã°åé¡ã§ã¯ãªãã§ããããã
ãã¯ããç§ã¨ãã¦ã¯ãæ¥æ¬ã®ITæ¥çã§ä¼çµ±çã«è¡ãããã¦ã©ã¼ã¿ã¼ãã©ã¼ã«åã®éçºææ³ãã·ã¹ãã ã®è¤éåã¨å¤§è¦æ¨¡ãªé害ã®åå ã¨ãªã£ã¦ããã®ã§ã¯ã¨èãã¦ãã¾ãã¾ããããããé«åº¦ã§è¤éãªã·ã¹ãã ã®éçºãè¡ãã®ã§ããã°ãä¸æµå·¥ç¨ãç¡è¦ãã¦ãä¸æµè¨è¨ããè¡ãã¨ããèãæ¹ãããå æ¸ã«æ¹ããã¹ãã§ã¯ãªããã¨æãã¾ããããã¦ããã£ãªã¢ã¼ã®ãããªã¤ã³ãã©ãæ
å½ããä¼ç¤¾ã¯ãåã«ä¸æµã®è¨è¨æ¸ãä»æ§ã¨ãã¦ä½æããã ãã§ãªããéçºè
ãç°¡åã«éçºã§ãããããªéçºç°å¢ããã¬ã¼ã ã¯ã¼ã¯ãæ§ç¯ãã¦æä¾ããããã«ãã¹ãã§ã¯ãªãã§ãããããå°ãªãã¨ããç°¡åãªãµã³ãã«ã ãã§ã¯ãªããåç
§å®è£
ã¨ãã¦ã®ãµã³ãã«ãµã¤ãã®ãããªãã®ãCPéçºå´ã«æä¾ããå¿
è¦ãããã¨æãã¾ããä¸æ¹ããããã³ã«ã®è©³ç´°ãªã©ã¯ãRESTãSOAPã¨ãã£ãæ¨æºçãªæ¹æ³ã«å¾ã£ãä¸ä½ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãæä¾ããã©ã¤ãã©ãªã¼ã«ãã£ã¦ãã¾ãé ãºãããããã«ããã°ãããåCPã«å¯¾ãã¦å¤§éã®ææ¸ã§ãããã³ã«ã®è©³ç´°ã説æãããã¨ãéè¦ã§ã¯ãªãã¨èãã¾ããï¼ããããAPIã®ã½ã¼ã¹ãæä¾ãããæ¹ããããï¼å®éããã®ããã°ã«å¼µãä»ãã¦ããåºåãªã©ã®å¤ãã®ã¦ã£ã¸ã§ããã¯ä½ãèããªãã¦ãå¤æ°ã®ãµã¼ãã¹ãç°¡åã«å©ç¨ã§ãã¦ãã¾ãã
ãã®ããã«ããä¸æµè¨è¨ã®SEãã³ã¼ãã£ã³ã°ã®PGã¨ãã£ãå½¹å²ãåããã¨ãã£ãèãæ¹ã§ã¯ãªããä¸ç´ã®ããã°ã©ãã¼ãä¼ç»æ®µéããè¨è¨ã«ãããããã¨ã大åã ã¨æãã¾ãã
ï¼è¿½è¨ï¼
ä¸è¬çã«ã·ã¹ãã é害ã®åå ãã¦ã©ã¼ã¿ã¼ãã©ã¼ã«åã®éçºææ³ã®ã¿ã«ããã¨èããã®ã¯ããã¡ããé©åã§ã¯ãªãã¨æãã¾ãããã ããããã§åãä¸ããspã¢ã¼ãã®ããã«ãä»ã¾ã§ã«ãªãã£ãæ°ããä»çµã¿ãã¦ã©ã¼ã¿ã¼ãã©ã¼ã«åã§æ§ç¯ããã®ã¯ããããã¨å°é£ãä¼´ããã¨ãå¤ãã¨ãããã¨ã¯è¨ããã®ã§ã¯ãªãã§ãããããå¾ããè¦ã¤ãã£ãä»æ§ä¸ã®æ¬ é¥ãè£ãããã«ãå¾ãããããããªåé¿çãèããã«ãããã£ã¦ãããè¤éãªã·ã¹ãã ã«ãªã£ã¦ãã¾ãã¨ãããã¨ã¯å®éã«ããããã®ã§ã¯ã¨æãã¾ããããªãã¡ãä¸æµå·¥ç¨ã¨å¼ã°ããããã°ã©ã ã®å®è£
ãã·ã¹ãã åºç¤ã®æ§ç¯ä½æ¥ããå¾ãããåé¡ç¹ã®ææãã¢ã¤ãã¢ãä»æ§ã«ãã£ã¼ãããã¯ãããã¨ãé£ãããªã£ã¦ãã¾ãã¾ãã*1
ããã§spã¢ã¼ããåãä¸ããã®ã¯ãã¾ãã¾ã¿ã¤ãã³ã°ã®åé¡ã§ããã¡ãããã³ã¢ä¸ç¤¾ã®ããæ¹ãéé£ãããã¨ãããã§ã®ç®çã§ã¯ããã¾ãããæ°ãããµã¼ãã¹ãã¿ã¤ã ãªã¼ã«æä¾ããä¸ã§ãå¾æ¥ã®ã¦ã©ã¼ã¿ã¼ãã©ã¼ã«çãªèãæ¹ã大失æã®å¤§ããªè¦å ã®ä¸ã¤ã«ãªã£ã¦ããã®ã§ã¯ãªããã¨ãããã¨ã§ãã
Javaã®ã¯ã©ã¹ã¨ãªãã¸ã§ã¯ãã«ã¤ãã¦å度解説ã試ã¿ã
ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã®èãæ¹ã«ã¤ãã¦ã¯ãä»ã¾ã§ãã®ããã°ã§ãä½åº¦ãåãä¸ãã¦ãã¾ããã
[オブジェクト指向] - 達人プログラマーを目指して
ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã¯ããã°ã©ãã³ã°ææ³ã®ãã¹ã¦ã§ã¯ãªãã¨ã¯ãããJavaã®ãããªãªãã¸ã§ã¯ãæåè¨èªã§æ¬æ ¼çãªããã°ã©ã ãä½ãã«ã¯ç解ãé¿ãã¦éããã¨ãã§ãã¾ããããã¾ããé¢æ°åè¨èªãªã©ä»ã®ãã©ãã¤ã ã®è¨èªãå©ç¨ããã«ãã¦ãããªãã¸ã§ã¯ãæåã®èãæ¹ãã¾ã£ããç解ããªãã¾ã¾ä½¿ãããªãã¨ãããã¨ã¯å°é£ã§ãããããªãã¸ã§ã¯ãæåã®èãæ¹ã¯ãã¼ã¿æ§é ãã¢ã«ã´ãªãºã ã¨ãã£ããã¨ã¨åæ§ã«ããããã§ãã·ã§ãã«ãªããã°ã©ãã¼ãç解ãã¦ããã¹ãåºæ¬çãªç´ é¤ã¨ãã£ã¦ãããã¨æãã¾ããå®éãæµ·å¤ã§ã¯åéè¦é
ã§ãªãã¸ã§ã¯ãæåã®ç解ãåæã¨ããã¨æ¸ããã¦ãããã¨ãæ®éã§ãããããã°ã©ãã¼ã®é¢æ¥è©¦é¨ã§ãã¢ã«ã´ãªãºã ã¨ä¸¦ãã§ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã®åºæ¬ã«ã¤ãã¦ã®æ£ããç解ãåãã±ã¼ã¹ãå¤ãããã§ãã
ããããªãããç¹æ®ãªã±ã¼ã¹ãé¤ãã¦ãæãå½ã§ã¯ãã¾ã ã«ãªããªãæ®åãã¦ããªãããã§ãããæ°é±éã®æ°äººç ä¿®ãOJTã®ã¿ã§çæéã«ç解ã§ããã»ã©ç°¡åã§ã¯ãªãã¨ããã®ã¯äºå®ããããã¾ããããããããSIã®éçºæ¡ä»¶ã§ã¯JavaãVisualBasicã¨ãã£ããªãã¸ã§ã¯ãæåè¨èªãç¨ããªããããå®éã«ã¯ãªãã¸ã§ã¯ãæåãå©ç¨ããªãã§éçºã§ãããããªè¦ç´ãä½ãã¨ãã£ããã¨ãããªãä¸è¬çã«è¡ããã¦ããããã§ãã
ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã®æ®åã妨ããåå ã®ä¸ã¤ã¨ãã¦ãããããããå
¥éåãã®è§£èª¬ãä½ããã¨ãé£ãããã¾ããå®éã«ãã®ãããªè§£èª¬ãæ¸ããã¦ããå
¥éæ¸ãé常ã«å°ãªãã¨ãããã¨ãããã¨æãã¾ããå®éã«ãJavaã®å
¥éæ¸ã®å ´åããã£ã¨mainã¡ã½ããã®ã¿ã§ifãforãªã©ã®æ§æã説æããå¾ããããªãVehicleï¼ä¹ãç©ï¼ã¯ã©ã¹ãCarã¯ã©ã¹ãªã©ã®èª¬æã«é£èºããã¨ãã£ãã±ã¼ã¹ãå¤ããåãã¦ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ãå¦ã¶äººã«ã¨ã£ã¦ã¯é常ã«ç解ãã«ããã¨ãããããã¨æãã¾ãã*1
ããã«ãä¸è¨ã§ãªãã¸ã§ã¯ãæåãï¼ãããã¯ãã£ã¨ç¯å²ãçãã¦ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ï¼ã¨è¨ã£ã¦ããããã°ã©ãã³ã°è¨èªã«ãã£ã¦ãããããªèãæ¹ãã¢ããã¼ããããããã¾ãã¾ãªäººã
ããããããªè§£èª¬ã試ã¿ã¦ããã®ã§ãå¦ç¿ããå´ã®ç«å ´ã¨ãã¦ã¯ã©ã®èãæ¹ãæ£ããã®ãæ··ä¹±ã«æè»ããããã¨ããã¨ãããããããããã¾ããã
ç§èªèº«ã¯ããªãã¸ã§ã¯ãæåã¨ã¯ã©ãèããã¹ãããã¨ããå²å¦çãªç 究ããã¦ããããã§ã¯ãªããåã«ä»äºãããããã§ä¾¿å©ãªèãæ¹ã®æ çµã¿ã®ä¸ã¤ã¨ãã¦èãã¦ãã¾ããè¦ããã«ã
- å ±éã®ãã¸ãã¯ãæµç¨ããããããï¼åå©ç¨ï¼
- 大è¦æ¨¡ãªããã°ã©ã ãåå²ãã¦æ±ãæãããï¼ã¢ã¸ã¥ã¼ã«åï¼
- å¤åãæ¡å¼µã«å¼·ãããã°ã©ã ã«ããï¼æ¡å¼µæ§ï¼
- è¨è¨ã®ã¢ã¤ãã¢ãå ±æããï¼ãã¿ã¼ã³ï¼
- ãã¸ãã¹ã«ã¼ã«ãããã°ã©ã ã¨ãã¦ããããããå½¢ã§è¡¨ç¾ããï¼ã¢ãã«åï¼
ã¨ãã£ãç®çãéæããããã®æ段ä¸ã¤ã¨ãã¦ãæ¬ ãããªããã®ã¨ãã¦èãã¦ãã¾ãã
ããã§ã¯ãJavaè¨èªã®ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã®åºç¤ã¨ãªãã¯ã©ã¹ã¨ãªãã¸ã§ã¯ãã«ã¤ãã¦ãå度ãèªåãªãã®è§£èª¬ã試ã¿ã¦ã¿ããã¨ã«ãããã¨æãã¾ãã
staticããããã®ä¸çã«ãããã¯ã©ã¹ã®å½¹å²
ä¸æåã®Javaã®è§£èª¬ã§ã¯ããJavaã¯ç´ç²ãªãªãã¸ã§ã¯ãæåè¨èªã§ãããã¨ãã説æã®ããæ¹ãããããã¨ãå¤ãããã¾ããããåãã®ããã«ãJavaã§ã¯ã©ããªã«ç°¡åãªããã°ã©ã ã§ãã¯ã©ã¹ãä½æãããã¨ãå¿ é ã§ããå®éãHelloWorldã¯ä»¥ä¸ã®ããã«ã¯ã©ã¹å ã«å®ç¾©ããå¿ è¦ãããã¾ãã
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); } }
æåãããã¯ã©ã¹ã¨ãããªãã¸ã§ã¯ãæåã®æ¦å¿µã使ãå¿
è¦ããããããç´ç²ãªãªãã¸ã§ã¯ãæåè¨èªãªã®ã§ããã¨ãããã¨ã§ããããã¯ããç´ç²ãªãªãã¸ã§ã¯ãæåãã¨ããè¨èã®å®ç¾©ã«ãããã¾ãããä¸è¬ã«ã¯ã¡ãã£ã¨ä¸é©åã§åéãããããç¨æ³ã ã¨æãã¾ãã確ãã«ããã®ããã°ã©ã ã«ç»å ´ããæååãé
åã¯ãªãã¸ã§ã¯ãã§ãããã¦ã¼ã¶ã¼å®ç¾©ã®ãªãã¸ã§ã¯ãã¯å©ç¨ãã¦ãã¾ããããã ããHelloWorldã¨ããã¦ã¼ã¶ã¼å®ç¾©ã®ã¯ã©ã¹ã¯ä½¿ã£ã¦ããã®ã§ãã¯ã©ã¹æåã¨ãã£ãæ¹ãããããããã¾ããã
ãã¦ããã®HelloWorldããã°ã©ã ã¨åæ§ã®å½¢å¼ãæ¡å¼µãã¦ããã¹ã¦ã®ã¯ã©ã¹ã®ã¡ã³ãã¼ï¼ãã£ã¼ã«ããã¡ã½ããï¼ã«staticãã¼ã¯ã¼ããã¤ãããã¨ã§ãå®å
¨ã«staticãªä¸çã§*2ããã°ã©ã ãä½æãããã¨ãã§ãã¾ããstaticãã£ã¼ã«ããstaticã¡ã½ããã¯ãSmalltalkãªã©ã®ç´ç²ãªãªãã¸ã§ã¯ãæåè¨èªã®ç¨èªãã¾ãã¦ã¯ã©ã¹å¤æ°ãã¯ã©ã¹ã¡ã½ãããªã©ã¨å¼ã°ãããã¨ãããã¾ãããæ¬æ¥staticã¨ããã®ã¯éçãããªãã¡ãåçï¼dynamicï¼ã¨å対ã®æå³ãæã¤ç¨èªã§ããJavaè¨èªã«ããã¦ãstaticãã¼ã¯ã¼ãã®æã¤æå³ã¯ãã¾ãç解ããã¦ããªãããã§ãããstaticãã£ã¼ã«ãã«ã¤ãã¦ã¯ãä¸æ¦ã¯ã©ã¹ãã¼ãã¼ã«ãã£ã¦ã¯ã©ã¹å®ç¾©ãJVMã«èªã¿è¾¼ã¾ããããã¯ã©ã¹ãã¨ã«åºå®çã«å¤æ°é åãå²ãå½ã¦ããã¦ãã£ã¨åå¨ãã¦ããã¨ãããã¨ã示ãã¦ãã¾ããã¾ããstaticã¡ã½ããã¯ãã®ãããªãã£ã¼ã«ããæä½ããããã®ã¡ã½ããã¨ãã¦ããã¯ãã¯ã©ã¹ãã¨ã«å®ç¾©ãèªã¿è¾¼ã¾ãã¾ãã*3
ãã®ç¹ãç解ããããã«ã¯ã以ä¸ã®ããç°¡åãªä¾ãèãã¦ã¿ã¦ãã ããã
public class ClassA { public static int field; public static void method() { System.out.pirntln("ClassAã®ã¡ã½ãã"); }; } public class ClassB { public static int field; public static void method() { System.out.pirntln("ClassBã®ã¡ã½ãã"); }; } public void MainClass { public static void main(String[] args) { ClassA.field = 100; ClassB.field = 200; System.out.println(ClassA.field); // 100 System.out.println(ClassB.field); // 200 ClassA.method(); // ClassAã®ã¡ã½ãã ClassB.method(); // ClassBã®ã¡ã½ãã } }
ClassAãClassBã®ããããã«ç¬ç«ããå¤æ°ã®å®ç¾©ãã¡ã½ããã®å®ç¾©ãåå¨ããã¯ã©ã¹ãèªã¿è¾¼ã¾ããã¨ã¨ãã«éçã«ã¡ã¢ãªã¼ã«èªã¿è¾¼ã¾ãã¾ãããã®ãã¨ã¯ããã£ã¼ã«ãåãã¡ã½ããåã以ä¸ã®ä¾ã®ããã«åãã§ãã£ã¦ãå½±é¿ãåãã¾ãããç¹ã«ããã®ä¾ã§ãintåã®staticãã£ã¼ã«ãã«å¯¾å¿ããã¡ã¢ãªã¼é åã¯ãã¯ã©ã¹ããã¼ããããã¨å
±ã«ã¯ã©ã¹ãã¨ã«ç¨æããããã¨ã«æ³¨æãã¦ãã ããã
ãã®ããã«ãstaticãªä¸çã«ãããã¯ã©ã¹ã®å½¹å²ã¨ã¯ãåã«ãããããããã£ã¼ã«ããã¡ã½ããã種é¡ãã¨ã«åé¡ãã¦ãé©åãªé¨åã®åä½ã«åå²ããã¨ããã¢ã¸ã¥ã¼ã«åã®å½¹å²ãããã«éãã¾ãããã¤ã¾ããã¯ã©ã¹ã¯åã«staticãã£ã¼ã«ããstaticã¡ã½ããã®å
¥ãç©ã¨ãã¦æ©è½ãã¦ãã¾ããã¾ããJavaã®å ´åãåºæ¬çã«ã¯ä¸ã¤ã®ã¯ã©ã¹ãä¸ã¤ã®ã½ã¼ã¹ãã¡ã¤ã«ã«è¨è¿°ãã¾ããããã¯ã©ã¹ã¨ããã®ã¯ç©ççãªã½ã¼ã¹ã³ã¼ãã®åå²åä½ã¨ãã¦ã®å½¹å²ãããã¾ããè±èªã®classifyã«åé¡åãããã¨ããæå³ãããããã«ãã¯ã©ã¹ã«ã¯åé¡ããããã®ã¨ããæå³ãããã¾ãããã大è¦æ¨¡ãªããã°ã©ã ã§å¿
è¦ãªå¤æ°ãã¡ã½ããã®å®ç¾©ãé©åãªåä½ã«åå²ãã¦æ±ãã¨ããã®ã¯ããªãã¸ã§ã¯ãæå以åã«ã¯ã©ã¹ã®æã¤éè¦ãªå½¹å²ã§ãããã¨ããããã¾ãã
æ½è±¡ãã¼ã¿åã®æ±ãããã¨ã®ä¾¿å©ããç解ãããã¨ãstaticãªä¸çãåæ¥ããæåã®ä¸æ©*4
ãã®ããã«ãstaticããããã®ä¸çã§ãé©åã«ã¯ã©ã¹ãå®ç¾©ãã¦ããã£ã¼ã«ããã¡ã½ããããããã¹ãã¯ã©ã¹ã«å®ç¾©ãããã¨ã§ã大è¦æ¨¡ãªããã°ã©ã ãé©åãªåä½ã«åå²ãã¦ç®¡çãããã¨ãã§ããããã«ãªãã¾ããããããªããããã®å ´åã®åé¡ã¯ãããã°ã©ã ãæ±ããå¤æ°ããã©ã¡ã¼ã¿ã¼ã®åãåºæ¬åãæåååãã¾ããã®é
åã¨ãã£ãé常ã«éå®ãããåããæ±ããªãã¨ãããã¨ã§ããFORTRANãCOBOLãªã©ã®æã®è¨èªãããããªãstaticãããã*5ã®åé¡ç¹ã¯ããã°ã©ã è¨èªãæ±ããã®ã¯ãã®ãããªéå®ãããåã®ãã¼ã¿ã®ã¿ã§ããã¨æ±ºãã¤ãã¦ãã¾ã£ã¦ããã¨ããã«ããã¨æãã¾ãã
ã¨ããããå®éã®è¤éãªããã°ã©ã ã§ã¯ã
- 注æããã¼ã¿ãã¼ã¹ã«ç»é²ãã
- å ¥åãã©ã¼ã ãéã
- ã«ã¿ãã°ä¸è¦§ãæ¤ç´¢ãã
ã¨ãã£ãããã«ãããã°ã©ã ã§å¦çãããåä½ã¯intãfloatãªã©ã¨ãã£ãåºæ¬çãªåã®ãã¼ã¿ãªã®ã§ã¯ãªããã注æããå
¥åãã©ã¼ã ããã«ã¿ãã°é
ç®ãã¨ãã£ã人éã«ã¨ã£ã¦ãã£ã¨èªç¶ãªåä½ã§ãã¼ã¿ãæ±ãããã¨ãããã¨ãããã¾ããJVMã®ä»çµã¿ãèãã¦ã¿ãã°ãããããã«ãæ¬å½ã¯ã³ã³ãã¥ã¼ã¿ã¼ãæ±ãããããã¼ã¿ã¨ããã®ã¯æéã®ãããã®éã¾ãã¨ãã¦è¡¨ç¾ã§ããæ°å¤ãæåã¨ãã£ããã¼ã¿ãªã®ã§ããããããã詳細ã®ãã¨ã¯ç¡è¦ãã¦ããã¼ã¿ãããæ½è±¡åãã¦æ±ããããã«ãªãã°ãããã°ã©ã ãå®éã®ã¦ã¼ã¹ã±ã¼ã¹ï¼ä»æ§ï¼ã«è¿ãå½¢ã§è¨è¿°ã§ããããããããããè¨è¿°ã§ããããã«ãªãã¾ããå®éã«Javaã®å ´åã¯ãintãfloatã¨ãã£ãåºæ¬åã®å¤ã ãã§ãªããæååãæ¥ä»ã注ææ¸ã¨ãã£ããã¾ãã¾ãªãªãã¸ã§ã¯ããå©ç¨ãããã¨ã§ç®çã«å¿ãã¦ãããããã¼ã¿ãå¤æ°ããåç
§ããããã¡ã½ããã®ãã©ã¡ã¼ã¿ãæ»ãå¤ã¨ãã¦ããåãã§ããããã«ãªãã¾ãã
ãã¡ããããªãã¸ã§ã¯ããçã«ä½¿ãããªããããã«ãªãã«ã¯ãã«ãã»ã«åãããªã¢ã¼ãã£ãºã ã¨ãã£ããã¾ãã¾ãªäºæãç解ããå¿
è¦ãããã®ã§ããããããªããã®ãããªæ¦å¿µãç解ãããã¨ãããã¾ãã¯ãã®ãããªãã¾ãã¾ãªãã¼ã¿ãæ±ãããã¨ã®ä¾¿å©ããç解ãããã¨ããstaticãªä¸çãåæ¥ããæåã®ä¸æ©ã¨ãã¦éè¦ãªã®ã§ã¯ãªãã§ããããã
ä¸è¬ã®Javaã®ãªãã¸ã§ã¯ããç解ããåã«ãã¾ãé åãªãã¸ã§ã¯ãã®æ§è³ªãç解ããã¨ãã
ã¨ããã§ãä¸è¬ã®ãªãã¸ã§ã¯ãã¯ã¯ã©ã¹ã使ã£ã¦èªåã§å®ç¾©ããnewã使ã£ã¦ã¡ã¢ãªã¼ã«å²ãå½ã¦ã¦ä½¿ãããã§ãããæåã«åå¼·ããéã«ããªãã¸ã§ã¯ãã®æ§è³ªã¨åæã«ã¯ã©ã¹ã®å®ç¾©æ¹æ³ãå¦ç¿ããã®ã¯ãä¸æ°ã«ãããããªæ¦å¿µãè¦ããªãã¦ã¯ãªãããªããªãé£ããããããã¾ãããããã§ãå§ããªã®ã¯ãæåã«é åã®æ§è³ªããã¡ãã¨ç解ããã¨ããå¦ç¿æé ã§ããé åã¯ã¯ã©ã¹ã§å®ç¾©ããå¿ è¦ããªãããç¹æ®ã§ãããJavaã®é åã¯
- newæ¼ç®åã使ã£ã¦ãªãã¸ã§ã¯ããJVMã®ãã¼ãã¨å¼ã°ããã¡ã¢ãªã¼é åã«åçã«çæãããã
- é ååå¤æ°ã¯åç §åã®å¤æ°ã§ããã
- å¤æ°ã®å¤ãã¾ã¨ãã¦æ±ãæ½è±¡ãã¼ã¿åã®ä¸ç¨®ã§ããã
ã¨ããæ§è³ªãèããã¨ãä¸è¬ã®ãªãã¸ã§ã¯ãã¨å
±éã®æ§è³ªãåãã¦ãããã¨ããããã¾ãã
ä¸è¬çãªå
¥éæ¸ã®èª¬æã§ã¯ãé
åã¯è¤æ°ã®å¤ãèªã¿æ¸ãããç®±ã並ãã çµµã説æã«ä½¿ããããã¨ãå¤ãããã¾ããä¸åã®å¤æ°ãå¤ãæ ¼ç´ããç®±ãªã®ã§ããããé£ç¶ãã¦æ¨ªã«ä¸¦ãã ãã®ãé
åã¨ããããã§ããããã¯ãæã®BASICãCãCOBOLãªã©å¤ãã®è¨èªã®é
åã®èª¬æã«ã¯æé©ã§ããããã®èª¬æèªèº«ã¯ééã£ã¦ããªãã®ã§ãããããã ãã§ã¯Javaã®é
åãæã¤ä»¥ä¸ã®éè¦ãªæ§è³ªãè¦éãã¦ãã¾ããã¨ã«ãªãã¾ãã
int[] x = new int[3]; int[] y = x; x[0] = 1; x[1] = 2; x[2] = 3; System.out.println(y[0]); // 1 System.out.println(y[1]); // 2 System.out.println(y[2]); // 3
以ä¸ã®ã³ã¼ãã¯ç解ãã¦ãã人ã«ã¨ã£ã¦ã¯å½ç¶ã®ãã¨ã§ãããé åãªãã¸ã§ã¯ãã¯ä¸åããçæããã¦ããããxã¨yã¨ããäºã¤ã®å¥ã ã®å¤æ°ã«ãã£ã¦åä¸ãªãã¸ã§ã¯ããåç §ãããç¶æ ã¨ãªã£ã¦ãããããå¤æ°xã®è¦ç´ ãå¤æ´ããã¨ãé£åãã¦yã®åç §ããå¤ãå¤ãã£ã¦è¦ããã¨ãããã¨ã§ããããã¯ãç¬ç«ããå¤ã®ç®±ã¨ãã¦æ±ãããæ®éã®intåå¤æ°ã®æ¯ãèãã¨å¤§ããéã£ã¦ãã¾ãã
int x = 1; int y = x; x = 2; System.out.println(y); // 1ã®ã¾ã¾
ãã¡ãããåç
§åã®å¤æ°ã¯ãªãã¸ã§ã¯ããåç
§ããããã®ãã®ãªã®ã§ãnullã¨ããç¹å¥ãªå¤ã代å
¥ããããã¨ã§ä½ããªãã¸ã§ã¯ããæãã¦ããªãç¶æ
ã«ããªãã¾ãããã®ç¶æ
ã®å¤æ°ã«ã¢ã¯ã»ã¹ããã¨ãæåãªNullPointerExceptionãçºçãããã¨ã«ãªãã¾ãã
ãªããCè¨èªãã£ããã«ãããããJavaã®é
åã宣è¨ããéã«ã¯ä¸æ¬å¼§ã®åæååã使ã£ã¦å®£è¨ãããã¨ãå¯è½ã§ãã
int[] x = {1, 2, 3};
ãããã¯ãJavaã§ã¯æ¨å¥¨ããã¾ãããã以ä¸ã®ããã«æ¸ããã¨ãã§ãã¦ãããã ã¨æ¬å½ã«Cè¨èªã®ããã«è¦ãã¾ãã
int x[] = {1, 2, 3};
ãã ããä¼¼ã¦ããããã«ã¿ããã®ã¯è¦ããã ãã§ãCè¨èªã®é
åã¨ã¯ã¡ã¢ãªã¼ã®å²ãå½ã¦æ¹ãå
¨ãç°ãªããã¨ã«æ°ãä»ãã¦ãã ããããã®ããã«ãåæååã使ã£ãå ´åã§ããå®éã«ã¯newã使ã£ã¦åçã«çæããå ´åã¨åæ§ã«é
åãªãã¸ã§ã¯ãã¯å¸¸ã«å®è¡æã«åçã«çæããã¦ã¡ã¢ãªã¼ã«ç¢ºä¿ããã¾ãã*6
ç¬èªã®ã¡ã½ãããå®ç¾©ã§ããªããªã©å¶ç´ãããã¾ãããé
åã¯å®éã«ãªãã¸ã§ã¯ãã®ä¸ç¨®ã§ããã¾ãã¯ããã®é
åã®æå³ãé
åå¤æ°ã®ä½¿ãæ¹ã«ç¿çãããã¨ã§ãåçã«ãªãã¸ã§ã¯ããçæãã¦ä½¿ãã¨ããstaticã§ãªãããã°ã©ãã³ã°ã®ä¸çã¸ã®ç¬¬ä¸æ©ãè¸ã¿åºããã¨ãã§ãã¾ãã
ã¦ã¼ã¶ã¼å®ç¾©ã®ãªãã¸ã§ã¯ããå®ç¾©ãã¦çæããæ段ã¨ãã¦ã®ã¯ã©ã¹
以ä¸ã§èª¬æãããåçãªé åãªãã¸ã§ã¯ãã®çæã¨é ååå¤æ°ã«ãããªãã¸ã§ã¯ãã®åç §ã¨ãããã¨ãç解ã§ããããä¸è¬ã®ãªãã¸ã§ã¯ããç解ãããã¨ãé£ããããã¾ãããé åã¨ã®éãã¯ã以ä¸ã®ç¹ã§ãã
- ã¯ã©ã¹å é¨ã«ã¡ã³ãã¼ï¼ãã£ã¼ã«ããã¡ã½ããï¼ãèªç±ã«å®ç¾©ã§ããã
- ãªãã¸ã§ã¯ããçæãããã¨ã«ãªã£ãã¯ã©ã¹ããã®ãªãã¸ã§ã¯ããåç §ããããã®å¤æ°ã®åã¨ãªãã
é åã®å ´åã¯ãåä¸ã®åã®å¤ã®éåãã表ç¾ã§ãã¾ããããã¯ã©ã¹ã使ãã°ãä»»æã®å¤ã®çµã¿åãããããªãæ§é ã®ãªãã¸ã§ã¯ããçæã§ããããã«ãªãã¾ãã
public class Person { public int age; public String name; } Person personX = new Person(); Person personY = personX; // äºã¤ã®å¤æ°ãåããªãã¸ã§ã¯ããåç §ããããã«ãªã personX.age = 20; personX.name = "test"; System.out.println(personY.age); // 20 System.out.println(personY.name); // test
ãã£ã¼ã«ããèªç±ã«å®ç¾©ã§ãããã¨ã¨ãè¦ç´ ã«ã¢ã¯ã»ã¹ããéã®æ¼ç®åãããªãªãã§ããç¹ãé¤ãã°ãé åãªãã¸ã§ã¯ãã¨ã¾ã£ããåæ§ã®æ§è³ªãæã£ã¦ãããã¨ããããã¾ããè¦ããã«ãJavaè¨èªã«ããã¦ãªãã¸ã§ã¯ãã¨ã¯ããã¼ãã«å²ãå½ã¦ãããã¡ã¢ãªé åã§ããªãã¸ã§ã¯ãçæå ã®ã¯ã©ã¹ãåã¨ãã¦æã¤å¤æ°ã«ãã£ã¦åç §ããããã®ã¨ãããã¨ã«ãªãã¾ããã¾ãã¯ããã¼ã¿ã®å¡ããã¼ãã«çæããã¦ãå¤æ°ã使ã£ã¦ãããåç §ãã¦ä½¿ãã¨ãããã¨ãã¤ã¡ã¼ã¸ã§ããããã«ãªããã¨ãä½ããã大åã§ããã¤ã¾ããJavaã®ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ãç解ããåæã¨ãã¦ã¯ã
- å¤æ°ã®å®£è¨ã¨ã¯ç¬ç«ãã¦å®è¡æã«ãªãã¸ã§ã¯ããçæããã
- newããããã³ã«æ°ãããªãã¸ã§ã¯ããçæãããã®ã§ãåãåã§ãè¤æ°ã®ãªãã¸ã§ã¯ããåå¨ãã
- å¤æ°ã¯çæãããªãã¸ã§ã¯ããåç §ãã
- å¤æ°ãä½ãåç §ããªãå ´åã¯nullã¨ããå¤ãæã¤
- å¤æ°ã®æ°ã¨ãã¼ãã¡ã¢ãªã¼ä¸ã®ãªãã¸ã§ã¯ãã®æ°ã¯ä¸è¬ã«ä¸è´ããªã
- ä»£å ¥ã«ãã£ã¦ãªãã¸ã§ã¯ãã®ã³ãã¼ã¯ä½æããããè¤æ°ã®å¤æ°ãåä¸ã®ãªãã¸ã§ã¯ããåç §ããããã«ãªãã
ã¨ããæ§è³ªããã£ããã¨ç解ãããã¨ãéè¦ã ã¨æãã¾ããã¯ã©ã¹ããã¼ããããã¿ã¤ãã³ã°ã§æåããç¨æãããstaticãªã¡ã¢ãªé åã¨ã¯ç°ãªããnewããããã³ã«æ°ãããªãã¸ã§ã¯ããåçã«ãã¼ãã«å²ãå½ã¦ããã¦ããã¾ãã
ã¨ããã§ãã©ããã¦Javaã®ãªãã¸ã§ã¯ãã«ã¯ããã®ãããªæ§è³ªãããã®ã§ãããããããããé
åã®æ§è³ªãèãã¦ã¿ãã°ç´å¾ãã§ããã¨æãã¾ããé
åã¯ä¸è¬ã«ã¯ããããã®è¦ç´ ãå«ãã®ã§ããããããéçã«å¤æ°ã®é åã確ä¿ããããã¡ã½ãããå¼ã³åºãããã¤ã©ã¡ã¢ãªã¼ãæ¯åã¹ã¿ãã¯ã«å²ãå½ã¦ãã®ã¯ãã¾ãå¹ççã¨ã¯è¨ãã¾ãããå®è¡æã«å¿
è¦ãªãµã¤ãºã§åçã«ã¡ã¢ãªã¼ãå²ãå½ã¦ã¦ãå¿
è¦ããªããªãã¾ã§ï¼ã¬ã¼ããã¸ã³ã¬ã¯ã·ã§ã³ãããï¼ãã¼ãã«ç¢ºä¿ãã¦ä½¿ãã¨ããã®ã¯ãä¸è¬çãªããã°ã©ã ã§ã¯å¹ççã¨èãããã¾ããããã«ãå¤æ°ã¸ã®ä»£å
¥æããã©ã¡ã¼ã¿ã¼ã®åã渡ãæã«ãã¹ã¦ã®å¤ã®ã³ãã¼ãè¡ãããããåã«æ¢ã«ã¡ã¢ãªã¼ä¸ã«ãããªãã¸ã§ã¯ããå¤æ°ãåç
§ããããã«ããæ¹ããããã°ã©ã ã®å®è¡æ§è½ãããæå©ã§ããä»ã®è¨èªã§ã¯ããã¾ãã¾ãªæ¹æ³ã§ãªãã¸ã§ã¯ããå²ãå½ã¦ããã¨ãã§ãããã®ãããã¾ãããJavaã®å ´åã¯å¸¸ã«åçã«ãã¼ãã«å²ãå½ã¦ã¦ãå¤æ°ããåç
§ããã¨ããã¨ãã決ã¾ãã«ãªã£ã¦ãã¾ãã常ã«ãæé©ã¨ããããã§ã¯ãªãããããã¾ããããJVMã®ã¬ã¼ããã¸ã³ã¬ã¯ã·ã§ã³ã®ä»çµã¿ã¨åããã¦ããã®å²ãåã£ãä»æ§ã«ãããJavaã§ã¯å¹ççã«ãªãã¸ã§ã¯ããæ±ããããã«ãªã£ã¦ããã¨èãããã¨ãã§ãã¾ãã
ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã¯ããªãã¸ã§ã¯ããå®ç¾©ããã¯ã©ã¹ã¨ã¢ã¸ã¥ã¼ã«ã¨ãã¦ã®ã¯ã©ã¹ãåä¸è¦ãããã¨ããå§ã¾ã
åç¯ã§èª¬æããã¯ã©ã¹ã¯ãä»ã®è¨èªã§ã¯æ§é ä½ãã¬ã³ã¼ãããããã¯ã¦ã¼ã¶å®ç¾©åã¨å¼ã°ãããã®ã«éãããè¤æ°ã®å¤ããæ§æããããã¼ã¿æ§é ãå®ç¾©ãã¦ãã¾ããã
ããããããã§æ¬å½ã«ç解ãã¹ãéè¦ãªãã¨ã¯ãJavaã§ã¯ãªãã¸ã§ã¯ãã®æ§é ãå®ç¾©ãã¦ãããããçæããããªãã¸ã§ã¯ããåç
§ããå¤æ°ã®åã¨ãªãããã®ã¯ã©ã¹ã¨ããstaticããããã®ä¸çã«ãããã¯ã©ã¹ã®å½¹å²ãã®ç¯ã§èª¬æããã大ããªããã°ã©ã ãåå²ããã¢ã¸ã¥ã¼ã«ã¨ãã¦ã®å½¹å²ãæã¤ã¯ã©ã¹ãåä¸è¦ãã¦ããã¨ãããã¨ã«ããã¾ãã
ã¾ããJavaã«ããã¦ããã®äºå®ãå½ããåã¨æããããã«ãªãã°ãç¸å½ãªãã¸ã§ã¯ãæåã§èããããããã«ãªã£ã¦ããã¨è¨ãã¾ããããã¯ãJavaã§é©åãªåä½ã§ã¯ã©ã¹ãè¨è¨ãããªãã¸ã§ã¯ãæåã§ããã°ã©ãã³ã°ã§ããããã«ãªãããã®å¤§åæã§ããããªãè³ã®åºæ¬åè·¯ãè³ã«å½¢æãããã¨ãã£ã¦ããã§ãããã
ãã®åä¸è¦ã«ãããã«ãã»ã«åã¨ããèãæ¹ãèªç¶ã«ç解ã§ããã¨æãã¾ããã¤ã¾ããã¢ã¸ã¥ã¼ã«ã¨ãã¦ä½ãä¸ç·ã«å«ããã®ãèªç¶ã§ãããã¨ãããã¨ãèããã°ããªãã¸ã§ã¯ãã«å«ã¾ãããã¼ã¿ã«é¢é£ããå¦çãã¡ã½ããã¨ãã¦ä¸ç·ã«ã¯ã©ã¹ã«å®ç¾©ãããã£ã¼ã«ãèªä½ã¯privateã«ãã¦å¤é¨ããåæã«æä½ãããªãããã«ããèãæ¹ãç´å¾ãããã®ã§ã¯ãªãã§ãããããStringåã®ãªãã¸ã§ã¯ãã«å«ã¾ããæååãå å·¥ããããã®ã¡ã½ããã¯Stringã¯ã©ã¹ã«å®ç¾©ããã¦ããã®ã§ãæååãªãã¸ã§ã¯ãã«å¯¾ãã¦ãã®ã¾ã¾å¼ã³åºããã¨ãã§ãã¾ããä¸è¬çã«ã¯ãã®ããã«é¢é£ãããã¼ã¿ã¨å¦çãåãã¯ã©ã¹å
ã«å®ç¾©ãããã¨ãåºæ¬ã¨ãªãã¾ãã
ã©ãããã°ããªãè³ãéããããã®ã§ãããããããã°ããã¯ãJDKããªã¼ãã³ã½ã¼ã¹ã®ã©ã¤ãã©ãªã¼ããææ¬ã¨ãã¦ãã¾ãèªåãªãã«ä¼¼ããããªè¨è¨ã試ããªããããã°ã©ãã³ã°ã®çµé¨ãç©ããã¨ã«å°½ããã¨æãã¾ãã
ã¾ã¨ã
ããã§ã¯ãä¸è¬ã®å ¥éæ¸ã«ãããããªèª¬æã¨ã¯éã£ãã¢ããã¼ãã§ãJavaã®ã¯ã©ã¹ã¨ãªãã¸ã§ã¯ãã«ã¤ãã¦ç解ããããã®èª¬æã試ã¿ã¦ã¿ã¾ããã
- ãªãã¸ã§ã¯ããèããªãä¸çï¼staticãªä¸çï¼ã§ã¯ã¯ã©ã¹ã¯åã«ã¢ã¸ã¥ã¼ã«åã®æ段
- ãªãã¸ã§ã¯ãã¨ã¯åçã«ã¡ã¢ãªã¼ã«å²ãå½ã¦ããã¦å¤æ°ããåç §ãããå¤ã®éå
- Javaã®é åã¯ãªãã¸ã§ã¯ãã®ä¸ç¨®ãä¸è¬ã®ãªãã¸ã§ã¯ããç解ããåã«ãã¡ã¢ãªã¼ã¸ã®å²ãå½ã¦ãå¤æ°ããã®åç §ãªã©é åã®æ§è³ªãå®å ¨ã«ç解ããã®ãè¿é
- ãªãã¸ã§ã¯ãã¯å¤æ°ããåç §ããããã¡ã½ããã®ãã©ã¡ã¼ã¿ã¼ãæ»ãå¤ã¨ãã¦ç°¡åã«åã渡ããã¨ãã§ãã
- ä¸è¬ã®ãªãã¸ã§ã¯ããå®ç¾©ãã¦ãçæããããã«ã¯ã¯ã©ã¹ãå©ç¨ãã
- ãªãã¸ã§ã¯ããå®ç¾©ãã¦çæããæ段ãã¦ã®ã¯ã©ã¹ã¨ã¢ã¸ã¥ã¼ã«ä½ææ段ã¨ãã¦ã®ã¯ã©ã¹ãåä¸è¦ãããã¨ãJavaã«ãããOOPã®å§ã¾ã
å®éã«ã¯ãæå¾ã®é
ç®ã¯ããªãå
容ã端æã£ã¦ããã®ã§ãã¯ã©ã¹ãæå¹ãªã¢ã¸ã¥ã¼ã«ã¨ãã¦è¨è¨ããããã«ã¯ãã«ãã»ã«åã®ä»ã«ç¶æ¿ãããªã¢ã¼ãã£ãºã ãªã©ãã¾ãã¾ãªãã¨ãç解ããå¿
è¦ãããã¾ãã
いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して
ããã«ãå®éã®åé¡ãä¸æã«åå²ãã¦ã¯ã©ã¹ã«å²ãå½ã¦ãã¨ãããã¨ãã§ããããã«ã¯ããã¯ãããããªãã®çµé¨ãç©ãã§åãé¤ãå¿
è¦ãããã¾ãã*7ããã¦ãã¯ã©ã¹ããªãã¸ã§ã¯ãã¨çµã³ã¤ãã¦èªç¶ãªåä½ã¨ãã¦æ±ãã®ããªãããã®ãã¨ãã£ããã¨ãç´å¾ããã«ã¯æéããããã§ããããããããããã°ã©ãã³ã°è¨èªã¨ãã¦ã®ãªãã¸ã§ã¯ããã¯ã©ã¹ã®æå³ãåå¨æ義ã¯ããã«æ¸ããããã«é常ã«åç´ãªãã®ã«éããªãã¨ãããã¨ãã§ãã¾ãã
ãã¡ããããªãã¸ã§ã¯ãæåãããã°ã©ãã³ã°è¨èªã§å®ç¾ããæ¹æ³ã¯ãã¾ãã¾ã§ãããRubyãªã©ãããç´ç²ãªè¨èªã使ã£ã¦å¦ã¶ã¹ãã§ããã¨ããæè¦ãããããããã¾ããããããã大é¨åã®Javaããã°ã©ãã¼ã«ã¨ã£ã¦ã¯ãã¢ã¸ã¥ã¼ã«ãé
åãæ§é ä½ã¨ãã£ãè¨èªã®ä»çµã¿ã®èªç¶ãªæ¡å¼µã¨ãã¦ãã¯ã©ã¹ããªãã¸ã§ã¯ããç解ããã¨ãããã¹ãããããããã®ã§ã¯ãªããã¨æãã¾ããããããã§ãããããä¹ãç©ãåç©ã使ã£ã説æããéã«å°éçããã¦é£ãã解説ãèªãã§ããç解ã§ããªãã£ãã¨ãã人ã¯ãã¾ãã¯ãããã«æ¸ããããã«ããã°ã©ãã³ã°ä¸ã®å½ããåã®èãæ¹ã¨ã®æ¯è¼ããå¾ã
ã«ç解ããã®ãããã®ã§ã¯ãªããã¨æãã¾ããããã¦ããã®åºæ¬ãç解ã§ãããããææ¬ã¨ãªãã½ã¼ã¹ã¯ãããã§ã転ãã£ã¦ããã®ã§ãããããªãã¸ã§ã¯ãæåã®è¯ãã¯ã©ã¹ã©ã¤ãã©ãªã¼ãèªãã ããæ¡å¼µããããããã¨ã«æ¯éææ¦ãã¦ã¿ã¦ãã ããã
*1:ãã ãããªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ãåç©ãä¹ãç©ã§è§£èª¬ããã®ã¯åæ¸ã ãã§ãªããä¸ççã«ãä¸è¬çãªå¾åã®ããã§ãã
*2:ãã ããå³å¯ã«ã¯æååãé åãªãã¸ã§ã¯ãã¯é¤ã
*3:åéãããããã¨ããã§ãããã¡ã½ããå®ç¾©ã¯staticã§ãããã§ãªãã¦ãéçã«ã¯ã©ã¹ãã¨ã«èªã¿è¾¼ã¾ãã¾ãããã ããstaticã§ãªãã¡ã½ããã¯æé»ã®thisãªãã¸ã§ã¯ããåãåããã¨ã§ãåçãªã¤ã³ã¹ã¿ã³ã¹å¤æ°ã«ã¢ã¯ã»ã¹ã§ããç¹ãéãã¾ãã
*4:æ½è±¡ãã¼ã¿åãåç §ã¯ãªãã¸ã§ã¯ãæåè¨èªã«éããéè¦ã ã¨æãã¾ããã¹ã¯ãªããè¨èªã®Perlã§ãããã¼ã¸ã§ã³5ããåç §ã使ããããã«ãªã£ã¦éåã¨é«åº¦ãªããã°ã©ãã³ã°ãå¯è½ã«ãªã£ã¦ãã¾ããããã®ãããã¯æ¬æ ¼çãªããã°ã©ãã³ã°ã«ã¯æ¬ ãããªããã¼ã«ãªã®ã ã¨æãã¾ãã
*5:æ¬å®¶ã®staticããããã¯C#ãVisualBasic使ããªã®ã§ãé©åã§ãªãã£ãããããã¾ãããããã§ã¯ãªãã¸ã§ã¯ãå«ããªããããã¨ããæå³ã®ä¸è¬ç¨èªã¨ãã¦ä½¿ã£ã¦ãã¾ãã
*6:éè¦ãªéãã¨ãã¦ãCè¨èªã®é åãµã¤ãºã¯ã³ã³ãã¤ã«æã«æ±ºå®ããã¾ãããJavaã®é åã¯å®è¡æã«æ±ºãããã¾ãã
*7:çµé¨ãè£ããã®ã¨ãã¦ããã¶ã¤ã³ãã¿ã¼ã³ãªã©ãããããã§ããã