スポンサーリンク

アルゴリズムとロジック|考えることと、動かす手順

スポンサーリンク
考えたロジックを手順へ変換し、PCが繰り返し実行する流れを示すアイキャッチ画像 開発準備

ロジックは「なぜ、その判断をするのか」。アルゴリズムは「その判断を、どの順番で実行するのか」である。

名前は難しく見えるが、アルゴリズムは特別なものではない。目的へたどり着くための手順を、順番と条件に分けたものである。料理、事務作業、競艇ソフト作りにも同じ考え方が使われている。

この記事の読み方

  • 📱 スマホで読めます:アルゴリズムとロジックの違いを理解する
  • 💻 PC推奨:自分の作業や判断を、PCが実行できる手順へ整理する

アルゴリズムは「再現できる手順」である

アルゴリズムとは、ある目的を達成するために、処理の順番とルールを定めたものである。

  • 何を最初に行うか
  • どの条件で次へ進むか
  • 条件を満たさない場合にどうするか
  • 最後に何を結果として残すか

同じ入力と条件なら、何度実行しても同じ手順をたどれることが重要である。PCは、人間が決めたこの道順を正確に繰り返すことが得意である。

お好み焼きもアルゴリズムで作られる

身近な例として、お好み焼きを考える。材料を用意し、混ぜ、焼き、返し、仕上げる。材料の量、混ぜる順番、焼く時間、返すタイミングが決まっているから、完成品をある程度再現できる。

  1. 材料を計量する
  2. 決めた順番で混ぜる
  3. 決めた厚さで焼く
  4. 条件を満たしたら返す
  5. 焼き上がりを確認する

順番や量が大きく崩れれば、同じ仕上がりにはならない。この「決めた手順を再現する」という考え方が、アルゴリズムの入口である。

ただし、「おいしいか」は人によって変わる。手順を守って完成しても、評価まで一つに決まるとは限らない。ここに、アルゴリズムとロジックを分けて考える理由がある。

ロジックは「判断の理由」である

ロジックとは、なぜその条件を選び、なぜその結果を良いと判断するのかという筋道である。

役割問い競艇ソフトでの例
ロジックなぜ、その判断をするのかこの条件を有利と考える理由
アルゴリズムどの順番で処理するのか値を取得し、条件判定し、点数を出す手順
プログラム何で実行するのかVBAやPythonで動かすコード

勝率30%以上、オッズ5倍以上、展示値が基準以上なら買う、と決めた場合、条件を順番に判定する部分がアルゴリズムである。なぜその数値を採用するのか、収支に有効かを考える部分がロジックである。

アルゴリズムは、決めたルールを忠実に実行する。ロジックは、そのルールに意味があるかを考える。

PCは「雰囲気」を理解できない

「なんとなく良さそう」「今日は荒れそうな気がする」「この選手は来そうだ」という感覚は、そのままではPCへ伝わらない。

PCへ仕事をさせるには、数値、条件、順番、例外、結果を具体的に決める必要がある。PCは途中で気を利かせない。書かれていない判断は実行できない。

PCは、間違った手順でも正確に繰り返す。エラーなく動いたことは、ロジックが正しいことを証明しない。

競艇ソフトでは、作業を小さく分ける

💻 ここからはPC推奨である。

競艇ソフトの処理を大きな一文で考えず、小さな処理へ分解する。

  1. データを読み込む
  2. 必要な項目を取り出す
  3. 欠損や異常を確認する
  4. 決めた条件を順番に判定する
  5. 点数や評価を計算する
  6. 買う・見送るの結果と理由を記録する
  7. 保存して検証できる状態にする

処理を分けておけば、途中の結果を確認できる。問題が起きたときも、データ、条件、計算、保存のどこに原因があるかを切り分けやすい。

アルゴリズムは検証できて初めて役立つ

手順を作っただけでは完成ではない。想定した入力、欠損した入力、境界値、例外となるデータで動かし、同じ条件なら同じ結果になるかを確かめる。

  • 入力データは正しいか
  • 条件の境界で判定が逆転しないか
  • 除外条件が先に働くか
  • 判定理由を後から追えるか
  • 修正前後の結果を比較できるか

検証可能な手順があれば、ロジックの条件や重みを変更しても、その影響を比較できる。これが競艇ソフトを育てる土台になる。

考える順番を整理する

  1. 目的を決める
  2. 判断の理由であるロジックを決める
  3. 実行手順であるアルゴリズムへ分解する
  4. VBAやPythonで実装する
  5. 結果を記録して検証する

アルゴリズムはコンピューターを動かす道順である。ロジックは、その道順を選ぶ理由である。二つを分けることで、修正と検証ができるソフトになる。

コメント

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