オブジェクト指向再考(イントロダクション)

 前回出した記事(オブジェクト指向おじさん?)のあいださんのコメントで最も興味深いものが、オブジェクト指向しかしらないプログラマが増えてきている、というものである。実は私はそれまで『なんでこうオブジェクト指向信者が途絶えないのか?』と疑問に思っていたのだが冷静に考えれば解るとおり『良いも悪いもなくソレしか知らない。』(あいださんのコメント)世代が増えて来ているようだ。幸いにして私の周り半径3メールではそんな奴はいないので私の視野が狭くなっていたらしい。そういう意味では前回の記事をアップして良かったと思う。
また、元々、オブジェクト指向に関する記事を書こうかと思って対象読者を従来の手続き型言語に精通している人としようかと思っていたのだが方針を若干変更してメインターゲットを『オブジェクト指向しか知らない世代』にして、今後増えるであろう、オブジェクト指向症候群に掛かった患者への処方箋を今後数回に分けて書くことにする。
 オブジェクト指向という言葉を聞くとみなさんはどんなイメージをもたれるでしょうか?『オブジェクト指向とは何か?』を素人に説明するとプログラミングパラダイムの事でつまりプログラムを開発する上での一つの考え方や一つの模範ということになる。実はこれ以上でもこれ以下でもないのですが、もしあなたが以下のどれか2つに当てはまるのならオブジェクト指向症候群に掛かっているかもしれないので、この連載は役に立つだろう。

 1.関数という言葉に嫌悪感を感じる。または時代遅れの遺物だと感じる。
 2.よく他のプログラマ・言語に対して『オブジェクト指向ではない』と言っている。
 3.staticを使っている人をみるとプログラマとして終わっていると感じる。
 4.過去にオブジェクト指向を批判した記事を読んだが書いている奴がオブジェクト指向を分かっていないだけだった。
 5.C++が最高、他の言語はダメと思う人。
 6.Javaが最高、他の言語はダメと思う人。
 7.C#が最高、他の言語はダメと思う人。
 8.と言いつつも、自分自身がオブジェクト指向というのが何か実は良く解っていない。

さて、こういうと『お前が解っていないだけだ』と批判を受けそうなので少し私自身について説明します。私は14歳の時からプログラミングを初めて今年で32年目になります。仕事で使った言語は、覚えた順からBasic,Assembly,C,C++,VB,SQL,Java,Perl,PHP,MDX,Ruby,VB.NETです。ちなみにAssemblyは複数のCPUのインストラクションセットを覚えたし、実際に20年前まで仕事で使っていました。メジャーな言語ではC#が抜けているがやったことがないだけです。オブジェクト指向についていうとこれまた20年以上の経験になり、いわゆる手続き型言語からオブジェクト指向言語へコンバートした人になります。批判される前に私のオブジェクト指向の経歴をいうと、十数年前にJavaの記事を書いたこともあるし、ADPというプログラミング言語のプロジェクトを持っているがこれはC++で書かれています。またADPもオブジェクト指向をサポートしてます。その関係で一般のプログラマよりもオブジェクト指向についてよく考えていると自負している。

さて、まず最初の処方箋を言うと、オブジェクト指向は過大評価されている点を挙げましょう。実際は全くそんなことはないのにも関わらず、『オブジェクト指向はプログラマが進む最終地点』と考えている人が多いでしょう。歴史的にみてオブジェクト指向が持てはやされたことがありそれに無意識に乗っかっている人々がいたということもあるが、実はオブジェクト指向自体になにかプログラマを引き付ける魅力があります。ある人はそれを『究極の一手』と表現し、またある人は『彼女(彼氏?)』と言ったり、私自身も『オブジェクト指向はプログラマが進む最終地点』と考えていた時があった。さてここまでで『私がオブジェクト指向を理解していない』と思ったあなたは充分オブジェクト指向病に冒されていますので、何かコメントをしよう考えたのなら少し我慢して以下を読んで頂いて反論を頂きたい。

誰でも知っていることだがオブジェクト指向というのはもともと分類学の技法をプログラミングに取り入れて複雑なプログラムに対応しようというパラダイムの一種で、クラスとか継承とか多態性という言葉は分類学から借りてきたものであるといえる。ここで冷静になって考えてみれば分かることですがそもそも世の中の全ての事柄を分類学でカバーできるでしょうか?世の中の学問を見渡せば分かるとおり分類学では全てはカバーできないことは理解できるでしょう。つまり継承とか多態性というのは一部の領域にのみカバーをすることが保障されているということであり、ここで代表例を挙げると、GUIシステムにはオブジェクト指向がうまく適合できたようで、他の例を挙げると私の経験上になるがプログラミング言語の処理系もうまくマッチすると思う(残念ながら全く問題がない訳ではないが)。その他、経験上言えることは、一連の法則性を持った多様なものを処理するにはオブジェクト指向が向いていると考えられる。ほかの例を挙げると、実はオブジェクト指向ってしっくりこないんです!の記事にある、とりすけ さんのコメントで税金計算処理の適用事例があります。
以上、確かに適用できる事例はありますが、逆にいうと応用例はかなり限定されています。よく自称オブジェクト指向専門家に具体的な話を聞くと『息を吸うようにインタフェースを使っている』という分かったような分からないような返しをされますが、具体的な話ができないということはそもそも彼(彼女)も分かっていないということになるでしょう。本当に息を吸うようにインタフェースを使っているのなら具体例が多数出てくるでしょう。

