キビテクでは、CEOの「林まりか」がお昼休みの時間帯(12:10-13:00)に「昼活:ロボット」の部屋名で clubhouse をやってます。
→ https://www.clubhouse.com/event/m20Jey4x
日々のロボット関連のニュースを話題に、ゆる〜く語っておりますので、気が向いたら覗いてみてください。
業界の話題を真面目に論議していることが多いですが、アニメやマンガ・小説などを引き合いに虚実とりまぜた話題もちょくちょく飛び出します。
「キビテク社の代表ってどんな人なんだろう?」と気になったら、ぜひ登壇してお喋りしていってくださいね。
さて、今回のテーマは「学校で習う数学」についてです。
昔からよく見聞きする言い回しで、「数学なんか、学校出たら使う機会ないよ」という言葉が有ります。
私はこの言葉に全く賛同できません。
使う機会がないという定性的なハナシではなくて、単に話者が習った知識を使い損ねただけの属人的なオハナシだと思っています。
このテの話題が好きな人って、自分は優秀で、他人の知らない真実を自分は理解していると思い込んでいる自惚れ屋が多いように思います。
でも、このカテゴリの人は大事にした方が良いです。理屈で歯が立たない時局を訳の判らない不思議なパワーで打ち破ってくれたりしますので。
色々な人が居たほうが、世界は面白いと思います。
さて、今回ネタに取り上げる数学ネタは「因数分解」です。
これをネタに、学校で習った数学が役に立っている実例を1つ紹介しようと思います。
もうね。因数分解って名前を出した瞬間逃げ腰になる人って多いです。
気持ちは分かりますよ。中学生になって文字式とか出てきて何を言いたいのか良く解らないのに、それを操作して掛け算の式を作らせられる…
パズルマニアでもないと、ちょっとついていき難いです。
これの肝は何かと言うと、「同じ属性をまとめて括り出す」考え方です。
例えば「2の倍数は、どんな数でも2で割り切れる(偶数である)」って話。
「2の倍数」を、「2×ナントカ」って形に変形します。
そしたらもう、ナントカってどうでも良くなっちゃって、左端の2だけ注目して、
「2で割り切れますね(キリッ)」
ってもんです。
ナントカがどんなにでかかろうが、複雑だろうが関係なしにできちゃうのですよ。
これが。この考え方が、ソフトウェアを作る時に大いに役立つのです。
ソフトウェアは何かと言うと、コンピュータに対して作業の手順を示すものです。
処理対象のモノが有って、それぞれに処理の段取りが有る。
モノは沢山有る場合もあるし、異なる段取りのシナリオが複数用意することもある。
一度書いて完成することも有るし、後日改修が入ることもある。
まぁ、そんなもの。
例として備品チェックを考えてみます。
備品は全て箱に入っているものとします。
チェックの手順は以下とします。
1. 備品箱を棚から作業台に持ってくる
2. 備品箱を開く
3. 中身をチェックする
4. 備品箱を閉じる
5. 備品箱を棚にしまう
チェックの方法が備品毎にマチマチだとして。
これをプログラム化しようとした場合、やり方はいくつも有りますが、次のようにしておくと何かと便利になると思います。
(手順)×(備品箱)
・分離できそうな作業をなるべく小さな分量に分ける
・全ての作業工程を漏れ・抜け無く行う
・全ての作業工程を1回だけ行う
などの要件を、シンプルに見通しよく作り込むことができます。
手順・備品箱・抽象・具象などの情報を、クラス名としてメタ情報(タグ)化しておくことで、プログラムは更に判りやすくなります。
このように、設計に因数分解を心がけておくことで、ソフトウェアは見通しよく意味が明確な部品とその関係・関連で表現することができます。
逆に、同じような(そして微妙に異なる)手順がソフトウェア中に散在するだけで、その保守性はあっけなく悪化するのです。
以上長々と例を書いてみました。
学校で習うような数学などは、「どうやって役に立ててやろうか」の視点で取り扱うほうが人生楽しいと思う今日この頃です。
キビテクでの私は、そんなこんな考えながら、日々ロボット開発に勤しんでおります。