■プログラミングが何故苦手なのか?
プログラミングは「手順」を考えることです。その「手順」を大雑把に分解すると、「3つのエッセンス」が存在します。
1.プログラム設計
2.フレームワーク
3.プログラミング(コーディング)
プログラミングを苦手とする人は、「3つのエッセンス」を考慮せず、無計画・適当にコーディングを始めてみたり、これら手順を混ぜて考えてしまったりするため、設計の間違え・勘違いから全体の進捗が思うように進まなかったり、出戻りが発生したりします。
また、プログラミング言語は英語をベースとしているため、英語に拒絶反応を示す人もいます。そんな人ほど、コーディングの時間は長く、英語を眺め続けている事が多いようです(過去の自分です:苦笑)
■プログラミングの肝はプログラム設計である
プログラム設計とは何か?設計なので、様々な手順やルールを決める事が大事です。”いつ” ・ ”何を” ・ ”どうするか” を決め、設計を実現するための ”ルール” や ”場” としてフレームワークを使い、プログラミング言語でプログラム設計を ”翻訳(コーディング)” していきます。プログラム設計が間違っていれば、当然間違ったコーディングとなり、各種バグが発生する原因となります。プログラミングにおいては、プログラム設計が最も重要です。
■プログラミングスキルをあげるためには
フレームワークとプログラミング言語は、検索エンジン等でググる、技術書を読んで沢山ものを作るなどなど、普段から絶えず作って触って慣れることが大事です。基本的にルールの把握(理想は熟知)と翻訳作業であり、基本的な機能は似通った物が多いため、慣れてくると、ある程度はパターン化した作業にできます。所々、パターンに沿わない難しいところが出てきますが、実際の開発業務では、そういった部分はスキルの高い人が担当になるためそういった人に任せたり、そもそもは「難しい事は簡単に」するのがフレームワークだったりするので、そういったものは高い確率で出来合いのライブラリが用意されている事が多いため、これらを使うことを考えるべきです。
プログラム設計は技術的なものより考え方的なものがウェイトを占め、そのためロジカルシンキング(論理的思考)が必要になります。ロジカルシンキングが必要と言っても、プログラム設計では技術的に難しいこと(これらは詳細な技術の使い方が多い)を考えることはあまりありません。
■プログラム設計の手順
プログラミングが苦手な人・英語が苦手な人でも、日本語に対しては十分なスキルがあるため(と、思いたい:笑)、プログラム設計は日本語のみで考えます。まずは作るものが ”何時” ・ ”何を” ・ ”どうする” ものなのかを決定します。決めたら、紙でもPCでもなんでも良いので視覚化し、編集できるようにしましょう。
次に ”何を” ・ ”どうする” を実現するために、もう少し細かく手順を考えてみます。まずは、”何を” についての ”実行前の準備” と ”準備後の実行” を考えてみましょう。手順の中を手順で区切る、その区切った手順の手順を考える…と、繰り返します。出来上がったら、それらに抜け落ちや矛盾がないかを確認します。チームで仕事をしている場合は、プログラム設計の段階で入念にレビューを行いましょう。
例)地域の天気予報を表示するWEBサイトの場合
【何時】ユーザーがアクセスしたら
【何を】地域の天気予報
【どうする】表示する
>【手順1】天気予報を取得する
【何時】任意
【何を】天気予報
【どうする】別のサイトから取得する
>>【手順1−1】地域を指定する
【何時】任意
【何を】地域
【どうする】別のサイトに送信する
>>【手順1−2】指定地域の天気予報を取得する
【何時】任意
【何を】指定地域の天気予報
【どうする】別のサイトから取得する
>【手順2】天気予報を表示する
【何時】任意
【何を】取得した天気予報
【どうする】表示する
ここで難しいと感じる人は、プログラミングが難しいのではなく、何をすればどんな結果になるか分からない自分でも謎なものを作ろうとしている可能性が高いです。作るものが決まっていない、分かっていなければ残念ながら設計はできないため、プログラミングより前に何を作るのかを考えましょう。
■プログラム設計が終わったら
プログラム設計が終わったら、最小の手順を部品として作成します。その際、フレームワークを考慮してコーディングしましょう。フレームワークは、プログラミングの細かい部分をある程度吸収してくれる仕組みなので、積極的に活用します。フレームワーク・プログラミング言語の使い方が難しいと感じる場合は、その使い方や機能名でググると、大体のものはサンプルが見つかると思います。これで、全体として完成したとき、 ”何時” ・ ”何を” ・ ”どうする” のブレが無くなります。
プログラミングが終わったらテストになりますが、これは最小の手順から徐々に大きな手順の固まりに対して行って行きましょう。
■プログラミングは難しいのか
難しいことをするのは難しく、簡単なことをするのは簡単です。プログラミング入門者・初心者が難しいと感じるのは、何が分からないかが分からないという事が多いのではないでしょうか?(昔の自分です:笑)でも、上記の手法で「分からない部分」を分解して行ってみて下さい。少しずつ、分からない部分が明確になっていくと思います。
そして、自分がプログラミングをするときや、サンプルを読んだりするときはいつでも
1.プログラム設計
2.フレームワーク
3.プログラミング(コーディング)
の順番に考え、どこの何が分からないかを把握する能力を磨いて行いけば、徐々に克服できるようになると思います。
#IT業界以外の方でも、「プログラム設計」を「やりたい事の概要・大枠」、「フレームワーク」を「それを実行するための方法・ルール・」、「プログラミング」を「実行する具体的な手法」に置き換えてみて下さい。
@waka & yasu