また、オブジェクト指向の本質はメッセージだ!という人もいらっしゃいます。なるほどメッセージをやり取りすることにより複雑なシステムを簡単に構築しようということらしいです。では以下の2つのコードはどちらが理解しやすいでしょうか?

z = 3 * x * y + 4 * x + 6 * y + 2;

z = 3.multiply(x).multiply(y).add(4.multiply(x)).add(6.multiply(x)).add(2);

『下のコードの方が良い』という人はぜひリハビリを行ってください。少なくとも人前では上の方がよいと言いましょう。ちなみに当たり前ですが、これを持ってオブジェクト指向がダメだと言いたい訳ではなく、言いたいことは、『メッセージというある種のプログラムを抽象化する道具も乱用すると却って悪戯にプログラムを複雑にする』ということです。
次の回(おそらく来週?)このメッセージについて考察したいと思います。
2016-03-14 | コメント:21件

オブジェクト指向おじさん?

 私の盟友(?)ことみながわさんの日記が更新されたので覗いてみた。2016年1月29日の記事によると、とあるWEBの記事「staticおじさん」はなぜ自信満々なのかというのが目につく。
この手の記事に対しての警鐘は以前にも行ったのだが、未だにこういう煽り記事が出てくるということは出版業界はよっぽど不景気なのか?と邪推したくなる。
アメリカに留学して習った単語にobjectiveというのがあり日本語訳は客観的で、反対語はsubjective(主観的)になります。論文を書くときは客観的であれといわれます。といっても何が主観で何が客観か分からないでしょう。本当かウソか分かりませんがアメリカではこのobjectiveということを子供の頃から教わるらしいです。もっとも子供の頃にそんなことを習ったことのない日本人は文章を読むときに、何が主観的か客観的かが判断がつかないこともあるでしょう。ちなみに何の説明もなしに『普通はこうだ』とか、他にも記事を読んで『俺の意見を代弁していてくれる』と思ったら、その記事は主観的である可能性があります(主観的の定義に従えば自明ですよね)。

さて、元の記事にあるこの部分
 Javaでメソッドを呼び出すときにはクラスからインスタンスを生成してインスタンスのメソッドを呼び出すのが普通です。一方、staticメソッドはインスタンスを生成しなくてもクラスから直接呼び出せます。このため、オブジェクト指向プログラミングを理解していない古いタイプのプログラマは、Javaでもstaticメソッドを多用します。これを揶揄して「staticおじさん」と呼ぶのです。
これは、

インスタンスメソッドを使う→普通
staticメソッドを多用する→プログラマがオブジェクト指向を理解していない可能性あり

と読み取れます。思わず普通ってなんやねん?と突っ込みたくなるのですが、
そろそろこのインスタンスメソッドを使うのが普通という誤謬を解きたいのですが、staticメソッドは場合によっては推奨されています。
期待するコードを期待するように書こうという本から引用させていただくと
クラスのメンバへのアクセスを制限するもう一つの方法は、メソッドを出来るだけstatic にすることだ
このReadable codeという本は私は英語版を購入したのですがそこでも同様のことが書かれています。


また、英語が読める人は、static methodで検索をかければいろいろ議論を見ることができます。たとえば以下のQAたち
https://www.quora.com/Why-is-using-statics-Static-method-block-variable-in-Java-programming-bad-programming http://programmers.stackexchange.com/questions/98083/cant-i-just-use-all-static-methods
ここでは、インスタンスメソッドを使うのが普通とか訳のわからん理由ではなくきちんと事実に則って議論がされています。
事実(fact)に則って議論するということは客観的(objective)な議論ができているということになるでしょう。

ざっくりとまとめますと、staticメソッドを使うと

欠点:継承ができなくなる。ポリモーフィズムも使えなくなる。
利点:メンバー変数へのアクセスを制限できる。パフォーマンスが上がる。

ということです。他のものは自明として、利点のところで『パフォーマンスが上がる』かは検証の必要があるのですが、ポリモーフィズムはオーバヘッドを発生させるのでそれを使わなければパフォーマンスがあがる可能性はあります。
また欠点の中で、『ややこしくなる』という意見もあったのですが、これは主観的な意見でしょう。たとえばstaticメソッドを使いなれた人はむしろすっきりとすると考るかもしれません。

さて、継承もポリモーフィズムも使わないということであれば、staticメソッドを使ってもよいということになるのですが、この反論として、『オブジェクト指向でなくなる』というのがあります。もはや手段と目的が混同されているとしか言いようがない意見でいやはや疲れます。
まぁ一介の無名なエンジニアが何をいっても仕方がないのでもっと説得力のある例を出しましょう。
επιστημη さんという著名なライターさんがいらっしゃいますが、彼は思い切りstatic メソッドを使っておられます。
http://blogs.wankuma.com/episteme/archive/2012/12/28/310396.aspx のコードのrefereeクラスがそれに当たります。refereeクラスには3つのメソッドがありますが、すべてstaticメソッドになっています。
つまり、事実としてstaticメソッドは使うときは使うのです。ちなみにもちろんですが、επιστημη さんがオブジェクト指向を理解していないということはないでしょう。

