2025年2月17日
プログラマー。テクノロジー分野のジェンダーギャップ解消を目指すNPO法人Waffleのカリキュラム・マネージャー、株式会社万葉フェロー。子ども向けプログラミング絵本『ルビィのぼうけん』シリーズや中高生向けプログラミング書籍『Girls Who Code 女の子の未来をひらくプログラミング』の翻訳を手掛け、2023年には自著として小学生向けプログラミング書籍『ユウと魔法のプログラミング・ノート』を出版。女性や子どもへのプログラミング普及の功績を称えられ、2024年、Forbes Japanの「Women in Tech 30( テクノロジー領域で未来を創造する30人の女性)」に選出された。
こんにちは。わたしはWebプログラマーとして活動しながら、子ども向けプログラミング絵本『ルビィのぼうけん』や中高生向けのプログラミング入門書『Girls Who Code 女の子の未来を開くプログラミング』などを翻訳し、2023年に自著として『ユウと魔法のプログラミング・ノート』を刊行しました。キャリアの中で子どもにプログラミングの考え方を伝える方法を、ずっと試行錯誤してきたともいえます。
そして8歳と5歳の子どもを育てながら、どうにかしてこの子たちにプログラミングの楽しさを知ってもらえないかと日々チャンスをうかがっている親でもあります。
最近、8歳の上の子は、Switchのソフト「ナビつき! つくってわかる はじめてゲームプログラミング」を触り出しました。すぐにルールを飲み込んで、すいすいと問題を解き始める姿は、さすが任天堂の練られたガイドシステム、という感じですが、やはり難易度が上がると手が止まってしまうこともあります。その際にはヘルプ要員として、(プログラミングが得意と子どもから思われている)わたしが呼ばれるわけですが、わたしだってゲームの最初から逐一見守っているわけでなし、初見でデバッグもどきをするのですから、すぐに解けるわけではありません。しかし、子どもから「なんだお母さん、プログラミングが仕事なのにこんなこともできないの?」と思われるのは不本意です。
「うん、まず分からないところがどこか、絞り込むところから始めようか…」
そこでわたしが取ったのは、“いかにもプログラミングの考え方を教える風に一緒に課題を解いていく”という方法です。
そもそも、どうして子どもたちにプログラミングの考え方を伝えたいのでしょう? 個人的にはまず、「自分が子どものころにこういう考え方ができたら楽だったろうな」という思いがあるからです。
プログラミングには、ごちゃごちゃと扱いづらい現実を、なんとか自分で取り扱えるようにするための考え方がたくさん含まれています。
例えば次のような考え方です。
わたしはプログラミングに初めて触れたのが20代前半と遅めでした。それでもプログラミングという行為を通じて、「困った時はこう考えればいいんだ」という問題解決法が徐々に身に付いていきました。
自分の経験を振り返ると、子どものころは知識も少なく、世の中がどういう理屈で動いているのかも曖昧で、いつもどこか不安を抱えていました。もし、子どものころからプログラミングで問題に取り組むときに使う考え方ができていたら、もう少し未知のものへ立ち向かう不安が減っただろうなぁ、と思います。
『ルビィのぼうけん』を翻訳した時、ルビィの「大きなもんだいは、小さくわけてかんがえるんだよ」というフレーズに出会い、この本はこれからの子どもたちに必要な本だと確信しました。それからずっと、子どもたちにプログラミングの考え方を伝えたいと頭をひねっているわけです。
もう一つ、プログラミングを子どものうちから知ってほしい理由があります。
わたしたちを取り巻く社会は、今たくさんのコンピューターによって動かされています。列車の運行も、仕事のやりとりも、レジも、ドアやトイレさえも。今後、コンピューターで動くものはますます身の回りに増えていくでしょう。AIが使われる場面も多くなるでしょう。そんなコンピューターに囲まれた世界で、「コンピューターは自分と関係ない、自分ではどうすることもできないものだ」と感じて育つのと、「コンピューターは人間が作っているもので、自分たちで良くしていけるもの」と感じて育つのでは、世界に感じる広さ、自由さが大きく違うでしょう。子どもたちに、そしてもっと多くの人に、この世界は自分たちで良くしていけるものだと感じていてほしい、そう考えています。
わたしはプログラミング関係の書籍に10冊近く携わっていますが、本「だけ」でプログラミングの考え方がわかるとは思っていません。紙の上のワークだけでつかめるものだとも思いません。当たり前ですが、プログラミングの考え方は、コンピューターを動かすという一番本質的な体験を通じて、その人の中に実感として存在しはじめるものです。
コンピューターを動かす体験で得られるものの一つに、「何度も試してやり直す」というものもあります。コンピューターは同じことを指示したら、いつも同じ反応をします(だいたいは)。プログラミングで何度失敗しても、何度思い通りにならなくてやり直しても、コンピューターは苛立ったり怒りだしたりしません。何度でもチャレンジできる状況で、コンピューターの動作というフィードバックを得ながら試行錯誤して完成までもっていく一連の体験は、プログラミングの中でもとりわけ大事な部分だと思っています。
子どもは、その生活が大人のコントロール下にある部分が多く、また経験が少ないため、「一度でも失敗したらもうダメ、怒られる」と思い込んでしまうことが多いように見えます。プログラミングを通して、「失敗しても大丈夫なんだ、やり直せばいいんだ」と思えるようになる、ある意味での「失敗慣れ」も、子どもが勇気を持ってのびのびと育つのに役立つはずです。
では、プログラミングの考え方を伝える本には意味がないのでしょうか? もちろん、そう思っていたなら本を訳したり、自分で本を書いたりはしません。
『ルビィのぼうけん』を翻訳し、さらに書籍を使用したプログラミング教育支援教材「ワークショップ・スターターキット」に関わったご縁で、小学校の授業に招かれたことがあります。そこでは「もし雨だったら、そのときはレインコートを着る」といった簡単な条件分岐の考え方を、『ルビィのぼうけん』の内容に沿ってワークしました。
その小学校はプログラミングプログラミング教育の熱心なところで、すでにロボットプログラミングを何回か実施済みでした。ですから知っていることの繰り返しになるかもしれないと懸念していたのですが、子どもからは意外な感想が返ってきました。
「ロボットを動かす時に書いていたif…が、『もし〜〜だったら、〜〜をする』だと知らなかった、ようやくわかった」
というものです。
子どもたちは、「プログラムをこう書くと、このように動く」ということは体験として理解していました。しかし、その体験を言葉にすること、「自分の言葉として持つ」というプロセスを経ていなかったのです。
言葉で考え方を知ることは、プログラミングの「体験」を「理解」へと導く補助線になります。言葉で知ったことを実際にプログラミングで実感する、プログラミングの体験を言い表す言葉を得ることで理解になり、知識になり、次に使えるようになる。この両輪が、子どもたちがプログラミングを自分の力としていくのに大切だと考えています。
コンピューターを動かさず、言葉のみで子どもにプログラミングを説明する、という状況も往々にしてありますよね。こうした、ある意味片輪走行のような状態をなり立たせるために、様々な工夫があります。これは実際、プログラミングを初学者に教える際にも役に立っています。プログラミングを教える時は、「言葉」と「体験」を同時にやっていることになりますから。
工夫の一部は次のようなものです。
それぞれ簡単に説明します。プログラミングをお子さんに教える時など活用してもらえれば嬉しいです。
変数、というプログラミングにおいて大事な概念を伝える時、変数とはどういうものかを言葉で説明しますよね。そのときに、次のような説明の仕方は避けます。
「変数とはこのブロックを持ってきて作るもので」「変数はlet xxx = …. と書くもので」
代わりにこのように言います。
「変数とは、こういった機能と目的を持ちます。このxxという言語では変数は次のように表します」
考え方と環境を区別することで、本質的な部分の理解に集中してもらいます。子どもに教える時も、「考え方」と「やり方」を分けて教えることを意識してみてください。
プログラミングの用語は、英語の原語では一般的な言葉でも、翻訳されてなじみのない日本語になっている場合があります。英語であれば子どもが当てっこゲームで使うTrue/Falseも、「真偽」と言われるとなかなか日常的には使わないですね。
難しい言葉を使われると、先に拒否感が立ってしまって内容理解の邪魔になることがあります。なので、「真偽」という概念を説明する時はまず「(その条件に)当てはまるか、当てはまらないか、という考え方があって」から始めます。今後のために真偽という言葉も知っておいてほしい際には、「これを真偽って言葉でいうことがあって…」と付け加えることもあります。
余談ですが、子どもを育てていると、この「簡単な表現での言い換え」のテクニックが鍛えられるのを感じます。子どもはしょっちゅう「『だきょう(妥協)』ってどういういみなの?」などと高難易度の質問を投げてくるので、それを分かりやすい言葉に言い換えるのがいい訓練になるのです。
“そもそも低学年は「たとえ」での理解が難しい、たとえの背景にある経験や意味の結びつきが乏しいし、抽象的な理解を別のことに当てはめるのが難しいから。”
中学年むけのプログラミングの考え方の本である『ユウと魔法のプログラミング・ノート』を執筆しているときに、そう教えてもらいました。
ですので、子ども向けに説明をする際は、できるだけ具体例で教えることを心がけています。また、中学生以上に教える時も、できるだけ誤解の余地のない、想像しやすい例を選ぶようにしています。たとえば条件分岐の話をする時、鉄板の例は、天気の条件によって服装や持ち物を変える、というものです。『ルビィのぼうけん』にも使われています。
でも、わたしはこれがずっと気になっていて、天気は条件としてちょっと複雑すぎる、バリエーションがありすぎるって思っていたのですね。「雨が降ったら 傘を持つ そうでなければ 傘を持たない」って説明されたら、「雪のときは??」って思っちゃうなわたしなら… と考えていたわけです。
それで最近いい例を思いつきました。よく遊園地や動物園の入り口である、「チケットをお持ちの方は右の列に、チケットをまだご購入いただいていない方は左の列へお並びください」です。
と、かなり理想的な例です。
最近所属団体のWaffleでやった中高生向けにアプリの作り方を教える講座では、この例を使ってなかなか好評でした。
実際にコンピューターを動かさない場合の話になるのですが、コンピューターを動かしてプログラミングする体験の代わりに、「物語」を用意します。
たとえば『ユウと魔法のプログラミング・ノート』では、主人公の小学生ユウが、プログラミング対象のコンピューター“ミニオ”に対して一度バグを出してしまい、「ミニオ壊しちゃった!?」と青くなる展開があります。そこで、エラーメッセージは怖くない重要なヒントであること、失敗は何度でもやり直せること、など、重要なことをユウに伝えます。
本当はプログラミングをする子どもたちの横について逐一サポートをしてあげらればいいのですが、なかなか実現できません。そこで、ユウに代表して「よくある体験」をしてもらい、必要なサポートを届けることで、一度読者にも擬似体験をしてもらうのです。
子どもにプログラミングを教える時、物語はとても強力なツールです。子どもに興味を持ってもらったり、「こんなことができるんだ」という動機づけになったり、励ましになったりします。
子どもが小さいご家庭は、「おはなし」をせがまれて語る経験があるかもしれません。その経験を活かして、プログラミングと子どもの世界を結びつける工夫ができると楽しいと思います。
なんていうと、うちはどうしているか、という話になると思います。ですが、子どもたちはプログラミングを「お父さんとお母さんがすると、お金がもらえるもの」というある意味完璧なストーリーの中で理解しているので、なかなか難しいものがあります。これから、「あなたの世界をこんなふうに広げたり、実現したりできるものなんだよ」と話していこうと思います。
関連記事
人気記事