ただいま修行中...

ソフトウェア開発において、勉強中で悪戦苦闘の日々

Windows7のインストール時間

2009-08-31 23:15:42 | ソフトウェア開発
今日、初めて、CDブートからWindows7を実際にインストールしてみました。

率直な感想は、インストール時間が非常に短いなというのが第一印象です。

UIに関してはVistaと変更されていないので、Vistaユーザーは問題なくインストールできるだろうと思います。

ただ、OS自体はあまり操作できていないので、正直なところよくなったかどうかはわかりませんが、評判どおりの速度は出ているのではないかと思います。

ファイルコピーの時間も短いように感じました。

C#でデータ実行防止(DEP)を無効にする設定

2009-08-28 22:26:58 | C#
Windows VistaC#プログラムからあるDLLをコールすると「保護されているメモリに書き込みできません。(Access Violation)」が発生しました。

色々と調べていて、WindowsXPのSP2以降についたデータ実行防止(DEP)によって、エラーが表示されることがわかりました。

それも、.NET Framework2.0のSP1以降でビルドした実行ファイルの場合にこの現象が発生します。次に選択するものを除くすべてのプログラム...で実行ファイルを追加しようと思っても「DEPを有効にして実行する必要があります。DEPを無効にすることができません」警告メッセージが表示されます。

試しに、SPなしでビルドすると、追加することができて、正常にDLLをコールすることができます。

どうもこれは、.NET Framework2.0のSP1以降からDEPの設定を有効にするようになったことが影響しています。

調べてもC++ではリンカの設定がありますが、C#の場合には、DEPを無効に設定する機能がありません。

そこで、どのようにするかというと、コマンドプロンプトで、以下のように入力すれば、DEPを無効にした実行ファイルを作成することができます。

Visual Studioのインストールフォルダ\Common\\tools\vsvars32.bat
editbin.exe /NXCOMPAT:NO "指定したい実行ファイル名"

それにしても突然発生したので、原因が2日くらい悩みました。

この変更にはかなりビックリしました。

OSの仕組みについて

2009-08-26 23:54:46 | ソフトウェア開発
最近、色々と調べていて、OSの仕組みについて知らないことが沢山あるなと感じました。

一つは、ABI(Application Binary Interface)、もう一つはWOW(Windows On Windows)です。

ABIとは、APIの違いは、APIは、ソースコードライブラリ間のインターフェイスを定義したもので、ABIは、オブジェクトコードレベルのインターフェイスです。

元々は、なぜ、64ビットアプリケーション32ビットアプリケーションDllがコールできないのかを調べているところからこのことを知ることができました。

ちなみに、上記の理由は、64ビットABIのアプリケーションは8TBのアドレス空間を独占的に使える様になっていて、32ビット ABIのコードを格納可能な仮想空間下位4GBが64ビットABIに独占されてしまったためです。

そこから色々と調べているうちに、Windowsってすごいなと感じたことと、プログラマがこのようなことを知らないでプログラミングできてしまうのも非常に問題であるなと感じました。

社会貢献と人材育成

2009-08-22 23:09:25 | ビジネス
先日の夏期休暇中に実家に帰省したときに、叔父達が話しているときに、自分も目指さなくてはいけないと思ったことがありました。

それは、叔父達が飲んでいる席で、企業というのは社会貢献しなくてはならない、また人を残すことが自分に与えられた役割であると言う話しをしていました。

同じ業界の経営者と某大手企業の部長の叔父達が話していることなので、間違ったことは言っていないと思います。

その中で、自分だったらどのように社会貢献できるか・人材を残すことができるのかなということを考えました。

まず、社会貢献はやはりITというサービスを通じて、世の中の人が幸福な生活を遅れているのが私にとっての社会貢献であると思います。そのために、使いやすいソフトウェアを提供するために、何をしなくてはならないのか・何をすべきかが漠然としていますが、なんとなく見えてきました。

また、人材の育成もまだまだ私の技術が不足している部分もあるので、できていない部分が多々あります。

柴田芳樹さんの書籍にプログラミング言語Javaを用いた勉強会を行ったりするとあり、そのような活動を私もしていかなければならないと感じました。

そのためには、まずは、自分の技術をあげるために、継続的な学習が必要であると感じました。

自分も叔父達のように50台になったときにこういった話ができるようになっていたいと思います。

常に改善・改良をし続ける

2009-08-20 23:06:52 | ソフトウェア開発
プロジェクトの終了時に振り返りを行なう場合があると思います。

これは次に生かしたり、区切りをつけるためなどに行われるのがほとんどであると思います。

ただ、賛否両論あると思いますが、私は終了時には振り返りをする必要はないと感じています。なぜなら、都度、課題や問題を解決したりすることができているので、改めて行う必要がないからです。

終了時に振り返りを行うと、どうしても記憶が曖昧だったり、愚痴の発散の場になってしまう場合があります。