という訳で、
 ただ、現実に年齢を重ねると、どうしても守りに入りがちなのは事実です。「自分はstaticおじさんなのではないか」という問いは、常に忘れてはならないのでしょう。
というヒマがあったら自身が思わぬ誤謬をしていないか記事の検証を行うことを勧めます。

2/4追記
 コメント欄で文意を汲み取っていないという指摘を受けましたが、まぁ充分文意を汲み取って反論をしているのですがどうも分かりづらいかもしれないので、補足します。

 ただ、現実に年齢を重ねると、どうしても守りに入りがちなのは事実です。「自分はstaticおじさんなのではないか」という問いは、常に忘れてはならないのでしょう。

こういう教示的な文章は一見ごもっとなことのように受け取れますが、冷静に読めば分かりますとおり、ど素人でも同様のアドバイスができるでしょう(例を出すとサッカーや野球観戦をしているおっさんが野次っているさまと同じと言えば納得できるでしょうか?)。
社会人としては自分を律したり反省することは歳をとろうが若かろうが、技術者であろうがなかろうが、常に必要でいちいちアマチュアに指摘されることではないです。

そうはいっても100歩譲って、プログラミングに携わるプロが
『(引用先の記事に書かれてるニュアンスでの)自分はstaticおじさんではないか?』
と自問するということはどういうことでしょうか?
つまり、『staticは使えるのか?使えないのか?』という正に私がここで行っている議論をすることです。
そしてまさに

インスタンスメソッドを使う→普通
staticメソッドを多用する→プログラマがオブジェクト指向を理解していない可能性あり

こういう意見が20年前はともかく今となっては偏見に基づく誤謬でしかないということを認識することが重要だと言いたいわけです。プロなら気づきましょうということと、素人なら知ったかぶりをするのはやめましょう、という話です。
2016-01-31 | コメント:61件

変な人

ここ1年ほど続いた炎上プロジェクトですが、奇跡的(?)にやっと落ち着き定常運転ができるようになったのですが、やることはまだまだたくさんあるので全くもってヒマがないので、更新もすっかりご無沙汰になったのですが、そのおかげで変な人の付きまとい行為も減り結果オーケーではある。

変な人というと総務省が、「独創的な人向け特別枠(仮称)(通称:変な人)」というのを募集するようです。

『「Disruptive Change」:世界的に予測のつかないICT分野において、破壊的な地球規模の価値創造を生み出すために、大いなる可能性がある奇想天外でアンビシャスなICT技術課題に挑戦する人を支援。閉塞感を打破し、異色多様性を拓く。』
とか
『*ゴールへの道筋が明確になる価値ある「失敗」を奨励』
ということで、来年あたりならヒマができるのでADPを引っ提げて応募しようかと考え、調べていたら色々思うことがあるので、コメントします。

そもそもなぜこのような政策を実行するのか?つまりこの政策の背景ですが、『イノベーション創出委員会』ということろがとりまとめを行っています。とりまとめの案が以下から読めます。
イノベーション創出委員会最終とりまとめ(案)に対する意見の募集

あとインタビュー記事が以下にあります。
「俺の言うことがわからん奴はバカ」という人が欲しい--総務省のイノベーション創出事業“変な人”

これらをみて思ったのは、やはり日本は衰退に向かっているんだということで、さらに残念なことに国家や大企業ではそれを克服できないんだなということです。私の経験から一言で言えば潰れかけの会社が色々足掻いているという印象がぬぐえないです。
もちろん、座して死を待つよりは遥かにましですし何事もチャレンジすることはいいのですが、例えば、上記の記事をみますと変な人の育成方法は、『いまのところ決まっていない。』とか、いやいや人任せにせずにそれぐらいは自分で決めましょう突っ込みが出てきて思わず心配してしまいます。

また、
『「なぜ“変な人”という表現ではダメなんだ。“独創的な人”より伝わりやすいじゃないか。これだからイノベーションが起きないんだよ」―こう指摘したのは元総務副大臣の○○○○という。』
については、言葉尻をとらえた本質的でない所で熱く議論をしているんだ税金を使って・・・と思わざるを得ない。まぁ成長が鈍化した会社の会議なんかで見る光景ではあるのですが・・・。
イノベーションとは常識を理解した人があえてそれを破ることから起こると考えているのだが、つまり温故知新ですね。スティーブ・ジョブズの例で言えば、Macintoshの開発逸話を読めば、彼が変な人だとは思わないはずで、卓越したプロデューサーというのが私の印象になります。まぁ私にはできないですね。

