KCC JOURNAL

KCCジャーナル

2026/4/28

英語で学ぶコンピューター・サイエンス Season8 第1回 開催レポート 

Fail Forward: The Art of Test Driven
Development (TDD)
失敗から始めよう!テストから始めるプログラミングに挑戦!

【日本時間】2026年3月29日(日)9:30-11:30
【シアトル時間】2026年3月28日(土)17:30-19:30
Web会議ツール「ZOOM」を活用し、米国シアトルに拠点を置くGoogle社をはじめ、多くの企業のエンジニアの方々にティーチングアシスタント(TA)としてご参加いただきました。
オンサイトでは水戸会場が賑わい、オンラインでは日本各地に加え、アメリカ・シンガポール・中国・カナダの計4カ国から、参加者とスタッフを合わせて80名を超える方々にご参加いただきました🙌

今回のオンライン会場の募集ページはこちら
今回の水戸会場の募集ページはこちら
前回の開催レポート(日本語)はこちら
前回の開催レポート(英語)はこちら

📌〈英語のレベル〉
申し込み時に参加者は自分の英語レベルに応じてL1~L3を選びます。
L1:主に日本語を使用しますが、重要なキーワードや簡単な単語には英語を取り入れます。英語にまだ慣れていない方や、学校の授業程度の英語レベルの方向けです。
L2:日本語と英語をほぼ半分ずつ使用します。英語をさらに学びたい、チャレンジしたい方や、英検4級程度のレベルの方向けです。
L3:全て英語で行います。日常会話が理解できるレベルの方向けです。

📌〈ブレイクアウトルームの分け方〉
英語のレベルで4~6人のチームに分かれて活動をします。各チームにTAがつくので、参加者は分からないところを聞くことができます。 ※TA=ティーチングアシスタント

オープニング

「英語でまなぶコンピュータ・サイエンス(CS in English)」の記念すべき第8シーズンがスタートしました!
初回のテーマはプロのエンジニアも現場で実践している「テスト駆動開発(Test-Driven Development)」。失敗を恐れず、むしろ「失敗から始める」という、一見不思議で興味深いプログラミングの世界に挑戦します😊✨

開催形式は、オンラインと対面会場を組み合わせたハイブリッド方式です。今回は初の試みとして茨城県の水戸会場(偕楽園)が設置され、世界各地から集まった仲間と一緒に学びを深めました。

今回も進行役は、自称「火星や木星から地球にやってきた」というMasaさん🤩、メイン講師は、シアトルのGoogleで「Google Meet」の開発に携わるGregさん😎、そしてAmazon Japanのソフトウェアエンジニアで、今回は水戸会場から日本語でフォローしてくれるUtakoさん🤗です。

100点じゃなくてOK! プログラミングの「テスト」とは?

「みなさん、テストと聞くと何を思い浮かべますか?」講師陣のそんな問いかけから、授業はスタートしました。真っ先に思い浮かぶのは、学校のテストですよね。100点満点を目指して知識を試される「緊張の場」……。ですが、プログラミングの世界のテストは、少し意味合いが異なります!

ここでのテストとは、書いたコードが正しく動くかを確認する「動作チェック」のこと。「プロのエンジニアだって、いきなり完璧なコードを書くのはムリ😭!」Gregさんが、そう明るく宣言すると、最初から満点を目指そうと肩に力が入っていた子どもたちの表情も、ふっと和らいだようでした。

実は、プログラミングのテストには2つの方法があります。人間が実際にアプリを触って確かめる「マニュアルテスト」と、テスト用のコードを書いて自動で実行させる「ユニットテスト」。今回の授業では、この「ユニットテスト」にスポットライトを当てました!

さあ、ここからが本番です✨✨
「このコード、期待通りに動いてくれるかな?」子どもたちは、バグという名の「謎」を解き明かし、着実に精度を上げていくプロの思考プロセスを楽しみながら学んでいきました。

「もしも」を想定してバグを退治!テストがプログラムの精度を上げる

ところで、プログラミングにおいて、なぜテストが重要視されるのでしょうか。
さきほど、Gregさんが話していた「プロのエンジニアでも、最初から完璧なコードを書くのはムリ!」という言葉に、そのヒントが隠されています。

Gregさんは、「遊園地のチケット購入サイト」を例に挙げて説明してくれました。

もしプログラムのミスでサイトがダウンしてしまったら? チケットを楽しみに待っている何千人ものお客さんが悲しみますし、ビジネスとしても大損失になってしまいますよね。

そうした「もしも」の事態を防ぐためにも、プログラミングの世界で欠かせないのが「エッジケース」への備えです。致命的なミスを未然に回避するには、普段は見逃しがちな「端っこ」の特殊なケースでも、プログラムが正しく動くかを見極める必要があるのです。

つまり、テストとは、プログラムの品質と信頼を守り抜くための「最強の武器」なんですね!

合言葉は「準備・実行・確認」!プロ直伝、ユニットテストの魔法の3ステップ

