<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>設計手法</title><link>http://blogs.wankuma.com/myugaru/category/1698.aspx</link><description>設計手法</description><managingEditor>myugaru (myugaru@wankuma.com)</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>myugaru (myugaru@wankuma.com)</dc:creator><title>[C#]自動プロパティの必要性（その２）</title><link>http://blogs.wankuma.com/myugaru/archive/2008/03/31/130645.aspx</link><pubDate>Mon, 31 Mar 2008 11:08:00 GMT</pubDate><guid>http://blogs.wankuma.com/myugaru/archive/2008/03/31/130645.aspx</guid><wfw:comment>http://blogs.wankuma.com/myugaru/comments/130645.aspx</wfw:comment><comments>http://blogs.wankuma.com/myugaru/archive/2008/03/31/130645.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/myugaru/comments/commentRss/130645.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/myugaru/services/trackbacks/130645.aspx</trackback:ping><description>&lt;P&gt;&lt;A id=_1f286495b38c8b30_HomePageDays_DaysList__ctl0_DayItem_DayList__ctl0_TitleUrl href="/myugaru/archive/2008/03/31/130626.aspx" addEventLogcatcher="true"&gt;&lt;FONT color=#000080&gt;[C#]自動プロパティの必要性&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;ちょっと私の知識不足が補われたところなので忘れないように整理します。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;１．バイナリ互換主張派vsソース互換主張派&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;アセンブリ分割を考慮するとフィールド公開されたものを後からプロパティ公開に変えることができない、ということですね。&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;（追：プロパティを期待するリフレクションがフィールドを期待するそれより多いという意見をシャノンさんに頂きました。・・・深すぎて、そろそろめまいがしてきた（と中途半端に逃げる・・・））&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;これについては中さんのような「ソース互換主張派」がいらっしゃいます。&lt;/P&gt;
&lt;P&gt;私もなんとなくソース互換寄りかもしれません。&lt;/P&gt;
&lt;P&gt;むしろ今のところ遊びでC#やっていますのでDLL分割して片方だけコンパイルするって状況にはなりにくいです。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;２．setter privateで読み取り専用プロパティ派vs readonlyで読み取り専用プロパティ派&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;読み取り専用プロパティをどう扱うかで状況は変わると思いますので対決しちゃうのは無理があるかも知れません。私はなんとなくreadonlyにしておいて、コンストラクタで初期値設定するほうが読み取り専用を強調してるようで好きです。&lt;/P&gt;
&lt;P&gt;それと別ですが、&lt;/P&gt;
&lt;P&gt;【A】public int Width { get; private set; }&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;となっているくらいならば、&lt;/P&gt;
&lt;P&gt;【B】private int _Width; &lt;/P&gt;
&lt;P&gt;public int Width { get { return _Width; } }&lt;/P&gt;
&lt;P&gt;としちゃうほうが私は好きです。&lt;/P&gt;
&lt;P&gt;というよりも「設計の最初っからリードオンリーなんだよっ」ってプロパティ作ることってそんなに多いですか？？&lt;/P&gt;
&lt;P&gt;「最初はプライベート→あとからやっぱり公開」の状況のほうが私には多かった気がします。例を挙げれば継承されたクラスのプライベートメンバーをやっぱり公開しよう、とかそういうやつです。なのでそういう意味でも【B】にするケースが私の中では多いように思います。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;●めげずに結論言っちゃうぞ&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;前エントリーと同じですが・・・やっぱ私には自動プロパティの必要性は相当ひくいって事になりそうです。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/myugaru/aggbug/130645.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>myugaru (myugaru@wankuma.com)</dc:creator><title>[C#]自動プロパティの必要性</title><link>http://blogs.wankuma.com/myugaru/archive/2008/03/31/130626.aspx</link><pubDate>Mon, 31 Mar 2008 09:49:00 GMT</pubDate><guid>http://blogs.wankuma.com/myugaru/archive/2008/03/31/130626.aspx</guid><wfw:comment>http://blogs.wankuma.com/myugaru/comments/130626.aspx</wfw:comment><comments>http://blogs.wankuma.com/myugaru/archive/2008/03/31/130626.aspx#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blogs.wankuma.com/myugaru/comments/commentRss/130626.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/myugaru/services/trackbacks/130626.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://blogs.wankuma.com/torikobito/archive/2008/03/31/130580.aspx"&gt;C# 使ってる人、自動プロパティってどうなんですか？&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;土日は丸々新作ゲームでつぶしてしまったmyugaruです＾＾；おはようございます。&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000 size=1&gt;追記：赤字で色々追加しております。結局このエントリー自体が無意味になりつつありますが、私のようにDLL分割しない場合、コンストラクタでフィールド初期化しますよ、って場合は有効だと弱く主張したいと思います・・。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;追記：中さんは私の元意見に賛同だそうです。ちょっとだけ強気になれそうなmyugaruでした＾＾テヘ&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;追記：ごちゃごちゃしてきたのでまとめなおしています→&lt;A href="http://blogs.wankuma.com/myugaru/archive/2008/03/31/130645.aspx" addEventLogcatcher="true"&gt;[C#]自動プロパティの必要性（その２）&lt;/A&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;本題。&lt;/P&gt;
&lt;P&gt;【１】public int Width { get; set; }&lt;BR&gt;【２】public int Width { get; private set; }&lt;BR&gt;【３】public int Width { private get; set; }&lt;/P&gt;
&lt;P&gt;まず【１】は&lt;/P&gt;
&lt;P&gt;【１'】public int Width;&lt;/P&gt;
&lt;P&gt;と同義である。同義なら短い【１'】を使う。&lt;FONT color=#ff0000&gt;（←同義ではありませんでした。まとめなおした方をご覧ください）&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;次に【２】は&lt;/P&gt;
&lt;P&gt;【２'】public readonly int Width;&lt;/P&gt;
&lt;P&gt;と&lt;FONT color=#ff0000&gt;コンストラクタで初期値を設定するのなら&lt;/FONT&gt;同義である。同義&lt;FONT color=#ff0000&gt;として使う場合&lt;/FONT&gt;なら短い【２'】を使う。&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;（追記訂正：↑【２】と【２'】は同義ではありませんでした。オノデラさんのコメント参照ください。オノデラさんありがとうございました。）&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;最後に【３】。書き込み専用プロパティ（＠＠；）？&lt;BR&gt;これの必要な場面に未だかつて出くわした事がない。&lt;BR&gt;こういう例があるよ、とコメントに書かれそうですが、&lt;BR&gt;プロパティで実装するなら読み取れるべきです。&lt;BR&gt;書き込み専用になる必要性があるならインターフェースとしてメソッドを公開すべきです。&lt;BR&gt;「そうじゃない」と自信を持って反論のある方にはぜひ説得力あるコメントをいただきたいですが、&lt;BR&gt;仮にじゃあそんな説得力ある反論があるとすれば、&lt;BR&gt;C#言語開発者レベルの人がそれを見逃すとは考えられません。&lt;BR&gt;それともそのうちwriteonlyというキーワードが増えるんでしょうか？&lt;/P&gt;
&lt;P&gt;【１】や【２】をたとえば単純な参照では無いプロパティに将来置き換える可能性がある、&lt;BR&gt;という反論をする人もいるかと思いますが、&lt;BR&gt;【１'】や【２'】を書いておいてその単純参照じゃないコードに書き直す手間とどっちが多いですか？&lt;BR&gt;具体的には以下の【４】のようなコードへです。&lt;/P&gt;
&lt;P&gt;【４】&lt;BR&gt;private int _Width;&lt;BR&gt;public int Width { get { return _Width; } set { _Width = value; } }&lt;/P&gt;
&lt;P&gt;頭で考えてるだけじゃなく手で実際にやってみることをお勧めします。&lt;BR&gt;【１】や【２】にしたところで【４】にするための追加コード量は圧倒的に多くなんらメリットを感じません。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;●結論&lt;BR&gt;&lt;/STRONG&gt;自動プロパティは当面、私には全く不要な機能です。&lt;BR&gt;私に説得力ある自動プロパティの良さを教えてくださる方がいれば遠慮なくコメントください。&lt;FONT color=#ff0000&gt;（↓もう来ちゃいましたね；；）&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;●書き込んで30分で抗議のお便り&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;が（＾＾；&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;アセンブリ分割してリンクするような場合、最初にフィールド公開しちゃうと後でプロパティ化できないと抗議のめーるが某身内の方から寄せられました（しかも&lt;STRONG&gt;携帯メール&lt;/STRONG&gt;へ＾＾；；；）&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;おっしゃるとおりです。私が悪かった・・・。だって私そんなアセンブリDLL分割するような規模の開発したことねーんだよっっ！（負け惜しみにもなってないorz）&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/myugaru/aggbug/130626.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>myugaru (myugaru@wankuma.com)</dc:creator><title>[C#][VB.NET] コーディング標準.PDF</title><link>http://blogs.wankuma.com/myugaru/archive/2008/03/24/129407.aspx</link><pubDate>Mon, 24 Mar 2008 20:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/myugaru/archive/2008/03/24/129407.aspx</guid><wfw:comment>http://blogs.wankuma.com/myugaru/comments/129407.aspx</wfw:comment><comments>http://blogs.wankuma.com/myugaru/archive/2008/03/24/129407.aspx#Feedback</comments><slash:comments>87</slash:comments><wfw:commentRss>http://blogs.wankuma.com/myugaru/comments/commentRss/129407.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/myugaru/services/trackbacks/129407.aspx</trackback:ping><description>&lt;P&gt;ずいぶん前にC#コーディング標準のPDFがあるのを見つけたのだが、&lt;/P&gt;
&lt;P&gt;昨日VB.NETバージョンを見つけた。忘れないようにエントリー。&lt;/P&gt;
&lt;P&gt;著者のお二人に敬意を表したいと思います。ありがとうございました。&lt;/P&gt;
&lt;P&gt;C#コーディング標準（(C) Copyright 2002 河端善博）&lt;BR&gt;&lt;A href="http://www.kawabata.com/dotnet/CodingStdCS.pdf" target=_blank&gt;http://www.kawabata.com/dotnet/CodingStdCS.pdf &lt;/A&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;VB.NET コーディング標準（(C) Copyright 2002 太陽システム(株)中西庸文）&lt;BR&gt;&lt;A href="http://www.objectclub.jp/community/codingstandard/CodingStdVB.pdf" target=_blank&gt;http://www.objectclub.jp/community/codingstandard/CodingStdVB.pdf &lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;3/25 追記&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;じゃんぬねっとさんによると「Microsoft が推奨するガイドラインに違反している箇所が多い」&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;そうです。利用程度の判断はそれを踏まえて各自の責任でお願いいたします。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#9acd32&gt;追記２&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.wankuma.com/hatsune/archive/2008/03/25/129488.aspx" target=_blank&gt;&lt;FONT color=#9acd32&gt;MSDNにあるガイドライン&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#9acd32&gt; （はつねさんより）&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ffa500&gt;追記３&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ffa500&gt;よねけんさんによると「（中略）今となっては十分な内容ではない」そうです。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ffa500&gt;確かに2002年に書かれている文献ですので現在のC#やVB.NETにはそぐわない規則、&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ffa500&gt;足りない規則が多々あると思われます。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#800080&gt;追記４&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#800080&gt;じゃんぬねっとさんによるとMicrosoftのガイドラインも参考程度が良いようです。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/myugaru/aggbug/129407.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>myugaru (myugaru@wankuma.com)</dc:creator><title>委譲というのは２通りあります～私の理解した答っぽいもの</title><link>http://blogs.wankuma.com/myugaru/archive/2008/03/24/129393.aspx</link><pubDate>Mon, 24 Mar 2008 18:37:00 GMT</pubDate><guid>http://blogs.wankuma.com/myugaru/archive/2008/03/24/129393.aspx</guid><wfw:comment>http://blogs.wankuma.com/myugaru/comments/129393.aspx</wfw:comment><comments>http://blogs.wankuma.com/myugaru/archive/2008/03/24/129393.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/myugaru/comments/commentRss/129393.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/myugaru/services/trackbacks/129393.aspx</trackback:ping><description>&lt;P&gt;&lt;STRONG&gt;●前エントリー&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A id=_17a5446777f337e0_HomePageDays_DaysList__ctl1_DayItem_DayList__ctl0_TitleUrl href="/myugaru/archive/2008/03/23/129186.aspx" addEventLogcatcher="true"&gt;&lt;FONT color=#000080&gt;多重継承をコンポーネント技術で考える&lt;/FONT&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A id=_17a5446777f337e0_HomePageDays_DaysList__ctl0_DayItem_DayList__ctl1_TitleUrl href="/myugaru/archive/2008/03/24/129263.aspx" addEventLogcatcher="true"&gt;&lt;FONT color=#000080&gt;多重継承を前提に考えなければ・・・&lt;/FONT&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;●元ネタ&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.wankuma.com/nagise/archive/2008/03/21/129008.aspx" target=_blank addEventLogcatcher="true"&gt;&lt;FONT color=#000080&gt;実装を委譲できる言語を作ればいいのかもしれない&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;●大元のネタ&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://d.hatena.ne.jp/m-hiyama/20080304/1204615775"&gt;http://d.hatena.ne.jp/m-hiyama/20080304/1204615775&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;（↑の檜山さんの方で何か動きがあるようです。明日以降にエントリーするとかしないとか・・・。楽しみですね）&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;●まず委譲というのは２通りあります&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE class=syntax-highlight&gt;&lt;SPAN class=synType&gt;class&lt;/SPAN&gt; A
{
    &lt;SPAN class=synStatement&gt;public&lt;/SPAN&gt; event EventHandler MouseClick;
    &lt;SPAN class=synStatement&gt;public&lt;/SPAN&gt; &lt;SPAN class=synType&gt;void&lt;/SPAN&gt; OnMouseClick()
    {
        &lt;SPAN class=synStatement&gt;if&lt;/SPAN&gt; (MouseClick != null) {
            MouseClick(&lt;SPAN class=synStatement&gt;this&lt;/SPAN&gt;, &lt;SPAN class=synStatement&gt;new&lt;/SPAN&gt; EventArgs());
        }
    }
}
    
&lt;SPAN class=synType&gt;class&lt;/SPAN&gt; B
{
    A a = &lt;SPAN class=synStatement&gt;new&lt;/SPAN&gt; A();
    
    &lt;SPAN class=synStatement&gt;public&lt;/SPAN&gt; B()
    {
        a.MouseClick += &lt;SPAN class=synStatement&gt;new&lt;/SPAN&gt; EventHandler(MouseClick);
    }
    
    &lt;SPAN class=synStatement&gt;public&lt;/SPAN&gt; &lt;SPAN class=synType&gt;void&lt;/SPAN&gt; MouseClick(object sender, EventArgs e)
    {
        Console.WriteLine(&lt;SPAN class=synConstant&gt;"マウスが押されました"&lt;/SPAN&gt;);
    }
}
    
&lt;SPAN class=synType&gt;class&lt;/SPAN&gt; C
{
    B b = &lt;SPAN class=synStatement&gt;new&lt;/SPAN&gt; B();
    
    &lt;SPAN class=synStatement&gt;public&lt;/SPAN&gt; &lt;SPAN class=synType&gt;void&lt;/SPAN&gt; MouseClick()
    {
        b.MouseClick(&lt;SPAN class=synStatement&gt;this&lt;/SPAN&gt;, &lt;SPAN class=synStatement&gt;new&lt;/SPAN&gt; EventArgs());
    }
}
&lt;/PRE&gt;
&lt;P&gt;上のコードでクラスＡもクラスＣもクラスＢへ処理を委譲しています。&lt;BR&gt;処理を自分ではなく相手にゆだねるというのが委譲の仕組みです。&lt;BR&gt;インスタンスが必ず関与します。&lt;BR&gt;ただし含まれる方が委譲しているのか委譲されているのかというのは&lt;BR&gt;上記でわかるようにどちらも実現が可能です。&lt;BR&gt;&lt;STRONG&gt;&lt;FONT size=4&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;●凪瀬さんと私の会話での委譲&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;私は凪瀬さんはクラスＣを想定していると考えました。&lt;BR&gt;私はこのクラスＡの形を私はコンポーネントであると言いました。&lt;BR&gt;そして、よりＩＤＥにサポートされているクラスＡを推しました。&lt;BR&gt;この時点で実はコンポーネントが委譲であると気付いていませんでした。&lt;BR&gt;ついさっきふっと気が付きこのエントリーを書くに至りました。&lt;BR&gt;どちらも委譲であったために技術的に交換が可能だったわけです。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;●ダイアモンド継承&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;ここでダイアモンド継承を考えます。&lt;/P&gt;&lt;PRE&gt;class A { Aの部分 }

　　
class B1 : A { Aの部分+B1の追加部分 }
　　

class B2 : A { Aの部分+B2の追加部分 }
　　

class C : B1, B2 { Aの部分+B1の追加部分+B2の追加部分 }
&lt;/PRE&gt;
&lt;P&gt;ここで示したダイアモンド継承のクラスＣの中にＡの部分は１つしかありません。&lt;BR&gt;私は前エントリーでこのクラスＣの中にAの部分が２つ含まれると勘違いしました。&lt;BR&gt;それは委譲で表現するという事から考えたためでした。&lt;BR&gt;委譲というのは先に言ったように２通り書けますが、どちらもかならずインスタンスを介する技術だからです。&lt;BR&gt;この場合ですとＢ１とＢ２のインスタンスが必要になり、どちらのインスタンスにもＡの部分は含まれます。 &lt;BR&gt;本来のダイアモンド継承はインスタンスを介さない&lt;STRONG&gt;継承でしか作り得ない技術なのです。&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;●凪瀬さんの考える委譲とは&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;それでも凪瀬さんが委譲でなんとかできるという理由がなんとなくわかりました。&lt;BR&gt;凪瀬さんはさらにこのダイアモンド継承の図の最後のクラスから外向けのインターフェースを&lt;BR&gt;指して委譲で実現できるとおっしゃっているように思いました。 &lt;BR&gt;すなわち&lt;/P&gt;&lt;PRE&gt;class C : B1, B2
{
    B1 b1;
    B2 b2;
    
    public FuncA()
    {
        b1.FuncA();
    }
}&lt;/PRE&gt;
&lt;P&gt;ここでFuncAはクラスAに含まれるメソッドです。&lt;BR&gt;ここではb1とb2という２つのインスタンスがありメモリ上のＡの部分は両方に存在します。&lt;BR&gt;しかしＣというクラスを外から見るとクラスＣのpublicなFuncAというメソッドは一つです。&lt;BR&gt;そしてこのFuncAがb1かb2のどちらのFuncAを呼び出すかは自由だと言うことだと思いました。&lt;BR&gt;&lt;STRONG&gt;メモリイメージが２つあるというのは論点ではなく、Ｃから外向きインターフェース上のAの部分が一つになるように委譲でも表現可能であるという意味&lt;/STRONG&gt;だと捉えました。&lt;/P&gt;
&lt;P&gt;凪瀬さんこれで正解でしょうか？&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/myugaru/aggbug/129393.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>myugaru (myugaru@wankuma.com)</dc:creator><title>XP精神を思い出した</title><link>http://blogs.wankuma.com/myugaru/archive/2008/03/24/129310.aspx</link><pubDate>Mon, 24 Mar 2008 12:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/myugaru/archive/2008/03/24/129310.aspx</guid><wfw:comment>http://blogs.wankuma.com/myugaru/comments/129310.aspx</wfw:comment><comments>http://blogs.wankuma.com/myugaru/archive/2008/03/24/129310.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/myugaru/comments/commentRss/129310.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/myugaru/services/trackbacks/129310.aspx</trackback:ping><description>&lt;P&gt;XPといってもOSのことじゃあなくってeXtreme Programmingのことです。&lt;/P&gt;
&lt;P&gt;ここ最近プログラミングで壁にぶち当たっていたのですが、&lt;/P&gt;
&lt;P&gt;あっそうだ、と思い出して&lt;/P&gt;
&lt;P&gt;うちにあったXP関係の本とか読んでいました。&lt;/P&gt;
&lt;P&gt;なんかすごく元気になりました（笑&lt;/P&gt;
&lt;P&gt;本を買ったときは適当に読んでしまっていました。&lt;/P&gt;
&lt;P&gt;すごくもったいない事してました。&lt;/P&gt;
&lt;P&gt;それにしても手法とかコードの美しさにばかり気を取られてましたねえ。&lt;/P&gt;
&lt;P&gt;あんまり気合入れて最初にがっちり作ろうとせず、&lt;/P&gt;
&lt;P&gt;肩から力を抜いて、とりあえず作ってみて、んでリファクタリング、ですね。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/myugaru/aggbug/129310.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>myugaru (myugaru@wankuma.com)</dc:creator><title>何も言えなくて・・・夏～UMLをとりあえず発明しかけた（汗）</title><link>http://blogs.wankuma.com/myugaru/archive/2008/03/14/127754.aspx</link><pubDate>Fri, 14 Mar 2008 20:21:00 GMT</pubDate><guid>http://blogs.wankuma.com/myugaru/archive/2008/03/14/127754.aspx</guid><wfw:comment>http://blogs.wankuma.com/myugaru/comments/127754.aspx</wfw:comment><comments>http://blogs.wankuma.com/myugaru/archive/2008/03/14/127754.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/myugaru/comments/commentRss/127754.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/myugaru/services/trackbacks/127754.aspx</trackback:ping><description>&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=4&gt;●ドキュメント化不要？&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;私はC#のプログラムを作るときには、いきなりコンパイラのエディタに向かってがしがし書いてます。&lt;BR&gt;ずいぶん前に使っていたUNIX-Cの時にはさすがにいきなりはプログラムを作れなかったので、ある程度はテキストとして仕様書など書いたりしていました。&lt;BR&gt;あの頃を思い返せば最近のプログラミング環境は本当に素晴らしいなと感じます。&lt;/P&gt;
&lt;P&gt;さくさく作れるのは主に２つの素晴らしい技術があるからです。&lt;/P&gt;
&lt;P&gt;１つ目はOOP(オブジェクト指向プログラミング)の絶大パワー。&lt;BR&gt;オブジェクトとしてクラスにまとめ、プロパティやらメソッドを実装してNewする。&lt;BR&gt;そういう部品をどんどん作っていく作業、さらにその部品を組み合わせる作業の２フェーズでとても複雑な仕事も簡単にプログラムに表現できてしまいます。&lt;/P&gt;
&lt;P&gt;２つ目にIDE(統合開発環境)の絶大パワー。&lt;BR&gt;コードを書くときにほとんど識別子は頭文字一つとタブキーあるいはデリミターとなる記号の入力。これだけで勝手に入力が完成します。&lt;BR&gt;さらにほどよく自動整形されます。&lt;BR&gt;これのおかげでいくらでも長い識別子を作ることも平気になりました。&lt;BR&gt;昔はコード入力の労力を極力省くために&amp;#8221;大域的な識別子ほど短く&amp;#8221;みたいなダメダメっぽいスタイルでもやっていました（汗）。&lt;BR&gt;もちろんソースは可読性が下がりましたし今思うと本当に非生産的だったと思います。&lt;/P&gt;
&lt;P&gt;ほかにも仕様書要らずの理由は&lt;BR&gt;「一人で作っているからドキュメントでの他者との疎通なんていらない」&lt;BR&gt;とか思っています。・・・いや「いました。」&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=4&gt;
&lt;HR id=null&gt;
●苦しくなってきた&lt;/FONT&gt;&lt;/STRONG&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;・・・といった具合に仕様書要らずの楽々環境を手にした私。&lt;BR&gt;なるべく汎用的なゲーム製作用ライブラリを構築しようと&lt;BR&gt;これまでやったことが無いくらいにかなり大掛かりな構想を練って、&lt;BR&gt;どんどんクラスを量産している日々でした。&lt;BR&gt;それがだんだん非常に具合が悪くなってきたのです。&lt;BR&gt;なんだか自分のプログラムを把握しきれなくなくなっているのです。&lt;BR&gt;例えば同じようなクラスがごちゃごちゃ出来て整理がしきれなくなっています。&lt;BR&gt;同じような、なら良いですがうっかり全く同じクラスを作りかねない状況です。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=4&gt;
&lt;HR id=null&gt;
●初めて出くわした問題&lt;/FONT&gt;&lt;/STRONG&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;私は難題に出くわしたら&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;STRONG&gt;・ステップ１ Google先生とがんばる&lt;BR&gt;・ステップ２ それでダメなら誰かに聞く&lt;FONT color=#ff0000&gt;（※１）&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;の２ステップで大丈夫、みたいなエントリーを前に書きました。&lt;/P&gt;
&lt;P&gt;&lt;A id=ArchiveMonth.ascx_Days_Entries__ctl14_TitleUrl href="/myugaru/archive/2008/03/08/126848.aspx" addEventLogcatcher="true"&gt;&lt;FONT color=#000080&gt;Google先生だけでがんばる（その１）&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A id=ArchiveMonth.ascx_Days_Entries__ctl13_TitleUrl href="/myugaru/archive/2008/03/08/126876.aspx" addEventLogcatcher="true"&gt;&lt;FONT color=#000080&gt;Google先生と一緒にがんばる（その２）&lt;/FONT&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;でも１と２だけじゃあどうしようも無い問題もあることに初めて気付きました。&lt;/P&gt;
&lt;P&gt;「自分で解決が十分に出来る範囲にあるのにどうしても解決できない」&lt;/P&gt;
&lt;P&gt;のです。&lt;BR&gt;・・・本当にどうしたらいいのでしょうか？&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;※１：ImageUtils画像処理ライブラリの作者でもあるjunkiさんには、このところかなり甘え気味かも知れないなと反省しています。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=4&gt;
&lt;HR id=null&gt;
●あわや車輪の再発明&lt;/FONT&gt;&lt;/STRONG&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;自分の問題点は何だろう？何がまずいのだろう？&lt;BR&gt;なんともモヤモヤした気分がずっと続いていました。&lt;BR&gt;いや、おぼろげにドキュメント化がキーワードかなあとか思って&lt;BR&gt;やみくもにGoogle先生に聞こうともしたのですが、&lt;BR&gt;なかなか思うような答えにたどり着けません。困り果てました。&lt;/P&gt;
&lt;P&gt;実はかれこれ半月以上は悶々としてたのです。&lt;BR&gt;そしてふいにＵＭＬにたどり着いたのです。&lt;BR&gt;自力で既存の車輪を見つけられたのはある種の奇跡です。&lt;BR&gt;あと少し遅かったら・・・&lt;BR&gt;&lt;A class=l onmousedown="return clk('http://ja.wikipedia.org/wiki/%E8%BB%8A%E8%BC%AA%E3%81%AE%E5%86%8D%E7%99%BA%E6%98%8E','','','res','1','&amp;amp;sig2=Fa8lreKiLh3iX2y69w6e7Q')" href="http://ja.wikipedia.org/wiki/%E8%BB%8A%E8%BC%AA%E3%81%AE%E5%86%8D%E7%99%BA%E6%98%8E" target=_blank&gt;&lt;FONT color=#551a8b&gt;&lt;B&gt;車輪の再発明&lt;/B&gt; - Wikipedia&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;(o；ω；o)&lt;BR&gt;&lt;EM&gt;&lt;FONT color=#0000ff&gt;四角い車輪の再発明 "en:reinventing the square wheel" &lt;BR&gt;「車輪の再発明」をしようとしてさらに役に立たないものを作ってしまうこと。&lt;BR&gt;&lt;/FONT&gt;&lt;/EM&gt;・ﾟﾟ・（/□＼*）・ﾟﾟ・&lt;/P&gt;
&lt;P&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;
&lt;HR id=null&gt;
●技術って勉強するためじゃなく使うためにあるんだね&lt;/STRONG&gt;&lt;/FONT&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;ＵＭＬという言葉はネットでプログラムの情報とか見たりするたびに、&lt;BR&gt;あるいはわんくま同盟の多くの方のエントリーアーカイブにも見かけました。&lt;BR&gt;いつも近くにあったと思います。&lt;BR&gt;でも具体的にこういうところで使う技術だというのは気が付いていませんでした&lt;BR&gt;そして自分がそういう窮地に陥るというのも考えていませんでした。&lt;BR&gt;気分はまさにJ-WALK&lt;FONT color=#ff0000&gt;（※２）&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;考えたら必要も無いのにエントリー立てたりしませんよね。&lt;BR&gt;それはつまり現実のＳＥの人たちが常にこの問題に直面していることを物語っていたのですね。&lt;BR&gt;言い忘れてたかも知れませんが私は今を生きるＳＥでも何でも無いです。&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;（※２）&lt;/FONT&gt;&lt;A href="http://music.yahoo.co.jp/shop/p/53/11579/Y003959"&gt;&lt;FONT color=#ff0000&gt;http://music.yahoo.co.jp/shop/p/53/11579/Y003959&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=4&gt;
&lt;HR id=null&gt;
●そうと決まればさっさと始めよう&lt;/FONT&gt;&lt;/STRONG&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;今はとりあえず以下のページから勉強を始めました。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://mamezou.net/modules/xfsection/index.php?category=2&amp;amp;start=10&amp;amp;orderby=weight"&gt;http://mamezou.net/modules/xfsection/index.php?category=2&amp;amp;start=10&amp;amp;orderby=weight&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.objectclub.jp/technicaldoc/uml/"&gt;http://www.objectclub.jp/technicaldoc/uml/&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.asahi-net.or.jp/~DP8T-ASM/java/uml/index.html"&gt;http://www.asahi-net.or.jp/~DP8T-ASM/java/uml/index.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;良さそうなアプリも見つけました。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://journal.mycom.co.jp/news/2006/05/23/341.html"&gt;http://journal.mycom.co.jp/news/2006/05/23/341.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=4&gt;
&lt;HR id=null&gt;
●勝手なまとめ&lt;/FONT&gt;&lt;/STRONG&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;今回は私には使える道具が少なかったのが問題だったと判明しました。&lt;BR&gt;ＵＭＬだけが回答じゃないような気もしています。&lt;BR&gt;でも、まずはＵＭＬで少し自分の把握できる範囲が広がりそうに思いました。&lt;/P&gt;
&lt;P&gt;本当はわんくま同盟に居てこんなエントリー書いてたら相当恥ずかしいのは承知しています。&lt;BR&gt;ですが私のように同じ様にハマる人は世の中に私だけじゃないと思うんです。&lt;BR&gt;私はわんくま同盟のほかの人のように難しいことは書けないので、&lt;BR&gt;そういうハマる人たちと同じ立場で色々と体験談を残しておいて、&lt;BR&gt;Google先生がいつか誰かのために役立ててくれる事に期待しようと思います。&lt;/P&gt;
&lt;P&gt;それにしても我流独学ってのは引率の先生の居ない児童のようなものです。&lt;BR&gt;自分で言うのもアレですがとても危なっかしいです。&lt;BR&gt;私はほかにも色々当たり前のことに気づいて無いと思うので、&lt;BR&gt;もし危なっかしく車道を歩いているのを見かけたなら、&lt;BR&gt;いつでも遠慮なくクラクションを鳴らしてもらえると助かります（汗&lt;BR&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;今回はいっぱい突っ込みコメントがありそうでちょっと怖い・・・&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/myugaru/aggbug/127754.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>