記事では変な人を探す理由として、イノベーションのジレンマをあげています。
イノベーションのジレンマとはWikipediaによると『巨大企業が新興企業の前に力を失う理由を説明した企業経営の理論』ということです。つまりイノベーションのジレンマとは今の日本の状況を説明するものではなく単に大企業が衰退する理論的な説明にしかすぎないです。まぁ日本の新陳代謝を促す為、世界で戦えない大企業に関しては潰れて頂いてもよいかと思うのでイノベーションのジレンマは歓迎ということになります。
ちなみに記事からはあたかも今の日本ではイノベーションが起こっていないという印象を受けますが、日本でイノベーションは私の半径3メートルでもみることができる。
ほんの5年前までは、ガラケーを使いながら『スマホってなに?』といっていた人たちが今ではスマホでガンガンゲームをやっている。スマホ歴自体は私の方が長い(7年以上)のだが、その適応力をみると個々人でみた場合、日本人のテクノロジーを扱うポテンシャルは全く衰えていないと実感する。スマホは確かに海外発のテクノロジーかもしれませんがその中に入っているアプリは日本で作成されいます。
『たかがスマホのゲーム』と思うかもしれないが、5年前と今で電車内の人のようすを比べますとまさにイノベーションが起こったといってもよいでしょう。

というわけで、政府や大企業が危機感を持っているのは解ったのですが、まぁ既得権益を享受している組織は、今の状況は芳しくないと考えているようですが、破壊的イノベーションはそういう既得権益者が破壊されるとこではないのか?という疑問が出てくるのですがどうだろうか?

ちなみに私の半径3メートル以内の話になりますが、個人に入るかどうかは別として優秀な人はそれなりにお金をもらって仕事をしており、300万では対したことができないのだが、相場というものを理解していないのでしょうか?もっとも例えばこの事業が自宅警備員のような方に対する支援なら全くもって理解できなくもないですが、それでも『金は出せないがお前ら頑張れ』という昔居た会社の上司が言っていたセリフが思い出されます。その返答としては、だったら君たちがその金でイノベーションを起こしなさい、ということで今年の応募は見送りますが、もっとも何事もチャレンジすることはよいことですので、ちょいちょい様子をみてみましょう。
2014-06-07 | コメント:0件

『社会人であり、技術者であり』の質疑応答

さて、『社会人であり、技術者であり』をリリース(?)してから思わぬところで炎上しまして、『質問に答えろ!』という声が出てきたのでFAQではないですが、質問&回答をまとめます
なお、このページについては適宜、編集します。

2012/11/23 まとめおよび質問回答を幾つか追加
2012/11/23 『みながわ氏=三浦氏という主張の根拠は?』に幾つか追加
2012/11/18 コメント欄での指摘を受け『社会人であり、技術者であり』を修正
2012/11/16 『みながわ氏=三浦氏という主張の根拠は?』を追加
2012/11/14 『「ある人物をモデルにした小説を書くのであれば、その人物がやってもいないことを盛り込んではいけない。盛り込んだ場合は、誹謗中傷となる」場合がある』を追加

現状(2012/11/23)のまとめ

現状、この小説の最終話とみながわさんとの関係についての解釈で以下の4パターンが出てきているかと思います。

1.無関係。三浦さんは不特定のお客サイドのマネージャということ
 →こちらについては例の炎上事件を知っているかどうかによって異なる面もあるようですが、最終話の後半部分については後から見ても多くの類似点があり、無関係というのは厳しいでしょう。これについて『三浦さんはみながわさんのモデルだがイコールではない』という、どう返信して良いか分からないコメントもありましたが、『モデル』と言っている時点で既に無関係ということではないでしょう。

2.みながわさんに批判的なだけ
 →こちらについては、小説後半部分の記述
『たまに別のWebサイトのコメント欄に、オブジェクト指向批判を書くこともあった。当然、技術的な裏付けも何もない、思い込みによる批判だから、正論で完膚なきまでに叩きのめされてしまう。正面から議論を展開できるだけの知識がないから、スリービーチさんにできることは、「その日本語はおかしい」とか「若い人はすぐに感情的になるから議論にならない」などと、負け惜しみを書くことだけだった。』

をみてみますと、
『思い込みによる批判』とか『負け惜しみを書く』、『人の話を聞かない』とかはその人の人格を表しているでしょうから批判を逸脱しているでしょう。また、

『そのささやかな幸せがいつまでも続くといいね。』
ですが、皮肉と取るにしても、趣味が悪いかと思います(と私も思います)。

その他、いちいち挙げませんが、貶めていると取られても仕方がない表現がありますでしょう。

3.最終話の後半部分はみながわさんを貶めていると取られても仕方がないので蛇足
 →こちらについてはほぼ同意なのですが、私の意見は少し異なります。

4.最終話の後半部分が本当に言いたかったことで、その前は最後を言うための布石
 →以下は、あくまでも、私(および数名)の方のこの小説の解釈になるのですが、注意して書けば、『1』や『2』に受け取れるような小説にもなったはずです。それなのに、なぜ、『3』と解釈できるような作品となったのでしょうか?
私はこの後半部分が、この小説が一番言いたいことではないのか?と解釈しています。

この小説を要約すると、
『人の話を聞けないオブジェクト指向を否定している人が、オブジェクト指向が分からないのでプロジェクトに失敗し、オブジェクト指向を否定するブログを始めたが、人の話を聞かない為に炎上して誰からも相手にされなくなる。やっぱり人の話(オブジェクト指向は良い)はちゃんときこうね。』
という風に解釈できます。この小説はみながわさんに『あなたはこういう人なんですよ』ということが言いたかったのか、というふうに私は受け取りました。

そう考えると
『そのささやかな幸せがいつまでも続くといいね。』
の文章が持っている、ある種の陰湿なニュアンスが伝わってくるかもしれません。

