「プログラミング的思考」とは?-プログラミング的思考で仕事の生産性UP!#03-
プログラミング的思考とは何か?
NHKのテキシコーという番組を観たことがありますか?
10分間の動画コンテンツを紹介するものです。
流れは大まかにこんな感じ。
モノやサービスの仕組みを理解する(考えて、動かして検証する)
この仕組みの根底には「○○」という「考え方」が使われていることを知る
その「考え方」を使って、お題として出された問題を解決する方法を考える
身近にも、その「考え方」を応用している場面があることを知る
例えば、#1のコンテンツで学ぶのは
効率の良い段取り
です。
段取りとは、モノゴトを進めるための手順のことですね。
たった10分間の動画なので、スキマ時間にでも是非ご覧ください。
動画の途中に"ダンドリオン"というキャラクターが登場するコーナーがあります。
#1では、掃除を効率よくする段取りについて考えるのですが、これこそが、以前に書いた、「複雑な社会に適応しようとする人」と「本質を見つけてシンプルに生きる人」の根本的な違いです。
複雑な問題を、そのまま解こうとするか?
問題をシンプルにしてから解こうとするか?
3工程が2工程になるくらいで何を大げさな?
と思うかもしれません。
理解しておきたいのは、工程を減らすことそのものだけでなく、取り掛かる前に「どうすればもっとシンプルに、はやく結果を出せるだろうか?」と考えることの重要さです。
こういった動画を見た子どもたちが、日常を過ごす中で
「どうすれば速く片付けられるか?」
頭を使って考えてみる、ということが当たり前になったら、日本の未来は明るいと思いますね。
ちなみに、私も同じコンセプトで探プロのコンテンツを作ったことがあります。
名付けて
はやわざ せんたくゲーム!
皆さんは、洗濯物をどうやって干していますか?
どうすれば干す時間や、移動を最小限にできるだろうか?
ということについて、考えたことはありますか?
わずか数10秒、数分の違いなのかもしれません。
でも、こんな身近なところにも、効率化について考える機会があるということは知っておいてほしいです。
そして、筋トレのように日々、少しずつ考える癖をつけておくことで、結果的に大きな差を生むということも。
さて、この番組が扱っているテーマこそが、「プログラミング的思考」です。
番組名の「テキシコー」というのは・・そういうわけですね。
私がこの言葉を初めて知ったのは、2016-2017年頃だったと思います。
ちょうど、2020年に公立の小学校でプログラミングの授業を開始するということで話題になり始めた時期でした。
小学校のプログラミング教育とは?
2020年に公立の小学校でプログラミングの授業が始まるまで、全国の小学校でいろいろなチャレンジがなされました。
5年くらい前まで、小学校にはパソコン教室という、デスクトップ型のPCが並んだ部屋がありました。
その部屋でPCを使う練習をするところから、Scratchという子供向けのツールでプログラミングしてロボットを動かしてみたり、micro:bit(マイクロ・ビット)という手のひらサイズのコンピュータを使ってみたり。
そして今では、子どもたちが一人一台のタブレットを使っているのはご存知の通りです。
ということは、いまの小学生たちは自分のタブレットを大人のエンジニア並に使いこなしてプログラミングをしているのか?
と思われるかもしれません。
しかし実際はその真逆です。
あれだけの熱量で始まろうとしたプログラミング教育は、何もなかったかのように消えつつあります。
その原因の一つは、2020年の春頃から全国的に拡がったコロナ感染です。
混乱の中ではプログラミング教育ところではなく、少なくとも我が子の通う小学校では私の知るかぎり、この2年の間に一度もプログラミングの授業は行われていません。
他校にいる先生にも聞いてみましたが、似たような感じでした。
プログラミング教育に関心をもっていた身としては、非常に残念ではあるのですが、同時に、これはこれで良かったのでは?とも思っています。
なぜなら、小学校でのプログラミング教育は、コンセプトとしては素敵だけれども、実際の授業へ取り込むにはハードルが高すぎると感じていたからです。
結局、プログラミング的思考とは何なのか?
プログラミング的思考とは何か?を定義した文部科学省の一文はこちらにありますが、読まなくて良いと思います。
正直なところ、何を書いているのか読み取れない人の方が多い気がします。
むしろ、プログラミング的思考という言葉を生み出すきっかけとなった「コンピューテーショナル・シンキング」について注目した方が良いです。
こちらの記事が、非常に分かりやすいです。
記事には、こう書かれています。
なんとなく、違和感をおぼえませんか?
プログラミング的思考という言葉には「プログラミング」という言葉が使われていて、さらに学校の現場ではプログラミングを体験する授業がなされていたのなら、当然ながらプログラミングができるように、もしくはプログラミングに必要な考え方を学ぶのではないか?と。
そして、それはIT技術者になる人とっては必要だけど、そうでない仕事をする人にとっては関係なく、全ての子どもたちが学ぶべきことなのだろうか?と。
世の中にこういった誤解を与えたのは全て、「プログラミング的思考」というようにプログラミングという言葉を使って文部科学省が広めたことに原因があると、私は思います。
「コンピューテーショナル・シンキング」という言葉も、それそのままでは別の誤解を招くので避けたいですが、子どもたちに学んでほしいのは要するに
問題を解決するための考え方
なのであって、問題解決のための一つの手段がITを使うことである
というのが、正しい理解です。
なので、学ぶべきは「考え方」です。
パソコンやタブレットを使う経験も、プログラミングでロボットを動かす経験も、あまり本質的ではないのですよね。
中学・高校へあがると情報の授業が始まるので、その前のITリテラシーとして体験しておく、くらいで十分ではないかと思います。
私が作った探プロ(探究型プログラミング学習)は、プログラミングという言葉を使ってはいますが、考え方を使いこなすことを目的とした学習手法です。
「考え方」とは、前回の記事に書いたように、エンジニアや、ITコンサルタントが使っている考え方のことです。
その中には当然、プログラミングに使う考え方も含まれますが、必ずしもプログラミングに限りません。
私がエンジニア時代に使った考え方も、ITコンサルタントとして使っている考え方も、広く捉えればすべて
問題を解決するための考え方
です。
そして探プロが重視しているのは、問題を解決するときに、その問題をいかにシンプルにしてから解くか?
ということです。
なぜこうしたことを重視しているのか?については、前回の記事に書きました。
プログラミング的思考でモノゴトをシンプルにする方法
プログラミング的思考の中で使われる「考え方」にはいくつか種類があって、定義もいろいろあるのですが、先ほどのテキシコーでは5つに分類されています。
モノゴトを効率化するための考え方、という視点で私が整理するとこんな感じです。
生産性=成果/時間
よって、生産性を上げる方向性としては大きく2つ。
①「時間」を減らす
②「成果」を増やす
①「時間」を減らす
①-1 作業の数を減らす(まとめて片づける)
①-1-a 共通項を見つける
①-1-b 差分を見つける
①-1-c 同時に実行する
①-2 作業の時間を減らす
①-2-a ムリをなくす
①-2 b ムダをなくす
①-2-c ムラをなくす
①-2-d 情報量を減らす
①-2-e 分担する
②「成果」を増やす
②-1 成果の数を増やす(ヒット率を上げる)
②-1-a 1つで何役もこなす
②-1-b 成功例を使いまわす
②-2 成果の質を増やす(ヒット率を上げる)
②-2-a 小さく分ける
②-2-b ダイジなものを見極める
どうでしょう?
どこかで聞いたことのあるような言葉が並んでいると思います。
プログラミング的思考という聞き慣れない言葉だったかもしれませんが、ご自身の仕事や家事にも役立てることができるかもしれない、と思えてきませんか?
なお、これらを考える上ではテキシコーの5つを使うので、強いていれば、基本的な5つの考え方を踏まえた少し発展的な考え方、とも言えると思います。
このnoteでは、これからこうした考え方を1つ1つご紹介しようと考えていますが、エンジニアやITコンサルタントが使う考え方なので、中身の実体はかなり専門的な内容です。
参考程度に専門用語を使うこともありますがが、基本的には上記に書いたような内容なので、あまり構えずに読んで頂ければと思います。
どうやって身につけるのか?
さてこの考え方を身に付ける方法ですが、探プロのワークショップでやってきた同じ流れを提案します。
テキシコーと少しだけ順番が違いますが、こんな感じになります。
1.発見する
日常の中で無意識にやっていることの中に、実は「モノゴトをシンプルにする考え方」が使われていることを知る
2.考える
なぜその考え方が、モノゴトをシンプルにするのか?について、手を動かしながら考える
3.作る(実践する)
実際にその考え方を使って、シンプル化できることを実践する
(考え方を使わなかったときとの差を実感する)
4.応用する
同じような考え方を、他にも実践できる場を探して応用する
テキシコーは小学生向けの番組ですし、私が作った探プロも主に小学生向けのコンテンツです。
そんな内容を大人向けに伝えても仕方がないのでは?
と思われるかもしれませんが、そんなことはありません。
根本的な考え方というのは、子どもも大人も関係ないのです。
むしろ、これから紹介する考え方の大半を、私たち大人は既に知っているはずです。
でも、うまく使いこなしていないだけなのです。
私は、そこに気付いて、毎日の日常の中で少しだけ意識するのが第一歩だと思っています。
そのきっかけに、このnoteが役立てたら嬉しいです。
次回からは具体的に「モノゴトをシンプルにするための考え方」を紹介していきます。
最初に紹介するのは、共通項を見つけてまとめて片づけるための「抽象化」についてです。
ではまた。