5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

文章題で身に付くプログラミング思考入門️ by TheWaggleAdvent Calendar 2024

Day 6

味噌汁で考えるアルゴリズム|文章題で身に付くプログラミング思考入門️(6/25)

Last updated at Posted at 2024-12-05

はじめに

突然ですが、良いアルゴリズムってどんなものでしょうか?

まず最初に、アルゴリズムとは、簡単に言えば「やり方」のことですね。

では、良いやり方とはどんなものでしょうか?

効率性?正確性?安定性?シンプルさ?公平性?
拡張性や、メンテナンス性などの観点もあるかもしれません。

『文章題で身に付くプログラミング思考入門️』は、日常や文章問題からプログラミング思考を身に付けていく、簡単で身近で、あなたをちょっと輝かせてくれるシリーズです。

今回は、アルゴリズムについてお話ししていきましょう。

前回のまとめ

抽象化:本質を捉えるトレーニング

  • 抽象化することで、当てはまるケースが増えます。
  • どのくらいの具合で抽象化・具体化するのが良いかは、使う人に聞くのが一番いいです。使い勝手は、使ってくれる人に合わせましょう。
  • ラテラルシンキング(水平思考)とは、何らかの要素を頼りに、自由に連想を広げていく思考のことです。

前回の記事はこちら
第一回はこちら

対象者

  • プログラミングを学びたい人
  • プログラミングに挫折したことのある人
  • 論理的思考を鍛えたい人
  • 文系の人
  • エンジニアの思考を理解したい人

概要

まず、アルゴリズムについてもう少し詳しくお話ししましょう。

アルゴリズムとは、ある目的を達成するために、どのようなルールで進めるか?を定めたものです。

アルゴリズムという言葉は、様々な文脈で使われます。
プログラム、マーケティング、投資など様々なシーンで語られ、とても奥の深い言葉だと思います。

ただ、あんまり専門的な話だと難しいし、そもそも私にとっても簡単ではないので、

ここでは、日常の行動から、アルゴリズムの良し悪しとは何か?について考えていきましょう。
アルゴリズムとは、要はやり方のことなので、味噌汁の作り方でも考えながらやってみましょうか。

さあ、それでは味噌汁を作っていきましょう。

1. 材料と道具を用意する
2. 出汁をとる
3. 具材を切って鍋に入れる
4. まな板と包丁を洗う
5. 具材を煮る
6. 味噌を溶かす
7. 一煮立ちさせる
8. 盛りつける

大まかに、味噌汁を作るアルゴリズムはこんな感じでしょうか。
料理は片付けもセットですから、具材を煮ている間にまな板と包丁を洗ったりしますよね。
そう、効率化です。アルゴリズムを効率化してみます。

1. 材料と道具を用意する
2. 出汁をとる
3. 具材を切って鍋に入れる
4. 具材を煮る + まな板と包丁を洗う
5. 味噌を溶かす
6. 一煮立ちさせる
7. 盛りつける

次に、もっと効率良くするために出汁入り味噌を使ってみましょうか。

1. 材料と道具を用意する
2. 具材を切って鍋に入れる
3. 具材を煮る + まな板と包丁を洗う
4. だし入り味噌を溶かす
5. 一煮立ちさせる
6. 盛りつける

具材を切ったり道具を片付けたりするのが面倒なので、カット野菜を使うことにしました。

1. 材料を用意する
2. 具材を煮る
4. だし入り味噌を溶かす
5. 一煮立ちさせる
6. 盛りつける

もっと時短できるかなと思ったので、インスタント味噌汁を使うことにしました。

1. お湯を沸かす
2. 材料をお椀に入れる
3. お湯をそそぐ

さて、アルゴリズムを効率化していったらインスタント味噌汁に到達しました。

今の時代、楽チンで簡単な商品が身の回りにたくさんあって、私たちは日々恩恵を受けています。
材料を買って自分で作るよりは価格が割高ですが、代わりに手間と時間を肩代わりしてくれているんですね。

世の中には、インスタントを好む人もいれば、手作りにこだわる人もいるでしょう。
包丁とまな板が家にない人もいるのではないでしょうか。
土日は自炊で平日は簡単に済ませる、なんて習慣もあるでしょう。
また、昭和時代には、カット野菜もインスタント味噌汁も存在しませんでした。

つまり、どのようなアルゴリズムが良いアルゴリズムなのかは、人や、環境や、時代や、状況によって変わります。

新しい技術や価値観に応じて、何が「良い」とされるかは大きく変わりますね。

ただし、悪いアルゴリズムは存在します。
それは、そもそもアルゴリズムに欠陥がある場合です。

味噌汁を作るのに、

  • 味噌を入れる過程がない(プロセスが漏れている)
  • お椀に盛り付けた後に、切ったばかりの大根を入れる(順番を間違っている)
  • たこ焼き器で味噌汁を作る(使うものを間違っている)

などです。

システムや商品開発の際に大事なのは、欠陥のないアルゴリズムで作るのは前提として、

ユーザーが何を大切に思っていて、本当は何をやりたくないのか。ユーザーに寄り添うことです。

私の場合は、味噌汁のアルゴリズムに効率化を求めたらインスタント味噌汁に辿り着きました。
あなたは、アルゴリズムに何を求め、どこに辿り着いたでしょうか?

次回は、 条件分岐 について解説していきます。

まとめ

  • アルゴリズムとは、簡単に言えば「やり方」のことです。
  • どのようなアルゴリズムが良いアルゴリズムなのかは、人や、環境や、時代や、状況によって変わります。
  • 大事なのは、ユーザーが何を大切に思っていて、本当は何をやりたくないのか。ユーザーに寄り添うことです。

最後に

ここまで読んでくださってありがとうございます!
少しでも役に立ったら「いいね」をください。続ける励みになります。
味噌汁がどこに辿り着いたか、是非コメントで教えてください。

5
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?