事実を元に、素直にそのまま表現し、きちっとした批判を行えば、まっとうな小説になったかと思います。が『プロジェクトに失敗した』とか『オブジェクト指向を知らない』等、虚実入り乱れた表現や、『2』で示しましたとおり人格否定と受け取れる書き込みがあれば、そのまま捨て置くのは厳しいかと思います。

理由はともあれ、こういう小説はダメでしょうというのが私の主張です。


もう止めませんか?


 現状 (2012/11/22現在)、議論は進んでいます。ので、まだ止めません。私の意見とほぼ同じ意見の方も出てきていますし、私には同意しないが、最終章については蛇足だという人の書き込みも見られるようになりました。
ということで、まだまだ止めれません。

お前の対応に問題があるんだよ

 当初、私にとっては問題点が明らかだったのですが、どうも私の言い方等がまずいようで炎上しました。ちなみに、実際に何処が悪いか聞いてみたのですが、具体的な回答は頂いていません。
作者に質問を丸投げした件については『ごちゃごちゃ言うより作者に聞いた方が早いだろう』という判断で聞いてみました。今後も作者への質問は当然、行います。
もっとも、私の表現等至らない面があり対応できることでしたら対応します。
ただし、聞いてもいない人がいきなり割り込んで来て『こうしろ!』とかいうコメントには当然お答えできません。ので、個別に返信しない限り、そのようなご意見はすべて『ご意見はありがたく頂戴しますが、対応は出来ません。』という事に致します。

ブログの内容が変わっていますよね?

 当初、私にとっては問題点が明らかだったのですが、どうも私の言い方等がまずいようで炎上しました。 
 ブログの書き方については、具体的にアドバイスをされた方がいらっしゃったのでその方のご意見を取り入れてブログの文章は修正しました。
といっても私が言いたい事は変わっていないかと思います。

何時までやるのですか?

 みながわさんが止めてくれと言うか、リーベルGさんから何らかの対応があるまでか、私が力つきるかです。

あなたは関係ないのでは?


こちらのコメント欄でリーベルGさんは以下のようにおしゃっています

『私自身は基本的にコメントの内容に制限をかけるつもりはありません。誰かが間違っていると思い、そのメッセージを伝えるのに、このコメント欄が最適だと思えば、何を書いていただいてもかまいません。』

ので、このコメントをすること自体は問題ないでしょう。それこそ、問題があれば、リーベルGさんまたは@ITさんが対応するでしょう。

みながわ氏=三浦氏という主張の根拠は?


まず、
http://ja.wikipedia.org/wiki/名誉毀損罪 から
『被害者の氏名を明確に挙示しなかったとしても、その他の事情を総合して何人であるかを察知しうるものである限り、名誉毀損罪として処断するのを妨げない(最判昭和28年12月15日刑集7巻12号2436頁)。』
とあります。『処断するのを妨げない』という言い回しが分からない方がいるかと思いますので、ニュアンスを言い換えますと『処断する場合がある』ということになります。

つまり多くの人が高慢と偏見のモデルはみながわさんと判別できている時点で、
 高慢と偏見の三浦マネージャ = みながわさん
としてよいでしょう。

高慢と偏見のモデルはみながわさんと判別できる理由ですが、『高慢と偏見』の最終話は、『実はオブジェクト指向ってしっくりこないんです! 』の本文およびコメント欄のパロディとなっています。
以下、『高慢と偏見』の最終話と『実はオブジェクト指向ってしっくりこないんです! 』との類似点を示します。

高慢と偏見最終話の三浦氏のブログのタイトルみながわさんのブログのタイトル
SEのサバイバル入門システムエンジニア 生き残りの極意
過酷なSE業界を生き延びるノウハウを伝授するシステムエンジニアとして長期に活躍した経験に基づく極意、ノウハウを教えます
高慢と偏見最終話実はオブジェクト指向ってしっくりこないんです! -本文-
staticを使えば、わざわざインスタンスを作る必要などない「メンバー関数をstatic宣言すればインスタンス宣言をしなくてもいい」ということ知ってからは、メンバー関数を従来のファンクションのように使っている。
独自にクラスを作る必要などない。クラスは使うものだ。作るものではない「自分でクラスを作ってオブジェクト指向っぽいことをしている」なんてことはまったくない。
オブジェクト指向など、実業務では使いものにならない!オブジェクト指向は、結局のところホントにモノ(オブジェクト)に使われている記法、例えばGUI コンポーネント、データベース、ファイルなどであって、プログラムのアルゴリズムとは無関係のものである。
高慢と偏見最終話実はオブジェクト指向ってしっくりこないんです! -コメント欄-
私はT大学大学院卒だ私は学部は東北大学で大学院が東工大です。
あなたはSIerだろう。私は客側の人間だ。客の言うことは絶対だ私はIS部門の人間なんです。SIerの客なんですよ。私に嫌われたらどうなりますか?
高慢と偏見最終話のポリモーフィズムの間違いみながわさんのブログのポリモーフィズムの間違い
ポリモリズムポリフォーフィズム、
*みながわさんは何回かポリモーフィズムの言い間違いをしていますが、これをもじっているとみられます

