« 2006年1月 | トップページ | 2006年3月 »

2006年2月

2006/02/28

ソフトウェアの良い設計を行うコツ

ソフトウェアの良い設計を行うコツ

NAgileの連載3回目は、NAgileの視点から見た、よいソフトウェア設計についてです。

NAgileでは、変化を受け入れ、設計を日々改善するというスタンスを取るようです。そして、設計はシンプルに行い、必要に応じて再設計するということ。

再設計でコストを増大させないためには、設計時にテストのしやすさを指針として、自動テストを作成するそうです。また、設計としてテストを利用するために、テストファーストが必要になるようですね。

そして、良いテストを行うためのツールとして、NUnit, NUnitFormsなどが取り上げられています。

設計をするときって、どういう機能を実現するかということに目が行きがちで、変化に強い設計ややり方というのは、おざなりになりがちです。私だけかもしれませんが。。。

ちょっと、考えさせられました。

2006/02/27

Javaでカバレッジテスト

dJUnitでカバレッジテスト

あきぴーさんの「プログラマの思索」というブログで、Javaでカバレッジテストを行うことができる、dJUnitというeclipseのプラグインが紹介されています。

カバレッジテストというのは、テストプログラムを実行した結果、テスト対象のプログラムのコードが、どれだけ実行されたかを測定するテストです。カバレッジについての詳細は、こちらをご覧ください。

このツールにより、評価を行うことができるのは、C1網羅(条件網羅)C0網羅(命令網羅)です。一般的には、C0網羅は100%になるよう単体テストを行うべき、といわれているようです。その上の、C1網羅(分岐網羅)(条件網羅)も100%にすべきなようです。

※説明が間違ってました。通りすがりさん、ご指摘ありがとうございます!

現実的には、C0網羅の100%達成は難しいですが、100%を目指すようにテストをすれば、カバレッジテストを行う前よりは、かなりプログラムの品質があがります。

カバレッジテストを行うためには、JUnitなどのテストツールを導入する必要がありますが、テストツールとカバレッジテストを組み合わせると、確実に品質があがると思います。

実際に、私も、今のプロジェクトに、テストツールとカバレッジテストを取り入れましたが、なかなかいい感じです。

プログラムの品質が上がると、顧客の信頼度が上がることもありますが、何よりも自分たちが作成したプログラムに自信を持てるようになるのが大きいです。しかも、リリース後のトラブル対応が少なくなるのだから、心の平安のためにも、やらない手はないと思います。

.NETでカバレッジテストをするなら、NCoverというツールがあります。実際には、Visual Studio .NETの中でNCoverを実行を行うことができる、TestDriven.NETを使うといいと思います。

TestDriven.NETは、Visual Studio .NETの中で簡単にNUnitを実行できるツールですが、最近のバージョンでは、NCoverを実行して、さらにその結果を画面で表示できるようになったので、かなり便利になりました。

カバレッジテストをやったことがない方は、是非試してみて欲しいですね。

2006/02/25

AjaxBuilder Liteβ版を試してみた

珍しく休日の更新です。

こちらの記事で、ご紹介した、Ajax Builder Lite β版をダウンロードして試用してしました。

が、よくわからない(笑)。

このソフトは、一体何をやりたいのでしょう?

画像をクリックすると書き換わるだけ?

うーん。ナゾです。

2006/02/24

ASP.NETでWYSIWYGエディタ

[ASP.NET]FreeTextBoxコントロールでリッチな入力ボックスを作成するには?

ASP.NETでWord風のWYSIWYGエディタを実現する、FreeTextBoxというフリーのコントロールについての解説です。機能が強化された有償のPro版もあります。本家サイトは以下の通りです。

なかなかおもしろいですね。利用も難しくなさそうです。

FreeTextBoxのカスタマイズ方法の記事もあるので、参考にしてください。

ASP.NETでGoogle Suggest風のコントロール

ASP.NETアプリケーションにGoogle Suggest風の機能を追加する

CodeZineの記事になります。このCodeZineというのは、Web系の実装技術の記事が多くて結構面白いサイトです。また、最近、記事の内容をまとめた、CodeZine傑作選 という書籍も出版しています。

で、記事の内容ですが、フリーのASP.NET用のAutoSuggestBoxコントロールを使用して、Google Suggest風の機能を実装する方法が解説されています。といっても、全然難しい内容ではなく、こんなに簡単に実装できるんだ、という感じです。

