• 戸田市の地域課題をハッキングで解決する!?

はじめに

Code for TODA 事務局 山中邦久

私たちは活動の大きな柱のひとつに「子供たちのプログラミング入門学習推進」というテーマをもって活動しています。ここではその基本的な考え方と、それを大人たちがどう手助けできるかを考えて、保護者の皆様の「手引き」になればと思います。

Code for TODAのプログラミングの入門講座に関して、はじめに団体としての特徴と考え方を述べておきます。
そもそもこの団体は、ゆるゆるの関係ではありますが、上位にCode for SAITAやJapanがあり、日本だけに限らずアメリカにルーツのあるCode for Americaから影響を受けています。アメリカでは「シビル・ハッカーが行政を変える」を合言葉に、わずかこの4・5年で大きな成果を出してきました。原型はアメリカのCode for Americaの提唱しているオープンガバメント(開かれた行政・政府)を目標にするIT系の人間のNPOだといえます。
参考にその詳しい内容のインタビュー記事を紹介しておきます。

簡単に言えば、ICTの力で21世紀に向けて世の中を変えていこうということですが、もちろん、日本にも広がっている各地の「Code for 地名」はそれぞれの地域ごとの課題をどうとらえ、どう解決するかの手法は各地の組織や団体の任意、自発的な活動によって作られるので、その地域課題や組織を支えようという多くの市民の力によっても変わってくると思います。

そこで戸田では、行政や他の市民活動、NPOなどとの連携や協働はそう簡単には行かないので、まずは未来への子供たちを意識しての「プログラミング学習」の普及や自分たちの地域を「見える化」するマッピング(パーティ)を中心に、ICTやコンピュータ・サイエンスの敷居を低くする目標で活動をすることになりました。
今回、その中の「プログラミング学習」推進に当たって、まずはインストラクタ(メンター)の養成で普及を加速させるために、簡単な研修用ガイドブックを作ることになります。特に今回は、従来のプログラマーやSEなど中心でなく、いままで自らがプログラムを学んだことがない大人向けに、文科省の「プログラミン」というビジアル言語を使ってのマニュアルになります。

現在、国が進める動きの中でも、文科省の学校を中心としたカリキュラムと並行して、各地域に「大人と子どもが共に学ぶ拠点づくり」でプログラミング学習を推進していこうというものがあります。私たちはどちらかというと、今までの「本の読み聞かせ運動」のような小さな地域活動を広めることで、素人のお母さんたち、保護者や学生、市民をインストラクターに「親子で学ぶプログラミング入門」という視点を重視し、側面から学校教育を支援していこうと考えています。ですから、保護者の皆様のご参加を前提にこのマニュアルをまとめました。

 

子どものための「プログラミング入門講座」について

戸田市では教育委員会中心に教育行政が、「英語」と「ファイナンス」に、この「プログラミング」を加えての教育目標という先進的な体制が引かれ、私たちとのコラボレーションにも前向きにご協力をいただき、イベントでは共同で企画したり、「後援」を頂いています。ですが学校教育や現場の教室とはどう協働できるかなど深い意見交換ができている訳ではないので、あくまで私たち市民側の基本的スタンス、考えも公表することで今後の連携を模索する材料にできればと思います。

なぜここへきて世界的にプログラミングが注目されているかといえば、世界の多くの成功者がプログラミングの基本を学んでいること。オバマ大統領はじめ、ビル・ゲイツ、マーク・ザッカーバーグらも推奨していることですが、21世紀後半に向けて、プログラミングを学ぶ過程から「ロジカルシンキング(論理的思考法)」や「問題解決能力の向上」といったメリットが様々な研究成果から判明しているからでしょう。それは次世代の人々にとっては必要不可欠なスキルになるといわれています。

もうひとつは、従来、プログラミングは難解なものというイメージがあり、確かに分厚い解説書や独学に近い実践的訓練に苦しみ、学習達成率も3割ぐらいで挫折した大人も多かったところですが、ここへきて「学習メソッド」の大きな進化があります。簡単で様々な簡易言語や見た目でわかるビジュアル言語など、誰でも楽しく、ゲームや遊び感覚で基礎学習ができるツールが開発されています。しかもインターネットに接続して無料で使える学習ツールもあります。

