[三流君] −−> [プログラマー業務の愚痴] −−> [バックナンバー一覧]
−−> No.200 小さな関数の作成依頼、関数仕様書とテスト仕様書はペアで

小さな関数の作成依頼、関数仕様書とテスト仕様書はペアで


本文(発行内容)


小さな関数の作成依頼、関数仕様書とテスト仕様書はペアで

こんにちは、
不健康な在宅作業でハマっている三流プログラマーKen3です。

/* * 1.今回のキッカケ */

VBA系のメルマガで書いた文字列の変換プログラムの問題点を愚痴系らしく書いて みたら・・・と思ったのがキッカケかな。 関数の作成依頼時のトラブル、 テストデータの渡し方、 について、少し書いてみます。 先輩と後輩、表と裏、右と左、上と下、いろいろな立場をつなぐのが仕様書かな・・・

/* * 2.行き違い・・・必要な情報が伝わらないと・・・ */

VBA系 No.172 StrConv関数のvbNarrow変換に似た全角ABCを半角ABCへ変換する http://www.ken3.org/vba/backno/vba172.html で、 StrConv関数のvbNarrow変換に似た処理を作ってみました。 ここのやり取りでよく現場で見かけるタコSEとカスPGの物語を作ってみました。 ※かなり創作が入ってるけどね。 大なり小なり、要求、やりたいこと実現したいことがあります。 簡単に言うと、やってほしいことを作業者に伝えて作成してもらいますよね。 今回は、 "Windows Server 2003 Network" などの全角の文字列を ^^^^^^^^^^^^^^^^^^^^ これを半角の "Windows Server 2003 Network" にしたいです。 そんな要求があり、変換関数をVBAで後輩に作ってもらおうと思い、 簡単なインターフェースのみ説明して依頼しました。 文字列を渡したら、半角にした文字列を返してくれる、 そんな関数を作成して下さい。 例) Windows Server 2003 Network を Windows Server 2003 Network
Function 全角ABCto半角ABC(strMOTO As String) As String
   Dim strRET As String
   '変換する
      'ここの処理をヨロシクデス、
   '変換結果を返す
   全角ABCto半角ABC = strRET     'リターン値の代入(変換結果の代入)
End Function
上記の中身を作成してと依頼しました。 お願いされたほうは(仕様を渡されたプログラマーは)、 仕様にしたがって処理を作成します。 思考の流れとしては、 文字列の変換で有名なのは、 StrConv関数なので、こいつを使ってみますか。 おっ、vbNarrowってパラメータが使えそうですね。 StrConv 関数の定数 vbNarrow 文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。 国別情報の設定が中国、韓国、および日本の場合に適用されます。 これなら、関数自分で作らないでもいいじゃん。 標準関数のStrConv関数使えよボケって感じだよね。 ---- 先ほどの文字列変換関数の件ですが、 VBAの標準関数でStrConv関数があり、 StrConv("文字列", vbNarrow) で変換することができます。
Sub test()
    Dim strWORK As String
    strWORK = "Windows Server 2003 Network"
    MsgBox StrConv(strWORK, vbNarrow)
End Sub
---- よし、これでOK。 実行結果↓ 席に戻ると先輩からの新着メールが、 ---- To:プログラマー君 From:説明ベタSE StrConv関数で変換するとカタカナまで半角となり、 html上で使用するのでカタカナを抜いて半角としてほしい Windows デバイスドライバ入門 をテストで変換してみました。
Sub test()
    Dim strWORK As String
    strWORK = "Windows デバイスドライバ入門 "
    MsgBox StrConv(strWORK, vbNarrow)
End Sub
以上、対応よろしく。 ---- 実行結果↓ ↑デバイスドライバが半角カタカナとなってしまった。 やりとりで(依頼方法で)何が問題だったのでしょうか???

/* * 3.テストデータが悪かったのでは? */

はぁ〜、なんだこのメールは・・・理解に苦しむ。 だったら初めから言えよ、変な例題出してんじゃねぇよ。 "Windows デバイスドライバ入門" を "Windows デバイスドライバ入門" に 変換したいと初めから言えよ。 行き違いの問題点って、ここでは、例題が悪かったみたいですね。 例題=テストデータって感じですよね。 テスト仕様書ってあまり見かけないのですが、 関数の仕様書を渡す時に、 入力データ:Windows Server 2003 Network 出力結果:Windows デバイスドライバ入門 入力データ:Windows デバイスドライバ入門 出力結果:Windows Server 2003 Network 確認方法(使用方法)
Sub test()
    Dim strWORK As String
    strWORK = "Windows 2003 デバイスドライバ入門 "
    MsgBox 全角ABCto半角ABC(strWORK)
