2008/09/22
【誰にでもできる!システム開発】VisualBasicからのアップグレード(実施編)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
『誰にでもできる!システム開発』 2008/09/22 号
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ご愛読、ありがとうございます。
このメールマガジンは、システム開発を始めたばかりの方、これから始める
方向けに、筆者が日頃から心がけていることをお話しています。
扱う内容については、テクニックと考え方を半分ずつで構成しています。
思っていた内容と違う、つまらない、読む気力が無くなったという方、
購読解除はこちらからできます。
http://www.mag2.com/m/0000263428.html
著者プロフィール
http://www.shiga-it-office.com/mailmagazine/writer.html
事務所概要
http://www.shiga-it-office.com/profile.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■第18回 VisualBasicからのアップグレード(実施編)
────────────────────────────────────
前回からの続きです。
今回から購読される方はバックナンバーをご覧ください。
http://archive.mag2.com/0000263428/index.html
●アップグレードウィザードを使ってみる
早速、アップグレードを使ってみましょう。
念のため、VisualBasic6.0のプロジェクトをバックアップしておくことを忘
れないでください。
VisualBasic2008を起動します。
起動したら、メニューから[プロジェクトを開く]を選択します。
あとは、VisualBasic6.0のプロジェクトを選択し、どんどん[次へ]を押して
いけばいいです。
画像付きの説明がほしい方はこちら↓
http://www.shiga-it-office.com/technical/vbconvert.html
アップグレードの結果は_UpgradeReport.htmというファイルに書き出されま
す。よほど小さいプロジェクトでない限り、相当数のエラーや警告が出てく
るはずです。
アップグレードウィザードは便利ではありますが、我々人間とは違って、行
間を読んではくれないので、推奨された組み方をしていないと、エラーだら
けということになるのです。
●エラーを減らす方法
最終的にはエラーも警告も無い状態にしないといけない訳ですが、その方法
は大きく2つあります。
1つ目は、VisualBasic6.0のコードを綺麗に修正した後に、改めてアップグ
レードする方法。
2つ目は、アップグレード後のコードを地道に直していく方法です。
基本的には、この2つの方法を組み合わせることになるでしょう。
つまり、VisualBasic6.0の段階でマイクロソフト推奨のコーディング規約に
沿って修正し、アップグレードする。
それでもエラーが残っているものは、VisualBasic2008で修正します。
どうせ直すなら、VisualBasic2008で修正しても同じでは?と感じる方もい
るかもしれませんが、非推奨のコードは本当に訳分からなく変換されること
が多いので、結局VisualBasic6.0のコードを見直す必要になります。
それならば、VisualBasic6.0の段階で綺麗に修正しておいた方が、結果的に
コストも削減できるということで、前回説明したツールの出番です。
●コードのクリーンアップ
「Code Advisor for Visual Basic 6.0」をインストールします。
このツールは、VisualBasic6.0のアドインです。
このツールを使うことで、アップグレードウィザードが出力したような問題
点が分かります。
大きな違いがあるとすれば、アップグレード前に知ることができるので、作
業の効率が良いですし、アップグレードするつもりが無い場合でも、綺麗な
コードに修正することで保守性を高めることができるのです。
逆に、アップグレード後のエラーメッセージでは、既に変換されてしまって
いるため、元々がどういう意味だったのかが分からなくなることも多く、結
果的に何度もアップグレードを試すということになるかもしれません。
●アップグレード内容の評価と工数見積り
「Visual Basic 6.0 to Visual Basic .NET Upgrade Assessment Tool」を
使います。
使い方は、「Upgrading Visual Basic 6.0 Applications to Visual Basic
.NET and Visual Basic 2005 - 日本語」の「第3章 評価および分析」に詳
しく書かれていますので、よく読んでおきましょう。
アップグレードのコストを見積もっておくことは重要です。
無計画に作業しても、なかなか先に進みませんし、場合によってはアップグ
レードウィザードを使わずに、新たに作り直した方が良いこともあります。
●アップグレード後の修正
アップグレードが無事に終了しても、まだまだ修正すべきコードがあるかと
思います。
例えば、VisualBasic6.0までは、ちょっと難しいことをしようとすると、
Win32APIに頼らざるを得ませんでしたが、.NETではWin32APIを使わなくても
同等の機能を持つ関数が用意されています。
参考:Microsoft Win32 と Microsoft .NET Framework API との対応
https://www.microsoft.com/japan/msdn/net/general/win32map.aspx
他には、再利用性を考えてクラス構造を再設計する必要もあるかもしれませ
ん。
VisualBasic6.0以前にもクラスは存在しましたが、プロパティの実装とイン
タフェースの継承くらいしかできませんでした。
(インタフェースの継承ができることを知っている人は少ないですが)
.NETではオブジェクト指向に沿った作り方をしているかどうかで生産性が大
きく変わってきます。
アップグレードウィザードを使った、資産の流用はこんな感じです。
正直なところ、VisualBasic6.0以前に組まれたコードで品質の高いものは、
なかなかお目にかかれません。
誰でも簡単に組めるのが売りでしたので、仕方のないことかもしれません。
特に、グローバル変数を使いまくっている場合、アップグレードウィザード
で変換できたとしても、その後のメンテナンスが大変になりますので、新た
に作り直すことが多いようです。
------------------------------------------------------------------------
■編集後記
最後までお読みいただき、ありがとうございました。
来年の4月から、「工事進行基準」という計上方法が義務化されることをご
存知でしょうか。
(次回のテーマで取り上げる予定です)
これまでソフトウェア業界では「工事完成基準」という計上方法で、開発完
了時に一括計上する方法が一般的でした。
心当たりのある方も多いと思いますが、「開発一式でいくら」といった、ど
んぶり勘定が多く存在します。
要件定義があいまいなため、仕様変更が度々発生するため、予想以上のコス
トが発生するものの、あいまいな一式契約で吸収していました。
「工事進行基準」になると、進捗度合いによって売り上げを計上していかな
ければならないため、より正確な見積もりとプロジェクト管理が求められて
くるのです。
これまでもコストをきちんと管理してきた会社は問題ないと思いますが、ど
んぶり勘定だった会社には苦労も多くなりそうです。
読者のみなさんのところはどうでしょうか。
ご感想・ご意見・ご要望などありましたら、気軽にご連絡ください♪
では、また来週お会いしましょう!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
『誰にでもできる!システム開発』 2008/09/22 号
本日のメールマガジンを読んだ感想をお聞かせください。
お寄せいただいた感想は、メールマガジン上で紹介させていただくことが
ありますので、ご了承ください。
配信中止はこちらから↓
http://www.mag2.com/m/0000263428.html
メールアドレスの変更はこちらから↓
http://www.mag2.com/m/0000263428.html
ご意見&ご感想はこちらから↓
http://www.shiga-it-office.com/mailmagazine/ImpressionFrom.html
コンサルティングのご相談はこちらから↓
http://www.shiga-it-office.com/inquiry.html
発行元 志賀IT事務所
http://www.shiga-it-office.com/
関連メールマガジン 「誰にでもできる!インターネット活用術」
http://www.mag2.com/m/0000263426.html
関連ブログ
☆コンサル日和
http://d.hatena.ne.jp/kei_onpu/
☆爆裂!C#野郎
http://csharp.yaminabe.info/
☆10年戦える開発技術
http://10year.yaminabe.info/
☆情報処理技術者試験午前対策
http://am.yaminabe.info/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