しかしながら一方で子供用教育言語や教材があふれ、実際には現在進められている学習方法が確立しているとはいえない状況と思います。現場への導入がきちんとしたカリキュラムで広まるのか、安易な導入で混乱するのかもわかりませんが、インターネットの世界同様、世界規模で超ハイスピード、様々なツールやメソッドが開発され、実証実験されているので、現在のところ私たちは「プログラミングって面白い、楽しい」という動機付けができれば成功だと思い、親子で理解できる「ビジュアル・プログラミング言語」を採用しています。

そこで特に低学年や学校などの多人数で学習する言語に、文科省が研究した「プログラミン」を使い、少し学年が上の子や少人数でのステップアップに、世界的に広がりつつあるMIT(マサチューセッツ工科大学)の「スクラッチ」Scratchを採用しています。
文科省の「プログラミン」開発自体がScratchを基本にしているという意味でも、この導入編と実用編といった分け方でいいのではないかと考えています。

それぞれの特徴は、前者がツールやキャラクター、背景などが少なく、命令にも限りがあり、すぐに成果物ができる。それほど個人差が出にくい点で、後者はその欠点を補い、拡張性に優れていて他の言語や表現との連携も可能でかなりの格差が出るという点だと思います。

このメリット、デメリットを考えて、どちらの言語を採用するか、企画するのがいいのではないかと思っています。だから、私たちは公開の短時間のワークショップには敢えて「プログラミン」を採用しています。また、そのほかにいくつかの言語を用いて、プログラミングの面白さを紹介できればと考えています。

それではいよいよ「プログラミング入門」の指導のポイントに移りましょう。

指導する側にとっての基本は、まず「プログラミングって何?」「どんな言語や学習メソッドがあるの?」「具体的なやり方」という3点を抑えておきたいと思います。

 

「プログラミングって何?」

まず基本の第1は、「プログラムとは何か」です。
実は「プログラム」という言葉はもう一般化していて、子供たちでも「どんなときに使う?」と尋ねると「運動会のプログラム」といった答えが返ってきます。
つまり、プログラムとは物事の「順番」であり、「式次第」に合わせた人間や役割の配置、動きを「命令すること」という言葉だということは経験的に理解できるでしょう。それは「順次処理」といったプログラムの大きな特徴でもあります。

次に「プログラミングとは何をすることか」を考えます。
それは読んで字のごとく「プログラム」を「作る」ことです。もう少し詳しくいうと「プログラム」は何かやりたいことなどのアイデアを発案し、設計することであり、それを「作る」=「開発」する作業の2工程に細分化できます。だから私たちCode for~のイベントでは「アイデアソン」「ハッカソン」といった工程がよく作られます。そこから、「アイデアの発案・設計」と「開発」の2つの授業が考えられます。

「アイデアソン」とは「アイデア(発案)+マラソン」の造語で、課題を発見してその解決や実現したいアイデアを練ることですが、授業では「アニメ―ションやゲームを作ろう」というテーマに集中します。どのようなプログラム言語を採用して学ばせても、何かの「アイデア」を「形にする」という設定をゴールにすることが大切です。だから、簡単なチャートをイメージすることです。今回のワークショップでは、アニメでもゲームでもとりあえずの物語の三要素を考えましょう。

 

「アニメーションを作って、動かす」

それは、登場人物(キャラクター)背景、そして、物語(ストーリー、動き)です。はじめは画面の説明ですが、少し慣れた段階で、犬や猫といったキャラクターがどこをどう「動く」かといった、一続きの動きを表現することが、ワークショップの成果となります。
授業展開でも高学年で少しレベルが高いクラスでは、事前に「アイデア」をプレゼンさせ、講座終了時に、自分の思った通りに設計とプログラミングが「完成」したかをプレゼンして検証することができます。
そして、アイデアを「考え」た上で、開発するためにプログラミング言語を順番に並べていく作業が「ハッカソン」(ハッキング+マラソンから生まれた造語)または「プログラミング」ということになります。並べたプログラムを動かして思い通りの動きを確認します。

この流れを普通は特定の「プログラミング言語での文法」として作る訳ですが、少し詳しく言えば、「順次処理」「条件分岐」「繰り返し」の3つを織り交ぜて学ばせることになりますが、「子供のためのプログラミング入門」講座では「文法」を意識することなく、キャラクターの動きに命令を与えることで、マウスひとつで自然にそれをマスターしていきます。

 

「どんなプログラミング言語や学習メソッドがあるの?」

プログラミングを学ぶというのは、基本的にプログラム言語を学ぶことです。
ここで「言語」について考えてみましょう。子供たちに教えるときに、世界中で人間と会話するのにどのくらいの言語種類があるのか考えさせると、国や人種で日本語の他に「英語、フランス語、ドイツ語、中国語・・・」とたくさん出てきます。

それではプログラミング言語は誰と会話するものでしょうか?当然、相手はコンピュータという機械(マシン)ということになります。ですから基本的には「マシン語」という、電気的なプラス・マイナスの2進法からできたもので、それをできるだけ人間の言語に近く理解しやすいように作られてきました。いわゆる「ビジュアル化」です。だからよくVB(ビジュアル・ベーシック)を昔習ったという方もいらっしゃいますね。

プログラミングを教える基本的な知識として、どんなプログラミング言語があるかも考えておくと勉強になります。
メジャーなプログラミング言語でも30種類くらいありますが、人間の少数民族のように世界では数千ほどあるといわれています。現代では産業界やロボットなどを動かす「組み込み式プログラム」などやゲームやパソコン、Web上で使われる有名どころだけでも、
Java、PHP、JavaScript、Python、C言語、C++、C#、Perl、HTML、CSSなどなどかなりの数になるでしょう。
そのどの言語を学ぶのがいいのか、は難易度や用途などにより異なり、当然、その学習スタイルも大きく変わってくると思います。

こうした大人向け、エンジニア向けのプログラミング言語に対して、一般の大人や子供向けで、IT関連でなくても「プログラミング的思考」をマスターする目的などで初心者が学習するサービスや教材、アプリが最近流行っています。
ですから子供だから、高齢者だからという年齢ではなく「初心者向けという意味での「プログラミング入門」ととらえることも出来るでしょう。いくつか具体的に紹介すると、

・Scratch(スクラッチ)、・ScratchJr(スクラッチ・ジュニア)
・Programin(プログラミン)、・Hour of Code(アワー・オブ・コード、Code Studio)
・lightbot(ライトボット)・CodeMonkey(コードモンキー)、Viscuit(ビスケット)
・MOONBlock(ムーンブロック)、Tickle(ティックル)、・GLICODE(グリコード)
・ComputerCraftEdu(コンピュータクラフトエデュ)、・Xcode(エックスコード)
・Swift Playgrounds(スィフト・プレイグラウンド)、
・Android Studio(アンドロイド・スタジオ)
・Processing(プロセッシング)  などがあります。(ここでは詳しい内容は割愛します)

この他に、ロボットや組み込み式ハードウェア(物)を組み立てたり、操作することを通してプログラミングを学ぶ教材も出回っていますが、ロボットやハードに費用がかかる点が大きな違いでしょう。代表的な例は、LEGO社の「マインドストリームEV3 」「WeDo2.0」やアーテック社の「ロボティスト」など、これはこれで一方で活況を呈しています。

 

それではいよいよ「具体的なやり方」として、今回は文科省の「プログラミン」の実際に入ります。

プログラミング学習の具体的なやり方

準備:具体的には公民館、地域交流センターや学校の教室などで開かれるワークショップと、小さな事務所や自宅のリビングで行われるゼミナールのような形式が考えられるでしょう。そこでの大きな違いは、ワークショップが単体で1回ごとの「紹介」のようなやり方で、参加人数も指導するインストラクターも多いのに比べて、小さな単位の講座やゼミは少人数で継続的な学習が可能で、時間的余裕があり面白い、高度な作品が完成できるということでしょう。
当然、ワークショップの方がパソコンの台数や無線LANなどの準備が大変で、会場準備、受付から片付けまでなども会場担当者との打ち合わせ、事前準備が大事で、プロジェクターを使うなど会場の広さによっては指導する方の発声や教え方も若干必要になると思いますが、小さなグループでも1人1台のパソコンの準備は必須です。自宅や町会会館など開催される場所によっての細かな準備に関してはその都度ご相談ください。

さて、ここからがテキストでの一通りの進め方の本題に入るのですが、それは次のテキスト(PDF)で予習しつつ、実際の実習・研修会に委ねますので、ここまでお読みいただいて参加希望の皆様にはぜひ個別にご連絡ください。基本テキスト(PDF)

ただ学校などでの「教育」でなく、なぜ「プログラミング学習」と言っているかというと、まさに最近の学校でも採り上げられている「アクティブ・ラーニング(自律的学習法)」を、子供たちの個性や自主性を重視して進めることを優先にということを、最大の基本としてワークショップにしろ、ゼミにしろ参加することが大切だと思います。それではひとまずここまでで。