[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.127 要求を聞き、疑問点をつぶし、仕様書を書く

要求を聞き、疑問点をつぶし、仕様書を書く

メルマガ発行内容

<要求を聞き、疑問点をつぶし、仕様書を書く>

どうも、三流プログラマーのKen3です。 最近、質問もらうけど、 なかなか、解答できてない三流プログラマーのKen3です。 ※私のレベルで手に余る高度な質問が多くて。

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

質問をHPの感想書き込みでもらいました。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 質問者をお客様と見立てて、 勝手なストーリーを数回展開していく予定です。 ※質問者にしてみれば、メルマガ書いてるヒマあったら、  回答速くヨコセって感じだと思うけど。 下記、もらった質問です。 ------------------------ 郵便番号についての集計を行うのですが、 条件が複数あり、どのように組めばいいのか迷っています。 使用するのはエクセル2000もしくはアクセスの2000。 元データはエクセルで保存されています。 条件 1郵便番号として入力した数値の選別・集計  1.7桁そろっているもの  2.3桁しかないもの  3.2桁しかないもの  4.その他  5.△(4で説明) 2選別した郵便番号の番号順にセルに貼り付ける 31の1.以外に該当したものは別のシートに分ける 4ただし、集計した全ての郵便番号の中で数が1〜9の場合は  「△」という名前にして集計表の最後に表示する。   (この△の場合、郵便番号欄が△という名称になる) 5選別した1〜5の色を分ける 5印刷の幅が決まっていて、郵便番号欄・集計数のセル幅が8.50、  セルの高さが13.50 A4用紙横で並べてゆき、足りない場合は  改ページを行う。(エクセルでの高さ、幅) ・・・注文が多くて申し訳ありません。 大変失礼な質問と思いますが、どうかよろしくお願い致します。 もし、アドバイスを頂けたら、と思います。 ---------

/* * 2.ステップ1 やりたいことの理解 */

さてと、いきなりプログラムを組み始める人も居るけど、 通常は、やりたいことを理解します。 なんとなく、データを集計するんだなぁといったイメージは、わかりました。 処理やシステムの理解で、ポイントは、データの流れなので、 入力されるデータ(もらえるデータ) と 処理して出力するデータ(結果・成果物、印刷、表示) を中心にイメージすると、わかりやすいと思います。 ※はじめのデータと結果から、途中をイメージする方法です。

/* * 3.ステップ2 疑問点を洗い出し、質問してつぶす */

次は、わかったフリしないで、疑問点をまとめて、 もし疑問点があったら、依頼元に質問を出します。 今回私が、出した質問メールは、 ---------- イメージが少し沸かない部分があるので、メールしました。 >郵便番号についての集計を行うのですが、 >条件が複数あり、どのように組めばいいのか迷っています。 >使用するのはエクセル2000もしくはアクセスの2000。 >元データはエクセルで保存されています。 まず、元データがExcelのシートに保存されていると思います。 これは、下記のようにA列に郵便番号が入っている、そんな感じですか? A列 2200001 1940001 123 444 それとも、住所やその他、データが付いているのですか? >条件 >1郵便番号として入力した数値の選別・集計 > 1.7桁そろっているもの > 2.3桁しかないもの > 3.2桁しかないもの > 4.その他 > 5.△(4で説明) >2選別した郵便番号の番号順にセルに貼り付ける 単純に、コードの順番か? >31の1.以外に該当したものは別のシートに分ける 7桁そろっているもの と 3桁しかないもの,2桁しかないもの,その他,△(4で説明) の2つの結果シートを作成する? >4ただし、集計した全ての郵便番号の中で数が1〜9の場合は > 「△」という名前にして集計表の最後に表示する。 >  (この△の場合、郵便番号欄が△という名称になる) 集計とは、同じ郵便番号を数えるのか? 郵便番号 集計数 1940001 5 2280002 20 3010005 6 だったら、 この1940001のデータは、△にする? そして、表の最後に持ってくる。 とすると、3010005の6個も?△となる、そして最後に移動すると、 郵便番号 集計数 2280002 20 △△△ 5 △△△ 6 となるのか? >5選別した1〜5の色を分ける まぁ、イロを付けるとして、 >5印刷の幅が決まっていて、郵便番号欄・集計数のセル幅が8.50、 > セルの高さが13.50 A4用紙横で並べてゆき、足りない場合は > 改ページを行う。(エクセルでの高さ、幅) これは、横に並べる、 郵便番号 集計数 郵便番号 集計数 郵便番号 集計数 2280002 20 2280003 15 2280005 20 △△△ 5 △△△ 6 と、左から右、次の行か? それとも、縦に並べて、上から下、次の列? 郵便番号 集計数 郵便番号 集計数 郵便番号 集計数 2280002 20 2600003 15 330005 20 2280003 15 2280005 12 ・  ・ △△△ 6 ---------------- と、疑問点を相手に伝え、回答を待つ。 メールで軽く質問したけど、 質疑応答表(票) ^^^^^^^^^^^^^^^^ なんて感じで、日付・回答期限・回答者など付いた、 正式なフォーマットを使用している会社もあると思うので、 ^^^^^^^^^^^^^^^^^^先輩に聞いてみてください。

/* * 4.回答をもらったら、疑問がつぶれたか確認する */

質疑応答表(票)を送ると(質問・疑問を送ると) しばらくすると、回答が来ます。 こちらの疑問がつぶれたか、心の中のヤバイ空気、ドス黒い疑問が晴れたか確認します さらに、疑問が発生したら、その疑問に対して、また質問を投げかけます。 もらった回答は、下記のような感じです。 (かなり、見えてきましたね) 下記、もらった回答です。 -------- イメージの補足についてご説明させていただきます。 > > まず、元データがExcelのシートに保存されていると思います。 > これは、下記のようにA列に郵便番号が入っている、そんな感じですか? > > A列 > 2200001 > 1940001 > 123 > 444 > > それとも、住所やその他、データが付いているのですか? >  これは住所や電話番号などが、順番についています。  A列に郵便番号・B列に氏名・C列に住所・D列に電話番号・・・  とエクセルシートに横並びに入力されています。 > >条件 > >1郵便番号として入力した数値の選別・集計 > > 1.7桁そろっているもの > > 2.3桁しかないもの > > 3.2桁しかないもの > > 4.その他 > > 5.△(4で説明) > > >2選別した郵便番号の番号順にセルに貼り付ける > 単純に、コードの順番か? はい。コードの順番です。 > > >31の1.以外に該当したものは別のシートに分ける > > 7桁そろっているもの > と > 3桁しかないもの,2桁しかないもの,その他,△(4で説明) > の2つの結果シートを作成する?     そうです。結果シートが2つになります。 > > >4ただし、集計した全ての郵便番号の中で数が1〜9の場合は > > 「△」という名前にして集計表の最後に表示する。 > >  (この△の場合、郵便番号欄が△という名称になる) > > 集計とは、同じ郵便番号を数えるのか? > 郵便番号 集計数 > 1940001 5 > 2280002 20 > 3010005 6 > だったら、 > この1940001のデータは、△にする?      そのとおりです。 > そして、表の最後に持ってくる。 > とすると、3010005の6個も?△となる、そして最後に移動すると、 > 郵便番号 集計数 > 2280002 20 > △△△ 5 > △△△ 6 > となるのか?   この場合は   2280002 20   △△△  11(上の△部分の和)になります。郵便番号の区別無く、   △として処理、加算します。 > > >5選別した1〜5の色を分ける > > まぁ、イロを付けるとして、 > > >5印刷の幅が決まっていて、郵便番号欄・集計数のセル幅が8.50、 > > セルの高さが13.50 A4用紙横で並べてゆき、足りない場合は > > 改ページを行う。(エクセルでの高さ、幅) > > これは、横に並べる、 > 郵便番号 集計数 郵便番号 集計数 郵便番号 集計数 > 2280002 20 2280003 15 2280005 20 > △△△ 5 > △△△ 6 > と、左から右、次の行か? > > それとも、縦に並べて、上から下、次の列? > 郵便番号 集計数 郵便番号 集計数 郵便番号 集計数 > 2280002 20 2600003 15 330005 20 > 2280003 15 > 2280005 12 > ・ >  ・ > △△△ 6 たてに郵便番号、その横に、集計数、最後に三角となります。簡単ですが エクセルイメージを添付させていただきます。(2シートにしています) -----

/* * 5.設計にとりかかる */

疑問も解決してきたので、 これくらい、設計無しでも?といった、上級者のかたも居るかもしれませんが、 ラフでも、流れぐらいは書かないと。 OS、使用言語・動作条件など ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ あまり書かないけど、Windows2004で動かない、 Access2005でエラー発生した、、、など、環境変わった時のタメに、 キチント仕様書には、OSや言語を明記しますか。 ※いちばんありうるのは、Access97とExcel97の古いマシーンでも動かしたい  なんて感じで、あとから言われるパターンかなぁ。  だったらAccess97で作ったのに・・2000で作ったからフォームが・・なんてね。 Excel2000とAccess2000の環境で、今回は作成します。 ※まぁ、ぐだぐだと基本設計書、要求仕様書がこんな感じで続くけど、  今回はパスします(オイオイ) 次に詳細設計に入ります。 プログラマーさん達が最低限ほしいのは、入力のフォーマットと出力、 中身の計算、集計処理内容なので、まず、そこら辺からつぶすと、 入力データ/入力ファイルフォーマット ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ チャント分析すると、いつ・どこで・ダレが・このデータを作成する。 データの作成・閲覧・変更・削除の権限は?なんて堅いこと書くけど、 手抜きでシンプルに、 集計データはExcel2000のシートに保存されています。 A列 B列 C列 D列 郵便番号 氏名 住所 電話番号 700-0941 あべ*** 岡山県岡山市・・・ 090-9999-9999 別紙、xxxx.xls参照とかやって、逃げるのもアリかなぁ ※質問者からは、丁寧なxlsファイルをもらいました。 ↑入力シートイメージ 集計処理(集計ルール) ^^^^^^^^^^^^^^^^^^^^ あとは、入力データをどんな感じで、 集計したり、加工したりするルールを書くんだけど、 1.データのインポート Excel2000の住所データをAccess MDBへインポートする。  郵便番号の項目をインポートする 2.集計処理 郵便番号をカウントする 郵便番号が7桁そろっているものを集計する 同様に、3桁しかないもの,2桁しかないもの,その他 を集計する。 集計結果が10以下(1〜9)のデータは、最後に△で集計する。 3.結果の出力 データをExcelシートへ出力する たぶん、上記文章で書いても作業者から質問来るので、 質疑応答票を添付して、お客さんとのやりとりを見せたほうが、 話が早かったりします。 出力データ/出力、印刷イメージ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 出力は、Excelのシート2枚です。 シート1(7桁正しいデータ) 郵便番号 集計数 000-0001 20 000-0002 19 000-0003 18 000-0004 11 郵便番号が正しく7桁そろっているもの、 なおかつ、集計数が10以上の ものが郵便番号の番号順に並ぶ。 ↑出力シートイメージ シート2(7桁以外のデータ) 郵便番号 集計数 郵便番号 集計数 561 15 98 13 562 16 97 56 ←郵便番号が2桁しかないもの、なおかつ 563 20 78 35  集計数が10以上のものを番号順に並べる 564 36 565 29 2 15 ←郵便番号が1桁しかないもの、なおかつ 566 39 3 20  集計数が10以上のものを番号順に並べる 567 11 568 22 △△△ 1045 569 44 ↑ 郵便番号の集計で1〜9までのモノがあれば 570 33 △△△として郵便番号が何桁であろうが 571 55 この部分に計上することになる。 572 66 ↑ 郵便番号が3桁しかないもの、なおかつ 集計数が10以上のものを番号順に並べる -【けんぞう!】--------------------------------------------------------- 転職関係、在宅プログラマー、SOHOの広告まとめました http://www.ken3.org/etc/500yen/zaitaku.html いろいろとあるので転機の人はぜひ 登録料無料、匿名で探せるので在宅で小金稼ぎの人も見てね ~~~~~~~~~~~~~~~~ オレ様、私は、SE様だ、月給30万以上ボーナス100万を探すのもありだよ。 私にみたいにVBA少しできるぐらいだと仕事無いよ・・・なんて冷たく、 と軽く言われても匿名なら気にならないし(笑) 逆にこんな簡単な仕事で月給27万貰えるの?って会社もあるし、世の中イロイロ。 http://www.ken3.org/etc/500yen/job.html ------------------------------------------------------------------------ 

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

今回は、 プログラム作成依頼が来たら、どんな感じで設計するか、 そんな話でした。 ※なんか、うまく書けなかったけど。 何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.127を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

ページフッター(リンクや広告など)


[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

情報を探す

情報を探すならGoogleかな?

↓Web全体、サポート情報(support.microsoft.com)や三流君VBA(ken3.org)から検索する
Google
Web www.ken3.org
www.microsoft.com support.microsoft.com

あとは、項目別にMSでお勉強かな?
◆ マイクロソフト サイトの歩き方
◇ How-To インデックス
◇ FAQ インデックス
◇ スキルレベル別おすすめコンテンツ
◇ テクノロジ マップ
◇ テーマ別技術資料一覧

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・