End Sub
目視で確認 とか、書かないといけないんでしょうねキット。 仕様の出し方、依頼の仕方が悪いんだよ。だからオレ様は悪くない。 と片方はなってしまうし、それが積み重なって相性が悪い、キライだ・・になっていく

/* * 4.バグの連絡方法、バグ票 */

不具合の連絡を受けたのでオレ様は悪くないと思いつつ、 指摘された、全角の英数字のみ変換する修正を行った。
Function 全角ABCto半角ABC(strMOTO As String) As String
    Dim strRET As String
    Dim strCHK As String
    Dim n As Integer
    Dim lngCODE As Long
    
    strRET = "" 'リターン値の初期化
   
    '文字数分コードを調べて変換して、strRETに+する
    For n = 1 To Len(strMOTO)
        strCHK = Mid(strMOTO, n, 1)  'n番目の文字を取り出す
        Select Case Asc(strCHK)
            Case Asc("0") To Asc("9") '全角0〜9
                strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
            Case Asc("a") To Asc("z") '全角a〜z
                strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
            Case Asc("A") To Asc("Z") '全角A〜Z
                strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
            Case Else  'その他
                strRET = strRET & strCHK  '上記以外はそのまま+する
        End Select
    Next n

    '変換結果を返す
    全角ABCto半角ABC = strRET     'リターン値の代入(変換結果の代入)
End Function
Sub test()
    Dim strWORK As String
    strWORK = "Windows 2003 デバイスドライバ入門 "
    MsgBox 全角ABCto半角ABC(strWORK)
End Sub
こんな感じで、 "Windows 2003 デバイスドライバ入門" を "Windows 2003 デバイスドライバ入門" に変換できたよ、文句無いだろこれで。 しかし、下記のデータを流すと・・・(/スラッシュやカッコも変換してほしかった) Excel VBA(ブイビーエー) 2000/2002/2003対応 や .NETエンタープライズWebアプリケーション開発技術大全(vol.2) ミスの原因って?なんだろうね? 大きい会社って、バグ連絡票、バグ票なんて面倒な書類があって、 不具合の発生日時、原因、対策を書き込んで記録に残している。 まぁ、ミスを書くのって自己申告だとイヤだし、 相手のミスを報告するのもなんだか気が乗らないんだけどね。 そんな気持ちの問題は置いといて、 バグ票を積み重ねると原因や傾向が見えてくる。 原因の項目で □技量不足 なんて項目があった会社は過去に1社しかなかったけど、 □仕様書不備 □テスト不足 □テスト環境と稼動環境の違い ・ ・ □コーディングミス とか、各社いろいろと項目を作って管理している。 今回の全角文字変換だと、 テストデータ不足、想定不足がなんとなく見えてくるのかな?

/* * 5.終わりの挨拶 */

仕事がうまく行く、うまく行かない 担当者の技量、相手との相性・・・そんな言葉でなんとなく済ませているけど、 もしかしたら、自分の伝える技量が足りない・・・なんてこともあったりするしね。 SEやプログラマーの技量に頼る開発をしているとよく見る光景かな。 面倒でも手を抜かない仕様書を書いたり、 開発手法を学んだりしないと。 あとは、恥ずかしいAnd手間がかかるけど、 バグ票を書き残し、ミスの原因を分析して再発防止かな。 たまには、キレイごとを書いてみました。 けっきょくは、やっつけ仕事になるんだけどね(オイオイ・・・) 仕様書のやり取りをまとめようとしたけど、 自作自演(笑)の想像入ってたので、うまくまとまりませんでした。 実際の三流プログラマー的な仕様書のフォーマットを近日中に作って、 小規模のシステム開発的なストーリーでやってみたいとは思ってますが・・・ いつも話が中途半端な三流プログラマーKen3でした。


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

リンクや広告など

項目別に本音?それとも建て前?的な記事をまとめました。

気になったジャンル↓を選択してください。
[ルーキー rookies]・・・ 新人さん達 初心者さんへ
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話
[共同作業 team]・・・チーム、グループ作業
[プログラムは心? spirit]・・・プログラマー 心・気質・魂

[掲示板デビューしようぜ bbs]・・・掲示板関係の話、質問者・回答者の気持ちほか
[昔はできた seo]・・・三流式の効果無しSEOとアフィリエイト
[仕事や作業、転職 job]・・・仕事や転職、評価、作業など
[その他 etc]・・・その他 分類外の記事

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]



[三流君(TOP ken3.org へ戻る)] / [プログラマー業務の愚痴] / [バックナンバー 一覧]