システムにGoogle Suggest風の機能が必要な方には、是非試してみてもらいたいですね。私も使ってみたいです。

2006/02/23

ブログサイトを作る

自分でブログサイトを作ってみたいと思ったことはありませんか?

個人ユーザであれば、既存サービスに満足できないとき、企業ユーザであれば、社内で他の人がどんなことをやってるか知りたいときなどに、ブログサイトを作ってみたいと思うことがあるかもしれません。

今日ご紹介するソフトは、CMSツールのJawsです。これで、自分のブログサイトを立ち上げることができます。

Jawsという名前がクールですね。サメですよ、サメ。しかもジョーズ。

まあ、名前は置いておいて、JawsはPHP+DBで動作します。DBはMySQLが使えるようですね。日本語もOKです。ライセンスはGPLですね。

(最初書いたときは、SQL Serverも動くと書きましたが、SQL Serverは動作しません。失礼しました。書き方が紛らわしいよ。。。"SQL server - preferably MySQL 4.1 or above "   2006/02/23 17:00更新)

記事によると、以下の機能があるとのこと。

Gadgetsと呼ばれるモジュールはBlog、RSSリーダー、FAQ、ウェブカム、ファイルブラウザ、バナー、チャット、投票に検索などなど。標準で十分に提供されている。

十分ですね。

他にもブログサイトを作成するツールはたくさんあります。商用のものや無償のものなど。詳しくは以下のサイトを参照してみてください。

2006/02/22

NAgileのコミュニケーションという価値

アジャイル開発ではドキュメントを書かないって本当?

一つ前の記事で、NAgileのシンプルさについて取り上げましたが、今回の記事は、NAgileのコミュニケーションという価値を扱っています。

アジャイル開発ではいわゆるExcelやWordなどのドキュメントは作成しませんが、ソースコードがドキュメントに変わるものになります。そのためには、ソースコードでコミュニケーションができるようでなければならないとのこと。

アカウンタビリティ(説明責任)というものがありますが、コミュニケーションでは、情報を持っている側が責任を持って情報を伝えるべきといっています。これは、大いに賛成ですね。その方が効率がいいし、受ける側の負担も少なくなりますから。

ソースコードの悪い例として、コメントだらけのソースコードが上げられています。「交換日記じゃない」とのこと。ソースコードは、設計モデルを語るもので、それでソースコードでアカウンタビリティを果たします。

また、設計モデルを明らかにするために、名前付けの重要性も示されています。

ドキュメントの役割を果たせるようなソースコードが書き方は、アジャイル開発でなくても、参考になりますね。

NAgileのシンプルさという価値

ソフトウェア開発をシンプルにする考え方のコツ

この記事で、NAgileの中の、シンプルさという価値について説明されています。なかなか、すっとぼけていて面白いので、是非記事の方も読んでみてください。

NAgileとは、.NETでアジャイルな開発を行うことです。アジャイルとは何かは、こちらを参照してください。ちなみに、NAgileとは、ナジャイルとかエヌ・アジャイルと読みます。

記事の中で、NAgile開発の5つの価値が示されています。

  1. コミュニケーション(Communication)
  2. シンプルさ(Simplicity)
  3. フィードバック(Feedback)
  4. 勇気(Courage)
  5. 敬意(Respect)

その中で、シンプルさについて記事の中で解説がついています。

シンプルさを実現するための原則には、以下の2つがあるとのこと。

  1. 冷蔵庫にキリンの原則
  2. サイバラの原則

またすっとぼけてますが、「冷蔵庫にキリンの原則」は、問題は複雑にしないで単純なまま解くということです。

「サイバラの原則」ですが、サイバラというのは、漫画家の西原理恵子さんのことで、サイバラさんが言っていたことを原則にしたものです。それは、複雑な問題を扱う状況に持っていかないということです。

この2つの原則を実現するためには、どう作る(How)のではなく、何を作る(What)のかに注目します。そして、そのためには、テストファーストリファクタリングが必要だとも述べられています。

アジャイルのエッセンスをシステム開発に取り込むと、なかなかハッピーになれそうな予感です。

2006/02/21

AjaxBuilder Liteβ版無償提供開始

AjaxベースのWebページ作成ツール,HOWSがベータ版を提供開始

個人向けAjax開発ツールの、AjaxBuilder Liteのβ版が無償でダウンロード可能になりました。試用期間は30日間です。うーん、使ってみたい(笑)。

