やる夫で学ぶオブジェクト指向以前

投下した記事の保管場所。まとめサイトのほうが読みやすいのでググりなおしてご覧ください。

0.導入

1.

       / ̄ ̄\
     /   _ノ  \
     |   ( ●)(●)    このスレでは絶賛混乱中の「オブジェクト指向」のもとになった考え方を解説する。
     .|    (__人__)
      |     ` ⌒´ノ            プログラムの経験者向けではあるが、未経験者も
     . |         }     __
      ヽ        / ̄ ̄⌒/⌒   /   「俺たちは現実をどう扱っているのか」という視点で読めるかも。
    (⌒ ヽ     /     /     /
.    \  \ ,(つ     /   ⊂)    なお哲学からいろいろ借りているが哲学そのものではない。
     | \   y(つ__./,__⊆)
     |  ヽ_ノ   |
     |         |_
      ヽ、___    ̄ ヽ ヽ
     と_______ノ_ノ
               / ̄ ̄\
             / ノ  ヽ、.\
             | (●)(●)  |     具体的には「般若心経」でオブジェクトの話を
                |  (__人__)   |
         ___|__`⌒ ´   |     「プラトンイデア論」で「それは何であるか」とはなにかの話を
       , --'、         /    丿
        / ⌒ ).      /    <       「アリストテレス形而上学」でクラスとか属性とかの話をする。
       ,′  ノ      /   /三三三三丑
       l  T´ ..___/   //      r'´ ̄ヽ  簡単に言うなら、オブジェクト指向以前に「それは何であるか」を
      ヽ ノ   ./丶    //      (  ̄  l  考えなければいけないのに、仏教的に「それは何であるか」は
         `'ー'´   |   //_____/  _.ノ  存在しないので「それは何であるかとはどういうことか」を学ぶ話だ。

 

 

 

2.

―――やる夫とやらない夫は結構いい歳のプログラマである――――

                            / ̄ ̄\
           ____           /   ヽ_   \
         /     \        (●)(●)    |   Qiitaで一時期オブジェクト指向の話が流行ったが
        /  ─    ─\       (__人__)      |
      /    (●)  (●) \      ヽ`⌒´      |   最近はまたすっかり静かになったな
      |       (__人__)   .|      .{         |
.       \     `⌒´  ./  _________ ノ    今年はAdvent Calendarも無いか・・・
      ノ            \ /          / ⌒l
    /´                /          / |  |
    |               /          /  |  |
__(_______ 二二⌒)    /          /__.|  |_______
                \/          /   (U ⊃

 

3.
他の場所含めても「オブジェクト指向とは〇〇である」コメントはあるけどなぜその先が無いお
                            / ̄ ̄\
           ____           /   ヽ_   \
         /     \        (●)(●)    |   なかなか議論として成立しないな
        /       ─ \       (__人__)   U  |
      /         (●) \      ヽ`⌒´     |
      |           (__人__)      .{        |
.       \         `⌒´  _________ ノ
      ノ            \ /          / ⌒l
    /´                /          / |  |
    |               /          /  |  |
__(_______ 二二⌒)    /          /__.|  |_______
                \/          /   (U ⊃

 

4.

            / ̄ ̄\
          / ─  ─\
          |   (●)(●)|   仮にオブジェクト指向は簡単だとして、
     ____. .|   (__人__) |
   /      \   ` ⌒´  ノ   やる夫は簡単に全てを説明できるか?
  /  ─    ─\       .}
/    (●)  (●) \     }
|       (__人__)    |    ノ.ヽ 全てってどこからよ
/     ∩ノ ⊃  /∩ノ ⊃|  |
(  \ / _ノ |  |/ _ノ |  |
.\ “  /__|  | /__|  |
  \ /___ //___ /

 

5.

                         / ̄ ̄\
                        _ノ  ヽ、   \
          ____            (●)(● )    l     やる夫、オブジェクトとは何だろうか?
.        /       \.          (__人_)     |
.       /   ―   ―\.        ヽ⌒ ´      l
     /     (●)  (●) \      {         /
.    |       (__人__)   |         ヽ     /
    \.      ` ⌒´    .        /      `ヽ
        >        .そこからかよ! /. <⌒ <)))\ l
     /     /(((> ⌒>           ヽ_ヽ、___ ,イ
     l.    ___/_ノ.        , ─l.      |- 、
.      l.      ー‐⌒ヽ⌒ヽ      l  /⌒ ̄ ̄ ̄  l
      ヽ、.        |_ノ       `/   , ─―──´
         ̄ ̄ ̄`ー ′         `ー ′

 

6.
               ∩_
              〈〈〈 ヽ
      ____   〈⊃  }
     /⌒  ⌒\   |   |
   /( ●)  (●)\  !   !     オブジェクトってのはモノのことだお!
  / :::::⌒(__人__)⌒:::::\|   l
  |     |r┬-|       |  /     全てのモノはオブジェクトなんだお!
  \     ` ー'´     //
  / __        /
  (___)      /                    / ̄ ̄\
                                   /  ヽ、_  \
                                  (●)(● )   |   ではモノとはなんだろうか?
                                  (__人__)     |
                                  r-ヽ        |
                                 (三) |       |
                                  > ノ       く
                                 /  /、_  /  )
                             /  /─“  / ./|
                                |___,,─ ̄ _./  |

 

7.

             ∩_
             〈〈〈 ヽ
     ____.   〈⊃  }
   /      \    |   |
  / ヽ、   _ノ \  !   !
/   (●)  (●)   \|   l    モノってのは現実に存在する物体だお
|  U   (__人__)     .|  /
\    |i||||||i|     //
 / __` ー'       /
  (___)      /                    / ̄ ̄\
                             _ノ  ヽ、  \
                                 (○)(○ )   |   現実に存在しないものはモノではないのか?
                             (__人__)   u  .|
                              ヽ`⌒ ´    |   たとえばお前は「やる夫」という名前を持っているが
                                 {       /
                                 lヽ、  ,ィ'.) ./   これは物体ではない、つまりモノではない、
                                 j .}ン// ヽ
                                 ノ '"´  ̄〉  |   つまり名前はオブジェクトではないことになる
                              {     勹.. |
                            ヽ 、__,,ノ . |

 

8.
      / ̄ ̄ ̄\
   γ⌒)      (⌒ヽ
   / _ノ ノ    \  \ `、     そんなこと言われても・・・
  (  < (○)  (○)   |  )
  \ ヽ (__人__)   / /
                           / ̄ ̄ \
                           __ノ `⌒   \
                              (●).(● )    |   ではそれはあとで考えるとして
                          (__人___)    |
                              , =二ニニヽ、   |   次の問題だ。クラスとは何だ?
                            /  二 ヽ、`,┘   ト、
                            /   -、 }、j┘  イ ⌒ヽ
                       /    /{_/_ ,/      }
                          /     ノ∧        ィ  }
                          |   | /  i        |  |

 

 9.

             ∩_

             〈〈〈 ヽ
     ____.   〈⊃  }
   /      \    |   |
  / ヽ、   _ノ \  !   !
/   (●)  (●)   \|   l    クラスってのはオブジェクトの定義のことだお
|  U   (__人__)     .|  /
\    |i||||||i|     //
 / __` ー'       /
  (___)      /                 / ̄ ̄\
                           __ノ `⌒   \
                              (●).(● )    |   では定義とは何だ?
                          (__人___)    |
                              , =二ニニヽ、   |
                            /  二 ヽ、`,┘   ト、
                            /   -、 }、j┘  イ ⌒ヽ
                       /    /{_/_ ,/      }
                          /     ノ∧        ィ  }
                          |   | /  i        |  |

 

