その1、その2でアウトプットとインプットの話を書いた。しかし、インプットとアウトプットが揃えば済むのかというとそうでもない。では、何が必要なのか?

------
VBAでシステムを作る際の考慮点 その3


インプットがあって、そこからアウトプットが出てくる。もし「入力結果を2倍した結果を返す」といった単純なものなら考慮はいらないが、条件によって他の値を参考にしたり、計算方法が変わってくるような場合は、その順序も含めて決める必要がある。
料理を例にすると、カレーを作る際に、同じ材料でも
 ・具材の切り方、大きさ、入れる順番
 ・煮込み時間
などの要素が変われば味という結果が変わってくる。そこまで複雑ではないだろうけれど、インプットの扱い方によってはアウトプットが変わってくることがある。例えば
 ・(x+y)×z
 ・x+y×z
 の結果が異なるが如く。

そう、正しいアウトプットを導くため、インプットを正しい順序、正しい方法で処理するようにしてやらないといけない。それをVBAのコートで表現するのがVBA利用者のなすべきことだ。
料理をするとき、味を目的とした場合は「どうすればおいしく仕上がるか」のために、最適とまでは言えなくても、より適切な調理法が採られる。同様に、VBAのコードを作成するときも、より適切な方法を採ることが大切である。

なお、VBAで表現するものを「プログラム」「マクロ」「ソースコード」「コード」「スクリプト」などといった呼び方を、特に意識せずに使われている場合もあるだろう。
私自身もあまり意識していないが
 ・処理全体を指すときは プログラム
 ・モジュールやプロシージャや関数の単位の時は ソースコード 
 ・それより細かい単位のときは コード
と記載しているように思う。

話は少しそれたが、次は今回出てきた「VBAコードにおける、適切な方法とは?」というあたりに触れようかと思う。
その1では「どういうアウトプット(成果物)を得たいか」ということを書いた。では、そのアウトプットを得るために必要なものは?

------
VBAでシステムを作る際の考慮点 その2


どういうアウトプットを得たいか、を考えると、自然とそのアウトプットを得るために必要な材料、つまりインプットが必要になる。
 ・カレーを作るなら、にんじん、たまねぎ、じゃがいも、などを準備するだろう。
  ほとんどの場合、尾頭付きの鯛やうまい棒は必要ではないはずだ。
 ・事件の記事を書くなら、その事件の現地で取材をしたり、取材結果の資料を集めたり、と記事を書くための裏付けが必要だ。
  その時に明日の天気や来年の干支の話は関連がないケースが大多数を占めるだろう。
 ・授業のレポートを書くなら、レポートの題材となるものの資料を図書館やインターネット、自身が見聞してきたことや学んだことを使うだろう。
  自分の暴露話を関連して書くようなことはめったにないのではないだろうか。

つまりは「アウトプットを得るためにどんなインプットが必要か」を見極めることが重要になってくる。

中には簡単に手に入るもの、収集しなくてはいけないもの、入手困難なものなど、いろいろあるだろう。それがアウトプットの精度にどの程度影響するのかも確認しながら材料を探してみよう。
VBAを使う人は
 ・ITの専門教育を受けた
 ・職業でITエンジニアをしている
という人の方が少ないだろう。独学するにはなかなかそういう資料がないとか、なかなか気が付かない点を何回かに分けて書いてみようと思う。

やはり多いのはExcelかAccessだろう。私自身はAccessを使うぐらいならSQL Server Express と別の言語とで構成することを勧めたいので、Excelに限定になるかもしれない。

また、いろいろな手法があるだろうけれど、あくまで学んできた知識と経験の中からの話になる。コメントなどで否定的な意見があっても構わないが、それによって記事を修正するかもしれないし、無視するかもしれないがあしからず。もし、ご自身の持論を主張したいなら、ご自身のサイト等で主張されたらよいかと思う。今は誰にだって情報発信をする機会を与えられている時代なのだから。

------
VBAでシステムを作る際の考慮点 その1


ゲームを作ったりするわけではなく、データの処理、というのが主だろう。が、漠然と考えていてもダメである。
システムを作る、ということは何らかの処理結果を得たい、というのが通例である。
 ・今月/四半期/年度ごとの売り上げ、粗利がほしい
 ・アンケートに答えた人の性別/年代層別の一覧がほしい
 ・テストの設問ごとの正答率を出し、難易度順に並べたい
など、こんな単発な要望は今となっては少ないかもしれないが、重要なのは「どういうアウトプット(成果物)を得たいか」である。

 細かいことよりも、最終的にどういうアウトプットがいるのか、場合によっては途中経過のアウトプットが必要であることもあるだろう。が、どういうアウトプットが求められているか、をまずは定義してみよう。