VBAを深める|アルゴリズム(処理の順番を決めよう)

※当ブログはアフィリエイト広告を利用しています

VBA

 こんにちは! ハマラクです。
 変数宣言、ループ処理、条件分岐を覚え様々な処理を行えるようになったと思いますが、実際にプログラムを書こうとするとどのように組み立てたらいいのか分からないとなっていませんか。
 VBAに限らずプログラムを書くためには、設計書が必要となります。この記事では、その設計書となる「アルゴリズム」について説明いたします。
 この記事を読むことで分かることは以下の通りとなります。
  ・アルゴリズムとは?
  ・アルゴリズムを表現する「フローチャート」
  ・実際にアルゴリズムを考えてみよう

 実際にプログラムを書くには、このアルゴリズムが重要になってきます。この記事を読み終えるころにはプログラムを書く前の準備が理解でき、実際にプログラムを書くための設計書が頭に浮かぶようになるでしょう。

 このサイト内の「VBA」タグはVBA初心者が日頃の業務を改善し、自分の時間を作っていくこと応援することを目的に作成しています。

アルゴリズムとは?

 アルゴリズムとは、簡単に言うと「処理の順番」「作業手順」のことです。特定の課題や問題を解決するために、どの順番でどのような処理を行うかを決め、その手順を言語化したものをアルゴリズムと言います。このアルゴリズムの考え方自体は日常生活にも溶け込んでいますが、意識してみないと判りません。
 例えば、歩くという動作に対しても「右足を出す」、次に「左足を出す」、これを「繰り返す」という手順で行います。人間はこの手順自体を無意識に考え行動していますが、コンピューターには予め手順を決め、その手順に沿って動作させる必要があります。
 最近では、プログラムに限らずアルゴリズムの考え方は「論理的思考」という点で重要視されてきて、小学校で導入されたプログラミング教育も論理的思考の育成を目的としています。

小学校プログラミング教育の手引きより
「児童がプログラミングを体験しながら、コンピュータに意図した処理を行わせるために必要な論理的思考力を身に付けるための学習活動」を行うことと規定しました。
https://www.mext.go.jp/content/20200218-mxt_jogai02-100003171_002.pdf

 実際のアルゴリズムの組み立ては3つのステップ(1.理解 2.分解 3.組み立て)で考えていくこととなります。

1.理解
 ステップ1の「理解」では、やろうとしている動作の目的や解決すべき課題を明確にする段階となります。何のために実践するのかということがわからないと、最適な処理も出てきません。そのため、これから行う動作のゴールを設定いたします。

2.分解
 ステップ2の「分解」では、ステップ1で決めたゴールに向かって実施しなければいけない処理を細かく分解する段階となります。どんな処理が必要なのか、優先度はどうなのかを決めていく作業になります。

3.組み立て
 ステップ3の「組み立て」では、ステップ2で集めた処理をその優先度に合わせ最適な順番になるように組み立てていく段階となります。この組み立て段階で不足がないように整理することが重要となってきます。

 このようにアルゴリズムを組み立てる手順がわかったところで次に、アルゴリズムを見える化する「フローチャート」について説明いたします。

アルゴリズムを表現する「フローチャート」

 フローチャートとは、図形や矢印を使用することにより、プロセスやプログラミングの処理の流れを分かりやすく表現したものです。アルゴリズムを整理したり、決めたアルゴリズムを第三者でもわかりやすく理解してもらうために使用します。使用する図形は次の通りです。

 他にも記号の種類はありますが、多く使用される図形は上記となります。実際の例として、sumという変数に0を代入し、40になるまで1つずつ足していくというフローチャートを書くと次のようになります。

 このようにフローチャートではどのようなルートで処理が行われるか、分かりやすく表現することができます。フローチャート自体は手順が分かりやすく表現できるため、業務の流れを表すのにも使用されたりします。
 では、次に実際のプログラムからアルゴリズムを考え、フロチャートを書いてみましょう。

実際にアルゴリズムを考えてみよう

 アルゴリズムはプログラムを0から1にする作業(プログラムを書く前準備)に使用されますが、今回は順序を逆にし、プログラムからアルゴリズムを考え、フローチャートを書いていきます。アルゴリズムは前回の記事「VBAを始めてみよう|条件分岐(If文で覚える処理の場合分け)」から次のプログラムについて考えてみましょう。

 このプログラムは変数sumを1から40まで1ずつ足していって、3の倍数の場合は「値!!!」、それ以外は「値」を表示させるプログラムです。その手順を考えてみましょう。私が考えると次のようになります。

 1.変数「sum」に0を代入
 2.変数「sum」に1を足す
 3.変数「sum」が3の倍数の場合「sum+”!!!”」、それ以外は「sum」を表示
 4.変数「sum」は40より小さければ2に戻る、40以上ならば終了

 どうでしょうか?同じような手順となりましたか?
 文章のみで書くとどうしても表現の違いなどから認識のずれが出てきてしまいます。次にこれをフロチャートにしてみましょう。

 どうでしょうか?フローチャートまで考えることができましたでしょうか。
 このようにプログラムを書くためには、必要な処理を分解し、組み立てていくという作業が必要になります。この思考方法自体はプログラムに限らず、業務に携わる中でも使える場面は多いと思います。

終わりに

 処理の手順を棚卸しする考え方として、アルゴリズムの思考は重要だと感じられたでしょうか。手順がはっきりしないままプログラムを書いていくと内容が分かりにくいものが出来上がり、エラーが発生した際にも問題の個所を探索するのに時間がかかってしまいます。業務改善を行う上で、どんな手順でその業務が行われているか考えるだけで、プログラム化しやすくなると思います。
 今後の記事でもVBAを使った業務改善で使えるスキルやプログラムを紹介したいと考えております。次回も読んでいただければと思います。
 ここまで読んでいただきありがとうございます。ではまた次回まで!

コメント

タイトルとURLをコピーしました