<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>今を生き抜くエンジニアのためのITスキル</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/yoshi/" />
    <link rel="self" type="application/atom+xml" href="https://el.jibun.atmarkit.co.jp/yoshi/atom.xml" />
    <id>tag:el.jibun.atmarkit.co.jp,2019-03-18:/yoshi//186</id>
    <updated>2016-04-28T00:48:56Z</updated>
    <subtitle>株式会社テクノロジックアート代表取締役。ITとりわけシステム開発の領域では、最新の技術が次々と出て来ます。多くの最新技術の中で、本質的なものはどれで、その本質的な技術をどのように身につけていくかを書いていきます。</subtitle>

<entry>
    <title>フェイクで素早くプログラムを動かせ</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/yoshi/2009/01/post-bc09.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2009:/yoshi//186.5293</id>

    <published>2009-01-05T07:00:00Z</published>
    <updated>2016-04-28T00:48:56Z</updated>

    <summary>　前回はTDDのプログラミングを実演しました。今回はいよいよ、TDDで作成したプ...</summary>
    <author>
        <name>長瀬嘉秀</name>
        
    </author>
    
        <category term="スキル" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/yoshi/">
        <![CDATA[<p>　<a href="http://el.jibun.atmarkit.co.jp/yoshi/2008/11/post-895e.html">前回</a>はTDDのプログラミングを実演しました。今回はいよいよ、TDDで作成したプログラムを動かします。単純に動かすだけなら、Eclipseの実行ボタンを押すだけです。TDDでは、はじめにJUnitのステータスバーをグリーンにするため、とにかく動かすだけに専念します。次に、仮の実装になっているロジック部分に、きちんとしたコードを入れていきます。今回は、コードをきちんとしていく方法を見ていきます。</p>

<p>　TDDのプログラミングでは、テスト作成→フェイクで仮実装→きちんと実装→リファクタリング、という順番になります。これをリズムよく、素早くプログラミングしていきます。</p>

<p>　それでは、前回のテストコードを見てみます。Companyオブジェクトを&quot;A trading&quot;という名前で生成して、アサーションできちんと名前が入っているかを確認しています。</p>

<table width="430" cellspacing="3" cellpadding="3" border="0" bgcolor="#99ffcc" align="center">
<tbody><tr><td>
<div style="font-size: 1em;"><p>public class CompositeTest {</p>

<p>	@Test public void CmpName()<br />
	{<br />
		Party cmp = new Company(&quot;A trading&quot;);<br />
		assertEquals(&quot;A trading&quot;,cmp.getName());<br />
	}<br />
	<br />
}</p></div>
</td></tr>
</tbody></table>

<center><p><span style="font-size: 0.6em;">＜＜プログラムリスト＞＞</span></p></center>

<p>　エラーはなくなったので、Eclipseの実行ボタンを押してみます。</p>

<center>

<p><a href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2009/01/05/fig3_1.jpg" onclick="window.open(this.href, '_blank', 'width=800,height=553,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img width="300" height="207" border="0" alt="Fig3_1" title="Fig3_1" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2009/01/05/fig3_1.jpg" /></a>


</p>

<p><span style="font-size: 0.6em;">＜＜画面ショット1＞＞</span></p>

</center>

<p>　JUnitのステータスバーはレッドで失敗しました。</p>

<p>　Companyクラス、すなわちスーパークラスのPartyクラスのgetName()は、return &quot;&quot;;となっていて、空文字列を返しているだけなので、会社名は入っていません。そのため、&quot;A trading&quot;と比較しても、マッチしないのです。アサーションが失敗になったので、JUnitのステータスバーはレッドになりました。また、その下のウィンドウの失敗の内容を見てみると、&quot;A trading&quot;を期待したけど、&quot;&quot;だったと表示されています。</p>

<p>　TDDでは、この状況で失敗をなくすために、次のように考えます。まずは、ステータスバーをグリーンにです。そのためには、getName()で返す値を&quot;A trading&quot;にしてしまいます。今までのプログラミング常識では考えられないようなことをするのです。</p>

<table width="430" cellspacing="3" cellpadding="3" border="0" bgcolor="#99ffcc" align="center">
<tbody><tr><td>
<div style="font-size: 1em;"><p>public class Party {</p>

<p>	public String getName() {<br />
		// TODO Auto-generated method stub<br />
		return &quot;A trading&quot;;<br />
	}</p>

<p>}</p></div>
</td></tr>
</tbody></table>

<center><p><span style="font-size: 0.6em;">＜＜プログラムリスト＞＞</span></p></center>

<p>　getNameで、&quot;A trading&quot;を返してしまっているので、もちろんステータスバーはグリーンになりました。</p>

<center>

<p><a onclick="window.open(this.href, '_blank', 'width=730,height=303,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2009/01/05/fig3_2.jpg"><img width="299" height="124" border="0" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2009/01/05/fig3_2.jpg" title="Fig3_2" alt="Fig3_2" /></a>

</p>

<p><span style="font-size: 0.6em;">＜＜画面ショット2＞＞</span></p>

</center>

<p>　次に、別のテストを考えます。さっきのテストは、&quot;A trading&quot;だったので、今度は&quot;B trading&quot;と比較してみます。</p>

<table width="430" cellspacing="3" cellpadding="3" border="0" bgcolor="#99ffcc" align="center">
<tbody><tr><td>
<div style="font-size: 1em;"><p>	@Test public void CmpNameOther()<br />
	{<br />
		Party cmp = new Company(&quot;B trading&quot;);<br />
		assertEquals(&quot;B trading&quot;,cmp.getName());<br />
	}</p></div>
</td></tr>
</tbody></table>

<center><p><span style="font-size: 0.6em;">＜＜プログラムリスト＞＞</span></p></center>

<p>　それでは、このテストコードを実行してみます。</p>

<center>

<p><a href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2009/01/05/fig3_3.jpg" onclick="window.open(this.href, '_blank', 'width=800,height=528,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img width="300" height="198" border="0" alt="Fig3_3" title="Fig3_3" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2009/01/05/fig3_3.jpg" /></a>

</p>

<p><span style="font-size: 0.6em;">＜＜画面ショット3＞＞</span></p>

</center>

<p>　テストは2つなので、ステータスバーの上に、「実行：2/2　エラー：0　失敗：1」と表示されています。すなわち、&quot;B trading&quot;のテストが失敗しました。下のウィンドウの失敗の内容を見てみると、&quot;B trading&quot;を期待したけど、&quot;A trading&quot;だったと表示されています。</p>

<p>　それでは、この失敗をなくすためには、どうすればよいでしょうか。それは、Companyオブジェクトを生成するコンストラクターを定義して、その中で会社名を保存します。getName()では、保存してある会社名を返すようにします。</p>

<p>　修正していく過程で、Eclipseのお助け機能により、前回、自動的に挿入されたコメントを削除しました。</p>

<center>

<p><a href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2009/01/05/fig3_4.jpg" onclick="window.open(this.href, '_blank', 'width=800,height=581,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img width="300" height="217" border="0" alt="Fig3_4" title="Fig3_4" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2009/01/05/fig3_4.jpg" /></a>

</p>

<p><span style="font-size: 0.6em;">＜＜画面ショット4＞＞</span></p>

</center>

<p>　Patyクラスのコードです。</p>

<table width="430" cellspacing="3" cellpadding="3" border="0" bgcolor="#99ffcc" align="center">
<tbody><tr><td>
<div style="font-size: 1em;"><p>public class Party {</p>

<p>	String _name;<br />
	<br />
	public Party(String name) {<br />
		_name = name;<br />
	}<br />
	<br />
	public String getName() {<br />
		return _name;<br />
	}</p>

<p>}</p></div>
</td></tr>
</tbody></table>

<center><p><span style="font-size: 0.6em;">＜＜プログラムリスト＞＞</span></p></center>

<p>　ところが、このままでは、Companyクラスのコンストラクターがないというエラーが消えません。これを消すために、Companyクラスにコンストラクターを定義します。</p>

<table width="430" cellspacing="3" cellpadding="3" border="0" bgcolor="#99ffcc" align="center">
<tbody><tr><td>
<div style="font-size: 1em;"><p>public class Company extends Party {<br />
	<br />
	public Company(String name) {<br />
		super(name);<br />
	}<br />
	<br />
}</p></div>
</td></tr>
</tbody></table>

<center><p><span style="font-size: 0.6em;">＜＜プログラムリスト＞＞</span></p></center><p>それでは、再度、実行ボタンを押します。</p>

<center>

<p><a onclick="window.open(this.href, '_blank', 'width=738,height=310,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2009/01/05/fig3_5.jpg"><img width="300" height="126" border="0" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2009/01/05/fig3_5.jpg" title="Fig3_5" alt="Fig3_5" /></a>

</p>

<p><span style="font-size: 0.6em;">＜＜画面ショット5＞＞</span></p>

</center>

<p>　このように、ステータスバーがグリーンになり、2つのテストが成功しました。ここまでで、Companyオブジェクト生成に関するテストができました。</p>

<p>　TDDの基本は、このようなフェイクを使って、プログラムを動かし、テストを追加して、また動かします。この手順で、プログラムを完成に近づけていきます。はじめにすべてのテストを作成して一気に動かした方がよいと思うでしょうが、TDDは常にプログラムが動くことを確認しながら、機能を追加していきます。TDDをしていくと、いつでもプログラムが動作していて、プログラムのバグを取るために四苦八苦する必要もありません。もちろんチームで開発しているときに、みんなで開発しているコードは常に動作します。</p>

<p>　これが、最新のプログラミングテクニックです。TDDをマスターすることにより、みなさんも、高速開発ができるエンジニアになりましょう。TDDは、ひとつのソフトウェアエンジニアリング革命と言えるかもしれません。</p>

<p>　次回は、プログラムをさらに進化させるために、機能を追加していきます。</p>]]>
        
    </content>
</entry>

<entry>
    <title>開発スピード3倍のプログラミングテクを習得せよ</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/yoshi/2008/11/post-895e.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2008:/yoshi//186.5292</id>

    <published>2008-11-11T07:00:00Z</published>
    <updated>2016-04-28T00:48:56Z</updated>

    <summary>　前回はTDD（テスト駆動開発）の簡単な説明をしました。TDDでプログラムを作る...</summary>
    <author>
        <name>長瀬嘉秀</name>
        
    </author>
    
        <category term="スキル" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/yoshi/">
        <![CDATA[<p>　<a href="http://el.jibun.atmarkit.co.jp/yoshi/2008/10/it-89b3.html">前回</a>はTDD（テスト駆動開発）の簡単な説明をしました。TDDでプログラムを作るのは、欧米では当たり前です。それは、EclipseにTDDのツールであるJUnit、Visual StudioにもUnit機能が組み込まれていることからも明白です。JUnitなんて名前しか知らないという人は、使い方を覚えればいいだけです。知らないから使えないと言ってしまうと、技術の進歩からどんどんおいていかれます。</p>

<p>　それでは、Eclipseを使ってTDDによるプログラミング方法を説明していきます。Eclipseには、TDDに必要なお助け機能がたくさんついています。これらの機能を使うことで、開発スピードを格段にあげることができます。</p>

<p>　はじめに、前回のテストコードを示します。</p>

<table width="430" cellspacing="3" cellpadding="3" border="0" bgcolor="#99ffcc" align="center">
<tbody><tr><td>
<div style="font-size: 1em;"><pre><span style="font-size: 1em;">public class CompositeTest {<br /><br />@Test public void CmpName()<br />{<br />Party cmp = new Company(&quot;A trading&quot;);<br />assertEquals(&quot;A trading&quot;,cmp.getName());<br />}<br /><br />}</span></pre></div>
</td></tr>
</tbody></table>

<center><p><span style="font-size: 0.6em;">＜＜プログラムリスト＞＞</span></p></center>

<p>　Eclipse上でJavaのプロジェクトを作成して、テストコードをJUnit Test Caseにしました。JUnit4からテストメソッドには、@Testをつけます。ここではまだJUnitのフレームワークをimportしていないので、@Testがエラーになっています。Eclipseではエラーになっている行の先頭に×マークが付きます。</p>

<center>

<p><a href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2008/11/10/fig2_1_2.jpg" onclick="window.open(this.href, '_blank', 'width=623,height=439,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img width="400" height="281" border="0" alt="Fig2_1_2" title="Fig2_1_2" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2008/11/10/fig2_1_2.jpg" /></a></p>

<p><span style="font-size: 0.6em;">＜＜画面ショット1＞＞</span></p>

</center>

<p>　エラーを修正するためには、Eclipseのお助け機能を使います。×マークをクリックして、お助けのアドバイスを見ます。そこで、一番上のimport文の挿入を選択すると、import文がソースコードに入りました。</p>

<center>

<p><span style="text-decoration: underline;"><a onclick="window.open(this.href, '_blank', 'width=781,height=535,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2008/11/10/fig2_2_2.jpg"><img width="400" height="274" border="0" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2008/11/10/fig2_2_2.jpg" title="Fig2_2_2" alt="Fig2_2_2" /></a></span></p>

<p><span style="font-size: 0.6em;">＜＜画面ショット2＞＞</span></p>

<p><a onclick="window.open(this.href, '_blank', 'width=641,height=445,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2008/11/10/fig2_3_2.jpg"><img width="400" height="277" border="0" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2008/11/10/fig2_3_2.jpg" title="Fig2_3_2" alt="Fig2_3_2" /></a></p>

<p><span style="font-size: 0.6em;">＜＜画面ショット3＞＞</span></p>

</center>

<p>　さらに、もう1つのエラーを直します。ターゲットにしているCompanyクラスとPartyクラスが作成されていないので、×マークをクリックして、PartクラスとCompanyクラスを作ります。</p>

<center>

<p><a onclick="window.open(this.href, '_blank', 'width=720,height=578,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2008/11/10/fig2_4_2.jpg"><img width="400" height="321" border="0" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2008/11/10/fig2_4_2.jpg" title="Fig2_4_2" alt="Fig2_4_2" /></a></p>

<p><span style="font-size: 0.6em;">＜＜画面ショット4＞＞</span></p>

</center>

<p>　クラスは作りましたが、コンストラクターを定義していないので、エラーが残っています。×マークをクリックして、Companyクラスに、コンストラクターを自動生成します。</p>

<center>

<p><a href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2008/11/10/fig2_5_2.jpg" onclick="window.open(this.href, '_blank', 'width=597,height=422,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img width="400" height="282" border="0" alt="Fig2_5_2" title="Fig2_5_2" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2008/11/10/fig2_5_2.jpg" /></a></p>

<p><span style="font-size: 0.6em;">＜＜画面ショット5＞＞</span></p>

<p><a href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2008/11/11/fig2_10_2.jpg" onclick="window.open(this.href, '_blank', 'width=690,height=344,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img width="400" height="199" border="0" alt="Fig2_10_2" title="Fig2_10_2" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2008/11/11/fig2_10_2.jpg" /></a></p>

<p><span style="font-size: 0.6em;">＜＜画面ショット5.5＞＞</span></p>

</center>

<table width="430" cellspacing="3" cellpadding="3" border="0" bgcolor="#99ffcc" align="center">
<tbody><tr><td>
<div style="font-size: 1em;"><pre><span style="font-size: 1em;">public class Company extends Party {<br /><br />public Company(String string) {<br />		// TODO Auto-generated constructor stub<br />}<br /><br />}</span></pre></div>
</td></tr>
</tbody></table>

<center><p><span style="font-size: 0.6em;">＜＜プログラムリスト＞＞</span></p></center><p>　コンストラクターのエラーはなくなりました。</p>

<center>

<p><a href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2008/11/10/fig2_6_2.jpg" onclick="window.open(this.href, '_blank', 'width=614,height=391,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img width="400" height="254" border="0" alt="Fig2_6_2" title="Fig2_6_2" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2008/11/10/fig2_6_2.jpg" /></a></p>

<p><span style="font-size: 0.6em;">＜＜画面ショット6＞＞</span></p>

</center>

<p>　JUnitのアサート文、すなわち、テストの内容を示す比較文のエラーを修正します。このアサート文は、CompanyオブジェクトcmpからgetName()メソッドによって、コンストラクターでセットされた会社名を取ってきて、&quot;A trading&quot;と比較しています。</p>

<center>

<p><a onclick="window.open(this.href, '_blank', 'width=779,height=551,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2008/11/10/fig2_7_2.jpg"><img width="400" height="282" border="0" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2008/11/10/fig2_7_2.jpg" title="Fig2_7_2" alt="Fig2_7_2" /></a></p>

<p><span style="font-size: 0.6em;">＜＜画面ショット7＞＞</span></p>

</center>

<p>　Eclipseのお助け機能でgetName()メソッドを生成します。ただし、String型にしておきます。</p>

<table width="430" cellspacing="3" cellpadding="3" border="0" bgcolor="#99ffcc" align="center">
<tbody><tr><td>
<div style="font-size: 1em;"><pre><span style="font-size: 1em;">public class Party {<br /><br />public String getName() {<br />// TODO Auto-generated method stub<br />return &quot;&quot;;<br />}<br /><br />}</span></pre></div>
</td></tr>
</tbody></table>

<center><p><span style="font-size: 0.6em;">＜＜プログラムリスト＞＞</span></p></center>

<p>　CompiteTestのテストクラスに戻ります。まだエラーがあるので、×マークをクリックして、org.junit.Assert.*をimportします。</p>

<center>

<p><a href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2008/11/10/fig2_8_2.jpg" onclick="window.open(this.href, '_blank', 'width=699,height=506,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img width="400" height="289" border="0" alt="Fig2_8_2" title="Fig2_8_2" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2008/11/10/fig2_8_2.jpg" /></a>


</p>

<p><span style="font-size: 0.6em;">＜＜画面ショット8＞＞</span></p>

</center>

<p>　ようやくエラーがなくなりました。今はひとつひとつゆっくり見ていったので時間がかかりましたが、実際にはクリックを繰り返すだけなので、瞬時にしてエラーがなくなります。</p>

<center>

<p><a onclick="window.open(this.href, '_blank', 'width=616,height=374,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2008/11/10/fig2_91.jpg"><img width="400" height="242" border="0" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2008/11/10/fig2_91.jpg" title="Fig2_91" alt="Fig2_91" /></a></p>

<p><span style="font-size: 0.6em;">＜＜画面ショット9＞＞</span></p>

</center><p>　これで、Companyクラスの大枠ができました。しかし、まだテストを実行していません。このように、TDDでは、設計作業と称して画面の前で悩むよりも、クリックしてどんどん作っていった方が勝ちです。</p>

<p>　従来のプログラミングは、動くかどうかわからないコードをたくさん書いていって、最後にプログラムを動かし、エラーを直していく作業です。TDDはこの方法と違い、少しずつ動くコードに内容を足していきます。</p>

<p>　TDDを実際に見てきましたが、皆さんは、従来のデバッグの嵐となる方法とTDD、どちらが精神的にいいと思いますか？</p>

<p>　今回は、Eclipse環境でのTDDを説明しました。次回は、実際にテストコードを動かしてみて、処理ロジックを追加していきます。</p>]]>
        
    </content>
</entry>

<entry>
    <title>テスト駆動開発（TDD）を学ぶ</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/yoshi/2008/10/it-89b3.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2008:/yoshi//186.5291</id>

    <published>2008-10-23T07:00:00Z</published>
    <updated>2016-04-28T00:48:56Z</updated>

    <summary>　はじめまして。 　わたしのコラムでは、ITスキルの中でもソフトウェアの開発技術...</summary>
    <author>
        <name>長瀬嘉秀</name>
        
    </author>
    
        <category term="スキル" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/yoshi/">
        <![CDATA[<p>　はじめまして。</p>

<p>　わたしのコラムでは、ITスキルの中でもソフトウェアの開発技術に関することを扱います。ソフトウェア開発といっても、JavaやRuby等のプログラム言語、.NETやJ2EEなどの実装環境、Strutsなどのフレームワーク、さらに設計や開発手順等があります。この中でも、設計や開発手順などの基本的なスキルで、変動が少ないものについての議論をしていきます。</p>

<p>　これらの技術の中で、わたしの専門としている領域を以下のように分類してみました。</p>

<ul><li><strong>ソフトウェア開発</strong><ul><li>テスト駆動開発</li>

<li>リファクタリング</li></ul></li>

<li><strong>ソフトウェア設計</strong><ul><li>UMLモデリング</li>

<li>デザインパターン</li></ul></li>

<li><strong>分析スキル</strong><ul><li>ビジネスプロセス（UMLモデリング）</li>

<li>ビジネスエンティティ（UMLモデリング）</li></ul></li>

<li><strong>アーキテクチャ設計</strong><ul><li>アーキテクチャパターン</li></ul></li>

<li><strong>開発プロセス</strong><ul><li>イテレーティブ（繰り返し型プロセス）</li>

<li>XP（アジャイルプロセス）</li>

<li>スクラム（アジャイルプロセス）</li></ul></li></ul>

<p><span style="font-size: 1.2em;"><span style="color: red;"><strong>■エンジニアの化石になるな！</strong></span></span></p>

<p>　ソフトウェア開発とは、プログラムを作るにあたってのスキルです。例えば、Javaのプログラムを作るのにオブジェクト指向を知らなくて、COBOLのような手続型のコードを書いていては、この時代にプログラム開発ができるスキルを持っているとはいえません。ただ、一般的にオブジェクト指向の利点を生かしたプログラム開発を開発現場では行っていないことが多いのです。それは、SEと名乗る設計者がオブジェクト指向を理解しておらず、10年以上前のVB+Oracleのような開発環境でしかプログラム開発をしたことがないことが原因だったりします。</p>

<p>　このような時代遅れの開発しかやっていなかったら、エンジニアはどうなってしまうでしょうか。SEと名乗る設計者は管理者となり、プロジェクトの線引きだけをやるようになれば、何とか自分の将来の仕事はあり、逃げ切れるかもしれません。しかし、この時点でプログラム開発者であるエンジニアには、未来はありません。オブジェクト指向しか見たことがない新しい世代のエンジニアがあふれてきて、それを知らないエンジニアは化石になってしまいます。</p>

<p>　それでは、化石にならないためには、何をすれば良いのでしょうか？</p>

<p>　いくら現場のプロジェクトでプログラムを作っても無駄です。必要最小限の技術を勉強して習得すれば良いのです。そして、実践したくなったら、実践できる社内のプロジェクト、もしくは他の会社に移りましょう。学習と経験を積めば、立派なエンジニアになります。</p>

<p>　ソフトウェア開発の中でも、オブジェクト指向技術は理解したとしましょう。たいていJavaやC++の入門書に、クラスだの継承だのという基本的なことは書いてあります。もし、知らない人がいたら、オブジェクト指向入門をインターネットで検索して、理解しておきましょう。簡単なプログラムを書き写して動かしてみれば、理解できるはずです。読んだだけで終わらせないでください。実際にやってみないと習得はできませんよ。これで、オブジェクト指向でプログラムを作ることはできるようになりましたね。</p>

<p><span style="font-size: 1.2em;"><strong><span style="color: blue;">■最新の開発環境を使え！</span></strong></span></p>

<p>　次に必要なことは、プログラムをどのように作れば良いかということです。その前に、ソフトウェア開発環境の話をしなければいけません。もったいぶっていますが、単純にツールを使って、プログラムを作りましょうといっているだけです。一般的なオープンソースの開発環境をここでは紹介します。</p>



<p>　それは、Eclipseです。Eclipseはオープンソースで無料で手に入り、Java、C++、Rubyなどの多くのプログラム言語に対応しています。さらに、これから説明していく開発技術にも対応しています。勉強するにはもってこいで、実際の多くのプロジェクトでも使われています。</p>

<p></p><center><a onclick="window.open(this.href, '_blank', 'width=800,height=541,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2008/10/23/fig1_1.jpg"><img width="300" height="202" border="0" src="http://el.jibun.atmarkit.co.jp/yoshi/images/2008/10/23/fig1_1.jpg" title="Fig1_1" alt="Fig1_1" style="margin: 0px 5px 5px 0px;" /></a><br /><span style="font-size: 0.8em;color: #999999;">※クリックで拡大</span>
</center>

<p><span style="font-size: 1.2em;"><strong><span style="color: blue;">■プログラムを作る前にまずはToDo</span></strong></span></p>

<p>　プログラムを作るときに、皆さんははじめに何をしますか？ メインクラスを書きますか。そうではありません。どんな機能がプログラムに必要なのかを考えるのです。頭の中で考えているだけだと忘れてしまうので、リストアップしましょう。それをToDoリストといいます。</p>

<p>　<strong>＜＜ToDoリストの例＞＞</strong></p>

<ul><li>会社名を参照できる</li>

<li>従業員数を得る</li>

<li>従業員を増やす</li>

<li>会社を買収する</li>

<li>会社を移転する</li></ul>

<p><strong><span style="font-size: 1.2em;"><span style="color: blue;">■最新のプログラミングテクはこうだ！</span></span></strong></p>

<p>　次に、ToDoリストの1番目をプログラムにしていきます。</p>

<p>　プログラムにするときには、プログラムを動くようにしないといけないので、ToDoリストの1番目の機能を満たすテストを作ります。ここでは、ToDoリストの1番目の項目は「会社名を参照できる」なので、会社名を得るテストを考えます。</p>

<p>　そうすると、オブジェクトcmpをCompanyクラスから生成して、そのオブジェクトの会社名に&quot;A trading&quot;をセットします。そのオブジェクトの会社名がきちんとセットされたかどうかを確かめる比較（assertEquals）を行います。たったこれだけですが、オブジェクトの生成についての確認を行います。</p>

<table width="430" cellspacing="3" cellpadding="3" border="0" bgcolor="#99ffcc" align="center">
<tbody><tr><td>
<div style="font-size: 1em;"><pre>	<span style="font-size: 1.2em;">@Test public void compareName()<br />	{<br />	Party cmp = new Company(&quot;A trading&quot;);<br />	assertEquals(&quot;A trading&quot;,cmp.getName());<br />	}</span></pre></div>
</td></tr>
</tbody></table>

<p>　ToDoリストの2つ目は、計算機能です。オブジェクトには計算機能があります。その計算機能を使って、答えが合っているかを確認します。これも、1つ目と同じようにテストを作成して、その後に、実際の処理ロジックを書きます。それは、次のようになります。ここでは、Companyクラスの処理までは示しませんが、従業員数をセットするメソッドとゲットするメソッドを作りました。</p>

<table width="430" cellspacing="3" cellpadding="3" border="0" bgcolor="#99ffcc" align="center">
<tbody><tr><td>
<div style="font-size: 1em;"><pre>	<span style="font-size: 1.2em;">@Test public void compareEmpNumber()<br />	{<br />	Party cmp = new Company(&quot;A trading&quot;);<br />	cmp.setEmpNumber(100);<br />	assertTrue(cmp.getEmpNumber() == 100);<br /><br />	}</span></pre></div>
</td></tr>
</tbody></table>

<p><strong><span style="font-size: 1.2em;"><span style="color: blue;">■TDDテスト駆動開発を行なえ！</span></span></strong></p>

<p>　このように、必要な機能をリストアップして、それに基づいてテストを作成して、そのテストがきちんと動作する処理ロジックを書いていく、このようなプログラム開発方法をテスト駆動開発（Test-driven Development）、略してTDDと呼びます。この方法は、米国や欧州では主流となってきているシステム開発プロセスのアジャイル開発プロセスで使われています。開発プロセスとか方法論というと、なんだか難しそうですが、実際に見て、やってみると、思ったより難しくないことがわかります。このTDDを使って、プログラムを1つ作ってください。内容は、計算でも、文字列を表示することでも、何でもかまいません。実際にやってみることで習得して行くのです。</p>

<p>　今回はソフトウェア開発スキルのテスト駆動開発のとっかかりを説明しました。次回は、TDDによるプログラム作成をもう少し掘り下げていきます。</p>]]>
        
    </content>
</entry>

</feed>
