アルゴリズムをマスターしよう!!

フレームワーク,システムアルゴリズム,フローチャート

ユーザー部門の方と要件定義などをしていると、よく「これ自動でできるようにしてよ」という要望をいただきます。ですが、具体的に現状どうやって処理しているのか聞いてみると、その時々によって人間の判断が入っており、そのままではシステム化できないことが非常に多いです。

実際にプログラミングをしたり、パッケージをチューニングするのは開発ベンダーだと思いますが、何を実現するのかを決めるのは、導入する企業側です。ここをちゃんと認識していないプロジェクトが多く、必要以上にコストや時間が掛かってしまうケースをよく聞きます。

そうならないために、アルゴリズムを理解し習得することで、自分たちが実現したい運用(システム化)が可能となります。今回はそのアルゴリズムについての紹介です。

アルゴリズムとは?

アルゴリズムの意味

数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う。算法と訳されることもある。コンピュータにアルゴリズムをソフトウェア的に実装するものがコンピュータプログラムである。人間より速く大量に計算ができるのがコンピュータの強みであるが、その計算が正しく効率的であるためには、正しく効率的なアルゴリズムに基づいたものでなければならない。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

上記の説明にあるように、アルゴリズムは「目的達成するための手順を明確にしたもの」で、プログラミングは、アルゴリズムに基づいて実装されなければならないということになります。

つまり、アルゴリズムを正しく組んでおかないと、プログラムは正しく効率的に動かないという事です。

アルゴリズムの表現方法

アルゴリズムの基本構造

アルゴリズムの基本構造(構造化プログラミング手法)は3つ存在する。 どんなに複雑な処理であろうと、この3つで表現できるとして、広く普及している考え方です。

名前順次処理分岐処理反復処理
説明並べられた順番に処理する手順条件判定を行い、その条件を満たした場合に処理する手順 一連の処理の流れを繰り返す手順

フローチャート

アルゴリズムは目的を達成するための手順ですので、それを分かりやすくするためにフローチャートを使って図式化します。

例えば、「先着10名に限定品を販売する場合(ただし、初回購入のみ)」という手順をフローチャートにしたものがこちらです。

細かく言えばもっと処理はあると思いますし、フローチャートも書き方はいろいろありますが、まずはイメージをつかんでもらえればと思います。

実際にやってみよう!

例題1:ファミレスで待っているお客さまをテーブルへ案内する手順

あなたは、席を案内する係です。
席は全部で24席(6人席×1、4人席×2 、2人席×2、1人席×6)あります。

お客様が帰ったら席を片付け、予約表をもとに次のお客様を案内を案内するフローを書いてみてください。
※予約表には、「順番、お客様名、人数」が記入されています。

例題2:テレアポを実施して、結果を上司に報告する手順

あなたは、営業マンです。
上司からリストを渡され、テレアポの結果を報告してくれと依頼されました。
アポイントが取れた場合は、上司と一緒に訪問することになっています。

テレアポのリストから電話し、その結果を上司へ報告するフローを書いてみてください。

正解は1つとは限りません。
ぜひチャレンジしてみてください!