スパゲッティソースコードは、下手なソースコードは、人を間接的に殺すことが出来る。 例え、ミッションクリティカルな分野でなくとも。 カスタム業務アプリのソースコードだろうと、ソーシャルWebサイトのソースコードだろうと。 テストの無いレガシーコード、つまるところモジュール分割が下手くそなソースコード。500行/1000行を越えるメソッド日常的なプロジェクト。マジックナンバーだらけの基本すら守れていないソースコード。 今ここに、大切な人の命をスパゲッティソースコードで奪われたエンジニアが集結し、屑(Junk)プログラマに反旗を翻す。 #more|| #yaruo||> 2009年某月某日深夜 某ソフトハウス 長門(プロジェクトマネージャ補佐)「?・・・キョン、まだいたの?」    /:::/:::: /::::::::::::l::::::::|:::::::l:::::::::l:::::::::::::::::::::ヽ:::::::::::::::::::::i::::::   /::;イ::::i::::::::::::::| ::::::l|;::::::li;::::::::|、;::::::::::::::::::::l:::::::::::::::::::::l:::::   .l::/ l:::::|::::::::::::/!::::::| li::::::lヽ::::::l. ヽ;:::::::::::::::::l::::::::::::::::::::l::::::   |::l | ::::|::::::::-i-L;;_l .|!i:::::l ヽ::::l  ヽ、__;;;;::::| :::::::::::::::::l::::   |:! .|::::::l::__;;;|_ l:::l`ヽヽ;:::l ヾ;レ‐'''゙゙´\ :::::| ::::::::::::::::l:::::   l!  .|:::/ ___ノ,ィ'ト|''=ミ、 ヾ!  ,r-=fニミ;;弍;;| :::::::::::::::l~゙'i     l/ ,/ト、::l゙__゙ヾ::ii::|ヽ  ,/  .|:::illi:::゙ii/ |:::::::::::::::j¨゙ l    /⌒ヾ、|/`fト l ゙K);j .l'⌒''h.   K);;;;ッリ l:::::::::::::/ .ノ   /‐-、 `iノ /'ヽ|、   ノ    ヾ、     ,/  |:::::::::::/=7゙  ./ 、. ヽ |゙V,_  l:::i、 ̄ 丶    ゙''ー-‐''  ,l::::::::::/|:;/  i  '゙ヽ_j-'   .|::::|.\   ‐-        ,,イ::::::::/ ,l/  ヽ    ヽ   jl:::::l.   ヽ、      , ''゙ /:::::::/゙`ヽ、   ヽ、.     /ヽ::::|    ,,`=ー '''i´    /:;/レ'〉;:;:;:;:,.,\    /    /.  ヽ:| ,,r''゙,.;:;:;r''゙~ノ   /イ  /;:;:;:;:;:;:;:;:;:; キョン(開発チーム主任)「・・・くそ!あの下請けめ、コンパイルが通っただけのを納品してきやがった・・・! なんだこりゃ・・・ろくに定数も定義されずマジックナンバーだらけになってやがる。 HTMLが崩れてる。おかしいな、クロスブラウザ対応というのは伝えてあったはずなのに、 IEならOK、FirefoxだとJavascriptが軒並み動かない。」                    /:::::::::::::::::::::::::::::::::::::::::::::::::::\                  /:::::::::::::::::::/::::::::::::::::::::i::::i:::::::::::::::ヽ               /::::::::::/:::::::::/::::::::,:::::,イ:::::|:::::!:::::i:::ヽ:::::ヽ            /::::::::::/:::::::,.イ:::::::,ィ:::,イ:::::: /!:::::|::::::!:::::!:::::::ヽ            ,'::::::/::::!:::/,イ::/ .!/ .|::::/ |:::::ハ:::::!::::::!::::::::::i             !::::::l::::::レ',! ー-、    !/  !::/ !::ハ:,イ:::::::::::|              !::::_」:::::::::! ..,,_`ヽ、_,.   ,リ  ´ _,..,_ !::::::::ハj           !/f r.|::::::::!  弋エノ`    `'ィニ二_ /:::::::::!                k.ヤ!:::::::!           ゞzソ,. /::::∧::|            |∧`Y::リ           i      //|/  ヾ               !Tヾ  u.     j       //ノ              ヤ. ヽ.    , ‐-、,__    ,.イ:/               r<´|.  \  弋,__,/  / |/              !  `丶、.  \  ー   /            _/     `'-、. `'ー-r<´        , -'" `ヽ、      `ヽ、 f`, \      , -'´    ヽ `ヽ、      >く_Lr'´`ト、    /        ヽ  \  /ヽO〉 |`r、.| `丶、   /           \  \/\r‐=<. !`    `ヽ,   /    _ --‐     ヽ    ヾ   ! ヽ      i  /   /            !     `トー〈   !    /  |        /                  ヽ       /     ,     , '          ヽ      / / / /  /  ,  /        ヽ     !     〃/ / !  l   /  !  ! ヽ     |     !     │ !  ! │ {  !   |   ヽ   ! !   !  |      ! /{  {.   ト` ト、 |ヽ  !\ ,ム‐ハ|   }  l      レ !  iヽ !,,====ミ、\l ,,====ミ !   l  l !        ヽ |.-ヽ!'l  ,!、 ハl         /, ニヽト ゞ-' ノ   ヽ ゞ-' ,' / ノリ    「・・・キョン?」       ,'/ニヾ 人     `_      / /リ´       { /ニヽ ヽへ          ィ ハl        ヽ、ヽ   } | >   _ , ィ´/ノ-、        _,'    レ′_,-‐l     /  ヽ       __/ |    /、‐'/ /   , '      \      /    ─ '  } /へ、 /         \      {       / / ヽ、 , '      ィ ニ二二\    , イ    ,'   〉/  /     // , -―─-}  /        / / /     // /       ! キョン「うあ!びっくりした・・・ああ、長門はようやくお帰りか?」                    /:::::::::::::::::::::::::::::::::::::::::::::::::::\                  /:::::::::::::::::::/::::::::::::::::::::i::::i:::::::::::::::ヽ               /::::::::::/:::::::::/::::::::,:::::,イ:::::|:::::!:::::i:::ヽ:::::ヽ            /::::::::::/:::::::,.イ:::::::,ィ:::,イ:::::: /!:::::|::::::!:::::!:::::::ヽ            ,'::::::/::::!:::/,イ::/ .!/ .|::::/ |:::::ハ:::::!::::::!::::::::::i             !::::::l::::::レ',! ー-、    !/  !::/ !::ハ:,イ:::::::::::|              !::::_」:::::::::! ..,,_`ヽ、_,.   ,リ  ´ _,..,_ !::::::::ハj           !/f r.|::::::::!  (◎)     `'ィニ二_ /:::::::::!                k.ヤ!:::::::! u         (◎),. /::::∧::|            |∧`Y::リ           i  u   //|/  ヾ               !Tヾ  u.  __j_      //ノ              ヤ. ヽ.     |゚д゚ ) |   ,.イ:/               r<´|.  \   |( ゚д゚ | / |/              !  `丶、.  \  ̄ ̄u/            _/     `'-、. `'ー-r<´        , -'" `ヽ、      `ヽ、 f`, \      , -'´    ヽ `ヽ、      >く_Lr'´`ト、    /        ヽ  \  /ヽO〉 |`r、.| `丶、   /           \  \/\r‐=<. !`    `ヽ,   /    _ --‐     ヽ    ヾ   ! ヽ      i  /   /            !     `トー〈   !    /  | 長門「結合テストフェーズが近いというのに、いまさらの仕様変更会議で拘束されていた。 キョンこそ、日が変わってからの帰宅や徹夜が続いているようだが、大丈夫?」  /,           |      /:: , l:: i::. }::ヽヽ::.ヽ \ .//        .:! :| :    /:::/:/::/i: /: !: }i:',ヽ:| i,i        .::| :|: ::   !,/_ム/_ l:/::: l:: !l::! i::! . ! l .:     : .::::| :i:.::   レ',ソ,_/`!::/i:/ i:! | . !.:! ::.   : .:.::/´', !:::  | ! ヾ.i´:i` !/ /  !  i:l', :::::. :. ::. ::〈 、'_゙il::::.  |.|   j_ソ ゙、_  ヽヽ、:::::::::. :::.::::\ニ',::. ii::!      ノ     ヾ、i::::l::::l::::',:|  ',::. !',!     ィ´       i|ヾ:!:::i::::/ヽ  ヽ. l 丶.   /        ノ /ii/lノ     ヽ:r‐y┬ '       イ'"`'‐- 、    / ヽl/ '       /      \__{ヽ、     /_,, -‐‐‐-- ,,_  \_,ヽ‐、 キョン「そうか、マネージャ補佐ご苦労様。慣れないのに大変だな。 こっちは見ての通りさ。外注から上がってきたソースや、定時帰りが趣味の同僚のソース を尻ぬぐいしている。」          /: : : : : : /: : : :/: : : : : : : ヽ: : : : :: : `、         /: : : : : : : :/: : : /: : ,ィ: /l: : : l: : |: : : : : : ::ヽ         ;´: : : : : : : /: : /|/ .|/ .!: : /i: : !: l: : : : : :丶        .i: : : : :|: : : : |/      |/ | /|: :|: : i: : : :゙ヽ        i: : : : ::i: : : ::/ ´ ̄ ̄ ̄`''''   ´ ヽ|: : | .|: :丶        |: : : :,-リ: : : |  "疋;:ソ`     '`'-、_.i: : |: |: ヽ        .|: : :/-、',: : |         , f:テリ` /: : |: i丶        .ソ、::l,.( _ リ、:| u       l .`   /l: :/| i         ,|::\__ ヽ|          ,    //|/ |/          リl: ::| |  u        ′  //           l::|リ ヽ    ` ― - 、   //           ,リ   `、    `"    /リ       ,----亠--- 、_`.、      / 彡       // ̄ ̄⌒`ヽ` \::`::-、,_, ´. 長門「マネージャ補佐でなければ手伝えたが・・・残念。 ハルヒも体を大事にしないとならない時期、夫のあなたが守らないと。 私からも負担を減らせるよう要請しておく。」          _/: : : : : : : : : : : : : : : : : : : : : : : : :\      ー=ニ ァ: : : : : :/: : : :/: /: : : : :、: : : :`ヽ: : : : ヽ         / ,: : : :〃: :/: : /: │: : : : :lヽ: : : : ハ: : : : :.ヽ .       / / : : //: :/: : /: : │: : : : ::|: :!: : : : i|: : l: : : :ヽ       / イ : : : l |: :│: :j : : ∧: : : : :l: :|\: : i|: :│: : : :.\       l/ |: : : :| l: :∧: :ハ: : l  '.: : : :ハ j  ヽ i|: :│: : : :}       ││: : l|│ナ下/-ヽ |  ヾ: :/_ム'― 弋|: :│: : ! j         j. │: : |i V ,ィテ圷、ヽ   ∨ ィチ示k l: : ト: : Ⅳ          ヽ: : |  ハ` Vf:::::i}       Vf:::::i} Y|: : ム N           ヽ |ヘ i l  ゝー'       `ー'' ハ!: :,) }i|             `l: :ヽム        '         /:/: :ルイ             ', : : |ヘ、     ‐       ィ' /: :/             ヽ: :lヽ >,、       イ/7: :/             \! V厶|>ー <レ_'/ //               , '´/ノ      L、 /                ,.-'   | ___._   | `ー、          _..-‐'´     |´  _` ー<|   `ー、_ キョン「よろしく頼むよ。」            /  .:.:.:.:.:.:/:.:..:. : : : : : : . . . . .`. 、         /.:/..:.:/./ .:./ .l:.:.:.:.:.:.:.:.:.:.:.:.l:.:.:. : : : :ヽ         / 7 .:./.:.l . :/l .:.|:.: :l:.:.:、:.:.:.: :|:.:. .:. : : : ',         / ..:.:| .:.l :/ !.:∧: :ト、:.:|\:.:.|.:.:. l.:.:. : : :ハ         | :l.:.:|.:/|/_l/  ', | ヾ_ヾl \|:.:.:. : : : l         |/|.:.:|ハ ´__`   `l ´ __ ` |:.:.:.:.:.|:.l:|         l !ハ:.:.:l´ゝzソ` :   ´ゝzソ`  |:.:./l/:.ハ!             l l!: l     |           | / }l:/            l!:.l     .:        |'ノ/:/      長門「それでは」             |ハ    `           r‐' /               ヘ    _      /:.:/l'               ヽ   ヽ  ア  ./|:ハ                 \   ̄  イ. : :|'       「ああ、お疲れ。」                    r┤ ー七   > ´ ヽ                  /| ゝ..、  /ヽ.     / : 、               /.: .:| / 〉 !   /:、 /: : .: .:l` : .             . . :´/: : : |.∧0| │//〉: : : : : : .:| : : : ` : . .    _ . . . : :´ : : : /: : : : |  ゝ⌒ヽく /: : : : : : : .:|: : : : : : : : :` : . 、 キョン「・・・うわぁ・・・500行のメソッドが5つコピペされてる・・・。」             ,ィュ-‐-、_          /: : : : : : : : : :`ヽ          /: : : : : : : : : : : : : : :ヽ        イ : : : : ,ィ ./リ| ト、: : : : : ゝ         !: :/: :,AZ__ |/' >r.、: :N         !'ヽ: :! ―-   ニ| .! .!ノ          _人_l、u.   i .(ヾ| .! iヽ     _,..-'´/:::::| ヽ ~ ,.ネ、   ト、   r'´:::::::::::::く:::::::|  ノ` =く. .|::ヤ   .|:::`゙ー、  /:!::::::::::::::::::/::::::.レ'^YニY/レ!:::ヽz='=i::::::::ヽ /::::::!::::::::::::::::ヽ:::::::|  .〉-〈 /::::::〈:::::::::::::|:::::::::::! 数日後 キョン「・・・」(なんだろう、数日前から頭痛と目眩が消えない・・・。徹夜続けたのが無理祟ったか?)                   _____              ..:.:.:´:.:.:.:.:.:.:.:.:.:.`ー、               /:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:\           /:.:.:.:.:.:.:.:i:.:.:.: i:.:.:.:.:.:.:.:.:.:.:.:.:.ヽ             /:.:.i:.:.: i:.:ハ:.:.:.l、:.:.:i:.:.:,.:.:.:.:.:.:. i            / 〉:.:./l/  \:! ヽ:.!ヽト、:i:.:.:.:. l           / /:lイ '    `   `   l:.:.i:.:.l        / //〉:.:.l __ ノ   ´  ̄ ヽl:.:.!ヽ!         l  ´ イ !:. ! ‐― '  `ー ‐ l / _ノ .      l    i Y`ハ     i       !'7〃 .       l    ' i.  ヽ    !     .イツ´ .       /  /  '   _> ―_- / !、        l   /   / 、 i` 、 __ イ   / ヽ_     ´ `ー‐'`   /  `ー、  ,-´  /   \     i       i‐ ´i   / ` i   i´ヽ.  /     `  、     l       l    !  /.   l   ! ハ /        \ .    ,|       |   ヽ/    !_'   V       ,  ,    ヽ    /.l       |       /:.:.:.:ヽ       / /  /  i     !/!       l\       i:.:.:.:.:.:.i      / /  /   l .   ,         !  ヽ      !:.:.:.:.:. !      ´   !  /     ! 長門「キョン?」    /:::/:::: /::::::::::::l::::::::|:::::::l:::::::::l:::::::::::::::::::::ヽ:::::::::::::::::::::i::::::   /::;イ::::i::::::::::::::| ::::::l|;::::::li;::::::::|、;::::::::::::::::::::l:::::::::::::::::::::l:::::   .l::/ l:::::|::::::::::::/!::::::| li::::::lヽ::::::l. ヽ;:::::::::::::::::l::::::::::::::::::::l::::::   |::l | ::::|::::::::-i-L;;_l .|!i:::::l ヽ::::l  ヽ、__;;;;::::| :::::::::::::::::l::::   |:! .|::::::l::__;;;|_ l:::l`ヽヽ;:::l ヾ;レ‐'''゙゙´\ :::::| ::::::::::::::::l:::::   l!  .|:::/ ___ノ,ィ'ト|''=ミ、 ヾ!  ,r-=fニミ;;弍;;| :::::::::::::::l~゙'i     l/ ,/ト、::l゙__゙ヾ::ii::|ヽ  ,/  .|:::illi:::゙ii/ |:::::::::::::::j¨゙ l    /⌒ヾ、|/`fト l ゙K);j .l'⌒''h.   K);;;;ッリ l:::::::::::::/ .ノ   /‐-、 `iノ /'ヽ|、   ノ    ヾ、     ,/  |:::::::::::/=7゙  ./ 、. ヽ |゙V,_  l:::i、 ̄ 丶    ゙''ー-‐''  ,l::::::::::/|:;/  i  '゙ヽ_j-'   .|::::|.\   ‐-        ,,イ::::::::/ ,l/  ヽ    ヽ   jl:::::l.   ヽ、      , ''゙ /:::::::/゙`ヽ、   ヽ、.     /ヽ::::|    ,,`=ー '''i´    /:;/レ'〉;:;:;:;:,.,\    /    /.  ヽ:| ,,r''゙,.;:;:;r''゙~ノ   /イ  /;:;:;:;:;:;:;:;:;:; キョン「あ、ああ・・・長門か・・・。」                   _____              ..:.:.:´:.:.:.:.:.:.:.:.:.:.`ー、               /:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:\           /:.:.:.:.:.:.:.:i:.:.:.: i:.:.:.:.:.:.:.:.:.:.:.:.:.ヽ             /:.:.i:.:.: i:.:ハ:.:.:.l、:.:.:i:.:.:,.:.:.:.:.:.:. i            / 〉:.:./l/  \:! ヽ:.!ヽト、:i:.:.:.:. l           / /:lイ '    `   `   l:.:.i:.:.l        / //〉:.:.l __ ノ   ´  ̄ ヽl:.:.!ヽ!         l  ´ イ !:. ! 弋zア   `ー ‐ l / _ノ .      l    i Y`ハ     i       !'7〃 .       l    ' i.  ヽ    !     .イツ´ .       /  /  '   _> ―_- / !、        l   /   / 、 i` 、 __ イ   / ヽ_     ´ `ー‐'`   /  `ー、  ,-´  /   \     i       i‐ ´i   / ` i   i´ヽ.  /     `  、     l       l    !  /.   l   ! ハ /        \ .    ,|       |   ヽ/    !_'   V       ,  ,    ヽ    /.l       |       /:.:.:.:ヽ       / /  /  i     !/!       l\       i:.:.:.:.:.:.i      / /  /   l .   ,         !  ヽ      !:.:.:.:.:. !      ´   !  /     ! 長門「キョンの疲労度はマネージャ補佐として見過ごせない。昨日の進捗会議でもキョン達 開発チームの稼働時間が大幅超過しているのは問題視された。近日中に対策が打たれる と思うので、今日はもう帰宅するべき。」        /                  ヽ       /     ,     , '          ヽ      / / / /  /  ,  /        ヽ     !     〃/ / !  l   /  !  ! ヽ     |     !     │ !  ! │ {  !   |   ヽ   ! !   !  |      ! /{  {.   ト` ト、 |ヽ  !\ ,ム‐ハ|   }  l      レ !  iヽ !,,====ミ、\l ,,====ミ !   l  l !        ヽ |.-ヽ!'l  ,!、 ハl         /, ニヽト ゞ-' ノ   ヽ ゞ-' ,' / ノリ       ,'/ニヾ 人     `_      / /リ´       { /ニヽ ヽへ          ィ ハl        ヽ、ヽ   } | >   _ , ィ´/ノ-、        _,'    レ′_,-‐l     /  ヽ       __/ |    /、‐'/ /   , '      \      /    ─ '  } /へ、 /         \      {       / / ヽ、 , '      ィ ニ二二\    , イ    ,'   〉/  /     // , -―─-}  /        / / /     // /       ! キョン「・・・そうだな。・・・お先。」          /: : : : : : /: : : :/: : : : : : : ヽ: : : : :: : `、         /: : : : : : : :/: : : /: : ,ィ: /l: : : l: : |: : : : : : ::ヽ         ;´: : : : : : : /: : /|/ .|/ .!: : /i: : !: l: : : : : :丶        .i: : : : :|: : : : |/      |/ | /|: :|: : i: : : :゙ヽ        i: : : : ::i: : : ::/ ´ ̄ ̄ ̄`''''   ´ ヽ|: : | .|: :丶        |: : : :,-リ: : : |  "疋;:ソ`     '`'-、_.i: : |: |: ヽ        .|: : :/-、',: : |         , f:テリ` /: : |: i丶        .ソ、::l,.( _ リ、:|         l .`   /l: :/| i         ,|::\__ ヽ|          ,    //|/ |/          リl: ::| |           ′  //           l::|リ ヽ    ` ― - 、   //           ,リ   `、    `"    /リ       ,----亠--- 、_`.、      / 彡       // ̄ ̄⌒`ヽ` \::`::-、,_, ´. ;;;|.  |. |;;;;;|  | ゴォォォォォォ…… ;;;|.  |. |;;;;;|  |\;;;;;;;;ヾ;;;;;;;;;;;;;|___/ / ;;;|.  |. |;;;;;|  |;;;;;;;;/_:::::::... . . .|   |  お待たせいたしました…… ;;;|.  |. |;;;;;|  |;;;;;;;l;;;;;;;;;;;;;;;;;;;;;;|   |  1番線に電車が参ります…… ;;;|.  |...|;;;;;|  |;;lニooニl ̄ ̄;;|   | \ ;;;|.  |.:.|;;;;;|  // //,;;/|ロ|ロロi;!___| ;;;|.  |:.:|;;;;;| // //,:;/ | :| / ('-',,) ;;;|.. . |:..|;;;;;| i l[]l  ̄| i/   ( u ノ ;;;|;. . |;:.|;;;;;| |_|__|_|/∧_∧uu'| ;;;|:: . |;;;|;;;;;|/'´_// (    )  | ;;;|;: . |'´;''"/_//  (  ○)  | ;;;|;; : |; ,/_//    │ │ │  | ;;;|,//_//     (__)_)   | "' /_//              | /_//.                | _// ',/ キョン(コンパイルが通っただけのコードを「完成しました」といって渡す奴、1行しか違わない 500行のメソッドを5つもコピペする奴、マジックナンバーだらけで定数定義もしない輩、 エトセトラエトセトラ。おれがSEになったのはそんな奴らの尻ぬぐいをするためだったっけ・・・?)   /  /   ..::/.::/ .:::::: /.::::::/.:::::!::::::..!.. l  ::ヽ`ヽ  i  /   .::::::!::/l ..::://.:::/!:::::/l::::::::l:::::l:::....l  !  !   ! l .:::::::/l/__l/ //  l:::/.:::!::::/!:::::!:::::::!::!:l  l /l/l .::::::/ __ `ヽ、    l/ .::::l::/.:l:::/l:::::::!::!::!   V く l .:::/   ¨ 疋タ` ヽ、ノ .::::::_j/ -―l:::/.∧l   ∨ー!::/    `¨       /fr芹、:::/l/.:/   j/iヽl/           /.:::::┴'..:::/./ j/ .   l::∧              { ::::::::::::::/.:/ .  __/V ::ヽ         /..::::::::::/.:/ /i/  ! ::::::ヽ     _     .:::::/ j/ .三l :: l :::::::ヽ、   __‐-..::::/ .三 !.:::::.ヽ、:::::::::ヽ、 ....:::::/ 三ニl:::::::::::::\::::::::::::::ー匕\ キョン(・・・やめよう。数日前から頭痛と目眩がひどいんだ。今日くらいは早く帰ってあいつの 顔を見たってバチはあたらない筈・・・) .        / ./フ 7  , -‐ x   l   i i i  ',         / ,/ / / / / i i  j        |          レ/ /  / 〆ー‐‐く. / /   i  |          r/ ′ ′ '´ .ィ´厂l/! / }  / | }|          !′     r__ 、j/` ̄厂ヽ! /j! j /}! .       !       /  .}  ` ー‐''/〃 ハ ノ        j     /   ノ        / /イ  (ドンッ)       r‐‐'―- 、 /!    ___      / /   (ん?)グラァ・・・    厂 ̄ ̄`ヽ ゙> l\ ゞ二)  /jイヽ.    ,′     X.  l  ヽ. ___ . イ  / .|  \ .  /        n /   !  /ー 、 r‐‐/ | ∨\  /       n /   l /、c | |ー l`ヽ. |  .∨ \ モブ「あ、すみません・・・ってええええええええ!!?」         _」ヽ  /|        /   ゙V´∠イz‐ 、_      /  , ヘ,_/ ヽヽヽマ´      //  // ^´  ̄ `^`ヽ\ ゝ    _,//  〃  ,  ,     、 \ヽ、    ,ノイ| l/  //,ハ|  .l | .,ハ,l   lハ|`     小|   l/ ノ 弋 ,| |ヽ、_| l |      l从  | ( ○)}liil{(○),ルリ     ノハ小  l   (__人__) ..l,/       //ヽゝ  n|ll!|l!l|n ,イi         |!〃lヽ>l ^)ー(^|_ リ           γ::::lヽlムレl:::ヽ           l:::::,l::::|∞|::::!::::l          ヽ::::;ノ  ゝ;:::ノ           ノ   ,   , 八           /   /  ハ  ヽ キョン(あ・・・れ?頭がぐるぐるして・・・力が入らない                    /:::::::::::::::::::::::::::::::::::::::::::::::::::\                  /:::::::::::::::::::/::::::::::::::::::::i::::i:::::::::::::::ヽ               /::::::::::/:::::::::/::::::::,:::::,イ:::::|:::::!:::::i:::ヽ:::::ヽ            /::::::::::/:::::::,.イ:::::::,ィ:::,イ:::::: /!:::::|::::::!:::::!:::::::ヽ            ,'::::::/::::!:::/,イ::/ .!/ .|::::/ |:::::ハ:::::!::::::!::::::::::i             !::::::l::::::レ',! ー-、    !/  !::/ !::ハ:,イ:::::::::::|              !::::_」:::::::::! ..,,_`ヽ、_,.   ,リ  ´ _,..,_ !::::::::ハj           !/f r.|::::::::!  弋エノ`    `'ィニ二_ /:::::::::!                k.ヤ!:::::::!           ゞzソ,. /::::∧::|            |∧`Y::リ           i      //|/  ヾ               !Tヾ  u.     j       //ノ              ヤ. ヽ.    , ‐-、,__    ,.イ:/               r<´|.  \  弋,__,/  / |/   (ヲイヲイ、マジでヤバイ・・・ハルh              !  `丶、.  \  ー   /            _/     `'-、. `'ー-r<´        , -'" `ヽ、      `ヽ、 f`, \      , -'´    ヽ `ヽ、      >く_Lr'´`ト、    /        ヽ  \  /ヽO〉 |`r、.| `丶、   /           \  \/\r‐=<. !`    `ヽ,   /    _ --‐     ヽ    ヾ   ! ヽ      i  /   /            !     `トー〈   !    /  | 列車:プァアアアアアアアア!!!!!!             :,:           :(::)             /⌒''⌒) :,,゜      '         ,,,,,,,            (:::::::::::::::!'                 (::::::)            ヽ::::::::';'''                 ''``   。            τ'::/ .;:             )/          。            '  、       ;: 。                                `'''`~''・    ' `      f''`⌒(     ,,,,               !:(',,,,、              ::,,,,,、...      ,!,,,、(     /::τ             ノ:::::::::::::::::)          。  !::::::::::`! 、  :.、          !:::(     ノ::`!   o   (::::::::::::::::::τ            (:::,,;,;,、; 。        ゜     (/      ⌒・ .   ・、;::::::::::::;;.;`` ''      ,,、..   //   ノ'          //'''`'`'` `       ..,,.. _,,,.、 ・         ,, ...:・..   π /;::::::::(,.,.(;;;::::(   ,,.,  ・っ                    ;,;;( ):::::;.    c::── '`'''::::::::::;''    ):::::::::::::::::::::::::::/  '''''`   `        '`                     ⌒ ` !.:::τ'' ``  τ !::::::::::::::::::::::::::::)/,,,,, γ               :'`'``:!    (::::::::::::::::::::::::::::冫 `'`'    、,:'::::::`:::,,,,        !:::::ノ         ・  :::':'::::::::::::::::::::::::::::;(,,,,,,,、:::::::-ー''''`'`''''''''" 長門「・・・?」  /,           |      /:: , l:: i::. }::ヽヽ::.ヽ \ .//        .:! :| :    /:::/:/::/i: /: !: }i:',ヽ:| i,i        .::| :|: ::   !,/_ム/_ l:/::: l:: !l::! i::! . ! l .:     : .::::| :i:.::   レ',ソ,_/`!::/i:/ i:! |   <「人身事故だってよ、ヲイ」 . !.:! ::.   : .:.::/´', !:::  | ! ヾ.i´:i` !/ /  !    <「ヤベェ、おれ見ちゃったよ・・・」  i:l', :::::. :. ::. ::〈 、'_゙il::::.  |.|   j_ソ ゙、_  ヽヽ、:::::::::. :::.::::\ニ',::. ii::!      ノ      <「即死だってさ・・・」     ヾ、i::::l::::l::::',:|  ',::. !',!     ィ´       i|ヾ:!:::i::::/ヽ  ヽ. l 丶.   /        ノ /ii/lノ     ヽ:r‐y┬ '       イ'"`'‐- 、    / ヽl/ '       /      \__{ヽ、     /_,, -‐‐‐-- ,,_  \_,ヽ‐、 ハルヒ(キョンの妻&元同僚)「なんで・・・有希、あんたがいれば大丈夫だと思ってたのに・・・」        /: : :_/: :./´:/: :/: :l : : :{: : : : :ヽ: : :ヽヽ! ト __ `7       r‐ ´ ,.ハ-/―| 7!二|二 .l -- ̄ _lニー|-.|^| ヽ>i′      ∧_,./ム 十:.丁:ハ: :.:|: : :.:l::. : : : : :|:: : }: :ト.l、 〉、|       ': :.く |: :.斗┼l┼-ヽ_ト : :.:.ト、:_:斗 十:十‐ト|:「「ハ ヽ     l:l :/ {V! :.|:.ト:|      ヽ ヽ:.:{ >、:._:|}_/:./|:.|_:l lハ/     l:!/ //rl: :.l:.{ィ彡≧_-、    \、≦三ミ、.イ}:.|r } 〉: |     |||イ:.L{小: :トlヾ::::::::::|         |::::::::::リ///:.レ ハ:|: |!     ||!:.|: :.ト.l: ヽ|..。○::ノ         ヒ:::○。.7 : レ':: リ:.:ll     ハ:l!: ハ::.V::.::.ト i  |    ′  |  i /: :/::.: /:.〃       ヽト::ハ: :V.::.ト、| i  ⊂= ⊃   i |.イ: :/!::. ///l!       . ィ:´:|::.:l:{:::ト{ト|         ノイ/:.:./イ::./く|′     /  ヽ: :|.:ハト:.ヽ  |> __..  ´ /: :./ |:/: リ `ヽ    /     ト:リ: \ ヽ.\ }      /:.イ-/{ : /    i     !     } \: :\ ` ー     ‐ ´ / : : イ    |       /                ヽ    \  \       ,'     /  /            l    \  ヽ       !     /  /     /  ,'    |  l   ハ  ヘ、ヽ、_, .     | !   l   l     /  /   ,イ !   i   ! l ヽ ',` ̄ .     l |   l   l  ,/  〃 ,/   /│ l  j   l│  ! l     ノ | ! │   | /_// //  /::::,' ∧ / |  / j   l│      ノ l ァ|   |尢/‐=乞t/ /::::/∠ニ「厂! / ,/  / リ      イ 八{´l  !レ  /' :.:.:.:.:.:.: :.:. :l:l:!   !:.:.:.:.:.:.:.:.ム   ノ ノ   _    .イ :.:.:.:.:.:.:  :.:.:.:l!   !:. :.:.:.:.:.:. ハ //   /:.ヽ>-' 、.:.:.:.:.:.:.  :.:.∧   !.:.:.:.:.:.:.:.:.ハ i´    (::}:.:ヘ     「有希が代わりに死ねば良かったのよ!!」 : 、:.:.:.:.:.:.  : ∧   !:.:.:.:.:.:.:i:.:iノ    } ヾ:ヘ : :.\ :.:.:.:.   :∧  l: : :.:.:.:|i l     /´: .:ハ:.ム 、:.:.:.:.\: .:.:.   ム  l:i:.:.:.:.:| !l:.   _ハ: : :.:.l i:i -\:.:.:.:.\.:.:.   ム 从i:.:.:.:! |!:.:ハ  ハ:.:.:.:.l |:! :.:. : \:.:.:.:.\:.:.   ム } | : / :|! i:.:!  ∧: : l |! : : : : : :\: .:.:ヽ .:.  ハ ト.! /:.:ノ' ハ |    ',:.リ/ :. :. : : : : : : 丶: ヘ`ヽ ハ: }'≧x:/ }!    }' : : : : : : : : : : : : `\:ヾ:!: : \ \ノ      ! 長門→プロジェクト終了後、退社。暫く姉の朝倉の家に居候になる。 あ「有希!大変よ・・・ハルヒが、亡くなったわ」            /´  _        ヽ\           ./ / /仏∠! } }   トハ           ; /l lレィ天!   jえテトj/リ! ミ} {             ; |∧ |j-'●   ● 'イ  l   { ;          {  |ヽ}   、_,、_,   │ ハ彡| ;              | 八   {  }  _l /ノ  !            ;: | lr'⌒)、._ ̄_ (´ j //  i | {          }  l/ヾ三} l___/{彡'´}  i | ;          ;  |l   ノl |二//|   l  ,イl|          ;  | ゝー' ∧! //∧__j / l | キョン死亡後、二度とキョンのような悲劇を繰り返さない為にハルヒは自分でソフトハウスを設立。 テスト駆動開発やアジャイルなどを実践しようと必死だったが、妊娠中のハードワークは 母子ともに負担が激しく、命まで奪っていった。 ハルヒは遺言で、長門に後を託していた。 長門「許さない。日本中の屑以下のプログラマを皆殺しにするまで、闘い続ける。」       /                ヽ    \  \       ,'     /  /            l    \  ヽ       !     /  /     /  ,'    |  l   ハ  ヘ、ヽ、_, .     | !   l   l     /  /   ,イ !   i   ! l ヽ ',` ̄ .     l |   l   l  ,/  〃 ,/   /│ l  j   l│  ! l     ノ | ! │   | /_// //  /::::,' ∧ / |  / j   l│      ノ l ァ|   |尢/‐=乞t/ /::::/∠ニ「厂! / ,/  / リ      イ 八{´l  !レ、_ l|||||゙!:゙、-、_  丿;;;;;;;;;;;:::::i::::::::::::::/:::::::\゙'' ゙||i l\>::::゙'ー、 . i;;;;;;;;;;;;;;;;;;;;;;|::::::::::::::\::::::::::\ .||||i|::::ヽ::::::|:::! /;;;;;;;;;;;;;;;;;;;;;;;;!:::::::::::::::::::\:::::::::ヽ|||||:::::/::::::::i:::| ;;;;;;;;;;;;;;;;;;;;;;;;;;|;;;;:::::::::::::::::::::::\:::::゙、|||:::/::::::::::|:::i ;;;;;;;;;;;;;;;;;;;;;;;丿;;;;;;;;;;:::::::::::::::::::::::\::V::/:-―-l:::| ;;;;;;;;;;;;;;;;;;/;;;;;;;;;;;;;;;;:::::::::::::::::::::::::::゙''レ::::::::::::::::!:::::| できる夫「え、ダディ社長もプログラミングするんですか!?」          ____     l_        /   u \    /       /  \   / \   >     / U (○)  (○) \ \     |    u  __´,_  U |      \u    /__/   / やらない夫「当たり前だろ・・・うちの会社が実力重視なのは知ってるよな? オーナーでもある長門主任をさしおいて現場指揮を執ってる意味を考えるだろ。」      / ̄ ̄\ .   ./   _ノ  ヽ     |    ( ●) (●)     |      (__人__)  ∫     |     `⌒´ノ ∬ .   ヽ         } | ̄|      ヽ     ノ |_|) ____/      イー┘ | | |  /  /     ___/ | |  /  /      | | | (    ̄ ̄ ̄⌒ヽ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| できる夫「ここは、将来の拡張性に備えてインターフェイスで分離すべきでは?」          ,___        /     \       /  \   / \     /    (●) (●) \     |       ___'___    |     \       |il!|!il|  / .      /⌒~" ̄, ̄ ̄〆⌒,ニつ       |  ,___゙___、rヾイソ⊃      |            `l ̄ .      |          | ダディ「それは作り込みがすぎるよ。YAGNI原則を尊重しよう。」      /\___/ヽ    / -‐'  'ー-  \   . | (●),(、_,)、(●) ::|   |    /,.ー-‐、i  :::::|   |    //⌒ヽヽ  .::|   |    ヽー-‐ノ  :::::|    \    ̄   ...::/    /`ー‐--‐‐―´\ ダディ「弱ったな、このJavaクラスはfinal指定だ。どうやってMockしたものか・・・」     /\___/ヽ    / ,,,,,,,ノiヽ,,,,,,:::i|li:\   . |(●),   、(●)、.:|   | ⌒,,ノ(、_, )ヽ⌒ u.:::| .   |.u   (^ー^>  。.:::::::|    \ ゚  ⌒´ u .::::/ ,,.....イ.ヽヽ、ニ__ ーーノ゙-、. 長門「問題ない。Mockito + PowerMock、最悪の手段としてClassLoaderを独自に用意、 バイトコードを操作してfinal指定を無効化できるか挑戦してみる。」             ,,  - ―─  - 、          - ¨            ` 、       /'   ,       \   、 、 ヽ      〆/  '  / l  \     ヽ ' , 、 l  ',     / / ′ .!  l  ヽヽ  ヽ l   l l |  、 ',    / ,! l  , l  ∧  ヽヽ  ', |  | .! .! l | .!    .! ,'| .l ./, ! .,A-ヤー-、l   l    l l .! | .!, l    !./ l| ,!. ! ', |イ,;;斗去=ァ‐l   ト、 ,! .! ' .! |' ,!    ,' |,! .,l t|'、〉l "゙i::rl   !゙ヽ|   | .,' / /!' ,' l ,! ヽ     ゙ ',.! i ゛ノ `  、ツ- ´ /}  l シ ,! / ,! ,! l/       '  ∧       /,l  ,!i  ; / ///"        //;ヽ _    /'.!  /!'i l ./ /´ ツ .      // リヽ ,、   _.オ ./ .! |リ,' / .     ヽ'   `、l ゝt ヾ  |/    トV`ヽ            `,゛-'ー} ´   ,..=彡゙゙フヽ、          rイフ  √,!   / /´,<〆⌒゙ヽ         ノ l l   /ヽ. , ‐ ゙/ / ,  ,!    `ヽ        / .!_l_l__./'三ヽ==゙=ヲ{  ,'       ヽ        / ,,ノ-―''''''¨¨¨ ̄ ̄l |  }        lヽ       ノ/ |       _   l |/ヽ       、ヽ      / /  |  _ ,,, - '''¨  `ヽl | ⌒ヾ、      '、ヽ、 やらない夫「ここはLD_PRELINKを使ってピンポイントでPOSIXを差し替えてみますか?」    / ̄ ̄\  /   _ノ  \  |   ( ●)(●) . |    (__人__)   |     ` ⌒´ノ .  |         } .  ヽ        }    ヽ     ノ    .>    <    |     |     |     | ダディ「いや、使ってるPOSIX関数も多いし、テストケース毎に一々バイナリを用意するのも面倒だ。 いっそ、実行イメージ上でELFフォーマットを解析、アドレスを実行時に差し替えよう。」   /\___/\ /        ::\ |           :| |   ノ   ヽ、   :| | (●), 、 (●)、.:::| \ ,,ノ(、_, )ヽ、,, ::/ /`ー `ニニ´一''´ \ やらない夫「ソフトウェアのパーツは基本的にINとOUTの組み合わせだろ。 つまりTDDを行う場合にはそのINとOUTをどこまでソフトウェアで賄えるかの問題だ。」       / ̄ ̄\ ( ;;;;(     / ._ノ  ヽ、\) ;;;;)     |  (●)(●)/;;/     |  (__人__)l;;,´|     | ./´ニト━・' .l     | .l _ニソ    }      /ヽ、_ノ    /     __/  /    ノ__   / /  /       `ヽ.   /´  ./       ,.  ヽ.   ト、_,/.       |、  ヽ    |         |/  / できる夫「しかしOSやDBなど、外部とのやり取りはどうするんですか?避けられないでしょう?」             ____            /     \           /  \   /\         /   (●)  (●) \       |         ´     |       \       ⌒    /     / ̄ ̄ヽ           \    (「    `rノ          \     ヽ   ノ              \      |   |             「\   \ 長門「そのためにPE/ELF/Javaクラスファイルの知識がある。」                    __ __                    ..ィ.:´:.:.:.:.:.:.:.:.:.:.:.:.`:.:...、                  ,..イ:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.`:ヽ:.:.:.:ヽ、            /:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:\.:.:.:ヽ .           ,. イ:.:.:.:.:.:.:.:.l.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.ヽ.:.:.:.:.:.:.:.:.:',            /:.:.:.:.:.:.:.:.:.:.:i.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.ヽ:.:.:.:.:.:.:.:.:', .          /:.:.:.:.:.:.:.:. i:.:.ヘ.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:';:.:.:.:.:i.:.:.:.',         /:.:.:.:.:.:.:.:i:.:.!:.:.: ハ.:.:.:.:!:.:.:.:.:.:.:.l.:.:.:.:.:.:.:.:.:l.:.:.:.:.l:.:.:ハ .       /:.:.:.: i:.:.:.:.l:.:|!:.:.l ヽ:.:ヽ:.\:.:.:ヽ;.:.ト、:_:.:l:.:.:.:.:l.:.:.:ハ .      //: /:. |:.:.:.:.l`lト:.i._  ヽ.:.:\:ヾ、:.;.イ´:.:.: l.:.:.:.:.l:.:.:.:.:.ト、       /イ/:.:.:.!:.:.:. l:.i ∨' `ヽ、\! >イ\!\`ヾ!.:.:.:.:l:.:.:.:.:j`ヽ        |:.:.:.:.ヘ:.:.:.:.|ィニニミ、       ,.ィニニミ、!.:.:.:.:i、:.:.:/        |:.|:.:.:/ヘ\!ヾ{:゚::;;::ヾ ..   〃 {::゚:;;::::}イ.:.:.:./ }:/         ヾ!ヘ:ヘ,,:イへ ヽc::::リ ,i. ~ !,  ゝc:::ソ }.:.:./イ/         ヽ ヽヘ!:.:.ヘ ` ̄ 丿 i ヽ、 ` ̄ イ:.:/.;イ′             |:.:.ハ.` ー ´       ̄ /.:/:/             |:.:|:.:|:.ヽ、   `  ´   ,イ:./|/             |:.从!∨W> 、    .イソ'// !             |/        ,j ` ´  lメ.′             ′    /::ノ    /∨:\          __... 、.- ─:::´:::ク    ....   ∨::::`:ー:..、           |::ヘ::::::::::::::::::::::i:/ ´     ` \l::::::::::::::::::::`>, .          /∨ヘ::::::::::::::::::::l/ ´  ̄ ` \j::::::::::::::::::::/ :/ヽ ダディ「そう。OSやDBなど外とのIN/OUTを『動的に差し替える』、それをサポートするツールを 僕らは提供しているのさ!」     /\___/ヽ    /''''''   '''''':::::::\   . |(●),   、(●)、.:| +   |   ,,ノ(、_, )ヽ、,, .::::| .   |   `-=ニ=- ' .:::::::| +    \  `ニニ´  .:::::/     + ,,.....イ.ヽヽ、ニ__ ーーノ゙-、. :   |  '; \_____ ノ.| ヽ i     |  \/゙(__)\,|  i |     >   ヽ. ハ  |   || 大切な人をスパゲッティソースコードに奪われたエンジニアが、薄汚れた世界に反旗を翻す。 テスト駆動開発がその突破口になると信じて。 ┏━━━━━━━━━━━━━━━━━━━━┓ ┃                             ┃ ┃  できる夫がテスト駆動開発を学ぶようです  ┃ ┃                             ┃ ┗━━━━━━━━━━━━━━━━━━━━┛ ||< ---- #yaruo||>            *  _______     / ̄|  +   /         ヽ   +     | ::|    /⌒       ⌒   \     | ::|x  / ( ●)    ( ●)   |  .人   ,―    \   | ::::::⌒(__人__)⌒:::::     |  `Y´   「嘘だお!」(キリッ  | ___)  ::| .!     l/ニニ|      /  | ___)  ::|+ヽ    `ー‐'      /     十  | ___)  ::|   .>          \  ヽ__)_/   /                 \ ||<