3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

要件をシンプルにすると、プログラミングも楽になる

2010年11月16日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

ジーザス小川です。

昨日の深夜、大阪から帰ってきました。東京に戻ってみたら、雨上がりぽい感じになっていてびっくりしました。

そして、さっき、朝から近所のスーパーで買い物をしてきたところです。

さてさて。昨日の続きです。

昨日は、こんな問題のお話でした。

「エクセルマクロ初中級速習コース」で、昼休み中に出てきた相談から。

ある受講生の方から、こんなことをするマクロを作れないか、と、相談が来ました。

○以下のような、商品名とロット数を表にした情報がある


商品A│6│
─────
商品B│3│
─────
商品C│2│
─────

○そして、上の表を元に、こんな表を作りたい、とのこと。

商品A│1/6│
──────
商品A│2/6│
──────
商品A│3/6│
──────
商品A│4/6│
──────
商品A│5/6│
──────
商品A│6/6│
──────

──────
商品B│1/3│
──────
商品B│2/3│
──────
商品B│3/3│
──────

──────
商品B│1/2│
──────
商品B│2/2│
──────

○ただし、以下の条件を満たさなくてはならないそうです

・各商品の間は一行あけること

・各商品で、一行おきに色をつけること

・印刷した際、同じ商品の途中で改ページしてはいけない

さて、あなたなら、どうしますか?

その答えです。

僕がその方に最初に聞いたことは、これでした。

「で、これ、何で各商品で、一行おきに色をつけなくてはならないんですか?」

直感的に、不要な作業が含まれているような気がしたんですね。

そうしたら、こういう答えが返ってきました。

「いや、そうしないと、見にくいですから」

うーん、「見やすくしたい」というのがその理由ですか。

ここで、大事なことなんですが。
「見にくいから見やすくする」といことが目的なら、他の方法もいくらでもあるんですよね。
例えば、行間を広くするとか、罫線の線種を変更するとか。

相手の提案する手段に引きずられないようにすること肝心です。

まあ、それはさておき。

僕は、さらに質問しました。

「で、この資料、誰がどのくらいの頻度で見るんですか?」

そうすると、返ってきた答えはこんな感じ。

「いえ、ISOで要求されているだけで、ほとんど誰も見ません」

(゚∀゚)キター!

僕は、そこで確認します。

「ほとんど誰も見ないなら、見やすくする必要、ないですよね。。」

質問された方の回答は、

「あ、はい。言われてみれば、そうですね。。」

と、いうことで、一件解決しました。

次、です。

「印刷した際、同じ商品の途中で改ページしてはいけない」
という条件もありました。これについても、確認します。

「どうして、印刷した際、同じ商品の途中で改ページしてはいけないんですか?」

そして分かったことは、これも必須の要件ではない、ということ。

さらに聞いてみると。

最終的に作りたい表も。



商品A│1/6│
──────
商品A│2/6│
──────
商品A│3/6│
──────
商品A│4/6│
──────
商品A│5/6│
──────
商品A│6/6│
──────

──────
商品B│1/3│
──────
商品B│2/3│
──────
商品B│3/3│
──────

──────
商品B│1/2│
──────
商品B│2/2│
──────

ではなく、



商品A│1│
─────
商品A│2│
─────
商品A│3│
─────
商品A│4│
─────
商品A│5│
─────
商品A│6│
─────

─────
商品B│1│
─────
商品B│2│
─────
商品B│3│
─────

─────
商品B│1│
─────
商品B│2│
─────

という程度で良いそうです。

「いや、でも、現場がそうして欲しいと言っているから…」と言われるその方への、最後のひとこと。

「ほとんど誰も見ないこの表を作り込むことよりも優先するべき、もっと大事な仕事があるんですよね。」

「あ、はい。」

「だったら、色をつけたり改行を入れたりする時間を惜しんで、もっと大事な仕事をしたほうが、良いのではないでしょうか。」

「あ、はい。」

「あなたの上司にとっては、どっちのほうが良さそうですか?」

「そう..ですよね。」

「はい、そうですよね。そういうわけで、それではこれで行きましょう。」

そんなやりとりをしたあと、サンプルコードを書きました。

ここまで話をシンプルにしてしまうと、マクロを書くのも簡単になります。

一行ごとに色を分ける必要もない、改行のことも気にする必要はない。

そうなってしまえば、たいした仕事ではありません。

そんなやりとりをしたあとなので、僕が書いたプログラムは、たった90秒で「本当に欲しい機能」を実現できたのです。

長くなってしまったので、ジーザス小川の書いたサンプルコードはまた明日紹介しますが。

ここで今日学んでいただきたいポイント。

それは…。こんなところでしょうか。

○クライアントの要求にそのまま答えることが、真の解決とは限らない
○要件をシンプルにすると、プログラミングも楽になる
○「エクセルマクロで力づくで解決する」だけでなく、常に全体最適を考えるべき

そんなわけで。

この続きは、また明日書きたいと思います。

今日は、午後から夜まで、人と会う時間ばかり。

午前中は、事務仕事をいっきにやる時間にする予定です。

キーワード

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド