- ブログ
再認識というより初認識!「フローチャートってとっても大事」
2024.03.22 Fri

はじめまして!入社して、1ヶ月半過ぎた程度の新人「みかん」です!
今回は、突然、ブログを振られた みかんが、新人研修で感じた「フローチャートの大事さの初認識」についてお話ししようと思います。
なんで「再認識」?
実は、みかんは、プログラミング完全初心者というわけではありません。
学生時代の4年間、新卒入社後の研修や独学期間まで合わせると大体約7年ぐらいはプログラミングに触れておりました。
ただ、ホエールテックに入社するまでの約3年はプログラミングとは完全に無縁になり、その状態のまま研修を受け、そして、みかんは、フローチャートに対しての印象が、これまでの印象と、なんか違う!って、感じました。
当時のみかんは「フローチャートの大事さ」について理解していなかったのです。
学生時代のフローチャートの印象
当時の印象は、
・プログラミングの学習で最初だけやるもの
・授業で何回か作成しただけだからか、関連性に重要性を感じていなかった
・実際の授業でのコード作成時に一度もフローチャートを書かないから必要性すらも感じない
というものでした。
当時は「プログラミングする上での考え方の学習」程度にしか思っていなかったでしょう。
間違ってはいないですが、今となっては「初心者が何も書かないで脳内だけで理解出来るなら苦労しない」と当時のみかんを叱りつけたいです。
それでは、これらを踏まえて読み進めていただきたいです。
フローチャートを沢山書いて沢山書き直した
最初の頃の研修は与えられた課題に対してフローチャートを書き、先輩方に見てもらい、
フローチャートが完成してからコード化をするという内容でした。
一見、フローチャートよりもコード化することの方が大変に思う人が多いと思います。
でも実際はフローチャートの方が圧倒的に大変で時間が掛かりました。
下記は、有名?な、FizzBuzzのお題です。ホエールテックでは、フローチャートのお題がNo.10まであり、このお題は、No.3で登場したものです。
それでは、チャレンジ!1回目!

この課題の内容に対して最初に書いたフローチャート。実は間違っています。このままコード化すると思ったような動きになりません。
チャレンジ!2回目!

2回目。両方割り切れる条件を最初に持ってきています。最初のフローチャートのダメだったところですね。成立はしているフローチャートですが、実は無駄が多いのです。
チャレンジ!3回目!

3回目。この前までは1〜100の数字と決まっていたのが任意の最小数字から最大数字という追加条件が加わりました。実はまだ無駄なところがあります。
チャレンジ!4回目!(やっと、完成!)

4回目。追加条件も合わせて完成しました。無駄だったところは条件ごとに表示を繰り返していたところです。ここでは表示を1回で済ませるために数字だけ入れた配列に該当する条件のときに文字列を別の配列に追加するのをしています。(今気付きましたが、表示の処理が抜けています…ループ終了と終了の間に表示の処理が入ります…)
…と上記のように、沢山書いて沢山書き直し、ひたすら内容に沿ったフローチャートについて考えました。そして完成させた後、フローチャートを元にコード化。多少経験値があるとはいえ、フローチャートで要した時間よりもそこまで時間は掛かりませんでした。
正直「この違いは何っ???」と思いました。
でも理由は簡単でした。フローチャートは「脳内で考えてる物事の流れを図解にしたもの」であり、フローチャートを用いたコード化は「フローチャートにそのまま従ってコードを書いていくもの」という違いがあるからです。
要するに前者の方が考える時間が多く、物事の流れが成立しなければフローチャートは完成しませんし、コード化にも移行できません。そして後者は個人差はあれど、調べて機械的に当てはめていけばいいだけなので実は考える時間が少なく、学習用の課題内容であれば実際の作業量も多くないので、今回の場合は逆転しているのです。
要するに…
フローチャートは…
→ 脳内で考えてる物事の流れを図解にしたもの
フローチャートを用いたコードの作成は…
→ フローチャートにそのまま従ってコードを書いていくもの
という違いを研修を通して把握出来たということです。
また別の側面で考えるとフローチャートは「今、自分が考えている物事の流れが理解できる」ということでもあります。よって今の自分が理解出来ているのか、出来ていないのかが分かるのです。
これを理解した時、「フローチャートを書いた上でのコード化と書かないで自分の脳内だけで考えて書くのとでは理解度が違う」と実感しました。
学生時代、分からない時であっても脳内だけで考え、フローチャートを書くことはありませんでした。今となってはあの時、脳内で考えていることを図解に起こして再考していれば、理解度が違ったと思います。
初心者にとってのフローチャートの重要性
みかんは、過去に経験があってもブランクがあるため、初心者(のはず)です。だからこそ、研修で改めてフローチャートと向き合ったことで気付かされました。
これはあくまでみかんの個人的な考察ですが、初心者の最初の学習でフローチャートが必要なのはプログラミングのコードを書いていく上で「物事の流れを理解する必要性」があるからだと思います。
プログラミング言語はあくまで機械側が理解するための言語であり、機械側は上から順に書かれた内容に沿って実行していくだけです。人間側が物事の流れの構成を考え、構築してあげないとプログラムは完成しないということです。
ですから初心者であるうちは、自力で脳内で考えるよりもまず「今考えている内容を図解にして脳内整理をする」ことでプログラミングへの理解度が高まると思います。
まとめ
フローチャートはプログラミングだけでなく、例えばゲームの企画書などにも用いられたりするそうです。ゲームの全体的な流れなどを説明するのに必要なのでしょう。
「物事の流れを図解にして理解できるもの」と考えればフローチャートはあらゆる場面において色んな使い方が出来るものだと思います。
またフローチャートは書かなくてもプログラムは書けますから、最終的に一番大事なのは「脳内であってもフローチャートと同じような構成を考えて構築する」ことだと結論に至ったみかんでございました。