今のみながわさんのコラムのタイトルとサブタイトルは違うものになっていますが、当時のみながわさんのコラムのタイトルとサブタイトルは、こちらで確認できます。


特にコメント欄の2つの発言が当時、有名になりました。色々引用されましたね。

ここまで類似点があるということは偶然ということはありえずに意図的に書かないかぎり無理かと思われます。
また細かい表現が変わっているので『フィクションです』となるという主張もあるようですが、これは言い訳の為にしかやっていないし、『炎上事件を知っている人は容易にみながわさんのブログのことを指している事がわかる』という風に解釈せざるを得ないのではないでしょうか?
他にもみながわ氏=三浦氏を伺わせるような内容はあるのですが、とりあえず幾つかあげておきます。


「ある人物をモデルにした小説を書くのであれば、その人物がやってもいないことを盛り込んではいけない。盛り込んだ場合は、誹謗中傷となる」場合がある


高慢と偏見(http://el.jibun.atmarkit.co.jp/pressenter/2011/02/post-6b95.html)
のコメント欄のespreさんへの回答です。

espre 2012年11月14日 (水) 13:02

>>警鐘であり『フィクション』というのなら、少なくとも、
>>>みながわさん、にしても、三浦マネージャーにしても、『人の話を聞く』とは、とても言えない、というのが、私の感想です。
>>というふうに、みながわさんと三浦マネージャを読み手に結び付けさせるようなコラムを書いてはダメでしょう。
>これが最大の疑問なのですが、なぜダメなのでしょうか?
>多くの新聞の社説やコラムは特定の個人をイメージして風刺
>する文章を掲載しています。これらも全てダメなのでしょうか?

まず、以下のページを参照してください。

『事実をフィクションとして書いたら名誉毀損やプライバシー侵害になりますか?』
http://www.bengo4.com/bbs/142497
つづいて、以下のページを参照してください。
http://oshiete.goo.ne.jp/qa/900590.html
さらに、以下のページ
http://president.jp/articles/-/2673
さらにさらに、
http://www.cyber-eraser.jp/category/1467828.html

さて、説明致します。

まず、名誉毀損罪(http://ja.wikipedia.org/wiki/名誉毀損罪)というのがあります。

これは、刑法第230条
『公然と事実を摘示し、人の名誉を毀損した者は、その事実の有無にかかわらず、3年以下の懲役若しくは禁錮又は50万円以下の罰金に処する』
とあります。少し噛み砕きますと、

公然・・・インターネット
事実を摘示し・・・『話を聞かない』、『ダメなシステムを作った』
人の名誉を毀損・・・例の人の社会的地位やSEとしての評価を落とした
事実の有無・・・・真実でも真実でなくても
となるでしょう。

つまり、大原則として、公に向かって、個人に対しての誹謗中傷を行ってはだめ(本当のことでも嘘のことでも)でしょうというふうに解釈できるでしょう。

ここまではOKですか?


続いて


刑法第230条の2
『前条第1項の行為が公共の利害に関する事実に係り、かつ、その目的が専ら公益を図ることにあったと認める場合には、事実の真否を判断し、真実であることの証明があったときは、これを罰しない。』


平たく言えば、書いた内容が真実であり、それがみんなのためであればOKということになるでしょう。


>多くの新聞の社説やコラムは特定の個人をイメージして風刺する文章を掲載しています。これらも全てダメなのでしょうか?

多くの新聞の社説やコラムはこの230条の2の範囲

・公共のため
・真実
の範囲でやっているということです。

ちなみに真実性の証明は、刑法第230条の2の要請です(法律に書いてある)。

というわけで「ある人物をモデルにした小説を書くのであれば、その人物がやってもいないことを盛り込んではいけない。盛り込んだ場合は、誹謗中傷となる」場合があるということになるでしょう。

わかりましたでしょうか?
2012-11-14 | コメント:19件

社会人であり、技術者であり

2012/11/18 コメント欄の指摘を受け、全面改定しました。

最近、忙しくてすっかりブログを更新していませんでしたが、それでもADPの開発は続けておりその関連で調査をしていましたら、あまりにも程度の低い小説がありましたのでちょっとコメントしてみます。

発端は今から2年前のこの記事になります。

実はオブジェクト指向ってしっくりこないんです!(みながわけんじ)
よく解らない内容の記事なのですが炎上した記事です。ちなみにこの記事のコメント欄のryoというのは私です。


その後、この小説が書かれました。

高慢と偏見(1)隣は何をする人ぞ
高慢と偏見(2)使徒襲来
高慢と偏見(3)コードレビューは踊る
高慢と偏見(4) 嵐の金曜日
高慢と偏見(5) そして戦いがはじまる
高慢と偏見(6) いつかの誰かのためのドキュメント
高慢と偏見(7) 28日後……
高慢と偏見(8) 敵は身内にもあり
高慢と偏見(9) 誰がスケジュール遅らせた? それはあなたとプロマネは言った
高慢と偏見(10) 夏への扉
高慢と偏見(11) 現実は映画じゃない
高慢と偏見(12) 新人くんのささやかな主張
高慢と偏見(13) 一矢
高慢と偏見(終) エピローグ

大変長い小説で、著者(リーベルG)さんはフィクションと言っていますが、この小説は先の記事に対する程度の低い風刺になっています。

こういうのは捨て置いていたらよいのですが、私も齢40を過ぎ、後輩の方達へきちんと伝えるべきことを伝えたほうがよろしいかと思い何が問題か指摘します。

特定の人物を不当に貶める

一番に聞いてみたいことですが、この小説の著者は名誉棄損または誹謗中傷という言葉を知らないのでしょうか?、この著者(リーベルG)さんはいじめ問題がどのような人間の心理から出てくるかわからないのでしょうか?
もっとも今は何を言われても分からないかもしれません。が、まぁ後10年経てば分かるかもしれません。

高慢と偏見の最終話ですが後半は『実はオブジェクト指向ってしっくりこないんです!。』のパロディと思わせるないようとなっています。

後半の出だしを引用します。

アツコさんから久しぶりにメールが届いた。そこには「面白いもの見つけたよ」とあり、1つのURLが載っていた。

 開いてみるとブログだった。タイトルは、

 「SEのサバイバル入門」

 サブタイトルに「過酷なSE業界を生き延びるノウハウを伝授する」とある。ブロガーは「スリービーチ」。スリービーチ? 3つの浜辺? ひょっとして……

 最新の日記は、

 「オブジェクト指向など、実業務では使いものにならない!」


このタイトル「SEのサバイバル入門」とサブタイトル「過酷なSE業界を生き延びるノウハウを伝授する」は当時の、
みながわさんのコラムのタイトルとサブタイトルのパロディであることが分かるでしょう。
今のみながわさんのコラムのタイトルとサブタイトルは違うものになっていますが、当時のみながわさんのコラムのタイトルとサブタイトルは、こちらで確認できます。

その他の類似例を表にまとめます。
高慢と偏見最終話実はオブジェクト指向ってしっくりこないんです! -本文-
staticを使えば、わざわざインスタンスを作る必要などない「メンバー関数をstatic宣言すればインスタンス宣言をしなくてもいい」ということ知ってからは、メンバー関数を従来のファンクションのように使っている。
独自にクラスを作る必要などない。クラスは使うものだ。作るものではない「自分でクラスを作ってオブジェクト指向っぽいことをしている」なんてことはまったくない。
オブジェクト指向など、実業務では使いものにならない!オブジェクト指向は、結局のところホントにモノ(オブジェクト)に使われている記法、例えばGUI コンポーネント、データベース、ファイルなどであって、プログラムのアルゴリズムとは無関係のものである。
 
高慢と偏見最終話実はオブジェクト指向ってしっくりこないんです! -コメント欄-
私はT大学大学院卒だ私は学部は東北大学で大学院が東工大です。
あなたはSIerだろう。私は客側の人間だ。客の言うことは絶対だ私はIS部門の人間なんです。SIerの客なんですよ。私に嫌われたらどうなりますか?

類似点は他にもあるのですが、これを見れば、「高慢と偏見の最終話」にあるスリーピーチ(三浦さん)のブログのモデルは、『実はオブジェクト指向ってしっくりこないんです!』であり、スリーピーチ(三浦さん)はみながわさんということを示唆していると受け取られても仕方がないでしょう。実際にそのように受け取っている方もいらっしゃいます。
「高慢と偏見の最終話」のコメント欄からいくつか引用してみましょう。

toanna 2011年2月21日 (月) 23:33 (一部引用)
まとめサイトしても読める!!
まとめサイトというのは『実はオブジェクト指向ってしっくりこないんです!』の炎上部分を示唆していると受け取れます。

音速の気功師 2011年2月24日 (木) 01:27 (一部引用)
あれが論外なのは言うまでもない事実です。それは認めます。
あれというのは誰かは指摘しなくても解るでしょう。

通して読みました 2011年8月 9日 (火) 19:04 (一部引用)
ただ、途中からコメント欄に書いてある(ネタバレ?)を
見ていて、純粋に読み物として読んでいて、つまらなくなってしまいました。
内容がコメント欄とかぶってくるのか、単に例の人を貶めるような内容として、
読み進んでしまったのが、自分としての反省です。

さて、このコメントでは『例の人を貶めるような内容として、読み進んでしまったのが』と書かれています。
貶めるというのは、本文中の

たまに別のWebサイトのコメント欄に、オブジェクト指向批判を書くこともあった。当然、技術的な裏付けも何もない、思い込みによる批判だから、正論で完膚なきまでに叩きのめされてしまう。正面から議論を展開できるだけの知識がないから、スリービーチさんにできることは、「その日本語はおかしい」とか「若い人はすぐに感情的になるから議論にならない」などと、負け惜しみを書くことだけだった。

という書き込みの他、

ソースを調査したコンサルティング会社のエンジニアは、あまりに効率の悪い前時代的なコーディングに絶句したらしい。そりゃそうだろう。私だって、事前知識なしであのソースを見たら驚く。

 「時代錯誤も甚だしい」

 「保守性というものをまった考慮していない」

 「最低でも6カ月を要する、根本的な大改造が必要」

 コンサル会社からの報告書には、このような指摘が続々と連なっていたという。調査の過程で、開発方針が途中で大幅に変更された事実も明らかになり、三浦マネージャは連日のように、専務やら常務やらの前で釈明に追われることとなった。平良さんら何人かの常駐メンバーも事情を聞かれたが、三浦マネージャを積極的に擁護しようとする人はいなかったようだ。中には、あからさまに批判するメンバーもいたらしい。

とか、締めの文章

 高学歴で長い経験に自信を持つエンジニアは他人の話を聞かなくなる、というのは広く世に知られた真理の1つである。

 三浦技術担当マネージャは、そのようなエンジニアの生きた見本のような人だった。

とか随所にあります。その他いちいち抜き出すことはしませんが、『高慢と偏見の最終話』の後半部分、『そして数カ月後。』からを読んで頂ければ解るでしょう。

ちなみに文中にあります『ポリモリズム』は『ポリモーフィズム』の間違いです。みながわさんは『実はオブジェクト指向ってしっくりこないんです!』のコメント欄でポリモーフィズムを数回、書き間違えておられました。それをもじったものだと推測されるでしょう。


これでは三浦マネージャ=みながわ氏が成立し、特定の人物を貶める内容になっているのではないでしょうか?

その他の例(ポリモーフィズムの例)

この小説は、他にも『三浦マネージャ=みながわ氏』をうかがわせると思われるエピソードがあります。
高慢と偏見(3)コードレビューは踊る の『List userNameList = new ArrayList();』にまつわる論争部分です。

これは、以下のコメント欄の論争から取られていることがうかがわされるでしょう。

http://el.jibun.atmarkit.co.jp/densol/2010/08/post-8443.html オブジェクト指向。教科書と現実のはざまで
このコラムのコメント欄にみながわさんが書き込んでいますが、いきなりAC/DCさんが、みながわさんを批判し、コラム主から注意を受けています。

さて、みながわさん、AC/DCさんどちらがマナーのある人でしょうか?

もちろんですが、みながわさんがstaticが・・・と言い出したらそのときにまた反論すればよろしいかと思います。

さらにflatlineさんが

>たとえば、Javaで、
>List userNameList = new ArrayList();

とコラムの趣旨とは異なる議論を吹っかけています。
みながさんもこれに対して

>ArrayList list = new ArrayList();
>のように基底クラスを使わない例が一般的です。


と応戦してしまっています。

ここで、この"一般的"の趣旨について補足します。まず
 List userNameList = new ArrayList();
の書き方はjavaが出た当時はある意味画期的だったのですが(当時そういう風に紹介している書籍もあった)、他の言語では、良くない例とされています。根拠は「Effective STL」に書いていますしCMPさんと同名の方や他の方も「高慢と偏見(3)コードレビューは踊る」のコメント欄に同様の趣旨のことを書かれています。要するにArrayListとLinkedListの概念を統合・抽象化(Listインタフェース)しても意味がないのです(ほぼゴミ)。そのような訳でして実は、C++/STLや後から出てきたC#ではみながわさんが言ったような書き方 し か 出来ません。
これに"一般的"という言葉を使うことが適切かどうかという批判はあるかと思いますが、java以外の”一般的な”オブジェクト指向言語という意味ではまぁOKでしょう。

flatlineさんは「一般的です」という断定の言葉尻をとらえるのではなくてみながわさんが言っていることの意味(というかその背景)をもっと深く、理解する必要があります。

このような状況下で、flatlineさん個人の感想として、みながわさんのことを『話を聞かない人』と思うのは構いませんが、客観的にみると?と思うわけです。
もちろん、みながわさんも『C#では一般的』と言えば話が進んだのでもう少しコメントするときに考えて頂ければとは思いました。

そういう意味では『どっちもどっち』ということになります。

以上を踏まえて、「高慢と偏見(3)コードレビューは踊る」を読むと、ものすごい誤解から一方的に書かれていることが分かるかと思います。私には何が面白いのかまったく分かりませんでした。

(主人公目線で)みながわさんがオブジェクト指向が解らないから『ArrayList list = new ArrayList();』と書かれていますが、ちがうことが解りますよね。
ちなみにこの「高慢と偏見(3)コードレビューは踊る」でも、

 「ポリモーフィズムです。ポリモリズムでもポリフォリズムでもありません」

 三浦マネージャの顔色が一瞬変わったが、すぐに薄ら笑いを浮かべた。

とポリモーフィズムの間違いのエピソードが出てきています。



以上、『高慢と偏見』がみながわさんのコラムおよびその他のエンジニアライフのコラムの論争のパロディであることをうかがわせるような内容となっています。
このようなパロディは他にもあり、当時の論争を知らない人にはぱっと見て解らないかと思いますが、『高慢と偏見』の本文とコメント欄をみれば、どういうことが解るかと思います。


エンジニアなら技術的な論争があった場合、あくまでも技術的かつ論理的に反論しましょう。相手が聞く耳を持たないと判断する前にもう一度、ご自身の説得力に問題がないか検証しましょう。論争相手を貶めるようなことはエンジニアとしては慎みたいものです。

2012/11/03 加筆、修正
2012/11/06 修正
2012/11/14 修正 質疑応答をアップしました
2012/11/18 コメント欄での指摘を受け、全面改定
2012/12/02 修正
2016/01/31 関連記事をアップしました
2012-11-01 | コメント:66件
Previous Page | Next Page