コンピュータの理論
アルゴリズムとは、ある特定の問題を解く手順を単純な計算や操作の組み合わせとして定義したものですが、現代ではITの分野で使われることが多い概念です。具体的にはコンピュータのプログラムとして活用されています。

情報科学の授業で□や◇の図形を線で結んだフローチャートのようなものを見たことはないでしょうか。物凄く大雑把に説明してしまうと、これがアルゴリズムです。どのように計算したり判断したりすればよいのか、という方法を示したものと考えれば良いでしょう。
分かりにくい場合はキャベツの千切りを想像してみてください。キャベツを千切りするときに、葉っぱを一枚ずつ千切りにしていきますか? それとも十枚ほど重ねて一気に千切りにしますか?
ある程度は包丁さばきが問われるかもしれませんが、大抵の人はキャベツの葉を何枚も重ねて(あるいはキャベツ半玉そのままの形で)千切りにしていく方が効率が良いとお考えになるでしょう。今示した2つの方法は、キャベツの千切りを作るためのアルゴリズムです。
アルゴリズムは優劣を比較することもできます。先ほどの例だと、キャベツの葉を何枚も重ねて千切りにする方が優秀で無駄のないアルゴリズムであると言えます。
片付け術とアルゴリズム
Lesson4でもう少し踏み込んだ説明をすることになるかと思いますが、アルゴリズムを利用する片付け術も存在します。これは片付けのやり方を手順化するというもので、まずは大雑把に、
- 私室の掃除をする
- ゴミをまとめる
- キッチンの掃除をする
- 風呂場の掃除をする
- トイレの掃除をする
- 玄関の掃除をする
- まとめたごみを玄関に置く
という風に、週に一度の掃除の日にやることを決めてしまいます。
片付けの苦手な人は、そもそも片付けの手順を知らないことが多いのです。これはLesson1でご説明した通りです。逆に言えばそのような人が片付けの出来る人間になるためには、片付けの流れと手順を作ってしまえばよい、という発想もできます。
プロの気持ちになって想像してみましょう。部屋を片付けた時に「次はどこを片付けようかな」と悩むようではいけません。悩んだ瞬間に無駄な時間が発生していますし、迷いがあると「今本当に風呂掃除をしていていいのだろうか、本当はトイレ掃除をするべきじゃないのか」といった些細な問題に囚われて集中できなくなってしまいます。流れを決めてしまえばそのような悩みからは遠ざかることが出来るのですね。
本当に順番を決めるだけでスムーズに行くの?と疑問を抱く方も多いでしょう。そういう方は、ぜひ飲食店や接客業で働いてみてください。IT業界とは異なりますが、衛生面の問題もありますし、やはり効率的に物事を処理しなければならない世界ですから、掃除や片付けの手順は厳密に決まっている場合が多いのです。
また、たとえばトイレの掃除中にお客さんが来た場合は、店員はすぐにその場を離れて仕事に戻り、出て来た時に再度掃除に戻る……といった風に条件による分岐が行われていることもあります。その際も、掃除を中断するときの挨拶や道具の置き場所などが厳密に決められていることが少なくありません。
誰にでも出来る、けれど教えなければできないことは、細かい手順までマニュアル化する必要があります。私たちは臨機応変に片付けの出来ない素人ですから、アルゴリズムの考え方を上手く適用することで、機械的に家を片付けていくという工夫が生きるのです。