AjaxBuilderはコーディングをしないで、Ajaxを使用したWeb画面を作成できるというユニークなツールです。AjaxBuilder Liteはその個人向けですね。(AjaxBuilder自体は、まだリリースされてません。)

発売は3月以降になるようですが、5000円以下ということです。

Windows Vista の製品構成

米Microsoftが「Windows Vista」の製品構成を発表

Windows Vistaの製品構成が発表されたとの記事。

製品構成は以下の通り。

  • Windows Starter 2007
  • Windows Vista Home Basic
  • Windows Vista Home Premium
  • Windows Vista Business  ← WindowsXPProfessionalの後継
  • Windows Vista Enterprise
  • Windows Vista Ultimate

ちょっと、クライアントOSなのに、バージョンが多すぎるんではないかと思いました。コアなユーザには、豊富な製品ラインアップもよい思うのですが、一般ユーザはOSの種類なんか知りたいとも思ってないと思います。

まあ、個人ユーザは、Windows Vista Home Basic、企業ユーザは、Windows Vista Businessに落ち着いていくんでしょうね。

2006/02/20

SQLServer2005用のJDBCドライバ

米Microsoft,SQL Server 2005用JDBCドライバを無償で公開

見落としていましたが、SQLServer2005用のJDBCドライバが
リリースされていますね。

Javaを使いたいけど、最新のSQLServerを使いたい方には
朗報ですね。

2006/02/16

マインドマップ

最近、マインドマップが流行ってますね(Wikiでとりあげたことがありますが)。

書籍も大分出版されるようになりました。

マインドマップがどんなものか知りたい方は、以下のサイトを見るとよいかもです。

また、実際に使ってみたいという方は、FreeMindというオープンソースのソフトがあるので使ってみてください。日本語対応もされていて、画像やPDFに出力できるので便利ですよ。詳しくは以下のサイトをご覧ください。

実際、私も使っているのですが、思考をまとめようとするときにとても重宝しています。設計書を書く前の、プレ設計書みたいな感じでも使ってます。

マインドマップが登場する前は、以下のフリーソフトを使用していました。最近は使用していませんが、インストールなしで簡単に使えるので重宝してました(FreeMindはJavaをインストールするため、ちと面倒)。

こういった思考支援ツールを使うと、作業もはかどるし、品質もよくなると思われるので、ぜひ一度使ってみてください。

2006/02/15

プロセスフローダイアグラム

PFD(Process Flow Diagram)の書き方

こちらの(株)システムクリエイツのコンサルタントである清水吉男さんのサイトで、プロセスフローダイアログというものが紹介されています。

清水吉男さんは、こちらの書籍を出版している方です。結構売れてるみたいですし、いいことを書いてます。またSoftware Peopleなどでも記事を書いています。余談ですが、このSoftware Peopleという雑誌は、とてもためになる記事が多いので一読をおすすめします。

それで、このPFDというものは、構造化分析手法ででてくるDFD(Data Flow Diagram)を、プロセスの設計に応用したもので、清水吉男さんのオリジナルです。オリジナルといっても、実際のコンサルタントで多くの実績を出し、CMMでも同様の考え方をしているというので、信頼できるものではないでしょうか。

具体的な内容や使い方は、最初のリンクのPDFファイルにわかりやすくまとめられているので、そちらを参照してください。

このPFDを使うことのメリットは、目に見えないプロセスというものを、目に見えるようにできることです。目に見えるようにすることで、シミュレーションを行うことが可能になり、プロセスの改善を行うことができるようになると思います。

「プロセスを改善する」という言葉はよく聞きますが、何をどのように改善するのか、それによってどのような効果がでるのかは、結構あいまいになりがちです。ですが、このPFDを使用することで明確にすることができるようになると思います。

最近のシステム業界ではやりの”見える化”にもつながりますね。

2006/02/14

VS2005のジェネリック・クラス

C#&VBジェネリック超入門(前編)

@ITにて、Visual Studio 2005でバージョンアップしたC#2.0とVB2005に追加された、ジェネリック・クラスについての解説が公開されています。

ジェネリック・クラスとは、C++でいうところのテンプレートクラスと同じものだと思います(記事にはないですが)。具体例を見るとイメージがつくと思います。

C#2.0では、従来のArrayListはあまり使われなくなるだろうと記事にあります。ArrayListを利用するソースは以下のようになります(記事より引用)。