では、さっそく「ユニットテスト」の世界に飛び込んでみましょう!まず「ユニット」とは、一つの仕事をするコードのまとまり、つまり「関数(ファンクション)」のこと。この小さなまとまりごとに正しく動くかを確かめるのが、ユニットテストです。Gregさんは、そのテストに「魔法の3ステップ」があることを教えてくれました。

●ステップ1:Setup(準備)
まずはテストしたい具体的なシチュエーションをセットします。例えば、「ジェットコースターに乗りに来た子の身長が110cmだったら?」という条件を、「変数」という名のボックスに入れて準備完了!

●ステップ2:Execute(実行)
準備ができたら、いよいよプログラムを動かしてみる番です。先ほど用意した条件をもとに、関数をスイッチオン!

●ステップ3:Assert(確認)
最後は「Assert」。これは「自信を持って宣言する」という意味です。
あらかじめ想定していた「期待する結果」と、プログラムが出した実際の答えを突き合わせます。「120cm制限の乗り物なら、110cmの子は乗車不可(False)になるはずだ!」と、答え合わせをするのです。

「もし、期待した結果と違っても、それはバグの正体が見えたということ。原因がわかれば必ず修正できます。だから、そのテストは成功です👍」Utakoさんの心強い言葉に、子どもたちも納得した様子。「準備・実行・確認」というプロのエンジニアと同じ3ステップを繰り返すことで、子どもたちのなかにも、論理的な思考の土台が着実に築かれていくのを感じました。

失敗・成功・改善! ぐるぐる回してコードを磨く、「テスト駆動開発TDD」のサイクル

さて、いよいよ講義の目玉である「TDD:Test-Driven Development(テスト駆動開発)」の解説をはじめましょう!これは、「プログラムをつくる前に、まずテストする」という、一見するとあべこべな驚きの開発手法です。その基本は、「失敗」「成功」「改善」という3つのサイクルを、ぐるぐる回していく方法です。