10.
      / ̄ ̄ ̄\
   γ⌒)      (⌒ヽ
   / _ノ ノ    \  \ `、     それが何であるかを決めることかな
  (  < (○)  (○)   |  )
  \ ヽ (__人__)   / /
                           / ̄ ̄ \     「それ」とはナニで「何」とはナニで
                           __ノ `⌒   \   何であるかとはどういうことだ?
                              (●).(● )    |
                          (__人___)    |   たとえば「やる夫は人間である」という定義と
                              , =二ニニヽ、   |
                            /  二 ヽ、`,┘   ト、  「やる夫は白い物である」という定義は同時に成り立つが
                            /   -、 }、j┘  イ ⌒ヽ
                       /    /{_/_ ,/      } ここから導き出せる「人間は白い物である」も
                          /     ノ∧        ィ  }
                          |   | /  i        |  |  定義として正しいだろうか?

 

11.
         ____
       /      \
     /   _ノ  ヽへ\
    /   ( ―) (―) ヽ   えーと・・・
   .l  .u   ⌒(__人__)⌒ |
    \     ` ⌒r'.二ヽ<
    /        i^Y゙ r─ ゝ、
  /   ,     ヽ._H゙ f゙ニ、|
  {   {         \`7ー┘!
                                 / ̄ ̄\
                              /  ヽ、_  \
                             (―)(― )   |   なあやる夫
                             (__人__)     |
                              (`⌒ ´     |   ひょっとして俺たちは
                         l^l^ln       |
                         ヽ   L       ノ   何か大事なことを忘れてるんじゃないか
                              ゝ  ノ    ノ
                            /   /     ヽ
                           /   /      |

 

12.
                          ,, -─- 、._
                        /      ヽ
                          |           |   モノとは何か、とか
                           |   ノ  ヽ、  .|
                          |  (●)(●) |   定義とは何か、とか
                        |  (__人__) |
                        ヽ  `⌒´  ノ    俺たちはどこから来てどこへ行くのかとか
                        /   ∩ノ ⊃  ヽ,
                          {   / _ノ     }
                        |  /   /   ィ  |
         ____
       /      \
      /三_',!`zx二 \   おまえ最後は勢いで言ってるだろ
    / ´ー¨‐` ´ー¨‐'' \
    |      (__人__)     |
     \    ´ニニ`    ,/
     /⌒ヽ    ー‐   ィヽ

 

13.
                      / ̄ ̄\
                       / ⌒  ⌒  \
           ___        | (●)(●)   |   俺はまじめな話をしているんだ
        /      \       |  (__人__)   |
       /:::::::::      \    .l  ` ⌒´   |
     /::::::::::::::::  U   \   {           |
     |:::::::::::::::::::::::        |   {        |
       \::::::::::::::::::::      /   ヽ、     ノ
       /::::::::::::::::::::::    く       |        \
-―――|::::::::::::::::::::::::::::::   ヽ-―─┴┴――┴┴――

 

14.

  /    、__,,..-''..-、ヽ    ./          /:::::`ヽヽ       ヽ、
. /   ,   /.{::::::::::} .l    /_,,-''´    l l::::::::::::ノ .'        '.,  そこでこれから、これらのオブジェクト指向「以前」の
. l _,,.-' -.、  ヽヽ-‐'     ,'    ‐.、  ヽ._`¨¨´              i
. l. /:::::ヽ .l      `ヽ   l /:::::::ヽ l       `ヽ           |  問題について考えることにする
 l ヽ::::ノ          }   / ヽ._::::ノ '       l          /
 ヽ._ /   、    ノ  ヽ._   /     、   /           /   まずはモノとは何であるか、からだ
  i  l     l-―‐''´    ',.    l    ノ ¨¨´     .,..-''"´ヽ`"''-..,,
  .', ヽ..,,__ノ        /',   ヽ-‐''"        ./   /     `ヽ
   .ヽ  ,.--..,,_     /  ',      ,.-''" ̄ ヽ  ./   /
     \`ヽ   ヽ__/   / ヽ.    `ヽ    `ー'    {
      \ ヽ       ヽ   `     ヽ         ヽ

 

15.
     / ̄ ̄\
   /   _ノ  \
   |    ( ●)(●    だが、ただ考えるだけじゃ「オレオレオブジェクト指向の仲間」にしかならん
   |      (__人__)
.   |        ノ
    |      ∩ ノ ⊃
  /     ./ _ノ
  (.  \ / ./_ノ │
  \  “ /___|  |
.    \/ ___ /
                          ____
                        /      \
                       /─    ─  \   なんか説得力のある根拠がほしいところだお
                     / (●)  (●)   \
                     |    (__人__)      |
                     \   ⊂ ヽ∩     <
                       |  |  '、_ \ /  )
                       |  |__\  “  /
                       \ ___\_/

 

 

16.
         / ̄ ̄\
       / ヽ、. _ノ \
       |  (●)(●) |     そこで、仏教を使って考えようと思う
       |  (__人__) |
          |   ` ⌒´  |     具体的には般若心経だ!
        |        }
        ヽ       }
        人_____ノ"⌒ヽ
      /           \
     /            へ  \
     (  ヽγ⌒)     |  \   \
  ̄ ̄ ̄\__/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                            ____
                          /      \
                        /_ノ   ヽ、_ \     仏教関係ないやろ
                       / (●)  (●)   \
                       |     (__人__)   u   |
                r、     r、\    ` ⌒´     ,/
                ヽヾ 三 |:l1 >   ー‐     ヘ
                 \>ヽ/ |` }             ヽ
                   ヘ lノ `'ソ イ            |  |
                    /´  / ./ |         |  |
                    \. ィ_ノ .|         |  |
                         |         |  |

 

17.
     / ̄ ̄\
   /   _ノ  \
   |    ( ー)(ー)   俺の知る限りではSmalltalk関係者が仏教に言及したことはないな。
.   |     (__人__)
    |     ` ⌒´ノ   だが俺らは日本人なんだから仏教で考えたほうがわかりやすいだろ
   .l^l^ln      }
.   ヽ   L     }    常識的に考えて
    ゝ  ノ   ノ
   /  /    \
  /  /       \
. /  /      |ヽ、二⌒)、
 ヽ__ノ
                           /  ̄ ̄ \
                          /ノ  ヽ__   \     いや仏教は常識とは言えないんじゃね?
                        /(―)  (― )   \
                        |.  (_人_)   u |    南無阿弥陀仏くらいは言えるけど
                             \   `⌒ ´     ,/
                         /         ヽ     意味は分かってないし
                        ./ l   ,/  /   i
                        (_)   (__ ノ     l
                        /  /   ___ ,ノ
                        !、___!、_____つ

 

18.
   / ̄ ̄\
 / _ノ  ヽ、\
 |  (●) (●).|    何を言ってるんだ。漫画とかフィクションでは般若心経くらい常識だろ?
. |  (__(⌒.)  |
  |   `/ /  (⌒)   色即是空!すべては空である!
.  ヽ  / / ./ /
   ヽ/ // /
   /    こ二二⌒)
   |     \
    |    |ヽ .\
          (.__)
                          ,  ¨¨¨¨¨
                     .  /      | il i  \    中二全開じゃねえかお坊さんに怒られるぞ!
                      〃 u     i l| | | u ゙
                      {   (_人_)   !   ∨
                          |ililililil|       u !
                       \ 人ilililil}
                        ト、__、_        , イ
                     .  乂__|    ト .._ 「
                     .      |    人_ ∨
                     .      |        ∨

 

19.
   / ̄ ̄\
 /   _ノ  \
 |    ( ●)(●)      大丈夫だ宗教の話をする気はない。
. |     (__人__)
  |     ` ⌒´ノ      だが、この「般若心経」には仏教が世界=モノをどう認識しているかが書いてあるんだ。
.  |         }
.  ヽ        }       そして「般若心経」は実のところ日本でのみ人気があるお経だ。
   ヽ     ノ  mm
   /    ̄ ̄ ̄ つノ   だからこそ日本人がモノをどう認識しているかを説明する材料になりえる。
   |    | ̄ ̄ ̄
                             ____     ━┓
                           /   ― \    ┏┛
                           /   (● )  ヘ\  ・   でもオブジェクト指向作ったのは日本人じゃないお
                        |   (⌒   (● ) |
                         ヘ     ̄`、__)  |     般若心経も知らないだろうし関係なくね?
                           ヽ           |
                         ./∩ノ ⊃   _/
                          /./ _,)   `丶
                          (___/    1   |

 

20.
       (⊃ ̄ ̄\
     (⊃   _ノ  \
    (⊃   ( ●)(●)     もちろん西洋でモノとは何かは別にやる。
     |     (__人__)
     |     ` ⌒´ノ      だがその前に日本人がどう認識しているかをやらないと
       |         } \
     /ヽ       }  \   どこに差異があるかがわからんだろ。
   /   ヽ、____ノ     )
  /        .   | _/
 |         / ̄ ̄(_)
  \   \ /| JJJ (
   \  /   /⊂_)

 

21.
        ∩⌒ヾ
        い   )
         、 . ノ
         |  | / ̄ ̄\
         |  |./   _ノ  \
         |  |   ( \)  l
         |  |   (⌒ (\)
         |  |   / ̄(__丿   では早速、般若心経の説明を始めるぞ!
         ト    /ー、/
         |     \ノ      次回、般若心経の最初の数行!
         |      )
         |      /ヽ
         |      /三)
         ノ     〈  ̄
        /   _  ⌒ヽ
       /   /  |   |
     /   /    |   |
       ____
      /      \
    / ─    ─ \
  / -=・=-   -=・=-. \
  |  u ,  (__人__)  U |   数行しかやらないのかよ
  \    ..` ⌒´   .〆ヽ
   /          ヾ_ノ
  /rー、           |
 /,ノヾ ,>         | /
 ヽヽ〆|         .|