2025年8月21日
ユーバーの「Scratchで小・中学校のプログラミング」Vol.20 <スクラッチで大きい順に並べかえ①(手動)>
ユーバープログラミングスクールの中村里香代表による、小学校のプログラミング授業で使ってほしいプログラミング言語Scratch(スクラッチ)の学習動画第20回。
今回は<上級者>向け、Scratchでデータを大きい順に並べ替えるソートのプログラムに挑戦します。
バブルソートとは
データを大きい順や小さい順に並べ替えることをソートと言います。

いくつかの手法がありますが、今回は、1つずつ隣どうしのデータを比較し入れ替えを繰り返すことで並べかえる「バブルソート」を紹介します。
繰り返す回数は、「データの個数-1」回です。具体的に2→1→3という並びの3つのデータを大きい順に並べかえていきます。データが3個なので比較と入れ替えを「3個-1」で2回繰り返します。

1回目:
①はじめに1番目のデータと2番目のデータを比べます。2番目の方が大きい場合は、データを入れ替えます。同じあるいは1番目の方が大きい場合は何もしません。
例の場合は、1番目が「2」、2番目が「1」ということで何もしません。
②次に2番目のデータと3番目のデータを比べて同様に処理します。
例の場合は、2番目が「1」、3番目が「3」ですから入れ替えをして「2→3→1」となります。
ここまでで1回目の処理は完了し、一番右側の値(最小)が決定しました。2回目は一番右側のデータは入れ替え対象としません。
2回目:
③1番目のデータと2番目のデータを比べて同様に処理します。例の場合は、1番目が「2」、2番目が「3」ですから入れ替えをして「3→2→1」となり大きい順の並べかえが完成しました。
ソートのプログラムに挑戦
◆リスト「ブロック番号」の1番目と2番目を比較して入れ替える
Scratchの「リスト」を使って、バブルソートのプログラムに挑戦します。今回は、あらかじめ数値をリスト「ブロック番号」に格納しておきました。視覚的にもわかりやすくするために、個数分のブロックを積み上げたイラストを、リストの並びと揃えて表示するプログラムを用意しています。
*リストは、変数の一種で、複数の値をまとめて保存できる便利なしくみです。
まずは、1回目の1、2番目の比較と入れ替えからです。
ブロック番号の1番目より2番目が大きいか調べる条件を作ります。この条件に合うときに次のことを行います。
・変数「おおきいかず」にリスト「ブロック番号」の2番目を代入
・変数「ちいさいかず」にリスト「ブロック番号」の1番目を代入
・リスト「ブロック番号」の1番目を変数「おおきいかず」で置き換え
・リスト「ブロック番号」の2番目を変数「ちいさいかず」で置き換え

◆リスト「ブロック番号」の2番目と1番目を比較して入れ替える
次に1回目の2、3番目の比較と入れ替えを続けます。
ブロック番号の2番目より3番目が大きいか調べる条件を作ります。この条件に合うときに次のことを行います。
・変数「おおきいかず」にリスト「ブロック番号」の3番目を代入
・変数「ちいさいかず」にリスト「ブロック番号」の2番目を代入
・リスト「ブロック番号」の2番目を変数「おおきいかず」で置き換え
・リスト「ブロック番号」の3番目を変数「ちいさいかず」で置き換え

