<?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/umebayashi/</link><description>雑用系プログラマの趣味とお仕事</description><managingEditor>梅林(umebayashi@wankuma.com)</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>梅林(umebayashi@wankuma.com)</dc:creator><title>6月勉強会発表：テーマは「デザインパターン」</title><link>http://blogs.wankuma.com/umebayashi/archive/2007/05/02/75258.aspx</link><pubDate>Wed, 02 May 2007 02:20:00 GMT</pubDate><guid>http://blogs.wankuma.com/umebayashi/archive/2007/05/02/75258.aspx</guid><wfw:comment>http://blogs.wankuma.com/umebayashi/comments/75258.aspx</wfw:comment><comments>http://blogs.wankuma.com/umebayashi/archive/2007/05/02/75258.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/umebayashi/comments/commentRss/75258.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/umebayashi/services/trackbacks/75258.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://blogs.wankuma.com/naka/archive/2007/05/02/75254.aspx"&gt;中さんのBlogエントリ&lt;/A&gt;で紹介されているとおり、6月の勉強会で初めてスピーカーを務めさせてもらいます。&lt;/P&gt;
&lt;P&gt;テーマは「デザインパターン」。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&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;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;P&gt;デザインパターンといっても、GoF本の23のパターンの全てを一通り解説するというような内容では&lt;/P&gt;
&lt;P&gt;時間的にも広く浅くになってしまうと思うので、同書が挙げるパターンの３つのカテゴリー(生成、構造、振る舞い)のうち&lt;/P&gt;
&lt;P&gt;生成のパターン(Abstract Factory、Builder、Factory Method、Prototype、Singleton)に絞って、コードサンプルのほか&lt;/P&gt;
&lt;P&gt;周辺の技術も含めた話をしてみたいと思っています。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;頑張りますので、応援よろしくお願いします。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/umebayashi/aggbug/75258.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>梅林(umebayashi@wankuma.com)</dc:creator><title>カラダスキャン</title><link>http://blogs.wankuma.com/umebayashi/archive/2007/05/01/75239.aspx</link><pubDate>Tue, 01 May 2007 22:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/umebayashi/archive/2007/05/01/75239.aspx</guid><wfw:comment>http://blogs.wankuma.com/umebayashi/comments/75239.aspx</wfw:comment><comments>http://blogs.wankuma.com/umebayashi/archive/2007/05/01/75239.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/umebayashi/comments/commentRss/75239.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/umebayashi/services/trackbacks/75239.aspx</trackback:ping><description>&lt;P&gt;ここしばらく、環境の変化を言い訳に色んなことをなおざりにしています。&lt;/P&gt;
&lt;P&gt;運動不足もその一つ。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;正月に帰省したときも、親に「あんた太った？」と聞かれました。&lt;/P&gt;
&lt;P&gt;４月の東京勉強会のときは、４次会(５次会だったっけ？)のカラオケでR・田中一郎さんに&lt;/P&gt;
&lt;P&gt;「週に二回は運動しなきゃだめだよー」とありがたいお言葉を頂きました。&lt;/P&gt;
&lt;P&gt;この間は、ひいきにしているクリーニング屋のおばちゃんにまで「太ったんじゃな～い？」と言われました(泣)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;さすがに危機感を感じ、ヨドバシカメラに「カラダスキャン」を買いに行きました。&lt;/P&gt;
&lt;P&gt;スマップの香取くんがCMしてたやつですね。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;早速計ってみると&lt;/P&gt;
&lt;P&gt;・体重：約70kg&lt;/P&gt;
&lt;P&gt;・体脂肪率：20%オーバー&lt;/P&gt;
&lt;P&gt;・BMI：25直前&lt;/P&gt;
&lt;P&gt;はい、認めます。&lt;/P&gt;
&lt;P&gt;肥満に片足と片腕ぐらいは突っ込んでます。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;それ以上にショックだったのが体年齢。&lt;/P&gt;
&lt;P&gt;自分の年齢より7才オーバーでした。&lt;/P&gt;
&lt;P&gt;次の日ランニングシューズとランニングウェアを買いに行きました。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;夏が近い。&lt;/P&gt;
&lt;P&gt;運動不足にご注意を。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/umebayashi/aggbug/75239.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>梅林(umebayashi@wankuma.com)</dc:creator><title>転職しました</title><link>http://blogs.wankuma.com/umebayashi/archive/2007/04/02/69868.aspx</link><pubDate>Mon, 02 Apr 2007 21:48:00 GMT</pubDate><guid>http://blogs.wankuma.com/umebayashi/archive/2007/04/02/69868.aspx</guid><wfw:comment>http://blogs.wankuma.com/umebayashi/comments/69868.aspx</wfw:comment><comments>http://blogs.wankuma.com/umebayashi/archive/2007/04/02/69868.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.wankuma.com/umebayashi/comments/commentRss/69868.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/umebayashi/services/trackbacks/69868.aspx</trackback:ping><description>&lt;P&gt;今日から新しい会社で働くことになりました。&lt;/P&gt;
&lt;P&gt;実はおぎわらさんと同じ会社です。&lt;/P&gt;
&lt;P&gt;(というのは&lt;A href="http://blogs.wankuma.com/ogiogi/archive/2007/01/24/58239.aspx"&gt;このエントリ&lt;/A&gt;で知りました。おぎわらさん、よろしくお願いします。)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;今まで以上にMicrosoftの技術にどっぷり浸かれる会社のようです。&lt;/P&gt;
&lt;P&gt;とりあえずはVBとASP.NETを、仕事で使えるレベルになるよう猛勉強せにゃなりません。&lt;/P&gt;
&lt;P&gt;色々大変ですが、これからが楽しみです。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/umebayashi/aggbug/69868.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>梅林(umebayashi@wankuma.com)</dc:creator><title>SQL ServerとOracle (その1) : DDLとトランザクション</title><link>http://blogs.wankuma.com/umebayashi/archive/2007/02/23/63697.aspx</link><pubDate>Fri, 23 Feb 2007 01:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/umebayashi/archive/2007/02/23/63697.aspx</guid><wfw:comment>http://blogs.wankuma.com/umebayashi/comments/63697.aspx</wfw:comment><comments>http://blogs.wankuma.com/umebayashi/archive/2007/02/23/63697.aspx#Feedback</comments><slash:comments>394</slash:comments><wfw:commentRss>http://blogs.wankuma.com/umebayashi/comments/commentRss/63697.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/umebayashi/services/trackbacks/63697.aspx</trackback:ping><description>&lt;P&gt;最近SQL Server 2005の勉強をしているのですが、今まで仕事で関わってきたOracleと比較すると&lt;/P&gt;
&lt;P&gt;色々異なる点がありそうなので、ネタにしてみようと思います。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;一つ目はDDLとトランザクションの関係について。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DDLとは、表やビュー、ストアドプロシージャなどのデータベース・スキーマオブジェクトを&lt;/P&gt;
&lt;P&gt;新規に作成したり、変更や削除を行うためのSQLコマンドで、例としては&lt;/P&gt;
&lt;P&gt;(表の作成) CREATE TABLE table1 (id INT, value VARCHAR(50))&lt;/P&gt;
&lt;P&gt;(表の変更) ALTER TABLE table1 ADD CONSTRAINT pk_table1 PRIMARY KEY (id)&lt;/P&gt;
&lt;P&gt;(表の削除) DROP TABLE table1&lt;/P&gt;
&lt;P&gt;などが挙げられます。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ここで、トランザクション内でDDLを発行する場合について考えます。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Oracleでは、DDLが発行されるとトランザクションが暗黙でコミットされるため、ロールバックすることができません。&lt;/P&gt;
&lt;P&gt;一方SQL Serverでは、DDLもINSERT/UPDATE/DELETEなどのDMLと同様に、ロールバックすることができるようです。&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;BEGIN TRAN&lt;BR&gt;&amp;nbsp; CREATE TABLE test1(id INT, value VARCHAR(50))&lt;BR&gt;&amp;nbsp; INSERT INTO test1(id, value) VALUES(1, 'Hello World!')&lt;BR&gt;&amp;nbsp; SELECT * FROM test1&lt;BR&gt;ROLLBACK TRAN&lt;BR&gt;go&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;(1 件処理されました)&lt;BR&gt;&amp;nbsp;id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;----------- -------------------------------------------------- &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 Hello World!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;(1 件処理されました)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;SELECT * FROM test1&lt;BR&gt;go&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;メッセージ 208、レベル 16、状態 1、サーバー xxxxx、行 2&lt;BR&gt;オブジェクト名 'test1' が無効です。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Oracle使いからすると意外な機能でした。&lt;/P&gt;
&lt;P&gt;他のデータベースではどうなっているのか気になります。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/umebayashi/aggbug/63697.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>梅林(umebayashi@wankuma.com)</dc:creator><title>WM_PAINTを使ったTextBoxのカスタム描画</title><link>http://blogs.wankuma.com/umebayashi/archive/2007/02/15/62360.aspx</link><pubDate>Thu, 15 Feb 2007 00:03:00 GMT</pubDate><guid>http://blogs.wankuma.com/umebayashi/archive/2007/02/15/62360.aspx</guid><wfw:comment>http://blogs.wankuma.com/umebayashi/comments/62360.aspx</wfw:comment><comments>http://blogs.wankuma.com/umebayashi/archive/2007/02/15/62360.aspx#Feedback</comments><slash:comments>658</slash:comments><wfw:commentRss>http://blogs.wankuma.com/umebayashi/comments/commentRss/62360.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/umebayashi/services/trackbacks/62360.aspx</trackback:ping><description>&lt;P&gt;数日前のえムナウさんのエントリ&lt;A href="http://blogs.wankuma.com/mnow/archive/2007/02/08/61510.aspx"&gt;「TextBoxを自分で描画する」&lt;/A&gt;を読みました。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;TextBoxに入力もしくはデータバインドしたデータを、数値や日付データとして&lt;/P&gt;
&lt;P&gt;フォーマットして表示するという機能は以前から必要としておりまして、これまでは&lt;/P&gt;
&lt;P&gt;Textプロパティをoverrideするという無理やりな方式を採用していました。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;できればTextプロパティはそのままで、表示するデータだけを変えるようにしたいと思っていたので&lt;/P&gt;
&lt;P&gt;これはいい、と早速試してみたのですが、書いてあるとおりSetStyleやRecreateHandleを記述しても&lt;/P&gt;
&lt;P&gt;どうしてもフォーカスがあるときと無いときでフォントの大きさが変わってしまいます。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;色々調べた結果、WM_PAINTメッセージを捕まえてCreateGraphicsで作成したGraphicsオブジェクトに&lt;/P&gt;
&lt;P&gt;文字列の描画を行う方式に落ち着きそうです。&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;namespace Umebayashi.Framework.Windows.Forms&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public partial class UmeTextBox : TextBox&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public UmeTextBox()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private const int WM_PAINT = 0x000F;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override void WndProc(ref Message m)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.WndProc(ref m);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (m.Msg)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case WM_PAINT:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //フォーカスがある状態ではフォーマットしない&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!Focused)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DrawText();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void DrawText()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextFormatFlags tff = TextFormatFlags.VerticalCenter;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (this.TextAlign)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case HorizontalAlignment.Center:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tff |= TextFormatFlags.HorizontalCenter;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case HorizontalAlignment.Left:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tff |= TextFormatFlags.Left;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case HorizontalAlignment.Right:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tff |= TextFormatFlags.Right;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.Multiline)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tff |= TextFormatFlags.WordBreak;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (Graphics g = CreateGraphics())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (Brush backBrush = new SolidBrush(this.BackColor))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //BackColorで背景を塗りつぶす。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //これをしないとフォーマット前後の文字列がダブって表示される。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g.FillRectangle(backBrush, this.ClientRectangle);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DateTime dtVal;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; decimal dcVal;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (DateTime.TryParse(this.Text, out dtVal))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextRenderer.DrawText(g, dtVal.ToString("yyyy/MM/dd"), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Font, this.ClientRectangle, this.ForeColor, tff);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (decimal.TryParse(this.Text, out dcVal))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextRenderer.DrawText(g, dcVal.ToString("#,##0"),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Font, this.ClientRectangle, this.ForeColor, tff);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextRenderer.DrawText(g, this.Text,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Font, this.ClientRectangle, this.ForeColor, tff);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/umebayashi/aggbug/62360.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>梅林(umebayashi@wankuma.com)</dc:creator><title>配列プロパティとインデクサ</title><link>http://blogs.wankuma.com/umebayashi/archive/2007/02/08/61500.aspx</link><pubDate>Thu, 08 Feb 2007 01:07:00 GMT</pubDate><guid>http://blogs.wankuma.com/umebayashi/archive/2007/02/08/61500.aspx</guid><wfw:comment>http://blogs.wankuma.com/umebayashi/comments/61500.aspx</wfw:comment><comments>http://blogs.wankuma.com/umebayashi/archive/2007/02/08/61500.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/umebayashi/comments/commentRss/61500.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/umebayashi/services/trackbacks/61500.aspx</trackback:ping><description>&lt;P&gt;以前のεπιστημηさんの&lt;A href="http://blogs.wankuma.com/episteme/archive/2006/11/17/45942.aspx"&gt;VB嫌い[2]&lt;/A&gt;というエントリーで&lt;BR&gt;VBの引数付きプロパティとC#のインデクサを比較する話がありました。&lt;/P&gt;
&lt;P&gt;Delphiにも配列プロパティというのがありまして、VBの引数付きプロパティと&lt;BR&gt;同じような使い方ができます。(のはず。VB知らないので間違ってたらご指摘ください。)&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
&lt;FONT face="Courier New"&gt;type&lt;BR&gt;&amp;nbsp; TAnimals = class(TObject)&lt;BR&gt;&amp;nbsp; private&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function GetDog(Index: Integer): TDog;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure SetDog(Index: Integer; Value: TDog);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function GetCat(Index: String): TCat;&lt;BR&gt;&amp;nbsp; public&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //ReadWriteプロパティ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; property Dogs[Index: Integer]: TDog read GetDog write SetDog;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //ReadOnlyプロパティ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; property Cats[Index: String]: TCat read GetCat;&lt;BR&gt;&amp;nbsp; end;&lt;BR&gt;&lt;/FONT&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;C#のインデクサと比較しての便利さは、やはりgetterとsetterのメソッドを定義するだけで&lt;BR&gt;使えるところ。&lt;BR&gt;そこで、C#2.0のジェネリックを使って、以下のようなユーティリティクラスを作ってみました。&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
&lt;FONT face="Courier New"&gt;public delegate V ArrayProperty1Get&amp;lt;V, K1&amp;gt;&lt;V,K1&gt;&lt;V, K1&gt;(K1 key1);&lt;BR&gt;public delegate void ArrayProperty1Set&lt;V,K1&gt;&lt;V, K1&gt;&amp;lt;V, K1&amp;gt;(K1 key1, V value);&lt;/FONT&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;public class ReadOnlyArrayProperty1&amp;lt;V, K1&amp;gt;&lt;V,K1&gt;&lt;V, K1&gt;&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; public ReadOnlyArrayProperty1(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayProperty1Get&amp;lt;V, K1&amp;gt;&lt;V,K1&gt;&lt;V, K1&gt; getMethod)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.getMethod = getMethod;&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; private ArrayProperty1Get&amp;lt;V, K1&amp;gt;&lt;V,K1&gt;&lt;V, K1&gt; getMethod;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; public V this[K1 key1]&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return getMethod(key1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;public class ReadWriteArrayProperty1&amp;lt;V, K1&amp;gt;&lt;V,K1&gt;&lt;V, K1&gt;&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; public ReadWriteArrayProperty1(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayProperty1Get&amp;lt;V, K1&amp;gt;&lt;V,K1&gt;&lt;V, K1&gt; getMethod,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayProperty1Set&lt;V,K1&gt;&lt;V, K1&gt;&amp;lt;V, K1&amp;gt; setMethod)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.getMethod = getMethod;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.setMethod = setMethod;&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; private ArrayProperty1Get&amp;lt;V, K1&amp;gt;&lt;V,K1&gt;&lt;V, K1&gt; getMethod;&lt;BR&gt;&amp;nbsp; private ArrayProperty1Set&lt;V,K1&gt;&lt;V, K1&gt;&amp;lt;V, K1&amp;gt; setMethod;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; public V this[K1 key1]&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return getMethod(key1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setMethod(key1, value);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;これを使うと&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
&lt;FONT face="Courier New"&gt;public class Animals&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; public Animals()&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dogs = new ReadWriteArrayProperty1&amp;lt;Dog, int&amp;gt;&lt;DOG, int&gt;&lt;DOG, int&gt;(GetDog, SetDog);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cats = new ReadOnlyArrayProperty1&amp;lt;Cat, string&amp;gt;&lt;CAT, string&gt;&lt;CAT, string&gt;(GetCat);&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; private Dog GetDog(int index)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; private void SetDog(int index, Dog value)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; private Cat GetCat(string index)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; public ReadWriteArrayProperty1&amp;lt;Dog, int&amp;gt;&lt;DOG, int&gt;&lt;DOG, int&gt;&amp;nbsp;Dogs;&lt;BR&gt;&amp;nbsp; public ReadOnlyArrayProperty1&amp;lt;Cat, string&amp;gt;&lt;CAT, string&gt;&lt;CAT, string&gt;&amp;nbsp;Cats;&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;class Program&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; static void Main(string[] args)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Animals animals = new Animals();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; animals.Dogs[0] = new Dog("パトラッシュ");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; animals.Dogs[1] = new Dog("ラッシー");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; animals.Cats["ABC"] = new Cat("たま"); //コンパイルエラー&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;みたいなことができます。&lt;/P&gt;
&lt;P&gt;「インデクスが2つ以上ある場合はど～するんや」と突っ込まれそうですが&lt;BR&gt;その場合はK2、K3、&amp;#8230;と型パラメータを増やしたバージョンを追加します。&lt;/P&gt;
&lt;P&gt;私の経験上、インデクスが4つ以上もあるような配列プロパティには、自社開発の&lt;BR&gt;アプリも含めて出合った記憶がありません。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/umebayashi/aggbug/61500.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>梅林(umebayashi@wankuma.com)</dc:creator><title>渋谷109に</title><link>http://blogs.wankuma.com/umebayashi/archive/2007/01/27/59372.aspx</link><pubDate>Sat, 27 Jan 2007 22:46:00 GMT</pubDate><guid>http://blogs.wankuma.com/umebayashi/archive/2007/01/27/59372.aspx</guid><wfw:comment>http://blogs.wankuma.com/umebayashi/comments/59372.aspx</wfw:comment><comments>http://blogs.wankuma.com/umebayashi/archive/2007/01/27/59372.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/umebayashi/comments/commentRss/59372.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/umebayashi/services/trackbacks/59372.aspx</trackback:ping><description>&lt;P&gt;&lt;IMG alt=SHIBUYA109 src="http://umebayashi.wankuma.com/image/20070127_SHIBUYA109.jpg"&gt;&lt;/P&gt;
&lt;P&gt;なにやら見慣れたロゴが(笑)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;思わずお持ち帰りしてしまいました。&lt;/P&gt;
&lt;P&gt;W-ZERO3で撮ったので(しかも夜)画質とかお話になりませんが。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ちなみに写真からは分からないと思いますが、Vistaロゴの下に&lt;/P&gt;
&lt;P&gt;「次世代OS発売まであとHH:mm:ss」&lt;/P&gt;
&lt;P&gt;と、カウントダウンが表示されていました。&lt;/P&gt;
&lt;P&gt;(私が見たときは残り50時間くらいでした)&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/umebayashi/aggbug/59372.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>梅林(umebayashi@wankuma.com)</dc:creator><title>ふと口走る業界用語</title><link>http://blogs.wankuma.com/umebayashi/archive/2007/01/16/56571.aspx</link><pubDate>Tue, 16 Jan 2007 20:43:00 GMT</pubDate><guid>http://blogs.wankuma.com/umebayashi/archive/2007/01/16/56571.aspx</guid><wfw:comment>http://blogs.wankuma.com/umebayashi/comments/56571.aspx</wfw:comment><comments>http://blogs.wankuma.com/umebayashi/archive/2007/01/16/56571.aspx#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://blogs.wankuma.com/umebayashi/comments/commentRss/56571.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/umebayashi/services/trackbacks/56571.aspx</trackback:ping><description>&lt;P&gt;今日の夕方、夕食をとりに外出したとき&lt;/P&gt;
&lt;P&gt;財布の中に金が無いことに気づき、ふと口走った一言&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;「やべ、ダウンロードしなきゃ」&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;すっかり毒されつつある今日この頃&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/umebayashi/aggbug/56571.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>梅林(umebayashi@wankuma.com)</dc:creator><title>MSDNオフライン　ジーニアス平井登場!(受付中)</title><link>http://blogs.wankuma.com/umebayashi/archive/2007/01/10/55291.aspx</link><pubDate>Wed, 10 Jan 2007 02:36:00 GMT</pubDate><guid>http://blogs.wankuma.com/umebayashi/archive/2007/01/10/55291.aspx</guid><wfw:comment>http://blogs.wankuma.com/umebayashi/comments/55291.aspx</wfw:comment><comments>http://blogs.wankuma.com/umebayashi/archive/2007/01/10/55291.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/umebayashi/comments/commentRss/55291.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/umebayashi/services/trackbacks/55291.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://www.microsoft.com/japan/msdn/events/offline/#23"&gt;&lt;FONT size=2&gt;http://www.microsoft.com/japan/msdn/events/offline/#23&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;早速登録しました。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;平井さんといえば、今年のTech Edの最終日・最終セッションで&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;WPFについての圧倒的に面白いプレゼンをされた方ですね。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;あの時は、マイクロソフトにもこんなすごいエンターテイナーがいるのかと感動してしまいました。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;今回のテーマは「既存アプリケーションのWindows Vista対策」とのことで、Delphi製のC/Sアプリに&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;関わっている自分としても大変興味のあるテーマです。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;MSDNオフラインでは第15回の「CLI の実装手法とビジネスへの応用例」にも参加しました。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;C/C++経験のない自分としては少々敷居の高い内容でしたが、これからもこういったイベントやセミナーに参加し&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;自分の幅を広げていきたいものです。&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/umebayashi/aggbug/55291.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>梅林(umebayashi@wankuma.com)</dc:creator><title>ご挨拶</title><link>http://blogs.wankuma.com/umebayashi/archive/2007/01/10/55274.aspx</link><pubDate>Wed, 10 Jan 2007 01:47:00 GMT</pubDate><guid>http://blogs.wankuma.com/umebayashi/archive/2007/01/10/55274.aspx</guid><wfw:comment>http://blogs.wankuma.com/umebayashi/comments/55274.aspx</wfw:comment><comments>http://blogs.wankuma.com/umebayashi/archive/2007/01/10/55274.aspx#Feedback</comments><slash:comments>22</slash:comments><wfw:commentRss>http://blogs.wankuma.com/umebayashi/comments/commentRss/55274.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/umebayashi/services/trackbacks/55274.aspx</trackback:ping><description>&lt;P&gt;&lt;FONT size=2&gt;はじめまして、梅林と申します。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;横浜在住で、業務用パッケージソフトの開発に携わっているプログラマです。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;わんくまは活気のあるコミュニティとして前から注目しており、&lt;/FONT&gt;&lt;FONT size=2&gt;ここ何度か&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;掲示板などに&lt;/FONT&gt;&lt;FONT size=2&gt;書込みをさせて頂きましたが、この度思い切ってメンバーに&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;加えて頂く事になりました。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;仕事で使うツールはDelphiとOracleが主でしたが、最近は&lt;/FONT&gt;&lt;FONT size=2&gt;Delphi製のアプリをC#で書き直すのが主な仕事です。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Webアプリはいまだに仕事で作ったことがないため、ASP.NETとかAJAXのネタは提供できないかもしれませんが&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Windows Formsやデータベース、その他歴史の闇に消えつつある(笑)Delphiのネタなどを中心に&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;つらつらと書き込んでいきたいと思います。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;どうか皆様、よろしくお願いします。&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/umebayashi/aggbug/55274.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>