2007年7月19日木曜日

Microsoft オフラインセミナー

Microsoftオフラインセミナーが関西でもあるということで行って来ました。

第 49 回 「.NET Framework 2.0 アプリケーション開発」 [.NET] (関西支店 第 1 弾)
■概 要:
関西支店にて初のオフラインセミナー開催。 2 部構成。第 1 部 「Windows におけるアプリケーション開発」 では Windows アプリケーション開発における考え方の基礎として、主に、 Windows デスクトップアプリケーション、及び Web アプリケーション (ASP.NET) の開発をおこなう上でのスマートクライアントモデルについての理解を深めます。 (内容には、 Office による開発なども含まれます。)
第 2 部 「より強固な業務アプリケーションの開発」 では第 1 部を前提とし、エンタープライズアプリケーションを構築する上でのポイントや注意点などを具体例をおり混ぜながらご説明します。
■対象者レベル:
レベル 300 。 Visual Studio 2005 の基本的な使い方、及び .NET Framework 2.0 の基礎知識を有する方を対象としています。


第2部「より強固な業務アプリケーションの開発」 に期待して行ったのですが、8割は知っている内容でした。
知識として知ってはいるが現実の開発にどう導入すればよいかがわからない。
また、導入するメリットがわらない。
そういった部分の解説があったらなぁと思いました。


.NETは便利な機能をいろいろ用意してくれているのですが、ちょっと手を加えようとするとコード量が激増し、せっかくの利便性が激減してしまったりします。すると「こんなに苦労して作っても、なんだかあまりメリットがない」状態になります。小規模システムでは.NETの機能をフル活用して作れるので楽なのですが、中規模システムでは.NETの機能では用件を満たせないが、自分で作り込むほどの時間もないのです。
すると
.NETの機能を使ってもあまりメリットがない
 ↓
旧VB時代に培った従来の方法であれば知っているから楽だ。調べる時間も短縮できる。
 ↓
「スマートクライアント」とは程遠システムができあがる。
 ↓
機能追加に弱い。
保守もしにくい。
 ↓
.NETってなんだかなぁ
という図式になってしまいます。


私は中規模システムでも「スマートクライアント」で作ればメリットがあると考えています。
作り方や設計が悪いので.NETの機能を活かせていないだけだと。
.NETを活かせる理想的なアーキテクトがあるはずだと。

まずは導入しないことには何もわからないので、きっと導入すれば使いどころやメリット、デメリット、.NETを活かせる設計もおのずと見えてくるのだと思うのですが・・・でも現実はメリットを表示しない限り採用してもらえないのです。

2007年7月13日金曜日

突合せ処理

3年かけたプロジェクトが終了し、次の開発まで時間があるのでASP.NETでちょっと一息と思っていたのですが、
次の開発が予想外に先に伸びてしまい、中途半端な期間を中途半端な作業で埋められてしまいました。
3年間がんばったんだから少しぐらいゆっくりさせてくれてもいいのにぃ!!゜゜(´□`。)°゜。ワーン!!

その中途半端な作業というのがVB6!!しかも新規作成!!
なんで?なぜ今から作るのに.NETでなくてVB6なの!?
VB6は7年ぶりです。

覚えてませんっ!!

本数は5本。
サクッと終わらせて、さっさと遊ぼうとおもっていたのに甘かった。
仕様が難しい。
ということでASP.NETは「Hello World!」でちょっとお休みです。


今日は付き合わせ処理で詰まってしまいました。
例えば
A配列に1, 3, 5, 7, 9
B配列に1, 4, 5, 6
というデータがあったとして
「A配列にあって、B配列にない」ものと
「A配列になくて、B配列にある」ものを抽出するというものです。

恥ずかしいですが、どうすれば抽出できるかわかりませんでした。
ある人に聞きました。もちろん思いっきり馬鹿にされました。
「こんなん基本やで!!情報処理2種の試験にも出るで。」と。
私が受けた試験には出なかったし、試験勉強にも出なかった。・・・と思う。
でも勉強になりました。
使う機会があまりないのでメモメモ。

Public Class Form1


 

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

        Dim A() As Integer = {13579}

        Dim B() As Integer = {1456}


 

        Dim CntA As Integer = 0

        Dim CntB As Integer = 0


 

        Do Until CntA > A.Length - 1 And CntB > B.Length - 1

            If CntA > A.Length - 1 And CntB <= B.Length - 1 Then

                'A配列になくて、B配列にある

                Debug.WriteLine("①A配列になくて、B配列にある:" & B(CntB))

                CntB += 1

            ElseIf CntA <= A.Length - 1 And CntB > B.Length - 1 Then

                'A配列にあって、B配列にない

                Debug.WriteLine("②A配列にあって、B配列にない:" & A(CntA))

                CntA += 1

            ElseIf CntA <= A.Length - 1 And CntB <= B.Length - 1 Then

                If A(CntA) > B(CntB) Then

                    'A配列になくて、B配列にある

                    Debug.WriteLine("③A配列になくて、B配列にある:" & B(CntB))

                    CntB += 1

                ElseIf A(CntA) < B(CntB) Then

                    'A配列にあって、B配列にない

                    Debug.WriteLine("④A配列にあって、B配列にない:" & A(CntA))

                    CntA += 1

                ElseIf A(CntA) = B(CntB) Then

                    'A配列にあって、B配列にもある

                    Debug.WriteLine("⑤A配列にあって、B配列にもある:" & A(CntA))

                    CntA += 1

                    CntB += 1

                End If

            End If

        Loop


 

    End Sub

End Class


実行結果は

⑤A配列にあって、B配列にもある:1
④A配列にあって、B配列にない:3
③A配列になくて、B配列にある:4
⑤A配列にあって、B配列にもある:5
③A配列になくて、B配列にある:6
②A配列にあって、B配列にない:7
②A配列にあって、B配列にない:9