<読みやすいように段落を再構成、日常業務とおばあちゃんの知恵袋の例を加筆 2019/12/8>
今回はプログラミングで良く出てくる言葉であるアルゴリズムとロジックについて解説します。この考え方はプログラミングだけで無く、業務改善や日常生活にも役立つので、サクッと理解してしまいましょう。
目次
ロジックの意味を確認してからアルゴリズムとは何かを知る
この記事ではロジックとは何かを明確にしてから、アルゴリズムとは何かを解説します。
ロジックとは
まずはWikipediaに掲載されている説明を見てみます。
ロジック
論理、論理学 - ギリシア語ロゴスに由来する。(ラテン語:logica、英語:logic、ドイツ語:logik、フランス語:logique)
論理回路など、上記の「論理」に由来する多数の語がある。
ビジネスロジック 本来は上記の「論理」に由来するものの、この語の使用者がそれを意識していることはまずない。一部の業界では単に「ロジック」の語で、こちらの方を100%ほぼ間違いなく指している。
プログラムにおける処理の内容、手順、方法のこと。
<以下、省略ロジック - Wikipedia2019/10/28 より引用>
Wikipediaの説明の中にあるビジネスロジックが、実際に良く耳にする「ロジック」のことです。順に解説します。
会社で単に「ロジック」と言ったら大抵はビジネスロジックのこと
Wikipediaによると、本来「論理」に由来しているがそれを意識していることはまず無いそうです。まあ、そうかもしれませんね。ビジネスでロジックと言えばどんな使われ方をするかと言えば、下のような感じです。
- 見込み顧客へのアプローチ成功のロジックをあぶり出す
- この商品の需要予測ロジックに一次平滑指数法を利用する
端的に言うと、ロジックとは、目に見えるできごとの裏で働いている論理です。
1つ目の例では見込み客に対してアプローチをして、契約が成立するためには何かうまくいく法則のようなものがあって、過去の成功事例からそのうまくいく法則をあぶりだそう、と言う意味で使っています。
2つ目の例では「この商品の場合は、数ある需要予測の手法の中でも、一次平滑指数法を使おう」と言う意味で使っています。
共通するのは「AになるのはBだから」や「もしCだったらDをする」といった因果関係がある事です。
まさにこれこそが私たちが会社などで耳にする「ロジック」の意味です。
プログラムにおける「ロジック」
プログラミングをする時にロジックと言えばWikpediaの説明通り、処理の内容や手順の事です。ビジネスロジックでの説明と同様「もし○○なら、△△する」と言う事です。条件によって処理を分岐させるのはプログラミングでよくある事です。Wikipediaの説明にある「処理の内容、手順、方法のこと」とはこの事を意味しています。
アルゴリズムとは
先ほどと同様、Wikipediaに掲載されている説明を見てみます。
アルゴリズム(英: algorithm [ˈælgəˌrɪðəm])とは、<中略>問題を解くための手順を定式化した形で表現したものを言う。算法と訳されることもある。
「問題」はその「解」を持っているが、アルゴリズムは正しくその解を得るための具体的手順および根拠を与える。さらに多くの場合において効率性が重要となる。
コンピュータにアルゴリズムをソフトウェア的に実装するものがコンピュータプログラムである。
<以下、省略
アルゴリズム - Wikipedia
2019/10/28 より引用>
アルゴリズムの方のWikpediaの説明はさっきより難しくなっていますね。要するにアルゴリズムとは問題を解くための考え方です。先ほどの見込み顧客の例では、「契約を結べる確率の高い見込み顧客を見つけるロジック」を考えました。
今回は、「どうやったら効率よく見込み顧客と効率よく契約を結べるか?」と言う問いを考えます。この問題に答えるのに、先ほどのロジックを使います。
見込み顧客に店舗に足を運んでもらうためのアルゴリズム例
たとえば、「効率よく契約をするには、購入履歴のある顧客にダイレクトメールを送信すると30%以上の割合で店舗に再訪問してもらえる」というロジックを過去のデータからあぶり出したとします。すると、「どうやったら効率よく見込み顧客と効率よく契約を結べるか?」という問いにはこのロジックを使って「購入履歴のある顧客にダイレクトメールを送る」という解決策を見いだすことができます。
つまり・・・問題を解くにはロジックを使う、またはロジックを複数組み合わせて使う。どのロジックをどう組み合わせて問題を解くのかを毎回使えるように紙に書き出したもの*1がアルゴリズム、と言う事です。
おばあちゃんの知恵袋のアルゴリズム例
和室の掃除はちぎった新聞紙をぬらしたものばらまいてほうきで掃く、と言ったおばあちゃんの知恵袋的な知識があります。これらはすべてアルゴリズムです。理由は、問題に対する回答を与えていて、その回答にロジックを利用しているからです。
「新聞のインクがホコリをくっつけるんだよ~」はロジック。
「和室の掃除にはぬらした新聞をつかうんだよ~」はアルゴリズム。
昨今、流行しているAI(人工知能)を語るときにもアルゴリズムという言葉がよく使われます。ダイナミックプライシングを例に説明します。この分野の専門で無いので違う部分があるかもしれませんが、イメージを掴めればと思います。
ダイナミックプライシングのアルゴリズム例
ダイナミックプライシングとは時期によって売値を変えると言う考え方です。繁閑によってスポーツ観戦のチケットの値段を変えたいとする時、チケット代をいくらにしたら良いか、という問いが生まれます。そのチケット代をどういう風に計算して求めるか、と言うのがアルゴリズムであり、そのアルゴリズムが人工知能と呼ばれる技術として研究されているわけです。以前、これくらいの値段にしたらお客さんが減った、とかこれくらいまでだったら価格を上げても大丈夫だった、という情報を元にお客さんの見込み数を求めてから価格を決めるのですが、この一連の問題の解き方がアルゴリズムです。
アルゴリズムの中に、「ここまで値段を上げるとお客さんが減った」と言うような情報を取り込めば、お客さんが減り始める価格帯が分かるといったロジックと、お客さんの見込み数を求めるロジックとそこから価格を決めるというロジックが組み合わさっていることが分かります。
以上、3分で分かるロジックとアルゴリズムの違いでした。
もし良ければ下の関連記事でアルゴリズムをプログラミングに応用する例を確認して理解を深めてみて下さいね!
<関連記事>
*1:「形式知化する」と言います