using System.Collections;

ArrayList alist = new ArrayList();

alist.Add("こんにちわ");
alist.Add("さようなら");

string greeting;
greeting = (string)alist[0]; // キャストが必要

これには以下の問題がありました。

  1. ArrayListにどんなクラスでも入ってしまう。
  2. 取り出すときにキャストしなければいけない。

1は実行時エラーを起こす可能性があり、2はキャスト処理のためにオーバーヘッドが生じる問題があります。この問題がジェネリック・クラスでは解消されて、以下のようなソースになります(記事より引用)。

using System.Collections.Generic;

List<string> stringList = new List<string>();

stringList.Add("こんにちわ");
stringList.Add("さようなら");

string greeting;
greeting = stringList[0]; // キャスト不要

このようなジェネリック・クラスが、ハッシュテーブルなどにも用意され、自作クラスでも利用できるようになりました。便利になりましたね。

2006/02/10

Delphi,JBuilder売却へ

米ボーランドがIDE事業を売却、「Delphi」はどこへ

びっくりニュース。

米ボーランドは2月8日、アプリケーションライフサイクル管理(ALM)事業の推進のために、統合開発環境(IDE)の一部事業を売却する計画を発表した。売却を計画しているのは「Delphi」「C# Builder」「C++ Builder」を含む「Borland Developer Studio」と、「JBuilder」で、売却先を検討している。

Delphiは私は縁がなかったですが、結構ユーザ数がいるのでは?

JBuilderはJavaのIDEですが、JavaのGUIアプリケーションを作成できる有力なツールを他に知りません。Web系であればEclipseやWebSphereがありますが。

売却先がしっかりした製品開発とサポートを提供してくれればいいのですが、どうなるんでしょう。既存ユーザは不安ですね。

2006/02/09

Visual Studio 2005対応コンポーネント

グレープシティ、Ajaxエンジン採用のGUI構築コンポーネントを販売

今日は意欲的に2つの記事を更新。こういうことをすると後で苦しくなるんですが(笑)。

Visual Studio 2005対応のGUIコンポーネントが3月下旬に発売になるとのこと(VS.NET2003にも対応)。

  • NetAdvantage2005 ・・・\134,400(ランタイムフリー)
  • NetAdvantage2005(サブスクリプション付き) ・・・\186,900(ランタイムフリー)

このコンポーネントには、WindowsコンポーネントとWebコンポーネントが含まれています。両方とも、グリッドコントロールやチャートコントロールが含まれていて、全部で78種類ものコンポーネントがあります。

Webのグリッドコントロールで特徴的なのが、グリッドにAjaxエンジンを搭載していて、グリッドの書き換えを行ってもページ遷移が発生しないということです。また複数行ヘッダもありかなりよさげ。

ライセンスでは、サブスクリプション付きを購入すると、1年間の無償バージョンアップが付く上に、ソースコードまで入手できます。5万程度の差でバージョンアップとソースコードが手に入るならサブスクリプション付きの方がいいでしょうね。

またランタイムフリーというのが大きいです。Windowsアプリケーション用コンポーネントでランタイムフリーというのはよくあるのですが、サーバで利用する場合はCPU単位のライセンスの購入が必要なことがよくあります。しかも1CPUあたりン十万。

そう考えると、1開発ライセンスで20万弱というのは高い気がしますが、トータルで見れば結構よさげな商品だと思いました。

Windows Server 2003 R2の概要

Windows Server 2003 R2の概要

@ITにて先日(2/3)に提供開始された、Windows Server 2003 R2についての特集が組まれています。

基本的には以下のような感じ。

Windows Server 2003 R2Windows Server 2003 SP1に対していくつかの機能をアドオンしたもの。新機能を利用しなければWindows Server 2003 SP1とほぼ同じである。そのためSP1向けのプログラムはほとんどそのまま、何もせずにR2上で利用できる。

また、R2のリリースにより、Windows Server 2003SP1の提供は、2月いっぱいで終了とのこと。

記事の中から、へぇと思ったものをピックアップ。

  • MMCのバージョンアップ
  • 新しい管理ツールパック
  • ファイル・サーバの管理ツール

Windowsの管理コンソールであるMMCが、2.0から3.0にバージョンアップ。使い勝手が向上したとのこと。