●失敗(Red/Write a failing test(わざと失敗させる)
最初は、まだ動くコードが一行もありません。ですから、テストを実行してもコンピュータは「そんなのないよ!」と赤信号(エラー)を出します。

「まず失敗させることで、何をつくるべきなのか、『道しるべ』ができるんだよ」Gregさんは教えてくれました。

●成功(Green)/Make the test pass(成功させる)
次に、そのテストをパスさせるためだけの、最小限のコードを書き込みます。テストが通れば、画面は一転して安心の「Green」に変化!

●改善(Blue)/Refactor(コードを改善する)
最後に、テストが通る「正解」の状態をキープしたまま、コードを改善し、ブラッシュアップしていきます。

「失敗」をただのミスではなく、プログラミングの「出発点」にしてしまうエンジニアの哲学。「失敗してもいいんだ!」という新常識に、子どもたちは興味深く、真剣なまなざしを送っていました🙂🙂

ブレイクアウトルームは熱気満点! 少人数グループで挑む「入園料判定」ミッション

実践編では、少人数グループに分かれてのワークに挑戦です!
お邪魔したのは、英語と日本語がミックスして飛び交うL1クラス。担当は、優しい笑顔が印象的な三木先生です。英語での自己紹介タイムでリラックスしたのち、いよいよ本番のワークへと突入しました。

授業で使ったアプリは https://tdd-tutorial.vercel.app/ です!

今回の課題は、架空のテーマパーク「CS in Englishパーク」の入園料判定システムをつくること。
「12歳以下は500円」「13〜17歳は800円」「18歳以上は1000円」というルールを、プログラムで正確に判定させなければなりません。

ここでも徹底するのは、「まずテストから書く」というTDDの手法です。三木先生が「どんなテストが必要かな?」と問いかけると、子どもたちからは「10歳!」「18歳!」「100歳のおじいちゃんが来たらどうなる?」と、テスト材料となる年齢が次々に飛び出しました。

もちろん、最初はコードが空っぽなので、テストを実行しても画面には真っ赤なエラーが表示されます。次に、このテストを「Green(合格)」させるためのコードを書き込みますが……ここで思わぬ落とし穴が見つかりました!

12歳でテストすると、500円になるはずがエラーになってしまったのです。

そこで、一人の子が鋭い気づきを口にしました。「あ、12歳以下のところが、12歳未満になっていたから弾かれた?」
すごい!自力でバグを発見!

「失敗」というヒントを頼りに、正解を導き出すTDDのプロセス。子どもたちはまるで難解なゲームを攻略するかのようにワークに没頭していました。

楽しみながら復習できる、クイズ大会「Kahoot!」で大熱狂

授業の締めくくりは、恒例のクイズ大会「Kahoot!(カフート)」です😆✨
解答の正確さとスピードを競うこのゲームがはじまると、画面越しには「うわー、残念!」「よし、1位だ!」と、熱狂的な歓声が飛び交います。

クイズの内容は、「TDDは何の略?」「コードを書く前にテストを実行するとどうなる?」など、今日の学びを問うものばかり。
こちらからあそべるので、やってみてください→「CS8-1/Kahoot!」

とくに盛り上がったのは「年齢に“Hello”と文字を入力したら、料金はどうなる?」という問題です。
もちろん正解は「0円」ですね!

「数字ではないデータが入力されたとき、プログラムがどう判断し、どうエラーを返すか」。そんな一歩踏み込んだ仕組みまで、子どもたちはしっかりと理解していました。

最後は表彰式🎉🎉
見事優勝に輝いたEishinさんは、「プログラミングの流れが学べて本当に嬉しかったです!」と満面の笑み。2位のharinさん、3位のkyokoさんも「難しかったけど、めっちゃ楽しかった!」と、清々しい充実した表情を見せてくれました✨✨😆

講座のまとめ

今回の講座を通じて、一見すると難解に思える「TDD(テスト駆動開発)」という概念も、子どもたちは自らの手で「確かな知識」としてしっかりと掴み取ってくれたようです。
KCCは、これからも皆様のご支援のもと、子どもたちがテクノロジーを自由に学び、世界とつながる場を提供し続けてまいります。
次回のシーズン8・第2回テーマは「Database Reloaded」。2026年9月の開催を予定しています。次はどんな驚きと発見が待っているのか、どうぞ楽しみにお待ちください!

▼アンケートの一部を紹介します。

<子ども>

Q.良かったことやうれしかったこと、楽しかったことなどをおしえてください✨
・コードが最初は失敗したけど、少し直したら、全て成功して、とてもすっきりして、楽しかったです!
・ブレイクアウトルームのアクティビティがコードをするのがとても楽しかったです。
・英語と日本語がわかりやすかった
・難しいところもあったが、全体に分かりやすく、理解が深まった

<保護者>

Q.今回のイベントで嬉しかったこと・良かったこと、ご自身の気持ちの変化、お子さんとのエピソードなどがあれば教えてください😊

・最初の頃は親子でpcの前で必死だったが、今はもう親はついていけなくなり離脱してしまった中、子どもが1人でも楽しんで続けていってくれて学びを深めることができ、なにより毎回楽しみにしていることが嬉しいです。

・かなり長い時間だったが、集中して参加していたし、他の子からも刺激を受けたと思う
・彼にとっては、初めての生の英語、世界の方々とのコミュニケーションの場ということもあり、いつものプログラミングより、難しく感じたようでした。その中でも積極的に発言する様子があり、彼にとってもとても良い経験の場をいただけたと思います。ありがとうございました!

<TA>

Q.What were the things that went well at the event? / イベントでうまくいってたことはなんですか?
・Very organized, all the required resources were available. The video for instructions was  specially helpful.
・TDD Tutorial Toolがとても素晴らしい出来で、使っていて楽しかったです!時間配分も過去例にないくらいうまくいきましたね

<プロジェクトリードのケンジさんから>

私のGoogleでの肩書きは『TEST ENGINEER』。
だからこそ、 今日のクラスを実現するのは密かな野望…いや、もはや宿命でした!

今回のテーマは「失敗からプログラミングを始める」。これ、実は私の人生とも重なっていて 、語り始めると止まらなくなる大好きなテーマなんです。
音楽を添えたファシリテーションも絶好調で、タイムマネジメントも(奇跡的に!)(ほとんど)完璧。最高の着地ができました。

今回の『CS in English』の教材は、非常に手応えを感じる出来でした。
『TDD(テスト駆動開発)を用いて、AIを使ってTDDを学ぶ教材を開発する』というメタ思考のアプローチが非常にうまく機能しました。 BlocklyとTDDの相性も抜群で、素晴らしい教材になったと思います。

支えてくださった皆さん、デバッグに協力してくれた(?)皆さんに心から感謝です。ありがとうございました!
授業で使ったアプリはこちらです。 https://tdd-tutorial.vercel.app/
よかったら、遊んでみてください。

☆☆Thank You Teachers!☆☆
Audrey 
Giyoul
Greg
Jhony
Kenji
Luis
Masa
Masaki 
Masataka
Riona
Ryoichi
Saki
Tomoko
Utako
Yi Zhou 

☆☆CS in English Project Team☆☆

Seattle Team: Seattle IT Japanese Professionals
Kumamoto Team: 特定非営利活動法人くまもと L R ネット
Fukuoka Team: 一般社団法人Kids Code Club

英語で学ぶコンピュータ・サイエンスの活動は、皆様の寄付によって支えられています。
活動継続のための寄付をお願いします!
▼▼▼
寄付で応援する|Kids Code Club


レポート:Kids Code Clubコンテンツチーム ゆみこ

この記事を拡げて応援する

関連記事

keyboard_arrow_left

一覧へもどる

HOMEkeyboard_arrow_rightKCCジャーナルkeyboard_arrow_right

英語で学ぶコンピューター・サイエンス Season8 第1回 開催レポート 

わくわくするテクノロジー体験を
すべての子どもたちへ

子どもたちの笑顔と希望をつくるために、まずはできることから一緒にはじめてみませんか?

寄付で応援する

keyboard_arrow_right