なら、常に改善・改良を加えて見直しを行うことで、常に振り返りを行っていることになります。

プロジェクトの運営もソフトウェアと同様に保守(常に改良し続ける)必要があるのです。そうすることで、利用するソフトウェアができるのと同様の効果が得られると考えます。

私は常に改良をし続けていかなければならないと思います。

interfaceのメリット

2009-08-18 23:26:12 | プログラミング
interfaceのメリットについて、最近聞かれてうまく答えることができなかったので、ネットで調べたり、ちょっと回りの人に相談したりして私なりの見解です。

例えが上手な人がいたので、以下はそのたとえ話を引用します。

例えば、鳥類とクラスを作成し、継承してニワトリやワシと言ったものを作成するとします。この中で、飛ぶという行為があった場合に、鳥類だけでなく、極端にいうと飛行機だって飛ぶという行為はあります。

つまりこの場合には、クラスを作成してしまうと、鳥類から継承して飛行機ができるのは明らかに間違った継承になります。

この場合には、intefaceで飛ぶというメソッドを宣言すればいいのです。

それ以外にも、利用する側の視点として、interfaceを確認すればどのようなことができるかを簡単に確認することができます。可読性の向上につながります。

ただし、何でもかんでもinterfaceにしてしまうと、肥大化したinterfaceができてしまうので注意が必要です。

つまりinterfaceとは、機能を持っているというもので、クラスは役割?といっていいのかわかりませんが、そういった違いがあります。

データと情報について

2009-08-17 20:57:37 | ソフトウェア開発
最近、読んだ本でデータと情報の違いについて書かれていました。

データとは、重要な部分とそうでない部分。

情報とは、データの中でも重要なものをいうそうです。

この本を読んでみて、なるほどしっかりとした違いは説明できていなかったと反省しました。

ただ、ちょっとした疑問があります。以下の内容は、ウィキペディアからの引用です。

IT(情報技術)とは、情報(コンピュータ)・通信の工学およびその社会的応用分野の技術の総称。今日では各種情報の収集・加工・発信などに不可欠なものとなっているITはInformation technologyの略です。直訳すると、情報技術です。

つまりは、重要なデータの技術ということになります。

上記の定義をそのまま用いると、なぜData Technologyにならなかったのかなと思います。

エラー推測って重要だな

2009-08-11 21:50:37 | ソフトウェアテスト
ソフトウェアのテストの書籍を読んでいたり、アーキテクチャの書籍を読んでいたりすると、ソフトウェアのテストではエラー推測、アーキテクチャ関連だとバグについてなどとよく書かれています。

技法と呼ぶ人もいれば、そうではないと賛否両論意見が分かれると思いますが、私はこれは重要であると考えます。

プログラムを作成する立場から考えると、今までの経験やノウハウを生かしながら、プログラミング作業をする。

テストエンジニアの立場から考えると、このあたりは怪しそうだなというようなやはり経験やノウハウが生かすことができます。

エラー推測の簡単な例としては、データが0個やなしといったものは非常にエラーが出やすいということがあります。

知っているか知らないかで質の向上といった面では大いに役に立つものだと思います。

ある意味私達の仕事は芸術家(職人)のようなものなので、経験やノウハウといったものが重要になってきます。

オールライダー対大ショッカー

2009-08-09 23:00:16 | 未分類
昨日、上の息子と2人で、映画を見に行ってきました。映画を見るのは、結婚する前からしてすぐなので、かれこれ5年ぶりくらいにいってきました。

見た映画も息子と一緒なので、「オールライダー対大ショッカー」という仮面ライダーの映画です。

息子は仮面ライダーがたくさん出てきたので、嬉しかったようです。途中、トイレに行ったりしましたが、2人で無事見ることができました。
どうも映画館が気に入ったようで、今度は、アイスエイジを見たいと行っていました。アイスエイジは、大好きな恐竜やマンモスがでてくるからだと思います。

率直な感想としては、自分が子供の頃にでてきた仮面ライダーもいたので、割と楽しむことができました。
大杉連さんやGACKTが映画にでていてビックリしました。

息子も朝早くから一緒に並んだので、午後はゆっくりと昼寝をしていました。

テストケースをテストコードに登録:続編

2009-08-04 22:01:48 | ソフトウェア開発
テストケースを基にテストコードに登録している作業をしていて、ふとこれはモデルの登録をしているので、その部分はテストケースの大体になるが、Viewの部分はテストできてないなということがわかりました。

例えば、Viewの部分が安定して、内部の構造にもよりますが、モデル部分を正常に表示しているというのが前提であることに気がつきました。

つまり、テストする順番として、Viewが正常に表示されていることを確認する、モデル部分で例外パターンなどがないかを確認するになるなと思いました。

テストコードにするのって、結構大変だなと思いました。ただ、何ラウンドもテスト実施することを考えれば、コスト的には削減できていると思います。