◆2回目の処理:リスト「ブロック番号」の1番目と2番目を比較して入れ替える
2回目の1、2番目の比較と入れ替えでソートを完成します。
ブロック番号の1番目より2番目が大きいか調べる条件を作ります。この条件に合うときに次のことを行います。
・変数「おおきいかず」にリスト「ブロック番号」の2番目を代入
・変数「ちいさいかず」にリスト「ブロック番号」の1番目を代入
・リスト「ブロック番号」の1番目を変数「おおきいかず」で置き換え
・リスト「ブロック番号」の2番目を変数「ちいさいかず」で置き換え
同様のブロックを複数回作るのは冗長なので、定義としてまとめていきます。Scratchの「ブロックを作る」ボタンを押して新しいブロックを作ります。このときに「引数」を設定することで、そのブロックの実行時に指定値を渡すことが可能になります。例では「大きさを比較(ばんごう:引数)」ブロックを作っています。
1、2番目の比較と入れ替えのブロックを利用して定義にしていきますが、リストの「1番目」の部分を引数(ばんごう)で指定します。
冒頭で変数「つぎのばんごう」には「(ばんごう)+1」を代入しておきます。こうしておいて「2番目」の部分は変数「つぎのばんごう」で指定していきます。
定義「大きさを比べる(ばんごう)」では、(1)番目を引数「ばんごう」で指定し、(2)番目を変数「つぎのばんごう」に変更しました。
まずは、1回目の1、2番目の比較と入れ替えを「大きさを比べる(1)」で実行します。
1回目の2、3番目の比較と入れ替えを「大きさを比べる(2)」で実行します。
2回目の1、2番目の比較と入れ替えを「大きさを比べる(1)」で実行しソートを完成します。

今回は、バブルソートのプログラムを紹介しました。ここまででかなりスッキリしましたがデータの数が増えるたびに「大きさを比べる(ばんごう)」のブロックを組み直す必要がありますし、値が多くなると煩雑になります。次回は、変数と繰り返しを使って値の増減にも対応可能なコードに改造しようと思います。
授業での活用
Scratchはゲームづくりだけでなく、子どもたちのアイデアを表現したり、調べたことを発表したりと、さまざまな教育活動に活用できるツールです。
今回ご紹介した「大きい順に並べ替える」プログラムは、データの整理やアルゴリズムの基礎に触れることができる内容です。
子ども達からはゲームの得点やクリアスピードのランキングを知りたいという声をよく聞きます。そういった興味や関心をきっかけに、自分でプログラムを作ることで、仕組みへの理解がぐっと深まるのではないでしょうか。処理は少し冗長に感じるかもしれませんが、順を追ってソートの仕組みを理解するためにも重要なステップです。次回は繰り返しを使い効率的なプログラムへと段階的に進めます。
ぜひ、授業だけでなくクラブ活動や探究学習など、さまざまな場面で試してみてください。
◆変数とは
<筆者プロフィール>
ユーバー株式会社 代表 中村里香
2017年4月、すべての子どもが楽しく学べるプログラミング教育を目指し、ユーバー株式会社を設立。プログラミング教室運営、クラウド型学習サービス「うさプロオンライン」の提供、教材開発、講師育成支援、体験イベントの開催などを行う。環境に左右されない学びの機会を届けるため、教育現場や企業と連携し活動中。
ご質問・お問い合わせ info@yuber.jp 中村宛(ご質問は該当記事のURLを添えてください)
関連URL
最新ニュース
- 全国の学校施設づくり関係者と文科省がフラットにつながる「CO-SHA Slack コミュニティ」始動(2025年12月19日)
- eスタジアム、和歌山県主催・第2回「和歌山県高校eスポーツ選手権2026」に参画(2025年12月19日)
- 習い事や学習塾、8割以上の親が「子どもの成長につながった」と実感 =イー・ラーニング研究所調べ=(2025年12月19日)
- 子どもの新年の目標・抱負、8割以上の親が「達成のために助言や手助けをした」=栄光ゼミ調べ=(2025年12月19日)
- Biz Hits、理系出身者に聞いた「理系におすすめの職業」ランキング(2025年12月19日)
- デジタルハリウッド、neoAIと共同開発した壁打ちチューターAI「Ututor」が「生成AI大賞2025」優秀賞受賞(2025年12月19日)
- FC今治高校×三菱電機、「未来の理系人財」育成プロジェクトで共創ワークショップ開催(2025年12月19日)
- ARI、長岡技術科学大学でAIを使いこなす視点を学ぶ「キャリア形成研修」実施(2025年12月19日)
- 日本数学検定協会、「すらら国際デジタル算数/数学コンテスト2025」に数検3級から8級の英語版の問題提供(2025年12月19日)
- わけわけ、子どもの我流プログラミングを本物の教養へ変える「ゲームクリエイター探究講座」オンライン説明会開催(2025年12月19日)