新しい管理ツールパックは、サーバをリモートのマシンから管理するためのツール。従来もAdminpak.msiとして提供されていたものを、MMC3.0を利用して、より機能が増えた模様。

今まで、Adminpak.msiというものがあったのすら知りませんでした。このツールは、Windows Server 2003の以下のパスに存在しています。WindowsXPsp2にインストールして、ちょっと触ってみましたが結構便利です。

  • C:\WINDOWS\system32\adminpak.msi

ファイル・サーバの管理ツールが新たに追加されたとのこと。中でも便利そうなのが、今までできなかったフォルダ単位の容量制限ができることです。また、特定の拡張子を持つファイルの保存を制限できるようになります。ファイルサーバ管理者には便利でしょうね。

2006/02/08

Visual Studio 2005のリファクタリング機能

Visual Studio 2005 「リファクタリング支援機能」徹底レビュー

@ITてVS2005のリファクタリング機能が特集されています。

Eclipseにはリファクタリング機能がついていましたが、Visual StudioはVS2005で初めて標準で組み込まれました。これまではサードパーティ製のツールで提供されていました。

     ・VS.NET2003のリファクタリングツール(多分これ)
          ・C# Refactory

     ・Eclipseのリファクタリング機能
          @IT Eclipseによるリファクタリング

この記事を読むと、NUnitなどの自動テストと併用しない限りは使うべきではないということを言っていますが、リファクタリングをするなら自動テストするのは当たり前なので問題にならないでしょう。

で、魅力的だと思ったのは以下の2つの機能です。

  • 名前の変更
  • メソッドの抽出

名前の変更は、あるクラスのメソッド名を変更すると、同一ソリューション内でそのメソッドを呼び出してくれる部分を全て変更できる機能です(選択更新可)。

メソッドの抽出は、メソッド内のコードが長くなってきたときなどに、選択した部分のコードを自動的に別メソッドに切り出す機能です。なんとパラメータが必要なときは、自動でパラメータもつけてくれます。

この機能だけでもVS2005が使いたくなりますね。

しかし、VS2005はしばらく使う機会がない。むーん。。。

ちょっと補足です。VBだと全ての機能は使えないようですね。

VS 2005のリファクタリング支援機能は、C#に対して機能する。残念ながらVisual Basicなどのほかの言語では機能しない(次項で解説している「名前の変更」だけはVisual Basicでも可能)。

2006/02/06

C++コーディング標準

C++ Coding Standards

C++のコーディング標準の本が出版されています。

先日本屋に行ったときにパラパラと見てみましたが、結構いい感じです。こういう本ってなかなかないのでありがたいですね。

最近はあまりC++を使ってないので購入まではしてませんが、いずれまたC++を使うときにでも購入しようかと思ってます。

また、ネットでもC++のコーディング標準が公開されています。参考までに。

2006/02/03

PDF出力用フリーソフト

MOONGIFTというサイトで、フリーのPDF出力用ソフトが紹介されていました。

実際にインストールして使ってみましたが、結構きれいに印刷されますね。

ちょっと広告の出方がウザいですが。

また、Vectorでも以下のソフトが公開されています。

こちらはインストールするのにユーザ登録する必要があるので、これはこれでウザいですが、日本語のソフトなので使いやすいですね。またパスワードなんかも設定できて便利です。

2006/02/01

IBMが無償のDB2を提供開始

米IBMが無償データベースを提供開始、日本語も利用可能

IBMが無償のDB2である、DB2 Express-Cを提供開始しました。こちらからダウンロードできます。

無償なので以下のような制限がついてます。

プロセサが2個まで、メモリーの容量が4Gバイトまでという制限が設けられている。データを分散配置する「パーティション・データベース」や、DB2が処理できる同時ユーザー数を増やすことができる「コネクション・コンセントレーター」といった、DB2 UDBが備える機能も利用できない。

これ位だったら、小規模だけどAccessでは処理に不安のあるシステムに採用できる可能性がありますね。本当に採用する場合は、バックアップなどの運用にかかわる機能が十分にサポートされているか調査する必要はあると思いますが。

SQL Serverは既に無償版を提供しています。Oracleも無償版を提供をしていると記事にはあったのですが、Oracleのサイトでは見つかりませんでした。SQL Serverのみリンクを張っておきます。

« 2006年1月 | トップページ | 2006年3月 »



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。

    現在、Enty で支援を受け付けています。もしよければご支援ください。



    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから