<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>system-enablers日記</title>
	<atom:link href="http://www.system-sekkei.com/yamauchi/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.system-sekkei.com/yamauchi</link>
	<description>RDRA/ドメイン駆動設計(DDD)/ICONIXでDomainをEnableにしよう</description>
	<pubDate>Mon, 07 Mar 2011 14:08:56 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>ja</language>
			<item>
		<title>Amazon EC2 東京Region使ってみました</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=454</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=454#comments</comments>
		<pubDate>Mon, 07 Mar 2011 14:08:56 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[クラウド]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=454</guid>
		<description><![CDATA[Amazon EC2東京Regionを使ってみました。
使い方は今までと何も変わりません。Regionに東京が増えただけ。
AMIの品揃えもシンガポールをあまり変わらないと思います。日本語Windowsサーバなんかもあり ]]></description>
			<content:encoded><![CDATA[<p>Amazon EC2東京Regionを使ってみました。</p>
<p>使い方は今までと何も変わりません。Regionに東京が増えただけ。</p>
<p>AMIの品揃えもシンガポールをあまり変わらないと思います。日本語Windowsサーバなんかもあります。</p>
<p>ただ違うのはスピード。レイテンシーは全然違う。計ったわけではありませんが、</p>
<p>普段使っているＩＤＣと体感上何も変わりません。</p>
<p>シンガポールが出たときもかなり速いと思いましたが、東京Regionはやっぱり違う。</p>
<p>今ならまだドル建てなので、多少安めの料金で使えるような気がします。円建てになると、少し料金上がるんじゃないですかね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=454</wfw:commentRss>
		</item>
		<item>
		<title>サーバを入れ替えました</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=451</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=451#comments</comments>
		<pubDate>Mon, 20 Dec 2010 01:03:51 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[雑記]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=451</guid>
		<description><![CDATA[長年動作させていたサーバが壊れそうになったので、準備していたサーバに入れ替えました。
今回のはちゃんとしたサーバなのでかなりパワフル。OSも64ビットに入れ替えて64ビット動作にしました。
前のサーバは秋葉原の路地で安価 ]]></description>
			<content:encoded><![CDATA[<p>長年動作させていたサーバが壊れそうになったので、準備していたサーバに入れ替えました。</p>
<p>今回のはちゃんとしたサーバなのでかなりパワフル。OSも64ビットに入れ替えて64ビット動作にしました。</p>
<p>前のサーバは秋葉原の路地で安価に手に入れたものだったのですが、よく５年以上も持ちました。よくがんばりました。</p>
<p>あ、この書き込みも実は移行テストを兼ねています（笑）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=451</wfw:commentRss>
		</item>
		<item>
		<title>久しぶりに書く気になりました</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=449</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=449#comments</comments>
		<pubDate>Fri, 09 Jul 2010 03:46:05 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[プライベート]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=449</guid>
		<description><![CDATA[しばらくどうにもブログを書く気にならなかったのですが、ようやく少し書く気が出てきましたかね。
最近はTwitterばかりでしたが。（とはいえ、Twitterもそんなに書いているわけではないのですが。）
ここ数ヶ月、あまり ]]></description>
			<content:encoded><![CDATA[<p>しばらくどうにもブログを書く気にならなかったのですが、ようやく少し書く気が出てきましたかね。</p>
<p>最近はTwitterばかりでしたが。（とはいえ、Twitterもそんなに書いているわけではないのですが。）</p>
<p>ここ数ヶ月、あまり元気ではなかったのですよね。。最近は開き直ったせいか、少し気力が出てきました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=449</wfw:commentRss>
		</item>
		<item>
		<title>Twitterはじめました</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=446</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=446#comments</comments>
		<pubDate>Fri, 23 Apr 2010 12:15:03 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[プライベート]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=446</guid>
		<description><![CDATA[近頃、現場が忙しい。今までとは雰囲気が明らかに違う。案件の舞い込み方が全く違う。
もしかして、ブレイク前の会社ってこんな感じなのかな？
で、Twitterはじめました。よければフォローしてやってください。少なくとも、ブロ ]]></description>
			<content:encoded><![CDATA[<p>近頃、現場が忙しい。今までとは雰囲気が明らかに違う。案件の舞い込み方が全く違う。</p>
<p>もしかして、ブレイク前の会社ってこんな感じなのかな？</p>
<p>で、<a href="http://twitter.com/shyamauchi/" target="_blank">Twitter</a>はじめました。よければフォローしてやってください。少なくとも、ブログよりは気楽に書こうと思ってます。</p>
<p>＃今今、ずいぶん気楽に書いている気もするが。</p>
<p>でも、ようやくブログを書く気になったってことか。ちょっとは元気になったってことかな。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=446</wfw:commentRss>
		</item>
		<item>
		<title>この前の戦争</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=440</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=440#comments</comments>
		<pubDate>Mon, 01 Mar 2010 10:00:37 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[Discovery Channel]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=440</guid>
		<description><![CDATA[京都で「この前の戦争」といったら、「応仁の乱」を指すそうです。
ちなみに、このＩＴの世界で、「この前の戦争」といったら、なんでしょう？
小さな争いごとはいろんなところで起こっていますが、それは世の中どこでも同じことですね ]]></description>
			<content:encoded><![CDATA[<p>京都で「この前の戦争」といったら、「応仁の乱」を指すそうです。</p>
<p>ちなみに、このＩＴの世界で、「この前の戦争」といったら、なんでしょう？</p>
<p>小さな争いごとはいろんなところで起こっていますが、それは世の中どこでも同じことですね。<br />
「戦争」と呼べるほど大きな争いごとといったら、この二つではないでしょうか。</p>
<p><a id="ham:" title="ブラウザ戦争" href="http://video.google.com/videoplay?docid=-1432470841996545409#" target="_blank">【ブラウザ戦争】 ネットスケープ vs マイクロソフト</a><br />
<a id="zu1s" title="検索エンジン戦争" href="http://video.google.com/videoplay?docid=-7615367056845439894#" target="_blank">【検索エンジン戦争】 マイクロソフト ヤフー グーグル</a></p>
<p>※この二つのリンクはGoogleビデオの動画にリンクしています。（音声注意です。）</p>
<p>いずれもディスカバリーチャンネルの番組のようです。<br />
タイトルはこんな感じですが、ＩＴの専門家でない普通の人でも、見て分かるようになっています。</p>
<p>面白いところを書くとネタばれになりそうなので、一度ご覧になってみてください。</p>
<p>今使っているインターネットやブラウザがどうして生まれたのか。その歴史がわかります。</p>
<p>人間の歴史って、やっぱり戦争の歴史なんですかね。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=440</wfw:commentRss>
		</item>
		<item>
		<title>DimDim久々に使ってみると</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=432</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=432#comments</comments>
		<pubDate>Sat, 27 Feb 2010 10:31:00 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[DimDim]]></category>

		<category><![CDATA[system-enablers]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=432</guid>
		<description><![CDATA[今日、ひさびさにウェブ会議を開きました。
今までウェブ会議で開いていた会議を、最近は都合でリアル会議で行っている関係で、DimDimは１ヵ月ぶりの利用になってしまいました。
ひさびさに見るDimDimはちょっとマイナーチ ]]></description>
			<content:encoded><![CDATA[<p>今日、ひさびさにウェブ会議を開きました。</p>
<p>今までウェブ会議で開いていた会議を、最近は都合でリアル会議で行っている関係で、<a href="http://www.dimdim.com" target="_blank">DimDim</a>は１ヵ月ぶりの利用になってしまいました。</p>
<p>ひさびさに見る<a href="http://www.dimdim.com" target="_blank">DimDim</a>はちょっとマイナーチェンジしている感じでした。「変わったなー」と思うところはこんな感じです。</p>
<ul>
<li>トップページが様変わりしている</li>
</ul>
<p style="padding-left: 30px;">トップページに、「Host Meeting」「Join Meeting」があったり、「DimDim for Education」や「DimDim Enterprise」などのリンクもきれいな画像が入れ替わり立ち代り表示されています。。きれいになり、整理された感じですね。（特に、Join MeetingはいいUIだと思います。）</p>
<ul>
<li>ScreenCasterに代わる、新デスクトップ共有ソフト</li>
</ul>
<p style="padding-left: 30px;">どうやら以前のScreeenCasterに代わって、新しいデスクトップ共有ソフトを開発したようです。</p>
<p style="padding-left: 30px;"><a href="http://www.dimdim.com/products/dimdim_editions_myscreen.html" target="_blank"><span class="subHeadTitles">Dimdim myScreen™ Instant Screen Sharing</span></a> なんて書いてありますね。</p>
<ul>
<li>会議の開催が簡単に</li>
</ul>
<p style="padding-left: 30px;">会議の開催が簡単になりました。今すぐに会議を開催する場合には、ログインしてすぐ「Start」のInstantActionボタンを押します。今までは、その後ダイアログボックスで各種設定をいろいろ行っていたのですが、現在は、「Start」クリックですぐに始まります。招待したり、設定したりを先にやるのではなく、まず会議を開催して、後に行うスタイルに変わりました。「Start」ではなくて、「Schedule」の場合は、今までどおりダイアログボックスが開きます。このようにユースケースに合わせた作りがうれしいですね。</p>
<ul>
<li>音声の遅延が減った</li>
</ul>
<p style="padding-left: 30px;">今までは、やはりサーバが遠くにあるせいか（アメリカの東側です。）、音の遅延が大きいときがあった。コンディションに左右される場合もあるようなので、一概には言えないが、今日は音声の遅延がとても少なく、快適に使わせていただきました。普段も会話がなりたちにくくなるほど遅延するケースはまれで、通常はすこし遅れて聞こえることを意識すればちゃんと会話が成り立つレベルです。今日は、そういうことをほとんど意識しなくてもよかったように思います。</p>
<p>全体的に見て、すごくよく改善されている感がありますね。（ページ構成も、システムも、ユーザに合わせて改善した感がものすごくよく出ています。）うちのシステムも、こんな感じでユーザのためになる改善をした感じが出ると良いのですけれどね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=432</wfw:commentRss>
		</item>
		<item>
		<title>RDRAの公式サイトにリンクを追加していただきました</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=424</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=424#comments</comments>
		<pubDate>Thu, 21 Jan 2010 09:03:15 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[ICONIXプロセス]]></category>

		<category><![CDATA[RDRA]]></category>

		<category><![CDATA[system-enablers]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=424</guid>
		<description><![CDATA[このブログでは、ときどきRDRA （リレーションシップ駆動要件分析) のネタを書いています。
ありがたいことに、そのRDRAの公式サイトに、このブログへのリンクを追加していただけました。
神崎コンサルノート：RDRA関連 ]]></description>
			<content:encoded><![CDATA[<p>このブログでは、ときどきRDRA （リレーションシップ駆動要件分析) のネタを書いています。<br />
ありがたいことに、そのRDRAの<a href="http://k-method.jp/" target="_blank">公式サイト</a>に、このブログへのリンクを追加していただけました。</p>
<p><a href="http://d.hatena.ne.jp/good_way/20100120/1263988081" target="_blank">神崎コンサルノート：RDRA関連のブログを追加</a></p>
<p><a id="yq4w" title="神崎さん" href="http://d.hatena.ne.jp/good_way/">神崎さん</a>、ありがとうございます。</p>
<p>そういえば、RDRAを最初に見つけたのは、なんとなく見ていた<a id="ez8o" title="スパークスシステムズジャパン" href="http://www.sparxsystems.jp/partners.htm">スパークスシステムズジャパン</a>さんのページでした。</p>
<p>Enterprise Architectで書く要件定義フレームワークなんていうものがあるんだあーというのが第一印象です。<br />
実際にHPを見てみて、「網羅性・整合性・表現力」というフレーズも響きましたね。</p>
<p>当時私は、近々発動予定の開発プロジェクトを抱えていました。<br />
開発自体は、ICONIXプロセスで開発することは決めていたのですが、<br />
その前の要件定義フェーズをどうしたらよいかとても悩んでいました。</p>
<p>・要件定義できる要員がたくさんいるわけでもなく<br />
・短期間になんとかICONIXプロセスにつなげて開発する<br />
・そのためには何から入ったらよいのだろう？</p>
<p>という課題です。</p>
<p>で、実際にテンプレートをダウンロードしてみて、すごく気に入りました。</p>
<p>システム価値→システム外部環境→システム境界→ユースケース、ドメインモデル<br />
といった筋道がこのテンプレートを見ることで、見通しが開けた感がすごくありました。<br />
これならスムーズに開発メンバーへの設計のインプットとして、つなげられそうだというイメージがでました。</p>
<p>また、「リレーションシップ駆動」というネーミングもすごくよいと思いました。<br />
私は要件定義とは個別の成果物だけを指すものではないと思っていたからです。</p>
<p>例えば、要求→業務モデルや利用シーン→ユースケース→画面といった関連こそが大事で、<br />
それを共有するからこそ要件定義になり、整合性も保てると常々思っていました。<br />
RDRAはEnterpriseArchitectを使ってそういう表現を上手にしているところがすごくよいと思います。</p>
<p>それ以来、どんな小さな開発ネタでも、まずRDRAでコンテキストを書いて、要望、要件を整理し、何をがんばって明らかにしていかなくてはいけないかをまず考えることにしています。</p>
<p>また、実際にRDRAを使うことで、実際の開発にすごく安心感が出ました。<br />
開発メンバーへの設計のインプットとして、コンテキストからつながっている感じがすごくよいです。<br />
開発メンバーもこの要件定義はそこがすごくよいと言っていましたね。</p>
<p>うちの仕事では今後も使っていくつもりです。<br />
またネタが出たら、なにかフィードバックできればと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=424</wfw:commentRss>
		</item>
		<item>
		<title>アジャイルプロジェクトが遅れる理由</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=378</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=378#comments</comments>
		<pubDate>Wed, 06 Jan 2010 09:39:04 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[Basecamp]]></category>

		<category><![CDATA[InfoQ]]></category>

		<category><![CDATA[system-enablers]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=378</guid>
		<description><![CDATA[購読しているInfoQのRSSを見ると、「アジャイルプロジェクトが遅れる理由」という記事があったので、読んでみました。
その中に、

仕掛かり作業の増加- 仕掛かり作業が増加すればするほど、開発者はコードを作業結果に反映 ]]></description>
			<content:encoded><![CDATA[<p>購読しているInfoQのRSSを見ると、「<a id="u5.i" title="アジャイルプロジェクトが遅れる理由" href="http://www.infoq.com/jp/news/2009/12/agile-project-delays" target="_blank">アジャイルプロジェクトが遅れる理由</a>」という記事があったので、読んでみました。</p>
<p>その中に、<br />
<strong></strong></p>
<blockquote><p><strong>仕掛かり作業の増加</strong>- 仕掛かり作業が増加すればするほど、開発者はコードを作業結果に反映できるようになるまで待たなければならない時間が長くなる。</p></blockquote>
<p>というのがありました。</p>
<p>実際そのとおりですね。では、なぜこういうことになるのでしょう。</p>
<p>私がよく見るパターンでは、この後に書いてある、<strong></strong></p>
<blockquote><p><strong>同時に数多くのプロジェクトで働く</strong>–作業をスイッチすることは<a href="http://www.infoq.com/jp/news/2009/09/study-multitasking-performance" target="_blank">利点よりも問題点の方が多い</a>。</p></blockquote>
<p>というパターンとの複合技で起こる場合でしょうか。<br />
優秀な人間に、たくさん仕事をして欲しいというSEマネージャの気持ちはわかるのですが、これでは逆効果になります。</p>
<p>実はこれにはガントチャートによる進捗管理も関係しています。</p>
<p>ガントチャートで進捗を管理しているプロジェクトによくあるのが、ろくに手も付けていないのに進捗が30%のタスクや、90%から全然動かないタスクが数多く出てきたりするパターンです。進捗上は進んでいるように見えるのに、実際には何も出来ていない。こうなってしまうと、仕掛かりタスクが増え、優秀な人のパフォーマンスが低下し、プロジェクトが失敗の方向へ向かっていきます。気づいたときには手遅れの場合もあります。</p>
<p>Basecampではガントチャートは出てきません。</p>
<p>ToDoリストは、タスクは済んだか、済んでいないかだけです。マイルストーンまであとどのくらいかもよくわかります。<br />
ToDoリストが片付かなければ、そこに問題が潜んでいるかもしれないと分かります。<br />
BasecampにはToDoにメッセージが付けられますから、問題の報告が早く行われて早く手が打てます。<br />
（フェイル・ファーストってやつですかね。）<br />
「プロジェクト管理はコミュニケーションだ」というゆえんはこんなところにもあります。</p>
<p>こんなところも私がBasecampを気に入っている理由のひとつです。</p>
<p>＃そういえば、「<a id="gyb9" title="アジャイルプロジェクトが遅れる理由" href="http://www.infoq.com/jp/news/2009/12/agile-project-delays" target="_blank">アジャイルプロジェクトが遅れる理由</a>」は<a id="tnd_" title="徳武さん" href="http://www.infoq.com/jp/bycategory.action?authorName=%E5%BE%B3%E6%AD%A6-%E8%81%A1" target="_blank">徳武さん</a>翻訳でした。<br />
＃仕事だけでなくて、翻訳のほうもなかなか頑張っているようです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=378</wfw:commentRss>
		</item>
		<item>
		<title>ひさしぶりに出社</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=376</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=376#comments</comments>
		<pubDate>Tue, 22 Dec 2009 06:51:32 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[プライベート]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=376</guid>
		<description><![CDATA[ひさしぶりに北青山オフィスに出社。
ようやく電車で外出できるようになりました。
復活できなかったら、正月実家に帰るのも無理かなあとも思っていたのですが、どうやら帰れそうです。
]]></description>
			<content:encoded><![CDATA[<p>ひさしぶりに北青山オフィスに出社。</p>
<p>ようやく電車で外出できるようになりました。</p>
<p>復活できなかったら、正月実家に帰るのも無理かなあとも思っていたのですが、どうやら帰れそうです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=376</wfw:commentRss>
		</item>
		<item>
		<title>今年の風邪</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=370</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=370#comments</comments>
		<pubDate>Mon, 07 Dec 2009 07:56:58 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[プライベート]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=370</guid>
		<description><![CDATA[は、どうやら、かなりしつこいらしい。
おかげで先週は仕事を休んじまった。さすがに今週もというわけにもいかないので、頑張って出てみた。
さすがにしんどいね。もう帰ろう。
]]></description>
			<content:encoded><![CDATA[<p>は、どうやら、かなりしつこいらしい。</p>
<p>おかげで先週は仕事を休んじまった。さすがに今週もというわけにもいかないので、頑張って出てみた。</p>
<p>さすがにしんどいね。もう帰ろう。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=370</wfw:commentRss>
		</item>
		<item>
		<title>Basecampを使う理由(2)</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=363</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=363#comments</comments>
		<pubDate>Fri, 20 Nov 2009 19:14:30 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[Basecamp]]></category>

		<category><![CDATA[Getting Real]]></category>

		<category><![CDATA[system-enablers]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=363</guid>
		<description><![CDATA[Basecampは本当に私たちの開発スタイルに合っていると思っています。
一番大きな理由は、やはりアジャイルなスタイルに合うこと。
あと、私たちが開発元の37Signalsの考えともよく合うということ。
彼らが出している ]]></description>
			<content:encoded><![CDATA[<p><a id="nux_" title="Basecamp" href="http://basecamphq.com/" target="_blank">Basecamp</a>は本当に私たちの開発スタイルに合っていると思っています。</p>
<p>一番大きな理由は、やはりアジャイルなスタイルに合うこと。<br />
あと、私たちが開発元の<a id="u_yr" title="37Signals" href="http://37signals.com/" target="_blank">37Signals</a>の考えともよく合うということ。</p>
<p>彼らが出している<a id="muzn" title="Getting Real" href="http://gettingreal.37signals.com/GR_jpn.php" target="_blank">Getting Real</a>という本があります。日本語版もダウンロードして読めます。<br />
（この存在は一緒に仕事をしている<a id="icvn" title="徳武さん" href="http://www.infoq.com/jp/bycategory.action?authorName=%E5%BE%B3%E6%AD%A6-%E8%81%A1" target="_blank">徳武さん</a>に教えてもらいました。）</p>
<p>これを読むと、<a id="adbq" title="37Signals" href="http://37signals.com/" target="_blank">37Signals</a>のウェブ・アプリケーションに対する考えがよくわかります。<br />
実用的なソフトウェアを作ることに振り切っているところもとても好感が持てます。<br />
（例えば、<a id="z2_p" title="Microsoft Project" href="http://office.microsoft.com/ja-jp/project/default.aspx" target="_blank">Microsoft Project</a>なんかを「ゴリラのようなソフトウェア」と言っています。意味が分かりますか？）</p>
<p>また、彼らはとてもユニークで、</p>
<p><a id="lgxy" title="シンプルなツールを作り続ける37Signals社の仕事術" href="http://www.ideaxidea.com/archives/2008/03/37signals.html" target="_blank">シンプルなツールを作り続ける37Signals社の仕事術</a></p>
<p>というようなこともやっているようです。おそらく、日本のほとんどの企業では理解されないと思います。もし少しでも理解できたなら、それだけで十分だと思います。</p>
<p>（うちは割りと似たところがあるかな。。。）</p>
<p>&#8212;-</p>
<p>「アジャイルなスタイルに合う」というのは、<a id="mfu5" title="Basecamp" href="http://basecamphq.com/" target="_blank">Basecamp</a>のビジョンにあります。<br />
<a id="bymd" title="Getting Real" href="http://gettingreal.37signals.com/GR_jpn.php" target="_blank">Getting Real</a>から引用すれば、</p>
<blockquote><p>「<a id="v3-:" title="Basecamp" href="http://basecamphq.com/" target="_blank">Basecamp</a>」：プロジェクト管理はコミュニケーション</p></blockquote>
<p>という、ビジョンです。このビジョンが、</p>
<blockquote><p>このビジョンにより、我々は「Basecamp」を可能な限りオープンで透明性の高いものにしました。会社内の範囲だけでなく、我々はクライアントとのコ ミュニケーションにもアクセスを広げました。我々は、全てのメンバーの参加の垣根を低くし、サポートするよう考えました。ビジョンは、なぜ我々がチャート や、グラフ、テーブルやレポート、統計、スプレッドシートといったものを省き、代わりにメッセージやコメント、ToDoリスト、ファイルの共有といったコ ミュニケーション機能を重視したのか、という部分です。ビジョンついて大きな視点での決定をしましょう。そうすれば、これからの小さな判断がはるかに簡単 になります。</p></blockquote>
<p>というサービスを生み出しました。この「ビジョン」こそがアジャイルなソフトウェア開発に合うところです。</p>
<p>&#8212;-</p>
<p>アジャイルなソフトウェア開発は、人とのコミュニケーションを重視します。<br />
チームではドキュメントをやりとりする代わりに、コミュニケーションでカバーし、開発速度を上げます。<br />
顧客コミュニケートすることで、問題領域を明らかにし、解決していきます。</p>
<p>また、今時のソフトウェアはネットワークを介して他のソフトウェアと連携しながら動くものがとても多いです。<br />
そのような場合、クライアントや他の開発チームとのコミュニケーションも非常に重要になります。<br />
逆に言えば、そのようなコミュニケーションの不足がプロジェクトが失敗するポイントになりやすいところです。<br />
（今まで何度それで失敗するプロジェクトを見てきたことか。）</p>
<p><a id="e.pu" title="Basecamp" href="http://basecamphq.com/" target="_blank">Basecamp</a>を利用することで、このような利害関係者と多くの情報を共有できます。<br />
共有する上で大事なことは、各利害関係者がオーナーシップを持つことです。<br />
ただ、参照可能な場所に置いてあるというだけでは、共有したことにはなりません。<br />
<a id="l_8e" title="Basecamp" href="http://basecamphq.com/" target="_blank">Basecamp</a>の作りがシンプルであることも、メッセージやコメントがいたるところに残せることも、<br />
利害関係者にオーナーシップを持たせることにすごく寄与していると思います。</p>
<p>&#8212;-</p>
<p>アジャイルなソフトウェア開発は、イテレーティブ（反復的）に行われます。</p>
<p>ソフトウェア開発は、最初から最後まで舗装された一本道を歩いていけるわけではないのです。<br />
例えて言うなら、地図を頼りにチームでコミュニケーションをとり、周りを観察して山道を探しながらチェックポイントを目指す、<a id="jvh9" title="オリエンテーリング" href="http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%AA%E3%82%A8%E3%83%B3%E3%83%86%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0" target="_blank">オリエンテーリング</a>のようなものです。<br />
（この例えは<a id="wlpu" title="増田さん" href="http://masuda220.jugem.jp/" target="_blank">増田さん</a>に教わりました。）<br />
途中で変だと気づいたら立ち止まる。反復して実践を行い、頻繁に計画を見直しながら進んでいく。<br />
<a id="ja_l" title="Basecamp" href="http://basecamphq.com/" target="_blank">Basecamp</a>のマイルストーン・ToDoリストの考え方は、まさしくこれにマッチするものです。</p>
<p>ガントチャートで進捗を管理しているチームは、大抵、計画の変更を嫌がります。<br />
一本道を一定の速度で歩いていって、時間内にゴールする計画を立てているわけですから、<br />
何か起きたら時間内にゴールできないことが分かっているにもかかわらずです。<br />
（時間内にゴールできないから嫌がるんですが。）<br />
タスクの詰め込みすぎも、計画の変更を嫌がる要因のひとつです。<br />
なんとか詰め込んでできた計画は、変更なんてできるわけがありません。</p>
<p>情熱を持ったエンジニアも、そんな計画のために酷使したら情熱が冷めてしまいます。</p>
<p>&#8212;-</p>
<p>他にも書きたいことはいくらもあるのですが、このあたりの話は、私が言うより、<a id="m21j" title="神崎さんのブログ" href="http://d.hatena.ne.jp/good_way/" target="_blank">神崎さんのブログ</a>を読んだ方が早いかもしれませんね。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=363</wfw:commentRss>
		</item>
		<item>
		<title>Basecampを使う理由(1)</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=344</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=344#comments</comments>
		<pubDate>Fri, 20 Nov 2009 11:42:13 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[Basecamp]]></category>

		<category><![CDATA[Getting Real]]></category>

		<category><![CDATA[RDRA]]></category>

		<category><![CDATA[system-enablers]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=344</guid>
		<description><![CDATA[私たちの間では、主にBasecampをプロジェクト管理に利用しています。
「なぜBasecampを使うのか？」
と聞かれれば、
「私たちのやり方に合っているからです。」
と私たちは答えるでしょう。
ただし、万人に理解を得 ]]></description>
			<content:encoded><![CDATA[<p>私たちの間では、主に<a id="nux_" title="Basecamp" href="http://basecamphq.com/" target="_blank">Basecamp</a>をプロジェクト管理に利用しています。</p>
<p>「なぜ<a id="grq3" title="Basecamp" href="http://basecamphq.com/" target="_blank">Basecamp</a>を使うのか？」</p>
<p>と聞かれれば、</p>
<p>「私たちのやり方に合っているからです。」</p>
<p>と私たちは答えるでしょう。</p>
<p>ただし、万人に理解を得られるものではないこともどうやら事実のようです。</p>
<p>&#8212;-</p>
<p>そういえば、以前こんなことがありました。</p>
<p>とある企業にサービスを提供することになり、専用のアドオンを開発していたときのこと。<br />
クライアントに提出工数と見積金額に納得してもらうために、スケジュールとタスクを出すよう営業マネージャから依頼がきました。<br />
Basecampでマイルストーン・タスクを設定していたので、私はBasecampで一覧を出してそれに大体の予定工数を書き入れて提出しました。</p>
<p>営業マネージャは、それを見るなり驚いて、</p>
<p>「これが管理表なの？タスクって、開始日と終了日があるものなんじゃないの？これにはどうしてそれがないの？」</p>
<p>と言われました。どうやら彼はガントチャートが出てくることを予想していたようです。<br />
（暗に「こんなんでいいのか？」って言われているわけです。）</p>
<p>&#8212;-</p>
<p>この問いに対する答えは、<a id="xo4t" title="RDRA" href="http://www.rdra.jpn.org/" target="_blank">RDRA</a>の開発者<a id="otr8" title="神崎さんのブログ" href="http://d.hatena.ne.jp/good_way/" target="_blank">神崎さんのブログ</a>にいいものがあります。</p>
<p class="title"><a name="1238500385" href="http://d.hatena.ne.jp/good_way/20090331/1238500385">スケジュールは毎週変えることで役に立つようになる</a></p>
<p>私の考えもほぼ同じで、この時はマイルストーンをほぼ１Wおきに置いていました。<br />
だいたいチェックのタイミングも週単位です。進路変更したり、手を打ったりするのもこのタイミングが多いですから、こういう単位でプロジェクトの進行を考えると、取扱いやすいです。</p>
<p>今でもプロジェクトを起こすときには、マイルストーンを１Wぐらいに置き、週単位の目標を明確にするようにしています。この時は１ヵ月半ぐらいの短期決戦だったので、結構タスクは見通せてはいたのですけれどね。</p>
<p><a id="xg06" title="神崎さんのブログ記事" href="http://d.hatena.ne.jp/good_way/20090331/1238500385">神崎さんのブログ記事</a>を読めば分かるのですが、お互いの考え方やアプローチの違いがこういう発言につながっています。</p>
<p>正直、営業マネージャにいくら説明しても理解を得られるような気がしなかったので、</p>
<p>「うちはそういうスタイルなの。」</p>
<p>で、この時は押し切っちゃいました。</p>
<p>&#8212;-</p>
<p>この時はこれで済ませられましたが、おそらく、これで済ませられない場合もあるでしょう。<br />
その時はどうするかって？<a id="ybqr" title="神崎さんのブログ記事" href="http://d.hatena.ne.jp/good_way/20090331/1238500385">神崎さんのブログ記事</a>でも読んでもらいましょうか。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=344</wfw:commentRss>
		</item>
		<item>
		<title>技術負債ってなんだろう</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=335</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=335#comments</comments>
		<pubDate>Thu, 19 Nov 2009 03:50:45 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[InfoQ]]></category>

		<category><![CDATA[system-enablers]]></category>

		<category><![CDATA[ドメイン駆動設計(Domain Driven Design)]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=335</guid>
		<description><![CDATA[InfoQに、「技術的負債を解剖する」という記事が出ています。
翻訳したのは、Domain Driven Design Quickly を翻訳した徳武聡さん。
徳武さんとは一緒に仕事をしていますが、頭が速くて手も速く、g ]]></description>
			<content:encoded><![CDATA[<p><a id="y69r" title="InfoQ" href="http://www.infoq.com/jp/" target="_blank">InfoQ</a>に、「<a id="k8il" title="技術的負債を解剖する" href="http://www.infoq.com/jp/news/2009/10/dissecting-technical-debt" target="_blank">技術的負債を解剖する</a>」という記事が出ています。</p>
<p>翻訳したのは、<a id="ih-t" title="Domain Driven Design Quickly" href="http://www.infoq.com/jp/minibooks/domain-driven-design-quickly" target="_blank">Domain Driven Design Quickly</a> を翻訳した<a id="ke5a" title="徳武聡" href="http://www.infoq.com/jp/bycategory.action?authorName=%E5%BE%B3%E6%AD%A6-%E8%81%A1" target="_blank">徳武聡</a>さん。<br />
<a id="ke5a" title="徳武聡" href="http://www.infoq.com/jp/bycategory.action?authorName=%E5%BE%B3%E6%AD%A6-%E8%81%A1" target="_blank">徳武さん</a>とは一緒に仕事をしていますが、頭が速くて手も速く、good senseです。<br />
SEマネージャからみて、とても頼りになるエンジニアです。</p>
<p>数ある翻訳候補の中から、「<a id="vury" title="技術的負債を解剖する" href="http://www.infoq.com/jp/news/2009/10/dissecting-technical-debt" target="_blank">技術的負債を解剖する</a>」を選ぶところも、なかなかgood senseです。</p>
<p>&#8212;-</p>
<p>そもそも、「技術的負債」というのは<a id="kbsp" title="ワード・カニンガム" href="http://en.wikipedia.org/wiki/Ward_Cunningham" target="_blank">ワード・カニンガム</a>がメタファーとして作ったものだとのこと。<br />
<a id="jhqa" title="マーチンファウラーのBliki" href="http://capsctrl.que.jp/kdmsnr/wiki/bliki/" target="_blank">マーチンファウラーのBliki</a>から引用すると</p>
<blockquote><p>「技術的負債」とは、Ward Cunningham が作ったメタファーである。上記の問題について考える際に、この言葉が役に立つ。このメタファーを使うと、早いけれど汚い解決方法は（ファイナンスの負債と同じく）技術的な負債が発生する、ということになる。 通常の負債と同じく、こちらの負債も利子を払う必要がでてくる。 早いけれど汚い設計を選んだせいで、将来の開発において余分な労力をさかねばならなくなる、というわけだ。 これからずっと利子を払いつづけていくことも可能だし、 リファクタリングによって良い設計に修正し、元本を減らしてしまうということも可能だ。 もちろん元本を減らすのにはコストがかかる。だが、それによって将来かかる利子が減るため、結果的には得なのである。</p></blockquote>
<p>ということです。SEであれば、多少なりとも身に覚えがあると思います。</p>
<p>これについて、<a id="jhqa" title="マーチンファウラーのBliki" href="http://capsctrl.que.jp/kdmsnr/wiki/bliki/" target="_blank">マーチンファウラー</a>の分類では技術負債は４つに分類されるとのことです。</p>
<blockquote>
<ol style="margin-left: 40px;">
<li><strong>無鉄砲 - 意図的</strong> – チームには設計をしている時間がない。品質を犠牲にして、汚くても素早くソリューションを提供する必要がある。</li>
<li><strong>良識的 - 意図的</strong> – チームは今すぐ製品を出荷しなければならないが、その製品には既知の欠点がある。発送した結果が招く問題についても先手を打っておく。</li>
<li><strong>無鉄砲 - 偶発的</strong> – チームは基本的な設計原則について意識していない。なので混乱状態が生まれつつあることにも気付いていない。</li>
<li><strong>良識的 -  偶発的</strong> – 確かに優秀な設計者がいて、その設計者はビジネス価値を生み出すソリューションを納品する。しかし、ソリューションが完成した後になって、最良の設計手法が何だったのかを理解する。</li>
</ol>
</blockquote>
<p>このような内容になっています。<br />
これらについて、経験から少しどんな時こうなるのかを考えてみます。</p>
<h4>「無鉄砲で意図的」な技術負債</h4>
<p>「設計なんてしないで、品質を犠牲にして素早くソリューションを提供する」状態とはどんな時なんでしょう？<br />
例えば、「納期が間近に迫っているが、どうしてもやらなくてはいけない」時。このような場合には、それまできちんととやっていれば、技術負債はそこだけで済む。<br />
しかし、「プロジェクト自体がそもそも無理」な場合にも、このような事態は発生する。<br />
マネージャ自身が「設計なんていいから、とにかく、コードを書け」なんて方針になってしまって、結果的に技術負債のかたまりのようなソフトウェアを作ってしまう。<br />
そんなパターンですね。ここまでいくと、正しく動く方が奇跡？のような状態になるので、そのためにまた汚いコードを上塗りすることになってしまいます。</p>
<h4>「良識的で意図的」な技術負債</h4>
<p>「その製品には既知の欠点がある。発送した結果が招く問題についても先手を打っておく」っていうのはどういうことでしょう？<br />
例えば、既知の欠点について、マニュアルに記述し回避方法を示しておくとか。（マニュアルで逃げるというやつですね。）<br />
「既知の欠点があるが、十分によくできていて、運用可能だから出荷する」と言う状態です。<br />
この場合はやはり「良識的」なので、既知の欠点があっても、よく品質は確保されている状態です。<br />
既知の欠点が山ほどあって、直しても直しても減らないような状態ではありませんね。</p>
<h4>「無鉄砲で偶発的」な技術負債</h4>
<p>「チームは基本的な設計原則について意識していない。」というのはさすがに無謀ですね。<br />
たとえば、レイヤリング方法や、ネームスペースの名前付け方針、ライブラリの使い方や準備、そういった開始前の準備タスクを怠ってスタートしている場合が該当しそうです。<br />
「混乱状態が生まれつつあることに気づいていない」ということは、メンバー間のコミュニケーションもあまり取らずに勝手に作業を進めている感じですね。<br />
正直、かなりワルですね。</p>
<h4>「良識的で偶発的」な技術負債</h4>
<p>「ソリューションが完成した後になって、最良の設計手法が何だったのかを理解する。」は、<a id="jhqa" title="マーチンファウラーのBliki" href="http://capsctrl.que.jp/kdmsnr/wiki/bliki/" target="_blank">ファウラー</a>が書いたDDDの序文にあることだと思います。</p>
<blockquote><p>Another lesson you&#8217;ll learn from this book is that domain models aren&#8217;t first modeled and then implemented.<br />
Like many people, I&#8217;ve come to reject the phased thinking of &#8220;design, then buld.&#8221;<br />
But the lesson of Eric&#8217;s experience is that the really powerful domain models evolve over time, and even the most experienced modelers find that they gain their best ideas after the initial releases of a system.</p>
<p>他の教えでは、あなたはドメインモデルは初期モデルで実装されることはないことをこの本から学ぶでしょう。<br />
大多数の人のように、私は「設計し、そして構築しなさい」という段階的な考えを拒絶するようになっている。<br />
しかし、エリックの経験からくる教えは、長い時間をかけて、本当にパワフルなドメインモデルを考え出す。<br />
そして、熟練したほとんどのモデラーでさえもが、システムの初期リリースの後に彼らの最良の考えを発見する。</p></blockquote>
<p>この辺ですかね。実際、熟練したエンジニアが設計しても、リリース後にもっとよい設計手法が見つかるものだということです。</p>
<p>エンジニアは最初からドメインのプロであるわけではありません。</p>
<p>スペシャリストからの知識を噛み砕き、ドメインモデルを構築し、システムを構築する。<br />
そしてファーストリリースをした後に、そのドメインについての知識が深まったことに気づき、最良の考えが他にあったことに気づくわけです。</p>
<p>&#8212;-</p>
<p>こうして見てみると、「良識的なもの」と「無鉄砲なもの」で、かなり差がありますね。<br />
「良識的なもの」は、最後つじつまをうまくあわせるために、技術負債で穴埋めする場合もありますよという感じです。<br />
あるいは、「技術負債なし」で作ってきたつもりでも、実はドメインの知識が深まると、技術負債に気づく場合もありますよ、ということでしょう。<br />
「無鉄砲なもの」は、まさに「無知は罪」という感じです。こんな仕事をするのは、本当に罪深いことです。<br />
後の面倒を見るエンジニアは、本気で「自己破産」を考えなくてはなりません。</p>
<p><a id="ke5a" title="徳武聡" href="http://www.infoq.com/jp/bycategory.action?authorName=%E5%BE%B3%E6%AD%A6-%E8%81%A1" target="_blank">徳武さん</a>とも話したのですが、「無鉄砲」の元の単語&#8217;reckless&#8217;は、かなり「悪い」においがします。<br />
「無鉄砲」というよりも「無茶」とか「滅茶苦茶」とか、もっと「悪い」単語の方が感覚的には合う気がします。<br />
もっとも、この文書の翻訳ではそんな単語はちょっと使えそうにはないので、他にいい言葉は見つかりませんでしたね。<br />
（お行儀の悪い言葉なら、いくらもありますが。<a id="jhqa" title="マーチンファウラーのBliki" href="http://capsctrl.que.jp/kdmsnr/wiki/bliki/" target="_blank">ファウラー</a>も&#8217;reckless&#8217;が精一杯だったのでしょう。）</p>
<p>私の現場は、冒頭に書いたように<a id="ke5a" title="徳武聡" href="http://www.infoq.com/jp/bycategory.action?authorName=%E5%BE%B3%E6%AD%A6-%E8%81%A1" target="_blank">徳武さん</a>がgood sense(良識的)なおかげで、変な技術負債は少なくて済んでいます。</p>
<p>でも、<a id="ke5a" title="徳武聡" href="http://www.infoq.com/jp/bycategory.action?authorName=%E5%BE%B3%E6%AD%A6-%E8%81%A1" target="_blank">徳武さん</a>が来る前にこさえた借金はたんまりあるんですけどね。<br />
いつも借金払わせてばかりで、どうもすみません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=335</wfw:commentRss>
		</item>
		<item>
		<title>模様替えしてみました</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=316</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=316#comments</comments>
		<pubDate>Tue, 10 Nov 2009 06:31:53 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[プライベート]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=316</guid>
		<description><![CDATA[ブログのテーマを変えてみました。
やっぱりこういうシンプルなものが好きですね。
]]></description>
			<content:encoded><![CDATA[<p>ブログのテーマを変えてみました。<br />
やっぱりこういうシンプルなものが好きですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=316</wfw:commentRss>
		</item>
		<item>
		<title>「オブジェクト指向発想」の目覚め</title>
		<link>http://www.system-sekkei.com/yamauchi/?p=304</link>
		<comments>http://www.system-sekkei.com/yamauchi/?p=304#comments</comments>
		<pubDate>Fri, 06 Nov 2009 09:42:15 +0000</pubDate>
		<dc:creator>yamauchi</dc:creator>
		
		<category><![CDATA[system-enablers]]></category>

		<category><![CDATA[ドメイン駆動設計(Domain Driven Design)]]></category>

		<guid isPermaLink="false">http://www.system-sekkei.com/yamauchi/?p=304</guid>
		<description><![CDATA[増田さんの「手続き的な発想、オブジェクト指向的な発想」を読みました。
オフィスでも、勉強会でこのことについて話しました。
話をして思い出したのは、昔金融コンサルと組んで、金融機関の収益シミュレーションシステムを作っていた ]]></description>
			<content:encoded><![CDATA[<p>増田さんの「<a href="http://masuda220.jugem.jp/?eid=287">手続き的な発想、オブジェクト指向的な発想</a>」を読みました。<br />
オフィスでも、勉強会でこのことについて話しました。</p>
<p>話をして思い出したのは、昔金融コンサルと組んで、金融機関の収益シミュレーションシステムを作っていた時のこと。</p>
<p>&#8212;-<br />
最初はスプレッドシートでマクロを組んでやっていた。<br />
でも、結構壮大なシミュレーション仕様で、一回実行すると一時間以上返ってこなかったりした。<br />
当時のPCとスプレッドシートでは荷が重いことがわかった。</p>
<p>で、UNIXサーバでCで組むことになった。</p>
<p>このころは増田さんが言っているような、</p>
<blockquote><p>ネットワーク（ノードとエッジ）構造を扱うプログラムを、C 言語でうまくかけて実践できたときは、「オレすげー」と思ったのを思い出します。</p>
<p>そのために、ループ構造、関数呼び出し、再起呼び出しなどを駆使して、メモリ上のデータ操作の手続き記述に、どっぶりはまっていた。</p></blockquote>
<p>なんて時代です。「オブジェクト指向」という言葉はありました。<br />
たとえば、技術評論社のSoftwareDesignなんかでは、「オブジェクト指向って何がいいのか」なんて記事が書かれていたような時代。<br />
日経コンピュータあたりでは、「業務アプリにはオブジェクト指向なんて不要。データ中心アプローチでやり直しちゃったよ」なんて記事が書かれていたような時代。<br />
まだ、実際の開発現場で市民権を得る前の話ですね。</p>
<p>何せ、仕様の元がスプレッドシート＋マクロなので、構造体を使って大きなメモリイメージを作り、それに対して手続きを書いてまたメモリに壮大に展開していくようなプログラムを書いていた。</p>
<p>シミュレーション仕様は金融コンサルとエンジニアで一生懸命考えた。<br />
金融コンサルの頭の中は基本スプレッドシートで考えられていて、私たちもそのイメージを一緒に共有して考えた。<br />
当然、オブジェクト指向なんて考えはどこにもなくて、すごく手続き的に考えられていた。</p>
<p>で、実際作ってみると、思ったような「いい数字」が出ない場合が多かった。なにせシミュレーションなので、実際の動きをモデルに、ある程度簡略化した計算をしていた。<br />
そのため、実際こうはならないだろうという数値が出る場合がある。そんな時は、また金融コンサルと一緒に新仕様を考えた。<br />
また、実際のデータとシナリオが合わない時や、ユーザの計画方法が無茶な場合もいい数字は出なかった。<br />
そんなときも、実際にプログラムで「いい数値が出るように」合わせに行った。</p>
<p>大変なのはこういう時で、時折とんでもない仕様変更になる場合がある。もとのデータ構造が変わり、精度が変わり、計算方法がガラッと変わる。<br />
当時の作り方では、こんな変更に耐えられるだけの保守性は持ち合わせていなかった。「ほとんど書き直さないとダメなんですけど。。」という感じだ。</p>
<p>仕事としてやりがいはあったけれども、このころはやっぱり大変だった。夢でメモリイメージと手続きが出てきたのもこのころだ。<br />
UNIXサーバのメモリ一杯に広げられたデータと手続き記述の海で溺れていましたね。</p>
<p>&#8212;-<br />
これをブレイクスルーできたのは実は何年かたった後。</p>
<p>収益シミュレーションは、実は商品と経済イベント（ex:金利更改があった、手形の書き換えを行う、とか。）と、そこで起こることだけを書いておけばいいんじゃないか？<br />
あるべき結果（いい数字）に向かって処理を羅列していくのではなくて、プログラム的にそういう整理をすれば、保守性高く、スマートにできるんじゃないか？</p>
<p>という発想がやっていくうちに出てきた。</p>
<p>で、実際にそのように書いてみたら、以前よりもずっとわかりやすく、スマートな作りになった。<br />
一緒にプログラムを書いていたＣ言語の師匠も、その設計に手ごたえを感じていた。</p>
<p>おそらく、これが私にとってはじめての「オブジェクト指向発想」だったと思う。</p>
<p>でも、まだ難関が残っていた。</p>
<p>&#8212;-<br />
一緒に仕事をする金融コンサルと、この考えは共有できなかった。<br />
説明もしてみたが、どうやら分かってはもらえなかった。<br />
そのあとも、スプレッドシート＋手続きイメージでしか、仕様を考えてはくれなかった。</p>
<p>実は、上司の理解も得られなかった。「イベント？何だそれ」「何でそんな作り方になるの？」と、かなり否定的だった。<br />
当時の私たちには、ここで戦うだけの武器を持ち合わせてはいなかった。</p>
<p>この後は、金融コンサルと考えたスプレッドシート＋手続きイメージを、自分たちの経済イベントモデルに置き換えて実装していった。</p>
<p>&#8212;-<br />
もう十年以上前の話だが、おそらくこれからもそういうことが起き続けるのだと思う。</p>
<p>業務領域を考える人たちは、ほとんどの人がやはり「手続き的」なものの考え方をしている。<br />
そして、我々にもそういうように伝える。我々はそれを深く理解して、オブジェクト指向発想で設計する。<br />
そして、変更に強いソフトウェアを作り上げる。</p>
<p>ビジネスルールや業務手順なんていうものは、実はあやふやなものなんだとも思う。<br />
エンジニアはそのあたりを誤解していて、すごく固いものだと思っている。（実際に固いところもあるとは思いますが。）</p>
<p>今どきのビジネス書なんかには、「イノベーション」「ルールを変えた者が勝つ」なんて書いてあるわけだから、<br />
むしろ、成長・発展するにしたがって、「変わって当然」「変わらなきゃダメ」なものになってきている。</p>
<p>「オブジェクト指向発想」を使って、保守性高い業務アプリを作ることはすごく価値があることだと考えている。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.system-sekkei.com/yamauchi/?feed=rss2&amp;p=304</wfw:commentRss>
		</item>
	</channel>
</rss>
