« 2009年4月 | トップページ | 2009年6月 »

2009年5月の32件の記事

2009年5月30日 (土)

[TDD の練習(5)] app.config を読み込んで保持していてくれるオブジェクト

ネタ元 ⇒ nunitのテストの仕方やメソッドの可視性

AppConfigクラス
  ConfigurationManagerクラスを使ってフィールドに値を格納するメソッド
  格納した値を検査するメソッド
このようなクラスを作成する場合、皆さんはどういうクラスにするのでしょうか?

え~、 実際にやってみたら、 掲示板に書いたのとは違って、 Validate() メソッドは消えてしまい、 setter で検証するカタチになっちゃいました f(^^;

ネタ元のほうで想定されている、 app.config 内の設定値はけっこうたくさんあるんだろうけど、 ここでは string の AppData01 と、 int の AppData02 の 2つだけだとします。
そのほか、 私のほうで想定した仕様は、 こんな感じ。
・ アプリケーションのどこからでも設定を参照したい。
・ アプリケーションの設定は app.config に入っているものを使う ( 当面は。 将来は DB とかから持ってくることがあるかもしれない。 )
・ 設定は読み出すだけ。 ( 当面は。 将来は app.config を書き換えたくなるかもしれない。 )
・ app.config の設定値が範囲外だったら、 アプリケーションが実行できてはいけない。 例外を出すこと。 ( AppData01 は not null であること。 AppData02 は 1 ~ 100 であること。 )

私は、 シングルトンパターンにしてみました。
今回は、 テストコードの説明が長くなるので、 テストコード AppConfigTest.cs 自体を読んでやってください。 テストコードは、 アタマから順番に読み進めてもらえるように書いたつもりです。 なお、 今回から C# 2008 Express + NUnit 2.5 になっています。 ソリューション一式はこちら → AppConfig_20090530.zip [20,964バイト]

以下は、 完成した AppConfig3 クラス。 ( ソリューションには、 途中経過状態の AppConfig1 と AppConfig2 も入っています。 )

続きを読む "[TDD の練習(5)] app.config を読み込んで保持していてくれるオブジェクト"

| | コメント (2) | トラックバック (0)

2009年5月29日 (金)

Lab Managment ~ VSTS 2010 の "1 Click Deploy"

長沢智治のライフサイクルブログ より。

多層アプリケーションの自動ビルド ⇒ デプロイ ⇒ テスト – VSTS 2010 Lab Management (ブログ記事紹介)
Published 28 May 09 03:27

多層なアプリケーションのテスト環境を構築し、そつなくテストを実施するには、手間がかかります。 ただしくビルドできているのか?はまだしも、 ただしく配置できているか?は、 死活問題です。

テスト前に気づけばいいですが、 テスト途中やテスト終了後に気づいたら・・・やり直しです。 大きな手戻り(rework)となります!

そのあたりを含め、 そして仮想化技術を活用し、 課題を解決してくれるのが、Lab Managment です。

これも、 なかなかフォローできないでいるもののひとつではあります。
紹介されてる英文記事 …いつか読めるだろうか (;;

昨年末の Somasegar's WebLog : Lab Management in VSTS 2010 は、 Soma's .NET Expert Blog - 日本語版 - で翻訳していただけてるので、 読んだんですけどね f(^^;

とりあえず、 Lab Management というのは、 仮想マシンの環境を構築してはテストすることができるものだ、 と ( 正しいかどうか自信は有りませんが ) 理解しております。

続きを読む "Lab Managment ~ VSTS 2010 の "1 Click Deploy""

| | コメント (0) | トラックバック (0)

2009年5月28日 (木)

[プログラム設計事始] メソッドの外部設計(3)

今回は、 トランザクションを含むメソッドと、 フレームワークやライブラリ呼び出しの扱いかたを、 取り上げてみます。

 

◆ トランザクションの扱い

データベースへの更新処理を複数含むメソッドでは、 トランザクション処理をする場合が多いです。 次のようなメソッド DbUpdate() を考えてみましょう。 一文で書くと長くなりすぎるので、 箇条書きにします。
・ 引数: id, 文字列 a, 文字列 b
・ テーブル A に、 キーが id のレコードがあったら、 特定のフィールドを a に更新する。
・ テーブル A に、 キーが id のレコードがあったら、 特定のフィールドを a にしたレコードを追加する。
・ テーブル B に、 キーが id のレコードがあったら、 特定のフィールドを b に更新する。
・ テーブル B に、 キーが id のレコードがあったら、 特定のフィールドを b にしたレコードを追加する。
・ テーブル A または B に対する更新/挿入処理に失敗したら、 ロールバックする。
・ 処理に成功したら true を返す

これをそのまま表に書いていくと、 かなり複雑になってしまいます。
そこで、 最初からメソッド分割をしてしまいましょう。

まず、 テーブル A に対して更新/挿入する UpdateA() メソッド。

引数 外部条件 外部変化 返値
int id string a A への挿入操作 A の更新操作 テーブルA bool
テーブルA に有る値 (any) --- 成功 a に更新 true
テーブルA に有る値 (any) --- 失敗 (不明) false
テーブルA に無い値 (any) 成功 --- id 列が追加 true
テーブルA に無い値 (any) 失敗 --- (不明) false

※ 「---」 は、 その事象が起きないことを示します。
※ テーブル上では挿入や更新がされているのに SQL としては失敗することがあるので、 失敗したときのメソッド終了時のテーブルの状態は 「不明」 です。


テーブル B に対して更新/挿入する UpdateB() メソッドも同様です。 ( 表は省略 )

すると、 メソッド DbUpdate() は、 次のように定義できます。

引数 外部条件 外部変化 返値
int id string a string b UpdateA (id, a) UpdateB (id, b) テーブルA テーブルB bool
(any) (any) (any) true true 更新or挿入 更新or挿入 true
(any) (any) (any) true false 変化無し 変化無し false
(any) (any) (any) false --- 変化無し 変化無し false

※ UpdateA(), UpdateB() が失敗したらロールバックしなければなりません。 メソッド終了時にテーブルの 「変化無し」 というのは、 ロールバック処理が行われることを意味しています。
※ UpdateB() の最下段が 「---」 になっているのは、 UpdateA() が失敗したら UpdateB() の呼び出しはしない、 という意味です。


このように、 トランザクションのことを考えずにそれぞれのテーブルを更新するメソッド
( UpdateA(), UpdateB() ) と、 全体のトランザクションを管理するメソッド ( DbUpdate() ) に分解してやると、 うまく設計できるようです。
※ 実際には、 トランザクションを掛けたコネクションオプジェクトを UpdateA(), UpdateB() に渡してやったり、 あるいは、 トランザクションのためのフレームワーク ( MSDTC など ) を利用したりします。

 

◆ フレームワークやクラスライブラリなどの呼び出しの扱い

メソッドの外部設計書には、 メソッドとその外部とのやりとりを記載すると言ってきました。
では、 メソッド内で呼び出しているフレームワークやクラスライブラリなどのメソッドを、 全て書き出さないといけないでしょうか?
もしもそれをやると、 表がとんでもなく大きくなってしまうでしょう。 また、 それをするためには、 メソッドの内部が全て決まっていないと ( つまり、 コーディングが終わっていないと ) いけないということになるでしょう。

メソッドの振る舞いを定義する表には、 次のものだけを記載します。
フレームワークやクラスライブラリなどの呼び出しにより…
・ メソッドの振る舞いが変わるもの。
・ 外部に変化を及ぼすもの。

たとえば、 DateTime.Now の値によってメソッドの振る舞いが変わる ( 昼と夜で違う結果になるなど ) ならば、 表に含める必要があります。 そうでなければ、 省略します。

たとえば、 ConfigurationManager.AppSettings.Save() メソッドを呼び出したら、 app.config ファイルに変化が起きるはずですから、 表に含める必要があります。

※ ただし。 呼び出すことになるであろうクラスやメソッドやプロパティを、 全て洗い出しておくべきだ、 という見方も有ります。
これは、 プロジェクト間の参照関係を検討する必要もあるからです。
参照していないプロジェクトに存在するメソッドは呼び出せませんよね。 メソッドの実装に取り掛かってからそういう事態が発覚すると、 メソッドの置き場所を変えたり、 場合によってはプロジェクトの構成を考え直したりしなければならなくなることもあります。

| | コメント (0) | トラックバック (0)

2009年5月27日 (水)

NUnit の "Hello, world!" ~ C# 2008 Express + NUnit 2.5 で、 テストファーストの Step by Step

※ このコンテンツは、 TDD.NET に移動します。

NUnit をインストールして動作確認までできた ので、 次は、 NUnit を使ってテストファーストでプログラムを作る方法についてです。

開発環境としては、 Visual Studio 2008 Express Edition SP1 の C# を使います。
なお、 Visual Studio 2008 の Pro. 版以上には、 MS 独自の単体テスト機能がありますが、 基本的な考え方は NUnit を使う場合と変わりません。

テストファーストでプログラムを作っていく方法 ( TDD : Test Driven Development ) は、 次のような流れになります。

[0] 作成したいメソッド ( および、 そのメソッドを含むクラス ) の仕様を考える。
  ↓
作成したいメソッドの外部設計書を記述する。 ( 省略可。 というより、 TDD に慣れてしまえば不要。 )
  ↓
[1] 作成したいメソッドをテストするコードを Visual Studio などで作成する。
  ↓
NUnit ( または、 Visual Studio の単体テスト機能 ) で、 テストを実行する。 (作成したいメソッドはまだ完成していないので) もちろん、 失敗する。 【レッド】
  ↓
[2] 作成したいメソッドを Visual Studio などで書き、 ビルドする。
  ↓
[3] NUnit ( または、 Visual Studio の単体テスト機能 ) で、 テストを実行する。
テストが失敗したら、 [1] または [2] に戻る。
テストが成功したら次へ進む。 【グリーン】
  ↓
[4] 作成したメソッドの内部をきれいに書き直す。 またテストを実行し、 メソッドの振る舞いが変わっていないことを確認する。 【リファクタリング】
  ↓
[0] に戻る。

特徴:
・ コードを書き始める前に、 メソッド単位までプログラムを分解する。 ( プログラムの内部設計 )
・ そのメソッドの振る舞いが完全に把握できるレベルまで、 細かく分解する。 ( メソッドの外部設計 )
   
※ 把握できていれば、 メソッドの外部設計書を書けるはず。
・ メソッドの外部設計を、 テストコードとして表現する。 ( テストの自動化 )
・ 先にテストコードを作るので、 そのテストは (一応) ブラックボックステストになる。
 
※ テストコードを書く時点で、 たいていはメソッドの内部構造も 「見えて」 いますから、 「一応」 です。
・ テストはすぐに何度でも自動実行できるので、 リファクタリングを実施してコードをきれいに保つことが出来る。

TDD では、 レッド → グリーン → リファクタリング → … のリズムを大切にします。 「波に乗った」 状態になると、 集中力を持続したまま、 効率良く開発が進むからです。
また、 TDD では、 テストコードを作る前の手順は規定していません。 慣れた人は、 いきなりテストコードを書きます。 不慣れなうちは、 プログラムの内部設計 ( 文章、 クラス図、 シーケンス図 etc. ) のドキュメントを作ったり、 メソッドの外部設計書を書いたりして、 これから作るメソッドの外部設計をきちんと把握してから、 それをテストコードに変換するようにするとよいでしょう。

それでは、 最初に作るプログラムのお約束となっている "Hello, world!" に取り組んでみましょう。

続きを読む "NUnit の "Hello, world!" ~ C# 2008 Express + NUnit 2.5 で、 テストファーストの Step by Step"

|

2009年5月26日 (火)

ADO.NET EntityFramework ver.4

.NET Framework 3.5 SP1 と一緒に出てきた EntityFramework v1 だけど、 先月までの開発プロジェクトでは使う機会は無くて、 失業中w に遊びたいな~、 と思ってるうちにもう 5月も終盤。
VS10beta が出てきたので、 まるっきり v1 を触れないでいるうちに、 v4 を追っかけないといけない状況に… (汗;

あ、 バージョン 4 って言ってますけど、 .NET Framework ver.4 に合わせてるだけらしいです。 略称は EF4 だそうで …電気機関車かい!? (w
# え!? そんな車両はない? f(^^;;;

さて、 「こだかたろうです」 より。

New EntityFramework
Posted: Monday, May 25, 2009 4:22 PM

Persistence-Ignorant Objects
いわゆる PI シナリオのサポートですね。 永続化層に対して特定インタフェイスや特定プロダクトの実装をエンティティにいれこまないことが可能です。 システムの汎用化を促進します。 で、 当然 POCO を使用します。

このへんかな。 ⇒ MSDN ライブラリ - Persistence-Ignorant Objects ( 今日現在、 まだ日本語訳はありません )
「EntityFramework の永続化の仕掛けのことを知らない (Persistence-Ignorant) 」 POCO ( "plain-old" CLR objects ) なクラスでも、 EntityFramework を使えば DB と結び付けられるようなる ( …でいいのかな f(^^;  )

※ POCO って、 Plain-Old C Object ( C の struct との互換性を意識したクラス ) ってのがあったよなぁ。 まぎらわし~

Model-First Support
これも正常進化系、 概念モデルより、 データベースのモデルを作成する形が可能になります。
スクリプトが発行可能なんですね。 使用するかは置いておいて。

雲のごとく - Visual Studio 2010 beta 1 登場 を読むと、 テーブル生成用の SQL を吐いてくれる、 という程度らしいです。
ドメインモデルと既存のテーブルを摺り合わせてくれるようになってくれれば、 使えるんだけどねぇ。

LINQ to SQL は、 どうしてもビジネスロジックの中で SQL Server のことを気にしないといけなかったので、 しょせんは繋ぎ。 本命は EntityFramework だと思ってはいるんですが、 楽勝で使えるようになるには、 もうしばらく掛かりそうです。

| | コメント (4) | トラックバック (0)

VAIO type P with WinXP

GIGAZINE に曰く、 「ミニノート「VAIO type P」に、新たにWindows XPを採用したモデルが登場
…遅すぎだよなぁ。 今なら、 Win7 アップグレード権くらい付けてくれんと f(^^;

# この書き込みは、 Win7RC 載っけた Eee PC 1000H から。 今、 火狐のタブが全部で 128枚くらい開いてるぞw

| | コメント (0) | トラックバック (0)

2009年5月25日 (月)

NUnit 2.5 がリリースされているので、 Windows 7 RC に入れてみた。

今月初旬に、 NUnit 2.5 がリリースされていたようです。

※ 「ようです」 というのは日付がはっきりしないから。 http://nunit.com/ の悪いクセで、 文章にまったく日付を入れてくれないので、 さっぱりわかりません。 nunit.com の blog には何か書いてあるかもしれませんが、 今日は server error が返ってくるばかり。

いちおう、 SourceForge.net のフォーラムに投稿されている "News: NUnit 2.5 Final Release" が 5月 3日付け、 同じくダウンロードページに書いてある日付が "May 2, 2009" であることから、 そのあたりだろうと思われます。

なお、 nunit.com のトップページの RECENT NEWS に、 "NUnit 2.5 Final Release" と載っていますが、 そこの "Release Notes" のリンクをたどると、  RC 版のリリースノート "NUnit 2.5 Release Candidate - Version 2.5.0.9117 - April 27, 2009" に誘導されちゃいます。 ( 今日現在、 ダウンロードページにあるのは、 "2.5.0.9122"。 )

2.5 で強化された機能については、 ZOETROPEの日記 が詳しく書いてくださってます。 ( RC となっていますが、 日付からすると試したのはリリース版だと思われます。 )
その他、 日本語では、 1年ほど前のα版の時点になりますが InfoQ の記事があります。 同じく InfoQ ですが、 英語版にはリリース版についての記事があります。
とりあえず 1点だけ挙げるとするなら、 データ駆動テストに対応した、 ってとこでしょうか。

※ これ以降は、 TDD.NET にも同じものがあります。

実際に、 Windows 7 RC に、 リリース版の 2.5.0.9122 をインストールしてみます。

続きを読む "NUnit 2.5 がリリースされているので、 Windows 7 RC に入れてみた。"

| | コメント (6)

[Windows 都市伝説] 入力文字の表示を速くする設定!? IBM も一役

今日の MSN産経ニュース に、 こんな記事があった。 記事のジャンルが 「ニュース: 科学」 とあるからには、 たいていの人はそこに書かれていることは正しい、 と思うはずだ。 全文を引用する。

【ITエクスプレス】 入力速度に合う文字表示に - MSN産経ニュース
2009.5.25 08:47

 パソコン操作に慣れた人は、 キーボードを見ない 「ブラインドタッチ」 で素早く文字入力作業を行う。 速い人は、 1分間に200文字以上の入力が可能という。 このぐらい速くなってくると、 キー入力に比べて画面の文字表示が遅く感じられ、 もどかしくなってしまうことがある。

 こんなときは、 キーボードの反応スピードを速めに調整してみよう。 やり方はこうだ。 コントロールパネルの 「ハードウエアとサウンド」 で 「キーボード」 を選択。 続いて表示されたパネルの 「文字の入力」 欄で、 スライダーを動かして、 「表示までの待ち時間」 を短く、 「表示の間隔」 を速く調整してみよう。

 こうすると、 入力した文字が表示されるまでの待ち時間が短くなり、 次の文字が表示されるまでの間隔も速くなるので、 入力スピードが速い人でも、 タイムラグを感じてイライラすることがなくなるはずだ。 また、 表示が速くなった効果で、 入力スピードが上がった気がしてくるのもうれしい。

 ただ、 あまり速くしすぎると、 かえって入力しづらくなることもあるので、 自分に合った設定を見つけてほしい。 (伊藤壽一郎)

記事はこれが全てだ。 画像などは附加されておらず、 この文章だけだ。
この記事をすみからすみまでじっくり読んでみて、 この設定で変わるのは 「キーリピート」 ( 同じキーを押し続けたときに、 その文字が連続して入力されること ) の動作だけである、 と理解できる人はいるだろうか?
普通に読む限り、 キーを一回押したときにその文字が出てくるまでの時間が短くなる、 と理解するであろう。

続きを読む "[Windows 都市伝説] 入力文字の表示を速くする設定!? IBM も一役"

| | コメント (1) | トラックバック (0)

2009年5月24日 (日)

[Windows 7] Vista より 「軽くなった」 理由

beta や RC を使っていると、 Vista に比べて、 うんと軽快に動いてくれるという印象があります。
個人的な感想としては、 WPF アプリの開発用に使っていたそれなりにハイスペックな Vista マシンと、 Eee PC に入れた Win7 RC が、 普段使いでは大差無いように感じてしまいます。 ( もっとも、 プログラムのコンパイルとか、 マシンパワーを必要とする処理をやらせると、 とたんに処理の遅さを実感するわけですが。 これは、 あくまで PC の能力差。 )

WPF は、 とくに軽くなったと思える部分で、 きっと WPF 自体も相当チューニングされているのだと思います。
それだけでなく、 IE8 や Firefox3 を使っていても、 軽いと感じます。 ( Open Office も使っていますが、 他のマシンでは使ったことが無いので、 比較できません。 )

実際に使っていると、 OS 全体として軽く動くようになった、 という印象があります。
しかし、 ベンチマークテストでは、 Vista と大差無い結果になっているようです。
それはなぜか?

マイクロソフトのEngineering Windows 7 ブログ の 「 Windows 7 グラフィックス パフォーマンスのエンジニアリング ( May 22, 2009 )  という記事で解説されています。 ( 日本語です。 )

ようするに、
GDI の同時実行
デスクトップの描画用に消費するメモリ量を削減
の 2つによって、 デスクトップ描画の際のストレスが大幅に減った、 ということのようです。

※ 以下、 記事からグラフを引用

20090524_win7_01
GDI 同時実行によって、 4コアの CPU ならば、 4アプリケーションの描画が同時に実行できるようになった ( 赤い線 )
Vista では、 CPU コアの数によらず、 常に一定量の処理、 つまり、 同時に動いているアプリケーションの数が増えると相対的に描画性能が低下していた ( 青い線 )

20090524_win7_02
Vista ( 赤 ) と比べて、 ウィンドウを開くごとに消費するメモリの増加量が、 うんと小さくなりました ( 緑 )
これは、 ウィンドウをたくさん開いてもページングが起こりにくいということになります。

なお、 このメモリ削減の手法については、 NyaRuRu の日記 に昨年の 11月に書かれた 「 Windows 7 のグラフィックスの変更点を整理する 」 が詳しいです。 ( NyaRuRu さんが予想で書かれた解説なので、 細部では異なっているところがあるかもしれません。 )

| | コメント (0) | トラックバック (0)

2009年5月23日 (土)

健康な人は、 マスクの購入を控えるべきとき

新型インフルエンザの感染拡大につれて、 店頭からマスクが消えてしまうという事態が起きています。
マスクは、 予防にほとんど効果を発揮しないのですから、 今は、 本当に必要としている感染者が入手しやすくなるよう、 健康な人は購入や使用を控えるべきときでしょう。

十分に供給があるときならば、 気休めのためにマスクをすることも、 別に構わないとは思いますけどね。

いまは、 各地でマスクが売り切れてしまい、 行列に並んでまで健常者も入手しようとやっきになっている状況みたいです。
店頭にマスクが無いということは…、 感染者が通院のために外出しなければならなくなった、 とか、 感染していないと思っての外出中に咳が出始めた、 とか、 そういったただちにマスクをすべき状態の人が、 マスクを入手できないということです。

極端な言い方をするなら、
 健康なあなたがマスクを買うことは、
 感染を拡大させること
…になりかねないのです。


次に示すのは、 昨年 11月 20日に開かれた 新型インフルエンザ専門家会議  に出された資料です。
※ この時点での 「新型インフルエンザ」 は、 鳥インフルエンザなどの強毒性を想定しています。 弱毒性とされる今の新型にたいしては、 もっと緩やかでもいいはずです。

新型インフルエンザ流行時の日常生活におけるマスク使用の考え方
新型インフルエンザ専門家会議
平成 20 年 11 月 20 日

1. 症状のある人が、 咳・くしゃみによる飛沫の飛散を防ぐために不織布(ふしょくふ)製マスクを積極的に着用することが推奨される(咳エチケット)

2. 不織布製マスクのフィルターに環境中のウイルスを含んだ飛沫がある程度は捕捉されるが、 感染していない健康な人が、 不織布製マスクを着用することで飛沫を完全に吸い込まないようにすることは出来ない。よって、 咳や発熱等の症状のある人に近寄らない(2メートル以内に近づかない)、 流行時には人混みの多い場所に行かない、 手指を清潔に保つ、 といった感染予防策を優先して実施することが推奨される。

3. 不織布製マスクについては、 新型インフルエンザ流行前に流行期間に応じたある程度の備蓄を推奨する。 なお、 不織布製マスクは、原則使い捨て(一日一枚程度)とする。

続きを読む "健康な人は、 マスクの購入を控えるべきとき"

| | コメント (0) | トラックバック (0)

2009年5月22日 (金)

螺旋状ウィングレット (Spiroid winglet)

technobahn より。

米 AV I社が開発中のスパイラル型ウィングレット
2009/5/20 15:59

 AVI 社ではこのスパイロイド・ウィングレットを採用することで航空機の燃費効率は6~10%も向上すると述べている。

ぁあ、 なるほどねぇ。
20090522_spiroidwinglets01
http://www.aviationpartners.com/news/API_ebace_news.pdf より。

翼端渦と逆巻きの渦を発生させて、 翼端渦を打ち消そうというわけだ。

詳細は、 AINonline の EBRACE Convention News 2006年 5月 3日号 に "Technology reshaping Aviation Partners' winglets" (by Ian Goold) に紹介されてます。 ( 文章は、 AINonline の記事として、 また、 その部分の紙面だけを pdf 化したものが AVI のサイトにあります。 )

| | コメント (0) | トラックバック (0)

[プログラム設計事始] メソッドの外部設計(2)

◆ 複雑なメソッド ~ 2入力 / 2出力 の場合

[プログラム設計事始] メソッドの外部設計(1)」 では、 1入力 / 1出力 というシンプルなメソッドの外部設計を、 すべての入出力を定義した表として書いてみました。

入力 / 出力の数が増えても、 考え方は同じです。 ただし、 入力の組み合わせをすべて網羅するので、 表は大きくなります。

ところで、 前回は 入力 / 出力 として、 メソッドの引数と返値だけを考えました。
Program_design03_01
その他に、 メソッドの外部設計で考慮しておくべきことはないでしょうか?

まず、 メソッドの振る舞いに影響を及ぼすメソッド外部の条件があります。 ( 以降、 外部条件と呼ぶことにします。 )
メソッド中で読み込むファイルのデータが、 そうです。 その他に、 データベースを検索した結果や、 メンバ変数の値など、 メソッドの外にあってメソッド内で利用するデータは外部条件です。

さらに、 他のメソッドの返値も外部条件に含めます。
例えば、 DateTime.Now という外部条件 ( システムの現在日時 ) に基づいて、 現在時刻が午後かどうかを返すメソッド…

public bool IsNowAfternoon()
{
    DateTime nowTime = DateTime.Now;
    return IsAfternoon(nowTime);
}

…を、 次のように 2つのメソッドに分解することができます。

public bool IsNowAfternoon()
{
    DateTime nowTime = GetNowTime();
    return IsAfternoon(nowTime);
}

private DateTime GetNowTime()
{
    return DateTime.Now;
}

ここでは、 メソッド GetNowTime() の呼び出しと、 外部条件 DateTime.Now の取得は等価ですね。

これらの外部条件は、 メソッドの振る舞いに影響を及ぼすものですから、 メソッドに対する入力であると言ってもよいでしょう。

また、 メソッドの振る舞いによって、 影響を受けるものが、 メソッドの返値以外にもあります。
まずは、 出力用として渡された引数があります。 そのほかに、 メソッド中で書き換えたファイルや、 メンバ変数などもあります。 そうしたメソッドの外部の変化も、 そのメソッドの出力と考えられます。

まとめると、 次のように考えることができます。
Program_design04_01

【入力】 ( メソッドの振る舞いを決定する )
・ メソッドの引数
・ 外部条件 ( ファイル読み込み, DB クエリ, メンバ変数の読み取り, 呼び出したメソッドの返値 )

【出力】 ( メソッドの振る舞いに影響される )
・ メソッドの返値
・ 出力用の引数
・ 外部変化 ( ファイル書き込み, DB 更新, メンバ変数へ書き込み, メソッド呼び出しの影響 )


以上を踏まえて、 2入力 / 2出力 の外部設計の例として、 入力が引数 1つと外部条件 1つ、 出力が返値 ( 1つ ) とメンバ変数の変化 1つ、 というメソッドを考えてみます。

続きを読む "[プログラム設計事始] メソッドの外部設計(2)"

| | コメント (0) | トラックバック (0)

2009年5月21日 (木)

[Windows7] Microsoft Tech Fielders 「開発者のための Windows 7 ~まずはここから~」

Tech Fielders で、 「Windows 7 コラムシリーズ 全 5 回」 という連載 ( 連作? ) が始まりました。 予定は次のようになってるそうです。
※ ( 2009/06/13 追記 : その後、 「アプリケーションの互換性」 が前後編に分かれて、 全6回ということになりました。 )

* 第 1 回 開発者のための Windows 7 ~まずはここから~ ( 小高太郎 / 5月 21日 公開 )
* 第 2 回 新しいユーザーインターフェイス (小高太郎 / 5 月 28 日 公開)
* 第 3 回 Windows SDK for Windows 7のご紹介 (大野元久 / 6 月 4 日公開)
* 第 4 回 アプリケーションの互換性 (前編) (松崎剛、大野元久 / 6 月 11 日公開)
* 第 5 回 アプリケーションの互換性 (後編) (松崎剛、大野元久 / 6 月 18 日公開予定)
* 第 6 回 その他 (長沢智治 / 6 月 25 日公開予定)

1回目として、 「開発者のための Windows 7 ~まずはここから~」 ( 小高太郎 / 5月 21日公開 ) が公開されています。

その 2ページ目、 タスクバーに動いてるアプリのサムネイルが出ますが、 そこで、 「メイン画面は表示されていなくても、 サムネイル上でアプリケーションのステータスを確認することや、 ある程度の操作を行うことも可能」 みたいです。 フィードリーダーとか twitter 用のソフトとかに応用できそうですね。

3ページ目。 「Windows Web Service API」、 「センサー API (ロケーションの取得)」 …ぅ、 知らないモノが… ( また宿題が増えた f(^^; )

なお、 4ページ目に書いてあることによると、 第4回に予定している 「アプリケーションの互換性」 というのは、 「Visual Basic 6 開発者のための Windows 7 ~ .NET 移行ふたたび」 という内容らしいです。

 
( 2009/5/28 追記 )
第2回が公開されました。 タスクバー関連の新機能を使うためのプログラミング方法について。 .NET のためのラッパーの話も出てきます。

| | コメント (0) | トラックバック (1)

インフルエンザの 「完治証明」 として簡易検査 !?

産経関西より。

20090521_news01 2009年5月21日
「完治証明」 求める企業も 兵庫県 「発行していない」
 

感染拡大が続く兵庫県で、 発熱などで欠勤した人に 「完治証明」 として簡易検査結果の証明書の提出を求めている事業者があることが20日、 分かった。 県は 「症状から必要性が判断されない人には簡易検査はできない。 検査キットの数も限りがある。 事業所にも過剰反応しないよう求める」 としている。 こうした例は大阪府内でも確認されているという。

完治証明を求めること自体は構わないのですが。 インフルエンザウィルスの簡易検査を求めるというのは、 愚かなことですね。
・ ( 記事にあるように ) 検査キットの数には限りがある。
・ ウィルス数が少ないときに、 簡易検査では検出できないことがある。
後者は、 5月 19日に帰国した際の簡易検査では見つからず、 翌日になって感染が確認された川崎市の女子高の生徒の例が、 実際に出たわけです。 ( asahi.com の解説記事 )

続きを読む "インフルエンザの 「完治証明」 として簡易検査 !?"

| | コメント (0) | トラックバック (0)

2009年5月20日 (水)

ハイブリッド車が、 新車販売台数のトップを競い合う時代の到来

ようやくそういう時代になったか、 という気がしないでもありません。 私が、 モーターで走る自動車の研究に関わっていたころから、 ざっと 20年ほどが経ってしまっていますのでね f(^^;

今年の 4月、 自販連の新車乗用車販売台数データ ( 輸入車及び軽自動車を除く ) によれば、 順位と台数は次のようです。 ( 5位まで抜粋 )

1. インサイト  ホンダ  10,481
2. フィット      〃     9,443
3. ヴィッツ    トヨタ   6,706
4. カローラ      〃     6,341
5. ウィッシュ    〃     5,556

インサイトの販売台数は、 4月から始まった優遇税制もあったせいか、 前月 ( 4,088台 ) の 2.5倍ほどにもなりました。 ハイブリッド車が販売台数のトップになったのは、 これが初めてだそうです。 今月も インサイトは好調だそうで、 2ヶ月連続でトップかもしれません。

これが来月からは、 新プリウスとトップの取り合いになるのでしょうね。
新プリウス発表日のニュースによると、 すでに 8万台を受注しているという情報があり、 これから注文すると 5ヶ月待ちだとのことですから、 当面は、 1~2万台/月 くらいの販売台数になりそうです。


# 個人的には、 HONDA の 1, 2 のほうが嬉しかったり f(^^;

| | コメント (0) | トラックバック (0)

[プログラム設計事始] 外部設計と内部設計の狭間

外部設計と概略設計」 で、 外部⇔内部 と 概略⇔詳細 とは直交する概念だということを示しました。  同じ図をもういちど掲載しておきます。

Program_design02_01

ここで、 概略と詳細の間にはいくらでも中間段階がありえるということは、 おわかりいただけると思います。 複雑なシステムでは、 全体の概略を示し、 それを分割したサブシステムとして表し、 それぞれをまた分割したサブ・サブシステムとして定義し… と、 概略から詳細へ何段階かに渡って設計していかなければ、 人間のアタマでは把握しきれないでしょう。
では、 外部設計と内部設計は? きれいに二分されるものでしょうか?

続きを読む "[プログラム設計事始] 外部設計と内部設計の狭間"

| | コメント (0) | トラックバック (1)

2009年5月19日 (火)

[プログラム設計事始] メソッドの外部設計(1)

◆ シンプルなメソッド ~ 1入力 / 1出力 の場合

プログラムの本質と、 インターフェース部分を分けるということ」 では、 ロジック ( プログラムの本質 ) として、 「文字列 {foo} から、 "Hello, {foo} !" という文字列を作リ出す」 というものを考えました。
※ この 1文は、 ロジックの概略設計にあたります。

このロジックは非常に簡単だったので、
string BuildMessage(string targetName)
という 1つのメソッドとして実装できました。

このメソッドの外部設計を、 きちんと表現しようとするなら、 どんなふうになるでしょう?

外部設計 ( external design ) というのは、 外から見た設計です。
機械の設計では、 見た目 ( 外観 ) ・ 使い方 ( 外から見た機能 ) ・ 求められる強度などを定義します。 プログラムのロジックには見た目はありませんので、 主に外から見た機能を定義することになります。

では、 メソッドの外から見た機能は、 どのように定義すればよいでしょう?
単純なメソッドでは、 渡した引数を、 メソッド内部でなにやら加工してくれて、 返値として出力してくれます。 渡した引数というのは、 メソッドに対する入力と言いかえてもいいですね。

Program_design03_01
※ 単純なメソッドでは、 入力 ( 引数 ) を処理して、 結果を出力する ( 返値を返す )。

この入力と出力を、 すべて定義すれば、 外部設計の詳細設計をしたことになるわけです。
メソッド string BuildMessage(string targetName) の外部設計を、 表のカタチで書くと次のようになります。
※ 外部設計 ( に限らず、 ソフトウェアの設計 ) の成果物を、 例えば文章だけで書いても構わないのですが、 日本のソフトウェア業界では、 詳細設計を表形式で書くのが一般的であるようなので、 それに倣うこととします。

入力 出力
string targetName return
null (NullReferenceException)
"" (空文字) "Hello,  !"
"{foo}" (1文字以上) "Hello, {foo} !"

続きを読む "[プログラム設計事始] メソッドの外部設計(1)"

| | コメント (0) | トラックバック (0)

2009年5月18日 (月)

[プログラム設計事始] 外部設計と概略設計

このシリーズを書くためにいろいろと調べていて、 "outline design" を 「外部設計」 と訳している例に気が付きました。 それどころか、 「外部設計」 の説明として概略設計のことを書いているページすらありました。

※ 次に示す単語の意味は、 「EXCEED 英和辞典」 より。

detailed: a. 詳細な
external:  a. 外部[面]の; 外界の; 外部からの;
internal:  a. 内部の, 体内の; 内服用の; 内在的な;
outline: n. 輪郭; 略図(法); 下書き; 概略; 要綱.

「外部設計」 は "external design" で、 「概略設計 (概要設計)」 が "outline design" ( または "high level design" ) です。

対語で示せば、 こんなふう。
"external design" ( 外部設計 ) ⇔ "internal design" ( 内部設計 )
"outline ( high level ) design" ( 概略設計 ) ⇔ "detailed design" ( 詳細設計 )

Program_design02_01

外部設計は、 設計対象を外から見たものです。 ( 「外部の人 ( = 顧客 ) 向けの設計」 ではない )
概略設計は、 全体を把握しやすくするために、 設計の詳細を省略したものです。
ですから、 「外部設計の詳細設計」 もありえますし、 「内部設計の概略設計」 もありえます。

※ "external design" を 「外面設計」 ( 外面の設計 ) と訳していれば、 まだ誤解は少なくなったのかな。

| | コメント (0) | トラックバック (1)

[Windows7] やろうと思えば、 beta から RC にアップグレード可能

へぇ~、 やろうと思えば簡単にできるんだ。 f(^^;
builder by ZDNet Japan より。

Windows 7のRC版をインストールする際のティップス - page4
2009/05/18 08:00

ティップス#6:Windows 7のベータ版からのアップグレードを可能にする

 実のところMicrosoftは、 Windows 7のベータ版にWindows 7のRC版を上書きインストールすることを本当に、 本当に、 本当に望んでいない
(…中略…)
しかし、 どうしてもこういったアップグレードを行いたいという場合には、 回避策がある。

あと、 上記記事によると、 Ultimate 以外のエディションも試用できるとか。

| | コメント (0) | トラックバック (0)

新型インフルエンザ、 確定診断続出。 大阪府は先行して実質第三段階入り。

大阪日日新聞より、

大阪府、 軽症者は自宅療養を要請 行動計画先取り
2009年5月17日 21:35

大阪府は17日の新型インフルエンザ対策本部会議で、 今後新たに疑い例が確認された場合、 症状が軽ければ入院ではなく自宅療養させる方針を決定。 発熱外来を設置した病院や市町村などに通知した。

現在は政府の行動計画で第2段階 (国内発生早期) となっているが、 厚生労働省が第3段階のうちのまん延期に準じた柔軟な対応を関係自治体に要請したのを先行させた。

軽症なら自宅療養、 というのは間違っていないと思います。
しかし、 「府内の感染症指定医療機関のベッドは78床」 というのは… 強毒性の感染症が今回と同じような拡がりかたをした場合、 もしその 78床以外に入院させられないというのであれば、 あっというまに重症患者も入院できないという事態になってしまうのでは?


( 13:45 追記 )
神戸市も続いて、 自宅療養に。 神戸新聞より、

発熱外来入院、重症者に限定 ベッド数不足で神戸市
(5/18 11:29)

神戸市は十八日、 新型インフルエンザの感染拡大で、 患者を受け入れる発熱外来のベッド数が不足し始めたため、 今後は重症者だけを入院させる方針を明らかにした。

発熱外来のうち入院できる 3病院 54床に対し、 方針決定点での感染確定者は 49人だそうで。
こうなってくると、 「第二段階」 というのはなんだったのかと。 強毒性の場合なら、 症状が重く出るのでもっと早くに感染者を見つけることができるはず、 ということなのかな。

また、 記事に 「家族には予防のため投薬を行う」 とあります ( 政府の行動計画にも出てきます ) が、 家族全員を診察した上で処方箋を発行するのか、 それとも聞き取りをした程度で出してしまうのか、 気になるところです。

| | コメント (0) | トラックバック (0)

2009年5月16日 (土)

新型インフルエンザ、 とうとう国内でも二次感染。 でも、 対応はチグハグ。

asahi.com より。

新型インフル、 国内初の発生確認 神戸の高校生、 陽性
2009年5月16日13時10分

厚生労働省は16日、 国立感染症研究所での詳しい検査で、 神戸市内の県立高校3年生の男子が新型の豚インフルエンザに感染していることを確認した、 と発表した。 検疫を除く国内で初めての発生。 同じ高校に通う2人の高校生も、 神戸市環境保健研究所の検査で、 陽性反応が出ている。 政府は同日午後、 対策本部の幹事会を開き、 国内対策をこれまでの 「第1段階(海外発生期)」 から 「第2段階(国内発生早期)」 に切り替える予定。

厚労省によると、 3人とも渡航歴はなく、 国内で、 人から人への感染が広がっている可能性がある。

とうとう、 水際での検疫をくぐり抜けた新型インフルエンザが、 国内で二次感染したと思われる事例が出てきました。

といっても、 鳥インフルエンザとは違って、 毎年流行しているインフルエンザ並みの毒性だそうですから、 毎年インフルエンザのワクチンを接種していない約1億人ほどの日本人にとっては、 とくに心配する理由はありません
※ インフルエンザの予防接種を受けた人数の統計値が、 少し探したくらいでは見つかりませんでした。 年間のワクチン生産量や消費量のデータは多数見つかり、 2000万本前後の数字です。 が、 ワクチンの本数と接種を受けた人数は 1 対 1 ではないでしょうから、 人数は不明です。 いちおう、 ほぼ 1 対 1 だとして 2000万人くらいと推量しました。

ともあれこれによって、 第二段階 ( 国内発生早期 ~ 感染拡大期 ) に移行するわけですが、 心配なのは、 各機関の対応のチグハグさです。

続きを読む "新型インフルエンザ、 とうとう国内でも二次感染。 でも、 対応はチグハグ。"

| | コメント (0) | トラックバック (1)

2009年5月15日 (金)

[プログラム設計事始] プログラムの本質と、 インターフェース部分を分けるということ

学研国語大辞典 Ver.1.00 (1998) より

ことはじめ 【事始(め)】
① 初めて新しい仕事にとりかかること。 新しく物事をはじめること。 また、 新しい物事のはじまり。

「プログラム設計事始」 と題して、 何回続くかわかりませんが、 いくつか記事を書いていこうと思います。
想定している読者は、 Visual Studio を使って C# のプログラムが書けるレベルを前提としています。


◆ はじめに。 なぜ 「ソフトウェア設計事始」 ではないのか?

ソフトウェアを設計する ( = 作る  ) という活動には、 大きく分けると 2つの段階があります。
・ なにを作るか ( what )
・ どうやって作るか ( how )

「なにを作るか ( what )」 には、 誰が何のために使うのかということも含みます。
いわゆる要件開発 ( 要件定義 ) からソフトウェアの外部設計 ( ソフトウェアを外からみたときの挙動の定義 ) あたりまでの活動が、 該当します。
ソフトウェアの開発を請け負った場合、 この活動はお客様のほうを向いて行います。 ( いくら良いアイディアだと思っても、 お客様がノーと言えば、 そんな仕様は無しです。 )

なにを作るかが固まってきたら、 「どうやって作るか ( how )」 という活動に入っていきます。
いわゆる内部設計から実装あたりまでの活動です。
この活動は、 コンピューターのほうを向いて行います。 ( いくら良いアイディアだと思っても、 コンピューターが受け付けてくれなければ、 そんな実装は無しです。 )

※ 私は、 さらに、 「正しく出来ているか」 ( テスト ) のことも視野に入れて、 「どうやって作るか ( how )」 を進めていくべきだと考えています。 一般的に、 いわゆる実装工程とテスト工程に掛かる費用は、 同じくらいかテストの方が大きいからです。

2つの段階のうち、 この記事では、 「どうやって作るか ( how )」 に焦点を当てて書いていきます。
一般的には、 ソフトウェアの内部設計、 という言い方をするのでしょう。 ですが、 たとえば 「メソッドの外部設計」 といったことを話題にするつもりです。 「ソフトウェアの内部設計」 に 「外部設計」 の話が出てくるというのも、 おかしなものです。
また、 「ソフトウェアの内部設計」 には、 実装 ( コーディング ) を含まないというニュアンスがあります。 しかし、 現代の実装 ( コーディング ) 作業には、 メソッドの内部設計が確実に含まれています。 おそらくは、 クラスの内部設計も含むでしょう。 それどころか、 クラス構成の設計まで含まれていることもザラです。

いわゆる 「ソフトウェアの内部設計」 からメソッドの内部設計 ( 実装 ) にいたるまでの範囲を意味する言葉が見つからないので、 この記事の中では 「プログラム設計」 という言葉を使うことにします。


なお、 サンプルコードのプログラミング言語としては C# を使います。
サンプルコードは、 可能な限り無償で利用できる開発環境で動かせるものにするつもりです。

※ サンプルコードを動かしてみるためには。
Visual Studio 2008 Express Edition SP1 の C# と Visual Web Developer は必須です。
その他に必要なものがあるときは、 その都度記載します。

続きを読む "[プログラム設計事始] プログラムの本質と、 インターフェース部分を分けるということ"

| | コメント (2) | トラックバック (0)

[Windows7] RC版@EeePC1000H ~ NOD32 v4.0 モニター版

3日前に v3.0 体験版を入れたばかりなんですが、 その日の内に v4.0 が発表 ( 販売は 6月 12日から ) されてしまいましたw
同時に、 モニター版の提供も始まり、 これはもう、 入れてみるしかないかと f(^^;

モニター版は、 ここからダウンロードできます。 ⇒ キヤノンITソリューションズ:ESET Smart Security & ESET NOD32アンチウイルス モニター
※ 提供されるのは、 今月一杯だそうです。

v3.0 をアンインストールし、 再起動したら、 v4.0 をインストールします。
…が、 書くことが無い f(^^;

20090515_nod32v4_01a インストールでまごくつこともないし、 インストールが完了した時点で、 すでにタスクトレイに常駐してる ( 右のキャプチャ ) し、 最新のパターンを取得したよ ってバルーンも出るし。

なにか起動しないとか、 エラーが出るとかいったことが全然無くて、 書くネタに困ってしまいます。

Windows のアクションセンター。
20090515_nod32v4_02a
なにも文句を言われていません。

GUI 画面と、 バージョン情報。
20090515_nod32v4_05
20090515_nod32v4_06

 

20090515_nod32v4_03 そうそう。 こちらは、 付属の SysInspector というツール。
警告色 ( オレンジ色 ) だらけになってます。 「知らないファイルや設定がいっぱいあるよ~」 ってことなんですけど、 それは RC だからしょうがないですね。 f(^^;

20090515_nod32v4_04

| | コメント (0) | トラックバック (0)

2009年5月14日 (木)

Visual Web Developer 2008 Express Edition でも、 ソリューションに WinForm や WPF のプロジェクトを含めることができる

Visual Studio の Express Edition を使っていると、 どうしても上位バージョンに比べて不便なところが、 ついつい気になってしまいます。
ユニットテストや TFS との連携機能など、 そりゃあ無償版には無くてもしょうがないよね、 って感じのもあります。 いまいちよく分からないのが、 C# / VB と  Visual Web Developer が別製品になっていること。 例えば、 ASP.NET と、 WinForm の 2つのプロジェクトをまとめて開発しようとすると、 2つの IDE を開いて、 行ったり来たりしなければなりません。

…と思っていたのですが。

この Visual Web Developer 2008 Express Edition の画面を見てください。
20090514_multiprojects_02
1つのソリューション内に 4つのプロジェクトが入っています。 上から、 ASP.NET / コンソール / Silverlight / Windows Forms のプロジェクトです。
編集画面では Windows Form を開いていて、 ツールボックスには Windows Forms 用のコントロールが並んでいます。 ツールボックスから Windows Form に、 テキストボックスをドロップしたところです。

もちろん、 プロジェクトごとにちゃんとコーディングも実行も出来ますし、 プロジェクト間で参照関係を設定することも出来ます。
残念ながら、 Windows Forms のプロジェクトや WPF のプロジェクトで、 フォームの追加などはできません。 新しく追加するときのテンプレートには、 Visual Web Developer のものしか出てこないのです。

どうやるかというと、 意外と簡単で。
あらかじめ Visual C# 2008 Express Edition で作っておいた  Windows Forms などのプロジェクトを、  Visual Web Developer のほうでソリューションに追加してあげるだけでした。 f(^^;

| | コメント (0) | トラックバック (0)

[Windows7] RC版@EeePC1000H ~ ASP.NET 開発、 というか hosts に localhost が無かった件

Win7RC に Visual Web Developer 2008 Express Edition SP1 を入れたので、 ASP.NET も試してみる。
プロジェクトを作って、 とりあえず F5 !

あ、 あり…?
20090514_hosts_03

「Internet Explorer ではこのページは表示できません」 …って orz
ASP.NET 開発サーバー ( ASP.NET Development Server ) は動いてるようだし。
これは名前解決が出来ていない?

アドレスバーの "localhost" を "127.0.0.1" に変えてみると、 ちゃんと表示されます。
コンソールを開いて、 nslookup localhost してみると、 "Non-existent domain" …あらま、 ほんとに IP が引けてないみたい。

ここまで分かれば、 \Windows\System32\drivers\etc\hosts を疑うしかない! f(^^;
20090514_hosts_01
※ 修正後のキャプチャなんで、 バックアップのほう ( "hosts - コピー" ) のタイムスタンプを見てください。 オリジナルのままだと思われます。

たぶん編集することになるので、 メモ帳を管理者権限で起動して、 メニューから hosts ファイルを指定して開きます。 ( Explorer が管理者権限で動いてないので、 Explorer からメモ帳にドロップしても、 保存できないです。 )
20090514_hosts_02
あらま。 hosts ファイルの中身に、 エントリがまったく無いじゃん。
そういや Vista で 3月に、 Windows Defender の更新で hosts ファイルが書き換わる ってことがありましたね。 Win7 でも、 普通は使わないだろう hosts ファイルなんざ、 セキュリティのことを考えたらカラッポにしとくべ、 ってことなんでしょうか。

開発サーバーの設定を変えて、 デバッグ時に localhost じゃなくて 127.0.0.1 に接続しにいくように出来ればいいんでしょうけど、 わからなかったので、 hosts ファイルの方を書き換えちゃいます。 といっても、 難しいことは無くて。
下から 2行目
#   127.0.0.1       localhost
のコメント ( 行頭の # 記号 ) を 1文字削るだけです。

はい、 これでちゃんと出るようになりました。 (^^;
20090514_hosts_04

| | コメント (0) | トラックバック (0)

2009年5月13日 (水)

はじめての Silverlight 2.0

やらなきゃ、 やらなきゃと思いつつ、 なかなか触れなかった Silverlight 2.0 を、 よーやく触ってみました f(^^;

20090513_sl_01
20090513_sl_02

まずは、 Visual Studio 2008 SP1 を入れます。 といっても、 無償の Visual Studio 2008 Express Edition SP1 で OK。
※ 私は全部入れちゃいましたけど、 Silverlight 2.0 のためには Visual Web Developer 2008 Express Edition SP1 だけでいいみたいです。

VS2008 SP1 を入れたら、 忘れずに 「Visual Studio 2008 Service Pack 1(SP1)用Intellisenseの修正プログラム」 を適用します。 これを当てないと、 インテリセンスが英語で出てきちゃって、 寂しい思いをします。
このあたりで、 Windows Update をやっておきましょう。 けっこうな量があります orz

続いて、 Visual Studio 2008 SP1 用 Microsoft Silverlight 2 Tools をインストールしたら、 とりあえず準備は完了です。
※ さらに、 Expression Blend 2 SP1 やら Deep Zoom Composer やらがあるといいらしいけど、 とりあえずプログラムを書いてみるには、 ここまででなんとかなります。

続きを読む "はじめての Silverlight 2.0"

| | コメント (5) | トラックバック (0)

2009年5月12日 (火)

[Windows7] RC版@EeePC1000H ~ NOD32 v3.0 体験版

NAV2009 はリモートデスクトップが出来なくなるという致命傷を抱えていたので、 こんどは NOD32 を試してみる。

ESET NOD32 アンチウイルス V3.0 は、 体験版を入手できます。
キヤノンITソリューションズ:ESET Smart Security & ESET NOD32アンチウイルス:NOD32 体験版ダウンロード
Vector からも入手できるけど、 今日の時点ではキャノンの方からダウンロードしたもののほうがバージョンが進んでいた。

20090512_nod32_01
セットアップ開始

20090512_nod32_02a
セットアップ完了時に、 NOD32 の GUI を自動起動しようとしてるらしいが、 互換性の警告が出る。
※ 掲示板とかの話では、 警告は出るけどちゃんと動く、 ということだったので、 そのまま進めることにしてインストーラを完了させる。

Windows を再起動してから…

20090512_nod32_03
アクションセンターを見ると、 NOD32 は有効になっているとのこと。
Windows に対するレポート形式が旧いという警告が出てるけど、 アンチウィルスとしての機能に問題は無いはず。

20090512_nod32_05
GUI を起動してみる。 互換性の警告は出るけど、 GUI の動作に問題は無さそう。
アップデートもちゃんと動作しているようだ。
20090512_nod32_06
バージョン情報ダイアログ。  有効期限は、 7月 20日だそうだ。

起動するたびに互換性の警告が出るのはうっとおしいので、 「互換性のトラブルシューティング」 ウィザードを使ってみた。
ウィザード任せにして進めたら、 XP SP2 互換モードで動作させるように設定された。
20090512_nod32_04
…けど、 やっぱり起動時に互換性の警告が出る orz

ともあれ、 アンチウィルスソフトとしてはちゃんと動いてるようなので、 しばらくこれで様子を見るとしましょう。

| | コメント (1) | トラックバック (0)

2009年5月11日 (月)

[Windows7] RC版@EeePC1000H ~ Norton AntiVirus 2009

結論から言うと、 Norton AntiVirus 2009 も Norton 360 ( Win7 用 beta ) も、 リモートデスクトップが出来なくなるという ( 私にとっては致命的な ) 問題があるので、 使い物になりませんでした。

まずは、 ノートン アンチウィルス 2009 から。
これは、 正規のライセンス版。 ( 3ライセンスパッケージで、 余っていたライセンス )
20090511_nav2009_04a
一見、 正常にインストールできたように見えたのですが…

再起動してみると、
20090511_nav2009_02
"Symantec Heuristics" ドライバが 「互換性の問題のためブロックされています」 という警告が、 Windows から出てきます。
それでも、 その他の機能は動いているようでした。
そこで Live Update を掛けて最新にしてみたところ…
ドライバがブロックされているのは変わらないのですが、 リモートデスクトップで接続しにいくと Windows 7 RC が落ちる、 というか勝手にリブート… (ToT)
また、 スタートメニューから ノートン アンチウィルス を起動できないようになってしまいました。
探してみると、 起動できないのは、 "Incompatibility Norton Antivirus 2009 in Windows 7 RC 32b." で話題になっている症状とそっくり。
ということで、 そこで示されている "Windows 7 RC (build 7100) compatible build is now available" に書いてあることに従って、 Windows 7 RC に対応した Norton 360 Version 3.0 Beta を入れてみることにしました。

Norton 360 beta は、 問題無く動作するようでした。
が… リモートデスクトップで接続しにいくと落ちるのは同じ。 しかも、 こんどはブルー画面 orz
ノートンのファイアウォールが悪いのかと外してみたら ( これは NAV 2009 でもやってみたので、 まぁダメもとで… f(^^; )、 こんどは、 Windows のファイアウォールを有効にして再起動しても無効にされちゃうという… orz

ということで。
リモートデスクトップが不要なら、 Norton 360 beta が使えそうです。 ただし、 14日間の試用版なので、 実運用にはダメでしょうね。

| | コメント (0) | トラックバック (0)

2009年5月10日 (日)

[Windows7] RC版@EeePC1000H ~ リモートデスクトップの設定

RC 版も、 以前のβ版と同様に Ultimate エディションなので、 他のマシンからリモートデスクトップで接続できます。
20090510_fw07

Windows 7 側の設定手順も、 β版のときと同じです。 ファイアウォールがリモートデスクトップのプロトコルを通すようにすることと、  Windows がリモートデスクトップを受け付けるように設定すること、 の 2つです。

続きを読む "[Windows7] RC版@EeePC1000H ~ リモートデスクトップの設定"

| | コメント (0) | トラックバック (0)

2009年5月 9日 (土)

[Windows7] RC版@EeePC1000H ~ ACPI ドライバ、 エクスペリエンスインデックス

RC を新規インストールしただけでは不明なデバイスと表示されてしまう、 ASUS ACPI のドライバを入れてみます。
今回は、 asus.com に行って XP 用のドライバを検索してみました。 どうやら、 次のファイルが、 1000H 用では最新のものらしいです。 → Asus_ACPI_Driver.zip ( 639KB )

ダウンロードしたファイルを展開して出てきた .msi ファイルを、 インストール。
さっくり入って、 再起動も要求されませんでした。
20090509_acpi_01a

あっさりと、 これで不明なデバイスは一掃。

ついでに、 エクスペリエンスインデックス。
20090509_ex_index
CPU:2.2 / RAM:4.5 / グラフィックス:2.2 / ゲーム用グラフィックス:3.0 / HDD:5.4
多少違いはありますが、 β版のときとほぼ同じでした。

| | コメント (0) | トラックバック (0)

2009年5月 8日 (金)

[Windows 7] 転送ツールの使い方

Win7 β版に入っている 「Windows 転送ツール」 ( Windows Easy Transfer ) を使って、  データを別の場所に退避しておき、 RC 版を入れた後で、 ( RC 版の ) 転送ツールを使って復元することができます。
※ プログラムは転送できません。 実行ファイルそのものは、 追加指定してやれば転送できますが、 レジストリの設定は転送できないようです。

20090507_easytrans14a 1. 転送ツールは、 スタートメニューの [アクセサリ] - [システムツール] の中にあります。

※ すぐ上の 「転送ツール レポート」 というのは、 データを復元した後に使うもの。


20090507_easytrans01
2. 転送ツールを起動したところ。

続きを読む "[Windows 7] 転送ツールの使い方"

| | コメント (0) | トラックバック (0)

2009年5月 7日 (木)

[Windows7] RC版を Eee PC 1000H に入れてみた

五月連休の最終日、 Windows 7 Release Candidate が一般向けに公開されました。

さっそく、 Windows 7 beta 版を入れてあった  Eee PC 1000H  に入れてみました。

beta からのアップグレードは出来ない、 とのことなので、 まずは Win7 beta 付属の "Windows Easy Transfer" ( Windows 転送ツール ) を使って、 モロモロのデータをバックアップ

メインマシン ( WinXP f(^^; ) のほうでダウンロードした iso イメージは、 Microsoft Virtual CD-ROM Control Panel を使って仮想ドライブとしてマウントし、 展開して、 ネットワークドライブとして Eee PC から見られるように準備。

Eee PC の C ドライブには、 もともとの Windows XP が残してあるので、 そちらで立ち上がるようにして、 D ドライブに入れてあった Windows 7 beta を削除 ( アンインストールとかではなく、 エクスプローラからファイル削除 ) してしまいます。

そうしたら、 ネットワークドライブの RC インストールディスクイメージの setup.exe を実行して、 インストール開始。 カスタムインストールを選んで進み、 新規でインストール先を D ドライブに。 例によって、 勝手にインストールは進行し、 3回ほど勝手に再起動したところで、 最終局面に。

最終段階では、 言語の設定 ( ぁ、 日本/日本語 に直ってなくて、 Japan/Japanese のままだw ) とかをデフォルトのまま進めていきます。 初期ユーザ名とマシン名は、 beta のときと同じで。 プロダクトキーの入力画面で…
しまったぁ~~~っ !!
プロダクトキーを入れる前にうっかり Enter に触ってしまって、 次の画面に飛んじゃった!
…気を静めて、 前に戻れば…

…前に戻ると、 そこはなぜか Windows Update の設定画面。 さらになぜか、 前に戻るボタンは無効になってます orz

……しょーがないので、 プロダクトキーを入れずに、 インストールを完了させて、 最後の再起動。 ( そんなんでいーんか~っ !? (@@; )
無事に Win7 の画面が立ち上がりました ( ヤレヤレ… (汗; )
なにはともあれ、 まずはプロダクトキーの変更とアクティベーションをやってみる。 …できた、 よかった~ f(^^;;;
※ 非常に心臓によろしくないです。 けど、 後からプロダクトキーを入れるときには、 コピペで済むので、 ランダムっぽい英数字の羅列とにらめっこしなくてよくて、 とてもラクチンではありました。

無事に OS が入ったので、 次は Windows Update を。 ( 3件ありました )
そうしたら、 先ほどバックアップしておいたユーザーデータを、 また "Windows Easy Transfer" ( Windows 転送ツール ) を使って、 復元。

今日のところは、 ここまで。


なお、 beta のときは、 LAN のドライバ等が無かったのですが、 今回は、 イーサ / 無線 LAN / Bluetooth / 内蔵 Web カメラなど、 ほとんど全部のドライバが自動的にインストールされました。 とりあえず、 イーサネットは無事につながっています。
デバイスマネージャを見ると、 不明なデバイスは ASUS ACPI だけとのこと。

( 2009/05/14 追記 )
そーいや、 ユーザ名とマシン名を入力するところで引っ掛からなかったなぁ。 てことは、 「勝手に IME ON !」 が無くなってたわけだ。
フィードバックした甲斐があったかな f(^^;

| | コメント (0) | トラックバック (0)

« 2009年4月 | トップページ | 2009年6月 »