日本国内には様々な業種・業態が存在する中、数十年前から変わらない人気の職業「プログラマー」。
一部、ブラックの業界と耳にすることもありますが、現在においても有望かつ需要の絶えない職種であることは間違いありません。また、別業界からの転職を考えている方もとても多いと思います。
この記事では、プログラミングのスキルを身に付けたいと考えている方やプログラミングの初学者向けに、プログラミングの最も根幹的な部分である「プログラミング的思考」について、書いてみたいと思います。
これは単純な理由です。世界的に、(デジタル)テクノロジーは進化し続けるからです。
AI、ディープラーニング、IoT、DX、5G、AR・VR
これらは最近、よく耳にするデジタル関連の用語かと思いますが、それらの最新テクノロジーは、自然に発生したものではなく、人間が生み出し、これから創り上げていくもの。現実社会で活用するためには、プログラミングが必須です。
正確には、プログラミングがあってこそ実現できるテクノロジーなのです。
もっと、身近な例で説明しましょう。
上記の例は、そのようにプログラミングされているから、動作するのです。
過去、世界中の産業は栄枯盛衰、様々な流行と消滅を繰り返してきましたが、テクノロジーの進化が止まることは、現在の人類の価値観から考える限り、起こり得ないことなのです。
これがプログラミングの需要と将来性を確実にしている理由です。
考えてみてください。「スマホが旧世代の大型の機械にまで退化し、さらに個人が所有するものではなくなってしまう」や「パソコンが徐々に姿を消していき、会社の業務は紙とペンを使った原始的な環境に退化する」ことが起こり得ると思いますか?
「プログラミング」という言葉を聞いて、真っ先に『画面上に入力された英語の羅列』をイメージした方は、今すぐそのイメージを捨てましょう。
正しいイメージは下記です。
その違いは、「プログラミング言語」と「プログラミング的思考」の違いにあります。
少々、ややこしいのですが、プログラミング言語とプログラミング的思考は区別して理解しましょう。特に、これからプログラミングのスキルを身に付けるため学習に取り組むのであれば、学習の効率にも関わってきます。
簡単に説明すると、プログラミング言語はツールであり、プログラミング的思考は文字通り、プログラミング的な考え方そのものを指します。
簡単にいえば、プログラミングをするためのコードのことです。PythonやJAVA、C言語など様々な言語がありますが、プログラミング学習をプログラミング言語から始めると高い確率で挫折します。
プログラミングをするうえでの根幹になる思考のことです。物事や事象をロジカルに考える思考。プログラミングとは、単純に英語をキーボードで入力する作業ではないのです。
何を、どの順番・条件で、どう動かすのか
そのイメージをコードで記述する作業がプログラミングなのです。そして、そのコードをどの言語で動かすのか、の選択肢がプログラミング言語です。
近年、業務自動化のテクノロジー「RPA」が注目されていますが、RPAもプログラミング的思考が必須です。プログラミング的思考なくして、業務の自動化は実現できません。RPAについては、当サイトの姉妹サイトで情報を発信していますので、ご関心があればご覧ください。
プログラミングの学習をまだ始めていない方には想像し難いと思いますが、プログラミング的思考が身に付けば、学習したプログラミング言語以外の言語でも、基本的にすぐに対応することができます。
例えば、プログラミング的思考を身に付けたうえでExcelなどで使われているVBAを学習し、ある程度、使えるようになったのであれば、PythonやJavaといった他のプログラミング言語もすぐに使えるようになるということです。
一方、プログラミング的思考が中途半端であれば、応用力も中途半端なものになりますので、他の言語への対応力も低くなってしまうでしょう。
分かりやすい例で説明すると、Androidを使いこなせているのであれば、iPhoneもすぐに使えるようになるでしょうし、Sonyの家庭用ゲーム機プレイステーションを使い慣れているのであれば、NintendoのSwitchでもすぐに遊べるようになりますね。
でも、例えば、何とかAndroidスマホを使っていたご高齢の方は、iPhoneに変わった途端、これまでのようには使えなくなってしまうでしょう。(もう挫折してしまうかもしれません)
プログラミング的思考をしっかりと身に付けることの意義・重要性・利点がお分かりいただけたでしょうか?
前章で解説の通り、プログラミング的思考はプログラミングの根幹を成す思考です。その重要性を理解しないままプログラミング言語を学習するのはおススメしません。ただし、人にはそれぞれ適した学習方法があります。後日、別の記事で紹介しますが、ご自身にあった学習方法で進めることが大切です。
☆学習方法についての記事を公開しました↓
確かに、「プログラミング的思考」という言葉はとても抽象的で、何をどう学習すれば身に付くのか分かり辛いです。
わたしは、プログラミング的思考は難しいものとは考えていません。一言で説明すると下記に集約されるでしょう。
一連の処理を順序立ててロジカルに組み立てる思考法
特に、『組み立てる』という表現を意識してください。ここはかなりの重要ポイントです。一連の処理に関して、フローのようなイメージ図が頭に浮かぶようになれば、プログラミング的思考は身に付いたと考えてよいでしょう。
家から歩いてコンビニに行くシーン(処理)をイメージしてください。
プログラミング的思考でロジカルに記述すると、コンビニに行くまでのアクションは下記のような順番になるはずです。
次に、上記の順番をフローチャートで描いてみます。(一部省略)
前節で説明したイメージ図はとても重要です。物事や事象を順序立ててロジカルに組み立てるイメージを掴みましょう。
そして、学問的に説明すると、プログラミングには一般に3つの要素があると言われています。わたし個人がプログラミングを説明する際には、3つの要素に「変数」の概念を追加していますので、ここでは4つの要素として説明します。
プログラムは上から順に実行されます。前節のイメージ図からもお分かりの通りです。当たり前のようですが、実際にプログラミングを書いていると、ここが原因でエラーになってしまうケースは数多くあります。
例えば、信号機に着く前に信号機の色を判定しようとするとエラーになります。(前節の例)
条件によって、処理が分岐する箇所です。前節の例では、信号機の判定です。青なら渡り、赤なら待機する、といった分岐になっています。同様に、コンビニの前に着いたら入る、も分岐です。現実の処理(業務)においても、分岐がない処理はほとんど無いでしょう。
Excelでいう「if文(関数)」です。
分岐同様、反復が無い処理はほとんどありません。前節の例でもフローの中に表記はしていないものの、「歩道に着くまで」「信号機に着くまで」「コンビニの前に着くまで」歩き続けるといった反復になっています。
なお、反復には「回数」や「反復を止める条件」の設定が必須です。これが無ければ(または正しくなければ)、無限ループといわれる状態となり、いつまで経ってもプログラムの実行は終了しません。
変数はプログラミングにおいて絶対的に必要な概念です。そして、初学者が躓きやすい代表的な概念でもあります。
実際は、エクセルや日常生活でも使われている概念で、それほど難しいものでは無いのですが、ここが理解できないとプログラミング自体、理解するのは困難でしょう。
プログラミングの3大要素と変数については、後日、別記事で紹介します。
☆学習方法についての記事を公開しました↓
当サイトは、親サイトから分離したプログラミング専門の情報を発信するサイトです。
この記事執筆時点(2021/10)で、まだ記事数は少ないのですが、VBAやPythonといったプログラミング言語やプログラミングの概要、小学生向けの最適な教育まで、多くの有益な情報を発信するサイトに育てていきます。
近年、GIGAスクール構想や新しいテクノロジーの到来により、日本はこれまで以上にデジタル人材が求められていくことでしょう。ぜひ、プログラミングを学んで世の中の変革を感じ、参画できるスキルを身に付けていきましょう。
行動はとても大切です。行動しない限り、人生に変化は訪れません。