[三流君]/ [VBAで楽しく]/ [基本設計書/仕様書のお話]/ [テスト仕様書のお話]/ [関数仕様書のお話]

関数仕様書の話

仕様書と言うか、設計書というか。まず名称・呼び名からしてもめたり
フローは書くだの書かないだの、
仕様書は頭の中にあります、、と、真顔で言い放つ若者プログラマーが居たり、
仕様書・設計書のお話は、話題が多いので、参考程度に読んでください。

個人的には、関数仕様書は、入力・処理・出力がはっきりしていれば、書式はあまり気にしないかなぁ。
AAAAAを受け取って、受け取った値を使ったりして、BBBBBと結果を返したり、CCCCCの動作をしたり・・・
※関数仕様書はVBAのF1ヘルプと同じ感じでいいんじゃないの?なんて軽く答えていたり・・・

プログラマー愚痴系記事の[仕様書・設計書関係の話]もヨロシク。

仕様書・設計書のサンプル

よく、質問で、例題・サンプルがほしいと言われるので、フォーマットを整えてませんが、サンプルの仕様書は:[IE_SRC0307.zip]←今回作ったサンプルの IE_SRC0307.xls です。
作成手順の例題は→[IEソース表示サンプルを例題で仕様書作成]です。
1画面の処理なので、あまり参考となりませんが↑もあわせて見てください



ここから過去に書いたメルマガの記事

どうも、三流プログラマーのKen3です。

今回は、
関数仕様書について、軽く書きたいと思います。

たいした解説、回答内容じゃないのですが。

関連項目?仕様書関係
  [No.204 不具合の連絡を受け バグ票の作成とテスト仕様書について]
  [動画 かなりいい加減な設計書]
  [仕様書 書く側 と 受取り側(要求仕様書、基本設計書、詳細設計書)]
もヨロシクです。

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

※愚痴系でモラッタ書き込みだけど、VBA系でも流用。  両方の読者の人は、いつもカブってすみません。  愚痴系は発行少ないのでHP確認にしてもらったほうがいいのかも。 ---- >関数仕様書の書き方についてご教授ください。 ---- と 質問のメールをもらった。 三流プログラマー的回答なので、 いつもの部分参考でヨロシクです。 ~~~~~~~~~~~~~~~~ えっ、今日は一部でも参考になるのかよ? 最近キツイなぁ、読者の声が、 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 参考にならなかった、読んで損したにならないように、1つはヒットを目指して。

/* * 2.関数仕様書かぁ、、HELPと同じ書式でいいんじゃない? */

メールアドレスが女性読者の会社からぽかったけど(.co.jp) 冷たく、下記のように短い回答でした。 ※あれ?めずらしいねぇ、女性には優しいのにね。 VBAのヘルプと同じでいいんじゃない? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 下記、Excel2002のHELP Dir関数です Dir 関数 ^^^^^^^^ と、関数名があって >指定したパターンやファイル属性と一致するファイルまたはフォルダの名前を表す >文字列型 (String) の値を返します。ドライブのボリューム ラベルも取得できます。 ↑簡単な(簡潔な)機能説明があり 構文 >Dir[(pathname[, attributes])] ↑と、コールの方法が載っていて、 ↓あとは、パラメータ、引数の説明、定数、戻り値の説明があれば >Dir 関数の構文は、次の指定項目から構成されます。 > >指定項目 内容 >pathname 省略可能です。ファイル名を表す文字列式を指定します。フォルダ名 >およびドライブ名も含めて指定できます。引数 pathname に指定した内容が見つ >からないときは、長さ 0 の文字列 (" ") を返します。 >attributes 省略可能です。取得するファイルが持つ属性の値の合計を表す数式ま >たは定数を指定します。省略すると、標準ファイルの属性になります。 設定値 >引数 attributes の設定値は次のとおりです。 > >定数 値 内容 >vbNormal 0 標準ファイル >vbReadOnly 1 読み取り専用ファイル >vbHidden 2 隠しファイル >vbSystem 4 システム ファイル。Macintosh では使用できません。 >vbVolume 8 ボリューム ラベル。この値を指定すると、すべての属性は無効に >なります。Macintosh では使用できません。 >vbDirectory 16 フォルダ >vbAlias 64 エイリアス ファイル。Macintosh でのみ使用できます。 あとは、下記のような詳細の解説や注意事項があってもいいし。 >解説 > >Windows の場合、複数のファイルを指定するための "*" (アスタリスク) >および "?" (疑問符) のワイルドカード文字を使用できます。Macintosh の場合、 >これらの文字は有効なファイル名の文字として扱われるため、このワイルドカード >文字を使用して複数ファイルを指定することはできません。 なんて、冷たい回答でした。

/* * 3.堅苦しくなく、わかればいいのかなぁ */

ヘルプと同じ、まぁ、無難な答えだよね。 逆の言い方だと三流プログラマーらしくないよね、そんな優等生的な回答は(笑) オレも期待してないし、読者も期待してないよそんな回答は。 そうですか、最近、クレーム無いように安全にやってるんだけど。 仕様書は、何のために書く? ・もちろん、納品書類の厚さ稼ぎですよ(あとで誰も見ない/読まないけど) ・作業依頼の時の資料ですよ/作成時の資料 ・自己満足ですよ いろいろと考えられますが、 多くは、他の人とのやり取りのために、仕様書を作成すると思います。 ※カッコつけて、未来の自分への手紙と書いてもいいけど、  たぶん、自分の書いた仕様書を未来の自分は読まないと思う。  現実は、未来の被害者(担当者)が読む可能性はあるけど。 実は、紙にぐちゃぐちゃ多く書き込むより、 関数の作成依頼なら、
Sub Test_Main()

    Dim strA As String

    strA = getF()  'フォルダーの名前を返す、
    MsgBox strA

End Sub
なんて、書いて、 関数内でフォルダーを選択するダイアログを表示して、 フォルダーの選択、選択された値を返してね。 と言った方が、作成者にイメージが伝わりやすかったと思う。 あと、たまたまだけど、使用する上位モジュールのサンプルをつけているので、 依頼された関数の作成者側は、それで作成したモジュールのテストも出来て、 やりやすかった。 サスガに、 納品書類で、呼び出す上位側のモジュールと簡単な機能説明だと 上司になんだこれ?書き直せとなって、クレーム来るかもしれないけど (でも、納品した書類、客先担当者はまともに見ないってばさ(笑)) 関数仕様書は、 ~~~~~~~~~~~~~~ 簡単な呼び出しモジュール(モジュールのテストを兼ねた) と 簡単な機能説明で十分だと三流プログラマーのKen3は思います。
Sub Test_Main()

    Dim nNO As Integer

    nNO = selectCODE("A001")  '動作番号1,2,3を返す
    Select Case nNO
        Case 1:  '在庫確認処理
            MsgBox "在庫確認処理を呼ぶ"
        Case 2:  '納品待ち
            MsgBox "納品待ち"
        Case 3:  '出荷処理
            MsgBox "出荷処理"
        Case Else
            MsgBox "オイ、そんなリターン値ないよ・・"
    End Select

End Sub
なんて、テストモジュールを書いといて、 selectCODEを作成する担当者に、 文字列でコードを受け取り、A.mdbからデータを受け取り、在庫テーブルと照合、 さらに、入庫予定がONなら・・・を返す ・ ・ と、書けば、作るほうも作ってもらうほうも楽なのでは? おまけでつけた、テストモジュールが、 メインモジュール作りにもなったりして、 矛盾点の確認にもなるし、関数仕様書/関数作成依頼書作るときは、 一緒にテストモジュールも付けてみては?

/* * 4.じゃ、一人作業の時は、仕様書は頭の中にありますでいいの?かよ? */

仕様書は、他のメンバーと意思の疎通をスムーズにするため必要、 でも、しょせん仕様書なんて納品時にページ稼ぎ、仕様書は見ない、 ソースを見たほうが正確だぁ〜 なんて言ってると、 一人作業の時は、仕様書は頭の中にありますでいいよ って聞こえるんだけど、そのあたりは? う〜ん、、、仕様書は私の頭の中にありますかぁ・・・ ほんとに一人作業なら、それもアリかもしれないけど、 さっき、チラっと書いたけど、未来の自分へのラブレターとして、 書いておくと、下位モジュールのテスト時楽だし、 納品用の書式に書く必要は無いけど、メモ書き程度は、書いたほうがいいよ。 私が変わり者だからかもしれないけど、 未来の自分に依頼を出すって感じで、まとめると、面白いかもね。 自分自身に仕様書を書いてオーダーする ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ なかなか、イメージ沸きにくいけど、 こんな仕様作ったバカは誰だよ・・・あっ、自分だった(笑) 私みたいに、たまには、右脳と左脳でケンカしてね。 ※メルマガの作者とサンプルプログラム作成者って違うんですか?  と質問受けたことあったけど、同じ人がどちらも書いてます(笑)  気分によって、文体やサンプルに違いがあるんだけどね・・・ アシスタントを雇うぐらい儲けたいけど、そんな夢見ちゃねぇ・・・

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

今回は、 関数仕様書の書き方は、 ・VBAのヘルプと同じ書式でいいんじゃないの? ・テストルーチンを付けて渡すと、理解がハヤマルよ ・自分自身に仕様書を書いてオーダーする 何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。


質問・感想を送る

作者に感想・質問/要望を送る(気軽に質問・感想書いてください)
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい

分類別に記事を紹介

分類別といっても、あまり分類別にまとまっていないのですが、、、↓

よく使う操作方法

F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。
なれると当たり前に操作している方法が↓かなぁ。
[プロパティ、メソッドを探る方法]・・・基本のF1を押してヘルプを見る方法など
[実行時エラー、あわてないでデバックを押す]・・・デバッグの流れを簡単に(ハマった時はツライけど)
[イミディエイト ウインドウ と Debug.Print]・・・プログラム作成時に便利なイミディエイト ウインドウ
[参照設定のお話]・・・設定すると便利な(設定しないと使えない)、参照設定のお話
[サンプル 実行方法]・・・Alt+F11 や ツール--マクロ から VBAの編集画面を開き F5で実行?

仕様書のお話(XXX設計書)

イロイロな仕様書・設計書を各工程で使っていくのですが、その一部を書きました。
[基本設計書/仕様書のお話]・・・仕様書・設計書を書いてますか?簡単な流れを書きました。
[テスト仕様書のお話]・・・テストデータ XXXXを入力したら、YYYYになる ほか
[バグの連絡票とテストケース]・・・バグ・不具合の連絡を受けたら 原因を書き 処置する。
[関数仕様書のお話]・・・仕様書は頭の中にありますでいいの?かよ?
[作業の流れ 入力・処理・出力ほか]・・・フォルダー選択を例に仕様書と流れを解説

プログラムのお話

[作成時 Ctrl+C Ctrl+Vの前によく考えよう]・・・コピープログラムの落とし穴?
[関数に汎用性を持たせる、共通に使える関数作り]・・・共通に使える関数(財産)を作りましょう

Access関係:アクセス側からのアプローチ

[AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
[Accessのレポートを操作]・・・レポートを操作してみました
[Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

Excel関係:エクセル側からのアプローチ

[Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

その他:VBAの共通関数やテキストファイルの操作など

[VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

blog:あまり更新していない作業日記 → [三流君の作業日記] と [通販商品の足跡] も よろしくお願いします。






[三流君]/ [VBAで楽しく]