基本セット

教員用

基本

プログラムとプログラミング

学習内容●「プログラム」と「プログラミング」について

達成目標●「プログラム」と「プログラミング」の違いを説明できるようになる

想定人数

2人

想定コマ数

1コマ

●フローチャートの書き方●プログラミングの際に意識すべきことを理解する●フローチャートを書けるようになる●フローチャートを書くことの利点を理解する

活動内容

評価

●「プログラム」と「プログラミング」‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.2

知識及び技能①●手順やルールをコンピューターが理解するためには‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.2

知識及び技能①

導入

基本課題① 「歩く」をプログラミングしよう●「歩く」という動作をプログラミングしてみましょう‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.3

知識及び技能②

基本課題② 「歩く」をフローチャートにあらわそう●フローチャート‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.4

知識及び技能②●「4 歩歩く」をフローチャートにあらわす‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.6

知識及び技能②

まとめ●「プログラム」と「プログラミング」‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.7

知識及び技能①●手順やルールをコンピューターが理解するためには‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.7 ～ 8

思考・判断・表現

アイコンシート ご活用ください！
生徒がカードを並べて課題解決のヒントにできる補助教材です。

無料
ダウン
ロード

プログラムの①アイデアを整理できる②流れを考えられる③段階的に考えられる

アイコンシート：ダウンロード URL：https://www.artec-kk.co.jp/arteclinks/school/juniorhigh/基本セット ① プログラムとプログラミング

基本

プログラムとプログラミング
年

組

番

名前

導入
知識技能①

i 「プログラム」と「プログラミング」「プログラム」について「プログラム」とは、コンピューターに指示を出すための手順やルールをまとめたものです。これを使ってコンピューターを制御し、様々な動作や処理を実行させることができます。例えば、ゲームをつくる、ウェブサイトを構築する、ロボッ
トを制御するなど、様々なことができます。

「プログラミング」について「プログラミング」とは、「プログラム」
をつくることです。
「プログラミング」では、プログラミング言語というコ
ンピューターが理解できる特殊な言語を使います。
〈プログラムの例〉

知識技能①

i

手順やルールをコンピューターが理解するためにはコンピューターを動かすためには、プログラムによってコンピューターに指示をしなければなりません。
しかし、人間同士のように指示をしてもコンピューターは理解することができません。コンピューターに指示をする場
合には、指示を「細かく・具体的」にするようにしましょう。
例）イスから立ち上がる〈ロボットの場合〉〈人間同士の場合〉

イミガ
ワカリマセン

？

た

イスか ら

立って！

イスか ら

！
いいよ

立って！
た

 ૏ু॑ऱगෳऐप઼ऎ ጼ॑ಇयखथ‫ؚ‬৬॑ౠએऊै੅ठ঱ऑॊ ੎ੱ॑৐प୎৿घॊ ૏ু॑ऱगෳऐऊै௞घ ૏ሊ॑ऽढघएपभयघ

1

2

ワカリマシタ

イスか ら

立って！
た

基本課題① 「歩く」をプログラミングしよう
知識技能②

「歩く」
という動作をプログラミングしてみましょう
ロボットに「４歩歩く」という動作を指示するためのプログラムを考えましょう。
下の空欄に書いてください。□と→は必要な分だけ書き足してください。

（解答例）

右足を上げる

右足を上げる
重心を前に倒す

重心を前に倒す
右足を前に下ろす
左足を上げる
重心を前に倒す
2 回繰り返す左足を前に下ろす【狙い】●プログラミングでは、指示が「詳細に・具体的に」書かれている事が大切である事に気づく。
●自分の身体を使って、プログラムを体験することで、プログラミングを身近に感じてもらう。
【課題】
ロボットに「４歩歩く」という動作を指示するためのプログラムを考えます。
「プログラムをコンピューターやロボットが理解するために必要なこと」で示した「イスから立ち上がる」
ためのプログラムを参考にして、「４歩歩く」ためのプログラムを考えます。
プログラム完成後には、実際にそのプログラムに沿って歩いてみるよう促します。実際に歩いてみて、
2

改善点を探し、プログラムを改善するという「デバッグ」の流れも体感できるようにします。
デバッグとはプログラム上の誤り（バグ）を発見して訂正
すること。

3

基本セット ① プログラムとプログラミング

基本

プログラムとプログラミング
年

組

番

名前

基本課題② 「歩く」をフローチャートにあらわそう

知識技能①

i

フローチャート「フローチャート」とは、記号を使って、処理や動作の手順をわかりやすく示すための方法です。
「フローチャート」を書くことによって、手順やルールをわかりやすく整理することが出来、プログラミングの手助けをします。
また、フローチャートには図と記号の使い方のルールが定められています。そのため、だれが見ても理解することができ、自分の考えたプログラムを相手に伝えることに適しています。
フローチャートのルール ①
処理や動作の流れは、「上から下へ」かつ「左から右へ」流れるように要素を配置します。

No
Yes

フローチャートのルール ②
各記号には決まった意味と用途があり、適したものを使用します。

端子開始

フローチャートのスタートとゴールを意味する記号です。
終了

処理
動作を記入する記号です。
四角のなかに動作の内容を記入しましょう。
一つの四角につき、一つの動作を記入します。

例）右足を持ち上げる動作

右足を持ち上げる

3

4

処理

知識技能①

条件分岐
条件を記入する記号です。ひし形の中に分岐を行うための条件を記入しましょう。
その条件に適する場合は「Yes」か「真」と書かれた矢印を伸ばします。適さない場合
は「No」か「偽」と書かれた矢印を伸ばします。

条件
Yes

例 歩く先に段差があるかどうかで動作を変えたい

段差がある

No

Yes

繰り返し
繰り返し処理を記入する記号です。台形のような六角形の図形の間にある処理が繰り返されます。繰り返す回数を記号内に書くようにしましょう。

繰り返し○回繰り返す処理繰り返し終了例 4 回足踏みをする動作

繰り返し2回

右足を上げる

右足を下ろす左足を上げる

左足を下ろす繰り返し終了4

5

No

知識技能②「4歩歩く」をフローチャートに表しましょう
P. ２で作成したプログラムをフローチャートで表してみましょう。
「フローチャートのルール」
に従って、下の空欄に書いてみましょう。
記号と矢印は必要な分だけ書き足してください。

開始

右足を上げる

解答例

開始

繰り返し２回

右足を上げる

まとめ「プログラム」と「プログラミング」

重心を前に倒す
右足を下げる

下の赤枠に適した語句を入れましょう。

左足を上げる①コンピューターに指示を出すための手順やルールをまとめたものをなんと言うか。
②コンピューターへの指示をつくることをなんと言うか。重心を前に倒す

左足を下げる③プログラミングで使う特殊な言語のことをなんと言うか。

繰り返し終了
5

6

終了

まとめ
知識技能①

「プログラム」と「プログラミング」
下の赤枠に適した語句を入れましょう。
①コンピューターに指示を出すための手順やルールをまとめたものをなんと言うか。

プログラム②コンピューターへの指示をつくることをなんと言うか。

プログラミング③プログラミングで使う特殊な言語のことをなんと言うか。

プログラミング言語

5

思考・判断・表現

手順やルールをコンピューターが理解するためには下の赤枠に「4 歩歩く」のプログラムを作成した際に意識したこと、注意したことについて書きましょう。

解答例
プログラムの作成をする際には、指示の内容を具体的にするように気を付けました。
足の動きだけではなく、膝の動きといった部分にも注意しました。
また、自分の書いたプログラムを実行してみると、もっと細かい指示が必要である
ことがわかったので、自分が作成したプログラムを修正しました。

フローチャート
下の赤枠に適した語句や説明を入れましょう。
〈記述内容別観点〉

・プログラムを作成する際には、指示の内容を具体的に・詳細にすることが大切だという内容が含まれている。
①右の記号はフローチャートのどの部分で使われますか？
→思考力・判断力・表現力

・プログラムを実行して、改善点を発見したという内容が含まれている。
→学びに向かう力・人間性等②右の記号はどんな時に使われますか？

開始
終了

7

処理

知識技能②

フローチャート
下の赤枠に適した語句や説明を入れましょう。

①右の記号はフローチャートのどの部分で使われますか？

フローチャートのスタートとゴールで使用する。

開始
終了②右の記号はどんな時に使われますか？

プログラムの動作を作る際に使用する。

処理③右の記号はどんな時に使われますか？

条件分岐をつくる際に使用する。

条件
Yes④右の記号はどんな時に使われますか？
繰り返し○回

繰り返し処理をつくる際に使用する。

繰り返す処理繰り返し終了

6

8

No

基本

身のまわりの計測と制御

学習内容

想定人数

2人

想定コマ数

2コマ

●ブロックプログラミングの使い方●メインユニットの接続方法●順次処理・繰り返し処理・条件分岐処理

達成目標●身のまわりにはどのようなプログラムで制御されている製品があるのかに気づく。
●信号機を再現するプログラムを作成する。
●順次処理・繰り返し処理・条件分岐処理について理解する。
●プログラムの組み方を理解する。

活動内容

評価

●社会で使われている信号機とその工夫‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.10

知識及び技能①●身のまわりの製品で使われているプログラムを考えよう‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.12

知識及び技能①

導入

基本課題①
基本課題
①

メインユニットの明かりをつけよう●接続方法‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.13

知識及び技能②●メインユニットの明かりをつけよう‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.14

知識及び技能②● LED ライトの色を変えよう‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.14

知識及び技能②

基本課題②
基本課題
②

自動車用信号機を作成しよう●順次処理‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.16

知識及び技能①●自動車用信号機を作成しよう‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.16

知識及び技能②

基本課題③
基本課題
③

歩行者用信号機を作成しよう●繰り返し処理‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.19

知識及び技能①●歩行者用信号機を作成しよう‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.19

知識及び技能②

基本課題④

押しボタン式信号機を作成しよう●条件分岐処理‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.22

知識及び技能①●押しボタン式信号機を作成しよう‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.22

知識及び技能②

まとめ●用語の理解‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.23

9

知識及び技能①

基本セット ② 身のまわりの計測と制御

基本

身のまわりの計測と制御
年

知識技能①

i

組

番

名前

社会で使われている信号機とその工夫社会では様々な信号機が使用されています。信号機の重要な役割として次のことが挙げられます。
① 交通事故の防止② 車の流れをスムーズにする③ 交通環境の改善
信号機はこのような役割を担っていて、この役割を達成するために様々な工夫がされています。
例えば車が来ているかどうかで信号の色を変える「感応式信号機」は、入力装置・制御装置・出力装置の３つの要素から構成されています。
●入力装置（センサー）……………… センサーは、周囲の状況や情報を感知し、それをデータに変換する装置です。
例えば、気温、明るさ、音の大きさ、物体の接触など、様々な情報を収集できます。センサーは自動車、スマートフォン、気象観測などさまざまな場面で利用されています。
●制御装置（コンピューター）……… コンピューターは、情報を処理し、計算する電子装置です。コンピューター
はセンサーからデータを受け取ったり、アクチュエーターに命令を出したりする能力を持っています。
●出力装置（モーター、LED など）… アクチュエーターは、命令を受けて、物理的な動作や操作を実行する装置です。例えば、物体を回転させたり移動させたりするモーターや、LED も出力装置の一つです。

例 感応式信号機

出力装置（LED）

入力装置（センサー）

制御装置（コンピューター）
入力装置（センサー）

制御装置（コンピューター）出力装置（LED）

赤外線センサーで車両が近づ車が来たことを検知したら、コンピューターからの命令をいてきたことを検知します。

その何秒後に信号の色を変え受けて、アクチュエーターであるのかアクチュエーターに指る信号灯の色を変更させます。

示を出します。
このように、感応式信号機はセンサーが周りの交通状況を読み取り、コンピューターが判断して、アクチュエーター
（LED）を制御しています。この一連の動きは、コンピューターに保存されたプログラムによって動かされています。
この他の信号機もプログラムによって制御されています。

7

10

コラム 交通整理の三種の神器
身のまわりにある信号機には、安全に快適に通行できるように様々な工夫が施されています。そのうち、代表的な３つの工夫を紹介します。
①サイクル
信号灯が青・黄・赤と一巡する時間をサイクルと言います。

サイクルが短い→通行できる量が少なく、渋滞の原因になるサイクルが長い→誰も通らない無駄な時間が増える

サイクルの長さは、交通量・交差点の大きさ、歩行者の横断時間などを考慮して決定されています。

サイクル②スプリット
１回のサイクルのうち、青・黄・赤の灯りの時間配分のことを言います。交通量の多い幹線道路とその道路と交差する小さな道路がある場合、青信号の長さが同じだと無駄が生じてしまいます。そのため、各信号の点灯時間を調整して、交通量の多い道路は青信号を長くするなどの調整を行います。

60%
40%

③オフセット幹線道路で、信号に止められずにスムーズに走行できるように青信号になるタイミングをずらすことを言います。

オフセット

サイクル

11

ŀ

身のまわりの製品で使われているプログラムを考えよう

下の二つの絵から、プログラムによって制御されている製品を探してみましょう。
また、その製品にはどのような工夫がされているでしょうか。下の表に書き出してみましょう。

思考・判断・表現
製品名

例

冷蔵庫

自動改札機

エアコン

工夫

例 冷蔵庫内の温度をセンサーで測定し、庫内を適した温度に保つようにする。

きっぷ（や IC カード）の磁気をセンサーで検知し、改札の扉を開けるようにする。
部屋の温度をセンサーで測定し、設定温度に近づけるようにエアコンを制御する。

エスカレーター人が通ったことをセンサーで検知し、エスカレーターを動かす。

カーナビゲーション

今いる位置を測定し、目的地までの経路を考える。

洗濯機

洗濯物の重量を測定して、最適な洗剤の量を投入する。

8

12

基本セット ② 身のまわりの計測と制御

基本

身のまわりの計測と制御
年

基本課題①

知識技能②

組

番

名前

メインユニットの明かりをつけよう「メインユニット」は、プログラムによって動く小さなコンピューターです。また、プログラムによって LED を点灯させるなどの命令を実行することができます。
白い部分は押しボタンになっています。また、フルカラーの LED も中に組み込まれています。

i

接続方法

1. ソフトウェアを起動させます2. メインユニットとパソコンを接続します。

メインユニット側

パソコン側

3. ઺એం঱भॱঈऊैَౣૐُ॑৭උख‫َؚ‬86%-7$*‫ُؼ‬द઩ऽॊ 85/ ॑ॡজॵॡख‫َؚ‬மਢُ॑৭උखऽघ‫؛‬

4.َঘॽॵॺ঎‫ُॻش‬ऋ઺એ঱प਀ંऔोञैமਢ౥വदघ‫؛‬

913

知識技能②

メインユニットに明かりをつけよう
接続完了後、メインユニットを光らせてみましょう。
①カテゴリー内のからをパレット上にドラッグ＆ドロップし、クリックします。

②ওॖথঘॽॵॺभ /(' ऋ஧ऎਡྩखथःॊऒध॑નੳखऽघ‫؛‬③カテゴリー内のからをパレット上にドラッグ＆ドロップし、クリックします。

④ওॖথঘॽॵॺभ /(' ऋ஧ऎਡྩखथःॊऒध॑નੳखऽघ‫؛‬LEDライトの色を変えよう
ブロックのそれぞれの色のの部分をクリックすると、右のような表示になります。
をスライドさせると、色を変えることができます。

10

14

コラム 加色混合
加色混合は、色を組み合わせて新しい色を作る方法のことを指します。これは、光を使って色を混ぜる方法です。
赤・緑・青の三つの色を用いて、様々な色を作ることができます。

【色の組み合わせ方】

赤

+

青

=

マゼンタ

青

+

緑

=

シアン

赤

+

緑

=

イエロー

赤

+

緑

+

=

青

白

あお

青
0
ひかり

さんげんしょく

0 100

けいさん

光の三原色の計算
0

100 0 100

マゼンタ
あかむらさき（赤紫）

白100 100

シアン
そらいろ

（空色）

100 100 100
あか

100

赤
0

0

100 100 0イエロー

緑

0 100 0

メインユニットの LED も同様に赤・青・緑の光の強さを０～ 100 で制御しています。

15

基本セット ② 身のまわりの計測と制御

基本

身のまわりの計測と制御
年

基本課題②
知識技能①

i

組

番

名前

自動車用信号機を作成しよう

順次処理「順次処理」とは、命令や作業を一つずつ順番に行っていく処理方法です。
順次処理はプログラムの基本的な処理方法です。下の洗濯機のように、一つの作業が完了してから、次の作業に向かうような処理のことを「順次処理」と言います。
例 洗濯機

洗濯コースの決定

知識技能②

水を入れる

洗剤を入れる

洗濯機をまわす

乾燥させる

自動車用信号機を作成しよう
次の自動車用信号機の動作をプログラミングしましょう。
【動作】
３秒

赤信号

5秒

青信号

３秒

黄信号

赤信号

①フローチャートを考え、下の赤枠内に書き入れましょう。

解答例

開始

LEDを赤色で点灯
LEDを緑色で点灯

11

LEDを黄色で点灯
LEDを赤色で点灯
終了

16

知識技能①

Ģ

ブロックプログラミング

ブロックプログラミングの基本的なやり方について紹介します。
ブロックプログラミングとは、ブロックをつなげてプログラミングしていくことを指します。ブロック 1 つで 1 つの命令が実行されます。
以下では、ブロックプログラミングの基本的なルールを紹介します。
ルール 1

プログラムの一番初めには必ずハットブロックをつける

ハットブロックとは、以下のようにブロックの上に楕円がついているブロックのことを指します。

このブロックをプログラムの一番上につけるようにします。ハットブロックはこの下につなげられたプログラムを実行する機能を持ちます。ハットブロックをつけていないとプログラムが実行されません。

×

ルール 2

〇

ブロックをつなげるように配置するプログラムを作成するときには、ブロックをつなげるようにしてください。
以下のように離れていると、プログラムを実行することができません。

×

ルール 3

〇

プログラムは上から下に実行される作成されたプログラムは、上から下に向かって実行されます。

12

17

知識技能②プログラ
ミング② ①で作成したフローチャートを参考にして、プログラムを作成しましょう。以下の「使用ブロック」
を参考にしてください。
解答例

こんな時どうする？
● LED が一瞬で光ってしまい、白の光しか光らない→プログラムは一瞬で行われてしまうので、LED を光らせるブロックの間に「ｘ秒待つ」というブロックを入れる必要があります。

こんな時どうする？
●プログラムが終了したのに、LED が消えない→プログラムが終了したときには、プログラムの最後の動作が継続されます。そのため右のプログラムでは、LED を消灯するためには、0000が継続されてしまいます。
をクリックするか、右プログラムのように「LEDを消灯」ブロックをプログラムに組み込みます。

18

実習

基本セット ② 身のまわりの計測と制御

知識技能①

基本

身のまわりの計測と制御
年

基本課題②

i

組

番

名前

歩行者用信号機を作成しよう

繰り返し処理「繰り返し処理」とは、同じ内容の作業や命令を何度も繰り返して行うための処理方法です。
繰り返し処理を用いることによって、同じプログラムを何度も作る必要がなく、効率化や作業の自動化を行うことができます。下の扇風機のように繰り返し処理を行うことで、2 つの命令のみで扇風機の首振りをプログラミングすることができます。
例 扇風機

首振りのボタンが押される

右に 150 度回転する

左に 150 度回転する
繰り返す

歩行者用信号機を作成しよう
次のような歩行者用信号機をプログラミングしましょう。
【動作】
３秒

赤信号

知識技能②

5秒

青信号

青信号 3 回点滅

①フローチャートを考え、下の赤枠内に書き入れましょう。

解答例

赤信号

開始

LEDを赤色で点灯
LEDを緑色で点灯
3回繰り返す

LEDを緑色で点灯

15

LEDを消灯繰り返し終了

LEDを赤色で点灯
終了

19

知識技能①Ģ繰り返しブロック

繰り返し処理を行うためには、繰り返しブロックを使う必要があります。
繰り返しブロックの間に挟まれているブロックのプログラムを指定した回数だけ繰り返し、実行します。

例 赤色 LED を 3 回点滅させるプログラム

このプログラムを3 回繰り返します

繰り返し処理を用いない場合、以下のようにプログラムが長くなってしまいます。
プログラムはできるだけ簡潔に、短く組めるよう工夫することが大切です。そうすることでデバッグ（プログラムのバグを修正する作業）がやりやすくなったり、バグの発生を防いだりすることができます。

16

20

知識技能②② ①で作成したフローチャートを参考にして、プログラムを作成しましょう。以下の「使用ブロック」を参考にしてください。

知識技能②

プログラ
ミング

実習

解答例：点滅② ①で作成したフローチャートを参考にして、プログラムを作成しましょう。以下の「使用ブロック」を参考にしてください。

プログラ
ミング

実習

解答例：歩行者用信号機

21

基本セット ② 身のまわりの計測と制御

基本

身のまわりの計測と制御
年

基本課題③
知識技能①

i

組

番

名前

押しボタン式信号機を作成しよう

条件分岐処理「条件分岐処理」とは、設定された条件が満たされているかどうかを確認し、条件が満たされている場合と満たされていない場合で、異なる作業や命令を実行するための処理方法です。
条件分岐処理を用いることで、その時その時の状況に合わせたプログラムを実行することが可能となります。
下のエアコンのように、条件分岐処理を用いることでその時の状況にあった命令や作業を選択することができます。
例 エアコン

50

℃

Yes

40

設定温度

30
20
10

より高い

0
50
-10
-20

℃

設定温度を認識する

No

-30

冷気を出す

気温を測定する

暖気を出す

知識技能②

押しボタン式信号機を作成しよう
次のような押しボタン式信号機をプログラミングしましょう。

【動作】
ボタンが

Yes

5秒

5秒

押された
赤信号

青信号

No

19

22

青信号 3 回点滅

赤信号

解答例

開始

LEDを赤色で点灯

知識技能②①フローチャートを考え、下の赤枠内に書き入れましょう。

ボタンが押されているYes
LEDを緑色で点灯
繰り返し３回

LEDを緑色で点灯
LEDを消灯繰り返し終了知識技能①

Ģ

条件分岐ブロック
LEDを赤色で点灯

条件分岐処理を行うために、条件分岐ブロックを使います。
終了●条件分岐ブロック
条件が満たされている場合、条件分岐ブロックの間に挟まれているブロックのプログラムを実行します。

●条件ブロック
条件分岐ブロックで用いる条件を設定するためのブロックです。以下のような形をしたブロックが当てはまります。
…………………………………「ある値が 50 を超えているかどうか」という条件を設定する…………………「ボタンが押されているかどうか」という条件を設定する

例 メインユニットのボタンが押されたときに、1 秒間 LED ライトを点灯するプログラム「メインユニットのボタンが押された」
ときに実行されるプログラム

20

23

No

基本セット ② 身のまわりの計測と制御

基本

身のまわりの計測と制御
年

知識技能①

Ģ

組

番

名前

繰り返しブロック（ずっと〜する）

プログラムを何回も実行させるためには「ずっと〜する」という繰り返しブロックを使います。
●繰り返しブロック
このブロックの間に挟まれているブロックのプログラムを何回も実行します。

例 メインユニットのボタンが押されたときに、LED ライトを 1 秒間点灯するプログラム[「ボタンが押されているか」を判定するためのプログラム ]このプログラムを何回も実行させる必要があります。

プログラムの実行は一瞬で行われます。そのため、条件が満たされているかどうかの判定を常に行うためにはプロ
グラムを何回も実行させなければなりません。
そこで、「ずっと〜する」の繰り返しのブロックを使います。

「ずっと〜する」のブロックがあるため、〇 ボタンが押されているかどうかの判定を何度も実行することができます。

プログラムの実行と同時にプログラムが終了し× てしまいます。そのため、ボタンが押されているかどうかの判定を常に行うことができません。

21

24

知識技能①

Ģ

センサーの値を読み取る方法

条件分岐の条件には、センサーの値を使うことができます。
例えば、押しボタン式信号機では、「ボタンが押されているか」を判定するために、ボタンの状態を条件として使っています。
メインユニットのボタンが押されているときと押されていない時の表示の変化をユニットボードで確認し、赤枠内に書き入れましょう。

ボタンが押されているとき

ON

ボタンが押されていないときOFF② ①で作成したフローチャートを参考にして、プログラムを作成しましょう。以下の「使用ブロック」を参考にしてください。

知識技能②

解答例

使用ブロックメインユニットの LED を光らせるためのブロックです。

メインユニットの LED を消灯するためのブロックです。

次の処理の実行を遅らせるためのブロックです。指定した秒数だけプログラムをストップします。

ずっと繰り返して実行するためのブロックです。このブロックの間に挟まれているブロックのプログラムをずっと繰り返し実行します。

条件分岐を行うためのブロックです。条件が満たされたときに、このブロックの間に挟まれているブロックのプログラムを実行します。

繰り返し処理を行うためのブロックです。このブロックの間に挟まれているブロックのプログラムを指定回数繰り返します。
条件を設定するためのブロックです。条件分岐ブロックのの部分に入れることができます。
「押されている▼」の部分を選択すると、そのほかの条件を設定することもできます。

22

25

プログラ
ミング

実習

基本セット ② 身のまわりの計測と制御

基本

身のまわりの計測と制御
年③プログラムが完成したら、ソフトウェア画面右上の

組

番

名前

を押して、プログラムを実行しましょう。

④プログラムが正しく動作しているのか確認しましょう。

ボタンが

Yes

5秒

5秒

押された
赤信号

青信号

No

⑤達成出来た項目にチェックを入れましょう。
□「条件分岐処理」がどのような処理方法であるか理解できた。
□ フローチャートを書くことができた。
□ センサーの値を読み取ることができた。
□ 押しボタン式信号機をプログラミングすることができた。

まとめ
知識技能①

以下の文に当てはまる適切な語句を、それぞれの赤枠内に書き入れましょう。

①順番通りにプログラムが実行される処理方法の名前

順次処理②同じプログラムを繰り返す処理方法の名前

繰り返し処理③条件にあわせて、実行するプログラムが変更される処理方法の名前

条件分岐処理2326

青信号 3 回点滅

赤信号

基本

早押しボタンを作成しよう

学習内容

想定人数

2人

想定コマ数

2コマ

●変数、リスト、無線通信●情報通信ネットワーク●アクティビティ図

達成目標●変数、リスト、無線通信の仕組みの理解●情報通信ネットワークとはどのようなものなのかの理解●アクティビティ図の作成方法の理解

活動内容

基本課題①

評価

反応時間計測タイマーを作成しよう●変数‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.28

知識及び技能①●反応時間計測タイマーを作成する‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.29

知識及び技能②●タイマーブロック‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.32

知識及び技能①●乱数ブロック‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.33

知識及び技能①

基本課題②

早押しボタンを作成しよう●情報通信ネットワーク‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.35

知識及び技能①●リスト‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.36

知識及び技能①●アクティビティ図‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.38

知識及び技能①●無線ブロック‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.43

知識及び技能①●リストブロック‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.45

知識及び技能①

まとめ●まとめ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ P.50

27

知識及び技能①

基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

基本課題①
知識技能①

i

組

番

名前

反応時間計測タイマーを作成しよう

変数「変数」とは数字や文字などの情報を保存するための箱のようなものです。プログラム上で情報を保存するために使われます。
変数には、数字や文字を「ひとつだけ」保存させることができます。

情報
変数

1

2

3

a

b

c

変数は一つの情報しか保存できないため、新しい情報を保存させると古い情報は上書きされます。
情報

情報

情報

変数

変数

中に入っている情報が何かわかりやすくするために、変数には名前を付けることができます。
その名前を呼び出すことで、その変数の中に入っている情報をプログラムの中で活用することができます。
例 ①ある変数に「番号」という名前をつけ、そこに「100」を保存する。

100
番号
（変数）

②『「番号」＋ 10』というプログラムを作成した場合、「110」という答えが出る。
100
番号
（変数）

＋

10

＝

100

＋

10

＝

110

③変数「番号」の中身を、「100」から「10」に入れ替える。
100

10

10

番号
（変数）

番号
（変数）

25

28

④『「番号」＋ 10』というプログラムを作成した場合、「20」という答えが出る。
10
番号
（変数）

知識技能②

＋

10

＝

10

＋

10

＝

20

反応時間計測タイマーを作成しよう【課題】
メインユニットの LED が点灯してから、ボタンが押されるまでの時間を測定するタイマーを作成します。
ボタンを押すまでの時間を測定するためのタイマーなので、プログラムがスタートしてから LED が点灯するまでの時間（ｘ秒）はランダムに切り替わるようにしてください。
ｘ秒経過
したら

ボタンが
押されている
タイマーを
リセット

LED を
点灯する

Yes

LED を
消灯する

No

タイマーを
変数に保存する

この間の時間を計測する①フローチャートを考え、下の赤枠内に書き入れましょう。

解答例

開始

タイマーをリセット
LEDを点灯するボタンが押されている

Yes
LEDを消灯する

26

タイマーの値を変数に保存する

終了

29

No

基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

知識技能①

Ģ

組

番

名前

変数ブロック

変数は情報を保存するために使われます。その変数を使うためには、変数ブロックを使う必要があります。
変数ブロックに記入された情報が変数に保存されます。

変数ブロックを表示させる
ソフトウェアを起動しただけでは、変数ブロックは表示されていません。そのため、まず変数ブロックを表示させ
ます。
（1）

から

をクリックします。

（2）変数の名前を設定します。この例では「Number」という名前を設定しています。この変数に保存させる
情報に関連した名前だと、整理しやすくなります。
（3）「OK」をクリックすると、以下のブロックがパレットに表示されます。

（4）変数を作ると、右上の画面に以下の表示が追加されます。この表示から、現在この変数にどのような情報が保存されているのかを確認することができます。

以下の表示の場合、「Number」という変数に「０」という情報が保存されていることを確認することができます。
0=

Number2730

知識技能①
変数に情報を保存する（1）変数に情報を保存するためにはのブロックを使います。

（2）ブロックをスクリプトエリアにドラッグ＆ドロップします。
（3）青枠部分に保存したい情報を記入し、ブロックをクリックします。
（4）の表示部分が、記入した文字と同じになります。これで記入した情報が変数に保存されたことになります。
例 変数「Number」に「100」を保存する場合

0

100

100

NumberNumber

例 変数「Number」に「こんにちは」を保存する場合

0

こんにちは

こんにちは

NumberNumber（5）保存したい情報を記入する部分には、の形のブロックを入れることができます。「演算ブロック」

や「タイマーブロック」（タイマーブロックの詳細は P.29）などが当てはまります。
例 変数「Number」に「５＋５」を保存する場合

演算ブロック

例 変数「Number」に「タイマーの時間」を保存する場合

タイマーブロック28

31

基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

知識技能①

組

番

名前

変数ブロックを使って計算をする（1）以下のようなプログラムが作成されていた場合、プログラムが実行されるたびに「Number」に保存される数はどのように変化するでしょうか。実際にプログラムを作成し、実行して、以下の表に当てはまる数字を記入しましょう。

プログラムを実行すると…

プログラムを実行した回数「Number」の値

Ģ

0回

1回

2回

3回

4回

0

6

12

18

24

タイマーブロック

時間を測定するためには、カテゴリー内の「タイマーブロック」を使います。

このブロックを使って時間を計測します。単位は秒です。タイマーはソフ
トウェアを起動したタイミングから自動的に計測を始めます。クリックすると計測された時間が表示されます。
このブロックを使うとタイマーの値を 0 秒に戻すことができます。
タイマーはソフトウェアを起動したタイミングから時間の計測を始めているため、タイマーで秒数を計測する場合は、計測をスタートさせたいタイミングで「タイマーをリセット」を行う必要があります。

例 プログラムが実行されてからメインユニットのボタンを押すまでの時間を変数「Time」に保存するプログラム

プログラムが実行されるごとにタイマーの値をリセットします。

ボタンが押された時のタイマーの値を、「Time」という変数に保存します。

29

32

知識技能①

Ģ

乱数ブロック乱数（ランダムな数）を発生させるためには、カテゴリー内の「乱数ブロック」を使います。

以下のブロックの場合、１〜 10 の間でランダムに整数を出力します。

乱数ブロックをクリックしてみましょう。以下のようにクリックするたびに異なる数字が出力されます。

知識技能②② P.26 で作成したフローチャートを参考にして、プログラムを作成しましょう。以下の「使用ブロック」を参考にしてください。

プログラ
ミング

実習

使用ブロックメインユニットの LED を光らせるためのブロックです。

メインユニットの LED を消灯するためのブロックです。

解答例

指定した秒数だけプログラムをストップします。次の処理の実行を遅らせるためのブロックです。

ボタンが押されたときに、このブロックの下に組まれているプログラムが実行されます。このようなブロックをハットブロックといい、ブロックの下側のみにブロックをつなげることができます。

時間を計測するためのブロックです。

タイマーを 0 秒に戻すためのブロックです。タイマーはソフトウェアを立ち上げた時点から秒数をカウントしています。このブロックで任意のタイミングから計測しなおすことができます。

ランダムな数字を出力するためのブロックです。

変数の値を指定した値に変えるためのブロックです。

30

33

基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

知識技能②

③プログラムが完成したら、ソフトウェア画面右上の

組

番

名前

を押して、プログラムを実行しましょう。

メインユニットの LED が光ったらボタンを押しましょう。LED が光ってからボタンを押すまでの時間を計測しま
しょう。
計測された時間は以下の赤枠内の変数「反応時間」に表示されます。

⑤達成できた項目にチェックを入れましょう。
□「変数」について理解することができた□「乱数」について理解することができた□「変数」の使い方を理解することができた□「タイマーブロック」の使い方を理解することができた□ フローチャートを書くことができた□ 反応時間計測タイマーを作成することができた

31

34

プログラ
ミング

実習

基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

基本課題①
知識技能①

i

組

番

名前

早押しボタンを作成しよう

情報通信ネットワーク「情報通信ネットワーク」とは、コンピューターやスマートフォンなどのデバイス同士がネットワークを使って、情報をやりとりする仕組みです。これは、手紙や電話と同じコミュニケーション手段の１つです。例えると、ネットワー
クは街中を走る道路のようなもので、データはその道路を通る車です。様々な目的地を行き交いながら情報をやり取りします。

ネットワークは、ルーターやゲートウェイ、データセンターなどによって構築されていて、電話線や Wi-Fi、光ファ
イバーなどの技術でつながっています。情報を迅速に伝えたり、ウェブサイトを閲覧したり、ビデオ通話を楽しんだりするのに役立っています。情報通信ネットワークは、現代のコミュニケーションと情報共有で中心的な役割を果たしています。

情報通信ネットワーク
携帯電話
ネットワーク学校内のネットワーク

サーバー

ゲート
ウェイ

ルーター

スマート
フォン
携帯電話

コンピューター コンピューター コンピューター

インターネット

データセンター
スマートフォン
コンピューター
AV家電

サーバー
ルーター

ゲーム機

情報のやりとり33

35

知識技能①i

リスト「リスト」とは、たくさんの情報を整理し、保存するために使われます。
変数では 1 つしか情報を保存することができませんでしたが、「リスト」では複数の情報を一括して保存することができます。
変数は「はこ」に例えることができましたが、リストは「たな」に例えることができます。
例 10, 20, 30 の 3 つの情報を保存する場合

リストの場合

変数の場合

30

10

20

変数①

変数②

20
30

10

変数③

用意する「たな」は 1 つ用意する「はこ」は３つ「リスト」は同じ種類のデータを一か所にまとめることができるので、データを効率的に管理することができます。
また、リストはプログラムの中で情報を追加で保存したり、保存されている情報を消したりすることができます。
例 10, 20, 30 の 3 つの情報に「40」という情報を追加する場合●リストの場合、「たな」を新たに用意する必要がない
リスト

40

30

30

20

20

10

10

40

●変数の場合、「はこ」を新たに用意する必要がある

10

20

30

変数①

変数②

変数③

34

36

40
＋

変数④

基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

知識技能①

組

番

名前

リストには、データが追加された順番通りに保存されます。そのため、早押しボタンのようにどちらのボタンが早く押されたのか判定する場合は、リストを使うと便利です。

例 10 → 20 → 30 → 40 の順番で情報が保存された場合●リストの場合、保存された順番通りに「たな」に保存される

40

４番目

30

3 番目

20

2 番目

10

1 番目

●変数の場合、保存された順番を知ることはできない

10

20

30

40

変数①

変数②

変数③

変数④

35

37

知識技能①i

アクティビティ図「アクティビティ図」とは、プログラムの概要とプログラムの流れを図解したものです。
特に複数のメインユニットで通信する場合、アクティビティ図を作成すると全体のプログラムの見通しを立てやすくなります。
通信を用いる場合は、プログラムが複雑になるため、混乱しないように事前にアクティビティ図を作成します。アクティビティ図でプログラム全体の概要を把握したのち、フローチャートを作成し、プログラムの詳細を決定していきます。
フローチャート

アクティビティ図

プログラムの詳細を把握することができる。
特徴

プログラム全体の動きを把握することができる。

このフローチャートを参考にして、プログラミ 複雑なプログラミングの際に混乱することなく、ングすることができる。

進めることができる。

アクティビティ図作成のルール
自動販売機の動作を例に、アクティビティ図を作成する流れを説明します。

（1）登場するものを整理する
プログラミングの動作に関係するものを洗い出します。
例 自動販売機の動作に関係するもの

購入者

自動販売機

（2）登場するものの動作を整理する
ここではフローチャートのように詳細な動作は必要なく、概要がわかれば十分です。

●押されたボタンの飲み物を認識する●お金をいれる●投入されたお金が飲み物の金額に足●欲しい飲み物のボタンを押す

りているのか判断する●飲み物をとる
購入者

自動販売機

36

38

●飲み物を出す基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

知識技能①

組

番

名前

(3) 登場するモノに対応したレーンを書く
それぞれのレーンに対応した動作を順番に書いていきます。行われる順番に動作を矢印でつないでいきます。
また、動作の最初には（開始ノード）、動作の最後には（終了ノード）の記号を付けます。

例 自動販売機のアクティビティ図

購入者

自動販売機

お金を入れる

欲しい飲み物のボタンを押す

押されたボタンの飲み物を認識する投入されたお金が飲み物の金額に足りているか判断する

飲み物をとる

飲み物を出す※アクティビティ図作成後、それぞれの動作についてフローチャートを作成し、詳細を決定します。
例 「押されたボタンの飲み物を認識する」という動作のフローチャート

開始

A のボタンが押されているYes
Aの飲み物を認識する

No

B のボタンが押されているYes
Bの飲み物を認識する

終了

37

39

No

C のボタンが押されているYes
Cの飲み物を認識する

知識技能②「早押しボタンシステム」をアクティビティ図に表しましょう【課題】
次のような早押しボタンのプログラムを作成しましょう。
まず 2 人グループを組み、片方を親、もう片方を子として、親と子の役割分担をします。
親のメインユニットでは、親と子、どちらのボタンが早く押されているのかをリストを使って判定します。もし親のメインユニットのボタンが早く押されていた場合、自分の LED ライトを点灯します。子のメインユニットのボタンが早く押されていた場合、親から子に信号を送り、子の LED ライトを点灯させます。

親子

無線グループを設定

無線グループを設定

ボタンが押されたボタンが押されたリストに親のボタンが押されたことを保存する

リストに子のボタンが押されたことを保存する

リストに登録された順番を比較し、どちらが早く押されたのか判定する子が早かった場合親が早かった場合

LED を赤で点灯する

LED を赤で点灯する

38

40

基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

知識技能②

組

番

名前

（1）アクティビティ図を考え、下の赤枠内に書き入れましょう。

親
親

子
子

ネットワークに接続

ネットワークに接続

ボタンが押されたボタンが押された親のボタンが押されたら、親をリストに登録する
子のボタンが押されたら、子をリストに登録するリストの１番に登録されているほうに信号を送る

LEDライトを点灯

LEDライトを点灯（2）フローチャートを考え、下の赤枠内に書き入れましょう。親と子どちらを作成するか決めましょう。
作成するプログラム（親の場合のフローチャート ）作成するプログラム（

）

開始

開始

ネットワークに接続「子」から信号を受け取ったか

Yes

No

ボタンが
押されている

リストに
「子」
を保存

Yes
リストに
「親」
を保存

リストの１番目が「親」かどうか

終了

No

Yes
LEDライトを点灯「子」に信号を送る

終了

終了

39

41

No

知識技能②（2）フローチャートを考え、下の赤枠内に書き入れましょう。親と子どちらを作成するか決めましょう。

作成するプログラム（子の場合のフローチャート ）作成するプログラム（

）

開始

開始

ネットワークに接続「親」から信号を受け取ったかボタンが押されている

Yes

No

LEDライトを点灯

Yes「親」に信号を送る

終了

終了

39

42

No

知識技能①

Ģ

無線ブロックメインユニットを通信させるためには、カテゴリー内の「無線ブロック」を使います。

メインユニット同士を通信させるため、2 人以上のグループを作成して行ってください。

無線グループを設定する（1）ロボットモードになっていることを確認します。
〈モードの確認方法〉
1. 画面左上のタブから「編集」を選択し、一番下に表示されるタブを確認します。
2. ここが「キャラクターモードに切り替える」となっていれば、ロボットモードです。
ここが「ロボットモードに切り替える」となっていれば、キャラクターモードです。

（2）のを使って、複数のメインユニットを同じグループのネットワークに接続して通信することができます。
この数字は、無線グループを設定するための暗証番号のような役割を担います。そのため、同じグループに接続するメインユニット同士は同じ数字を入力するようにしてください。

（3）以下のようにブロックを組み、を押してプログラムを実行します。

（4）メインユニットが以下のように青く光っている場合、無線グループの設定は完了です。

40

43

基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

知識技能①

組

番

名前

無線通信を行う（1）

ブロックを使って、無線グループを設定します。

（2）送信側と受信側のプログラムを作成します。以下のブロックを使います。

無線で同じネットワークに接続しているメインユニットに信号を送信するためのブロックです。ブロックの「Hello」の部分は自由に設定することができます。

無線で同じネットワークに接続しているメインユニットからの信号を受信するためのブロックです。信号を受信したとき、このブロックに続くプログラムが実行されます。
（送信側）のブロックを使って、相手（受信側）に信号（Hello という文字）を送信します。

（受信側）
の

ブロックを使って、送信側からの信号を受信します。ブロックに記入された文字（イラストの場合は Hello）と同じ文字の信号を受信したとき、下に続くプログラムが実行されます。

例 親のメインユニットのボタンを押したときに、子のメインユニットの LED ライトを点灯するプログラム

親のメインユニット子のメインユニット

4144

知識技能①Ģ

リストブロック

リストを使用するためには、カテゴリー内の「リストブロック」を使います。

リストブロックを表示させる（1）からをクリックします。

（2）リストの名前を設定します。この例では、「名前」という名前を設定しています。このリストに保存する情報に関連した名前にすると整理しやすくなります。
（3）「OK」をクリックすると、以下のブロックがパレットに表示されます。

（4）また右上の画面には、以下の表示が追加されます。
この表示から、現在このリストにどのような情報が保存されているのかを確認することができます。
また、「長さ」の数字からリストに保存されている情報の個数を確認することができます。

42

45

基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

知識技能①

組

番

名前

リストに情報を保存するリストに情報を保存するためにのブロックを使います。

（1）このブロックをスクリプトエリアにドラッグ＆ドロップします。

（2）の青枠部分に保存したい情報を記入します。

（3）情報を記入してプログラムを実行すると、以下のように情報がリストに保存されます。

リストに保存された情報を使う
リストの情報を使うためにのブロックを使います。

リストからこのブロックの数字に対応した情報を呼び出すために使います。

（1）このブロックをスクリプトエリアにドラッグ＆ドロップします。
（2）の青枠部分に呼び出したい情報の数字を入力します。入力後、このブロックをクリッ
クすると、その情報が表示されます。
例 以下のようなリストの場合、次のように表示されます。

43

46

知識技能②③ ②で作成したフローチャートを参考にして、プログラムを作成しましょう。以下の「使用ブロック」を参考にしてください。

プログラ
ミング

実習

作成するプログラム（ 親の場合 ）作成するプログラム（ 子の場合 ）47

基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

知識技能②

組

番

名前

（子の場合）
使用ブロックメインユニットの LED を光らせるためのブロックです。
同じネットワークに接続するために、無線グループを設定するブロックです。
無線で信号を送信するためのブロックです。
無線で信号を受信したときに、このブロックに続くプログラムを実行するためのブロックです。
ずっと繰り返して実行するためのブロックです。このブロックの間に挟まれているブロックのプログラムをずっと繰り返し実行します。
条件分岐を行うためのブロックです。条件が満たされたときに、このブロックの間に挟まれているブロックのプログラムを実行します。

⑤プログラムが完成したら、転送を行い、プログラムを実行しましょう。
【転送方法】
基板間通信を行うためには、メインユニットに作成したプログラムを保存させる必要があります。この「プログラムを保存すること」を「転送」と言います。
(1) プログラム作成後、タブから「転送」をクリックします。
(2)「USB JTAG…」を選択し、「接続」をクリックします。

表示されていたユニットボードが消えたら、転送は完了です。

45

48

知識技能②【転送後のプログラム実行方法】(1) 以下の画像のようにメインユニットに青いランプが点灯したことを確認し、無線グループが設定されたことを確認します。

(2) 無線グループ設定後、親と子でメインユニットのボタンを押し、早く押したほうのボタンのみ光ることを確認しましょう。※再度、プログラムを実行したい場合は、親と子の電源を一度オフにして、（１）を行ってください。

親子

無線グループを設定

無線グループを設定

ボタンが押されたボタンが押されたリストに親のボタンが押されたことを保存する

リストに子のボタンが押されたことを保存する

リストに登録された順番を比較し、どちらが早く押されたのか判定する子が早かった場合親が早かった場合

LED を赤で点灯する

LED を赤で点灯する⑥達成出来た項目にチェックを入れましょう。
□「情報通信ネットワーク」について理解することができた□「リスト」について理解することができた□「アクティビティ図」について理解することができた□「無線通信ブロック」の使い方を理解することができた□「リストブロック」の使い方を理解することができた□ アクティビティ図を作成することができた□ 早押しボタンを作成することができた

46

49

基本セット ③ 早押しボタンを作成しよう

基本

早押しボタンを作成しよう
年

知識技能①

組

番

名前

まとめ
「変数」
と
「リスト」
どちらを使用すべきでしょうか。当てはまる方を下の赤枠内に書き入れましょう。
①センサーで測定した気温を用いて、熱中症アラートを作成する場合

変数② 20 人分の数学のテストの平均値を計算するプログラムを作成する場合

リスト③買い物の合計金額を自動で計算するプログラムを作成する場合

リスト

フローチャート・アクティビティ図、それぞれの特徴を以下の表に書き入れましょう。

特徴

フローチャート

アクティビティ図

プログラムの詳細を把握すること

プログラム全体の動きを把握するができる。

ことができる。

このフローチャートを参考にして、複雑なプログラミングの際に混乱

プログラミングすることができる。

することなく、進めることができる

47

50

基本

天気予報モニターと熱中症アラート（作例集）

メインユニットを Wi-Fi に接続して、インターネット上から取得したデータを利用するプログラムを紹介します。
メインユニットを Wi-Fi に接続すると、様々なデータを保存・提供しているサーバーにアクセスすることができ、指定したデー
タをサーバーから取得することができます。

サーバーとはサーバーとは、インターネットを通じてデータやサービスを提供するコンピューターのことです。
例えば、私たちがインターネットで検索をすると、Web サイトのデータを保管しているサーバーから画像や文章のデータが提供されます。

データを取得するリクエスト
アーテックのホームページを検索

インターネット

サーバー

データを提供▲サーバーから情報を取得する仕組み
サーバーには様々な種類があり、現在時刻のデータを提供するタイムサーバーや、気象情報のデータを提供する気象情報サーバーなど、リクエストを送ったサーバーによって異なるデータを取得できます。
サーバーから取得できる情報は信頼性と即時性が高いため、データを取得する先のサーバーを変更することで便利なプログラムを幅広く作成できます。

51

メインユニットをWi-Fiでインターネットに接続しよう
メインユニットをインターネットに接続したり、サーバーからデータを取得したりする場合は、IoT ブロックを使います。

IoTブロックの使い方
画面左上の「編集」から「ブロックの表示・非表示」を選択し、「IoT」をクリックします。

カテゴリーのととの間に、新しくのカテゴリーとブロックが追加されます。

52

メインユニットを Wi-Fi に接続するときは、カテゴリーのに SSID、にあるを実行します。

にパスワードを入力して実行すると、指定した Wi-Fi に接続することができます。

SSIDとはSSID とは接続するアクセスポイントを判別するための名前です。デバイスを Wi-Fi に接続するときは、無線 LAN
ルーター等のアクセスポイントに接続する必要があります。それぞれのアクセスポイントを見分けるためにつけられた名前のことを SSID と呼びます。

無線 LAN ルーター
( アクセスポイント )アクセスポイントによっては、決まった人だけが接続できるように PASS（パスワード）の入力が求められることがあります。

メインユニットが Wi-Fi に接続されていると、メインユニットの LED( 小 ) が青色で点灯します。

Wi-Fi への接続を解除したい場合は、を実行します。

LED( 小 ) が青色で点灯しない場合は Wi-Fi に接続できていません。
SSID とパスワードの入力を間違えていないか、確認してからプログラムを再度実行してください。

53

サーバーから現在時刻を取得しよう
サーバーから現在時刻のデータを取得して、日付や現在時刻を表示してくれるプログラムをつくりましょう。

タイムサーバーから時刻を取得しよう
現在時刻を取得する場合は、時刻を提供するサーバー（タイムサーバー）から時刻情報を取得します。
タイムサーバーを設定するには、の空欄にサーバーの URL を入力して実行します。

① p.53 で作成したプログラムにを繋げて、現在時刻を取得します。
空欄にタイムサーバーの URL「ntp2.plala.or.jp」を入力しましょう。

②のタイムゾーンを「UTC+9」に変更します。

54

タイムゾーンとは
タイムゾーンとは、地球上で同じ標準時を採用している地域の集合のことです。
世界で共通の標準時として UTC（協定世界時）が用いられていますが、これはイギリスを基準としているため、経度の違いによって時差が生まれています。そこで、イギリスより東にある地域は UTC に時刻を足し、西にある地
域は UTC から時刻を引くことで、各地域の標準時を表示しています。
日本では、UTC に 9 時間を足した時刻が標準時になります。同じタイムゾーンの地域には韓国やインドネシア東部などがあります。

世界の地域
世界の地域

タイムゾーン
タイムゾーン

英国

UTC

フランス

UTC+1

インド

UTC+5:30

中国

UTC+8

シンガポール

UTC+8

韓国

UTC+9

日本

UTC+9

オーストラリア（キャンベラ）UTC+10リオデジャネイロ

UTC-3

アメリカ（ニューヨーク）

UTC-5

アメリカ（ロサンゼルス）

UTC-8▲各地域のタイムゾーン③タイムサーバーを設定してを実行すると、タイムサーバーから現在時刻を取得してタが保存されます。
保存されるデータは年・月・日・時・分・秒の 6 種類です。

・・・ 「年」の数字を受け取る。
・・・ 「月」の数字を受け取る。
・・・ 「日」の数字を受け取る。
・・・ 「時」の数字を受け取る。
・・・ 「分」の数字を受け取る。
・・・ 「秒」の数字を受け取る。

55

にデー

取得したデータを表示するために、年・月・日・時・分・秒の 6 個の変数をつくり、それぞれにを挿入します。

④メインユニットのボタンを押したときに時刻を更新して、作成した変数に現在時刻を保存するスクリプトを作成します。

56

スクリプトを実行してメインユニットのボタンを押すと、作成した変数に現在の時刻が保存されます。

現在時刻が保存されないときは、タイムサーバーの URL「ntp2.plala.or.jp」が正確に入力されているか確認してください。

プログラミングでタイマーをつくろう
取得した現在時刻を活用し、タイマーをプログラミングしましょう。

① LED を光らせたい時刻を条件に設定して、設定した時刻（例では 7 時 30 分）になるまで現在時刻を更新し続けます。

の左右に入れたブロックの条
件を両方とも満たしているときだけ、繰り返しから抜けることができます。
どちらか一方だけの条件が合っていても、繰り返しから抜けることは出来ません。
例）57

7 時 28 分→

×

6 時 30 分→

×

7 時 30 分→○

繰り返しから抜けられる！

② ①のスクリプトの繰り返しから抜けた後に、ボタンが押されているまで LED を点灯し続けます。
ボタンが押されたら、LED を消灯します。

このスクリプトを実行すると、指定した時刻になるまで現在時刻を取得し続けます。
そして、指定した時刻になるとボタンを押すまで LED が点灯し続けます。

58

サーバーから気象情報を取得しよう
気象情報サーバーから今後の天気のデータを取得して、天気を予報するプログラムを作成しましょう。

明日の天気は気象情報サーバー

晴れです。

天気のデータを取得

今回作成するプログラムでは、次のサービス（Open-Meteo）を使用します。

https://open-meteo.com/en/docs

このサービスは、誰でも無料で気象情報を調べることができる Web サービスです。
知りたい気象情報（気温や降水量、風速など）や地域を指定すると、自動で URL が作成されて、データを受け取ることができます。

59

気象情報を取得しよう
時刻以外の情報をサーバーから取得する場合は、取得したデータはの空欄に URL を入力して実行します。

に保存されます。

試しに、下の URL から日本（東京）の 1 週間の天気を取得してみましょう。
https://api.open-meteo.com/v1/forecast?latitude=35.6785&longitude=139.682&daily=weather_code&timezone=Asia%2FTokyo①の空欄に上記の URL をコピー＆ペーストしてメインユニットをサーバーに接続し、データを取得します。

※最初に SSID と PASS を入力して、Wi-Fi の設定をしてください。

②サーバーから保存したデータはそのままでは確認できないため、変数に保存して確認できるようにします。

変数「Response」を作成して、を挿入しましょう。

60スクリプトが実行されると、変数「Response」に以下の文章（テキストデータ）が保存されます。
このようなテキストデータの形式を「JSON（ジェイソン）」と呼びます。

この JSON データは内部で様々なグループにわかれています。
今回取得したデータを例にみると、変数「Response」の中にある ”daily” というグループに、”time”:[ ○○ ] という日付のデータと、”weather_code”:[ ○○ ] という日付ごとの天気のデータが区分けされています。

変数「Response」に保存された JSON データには、”daily” の他に、東京のタイムゾーンのデータ（”timezone”）や経度のデー
タ（”longitude”）など、天気以外のデータも含まれています。

Responsetimezone

longitude

daily
time

weather_code

これから作成するプログラムでは ”weather_code” のデータだけを使用するため、必要なデータだけを取り出して変数に保存し
ましょう。

61

③変数を作成して、JSON データから ”weather_code” のデータだけを取り出して保存します。
”weather_code” は ”daily” の中にあるため、一度 ”daily” のデータを取り出してから、”weather_code” を順番に取り出す必要があります。

Responsetimezone

longitude

daily
time

weather_code“daily” のデータを変数「daily」に保存

daily
time

weather_code“weather_code” のデータを変数「weather」に保存

weather
weather_code

そのため、”daily” を保存する変数「daily」と、”weather_code” を保存する変数「weather」を作成します。

”daily” を保存します” weather_code” を保存します

62

④取得したデータから必要な部分だけを選んで保存する場合は、を使います。

JSON には保存元となる JSON データの名前を、キーには保存したいデータのグループ名、または番号を入力します。

Response
daily
time

⑤

weather_code

を変数「daily」に保存します。

⑥同じように、変数「daily」に保存された JSON データから ”weather_code” のデータを変数「weather」に保存するスク
リプトを作成します。

63

⑦ ⑤、⑥のスクリプトを②のスクリプトの下につなげます。

このスクリプトを実行すると、変数「daily」に 1 週間の日付（”time”）と天気（”weather_code”）が、変数「weather」に 1 週間の天気 (“weather_code”) が保存されます。

64

Weather_code(ウェザーコード)の読み取り方
ウェザーコードとは、世界気象機関（WMO:World Meteorological Organization）が定めた天気の識別番号です。すべての天気を 0~99 の番号に分類することで、世界中の誰に対しても天気を正確に伝えることができます。
Open-Meteo では、天気のデータを以下のウェザーコードで分類してデータを提供しています。

ウェザーコードのおおまかな天気の目安は以下の通りです。
晴：0,1

曇り：2,3
雨：51,53,55,56,57,61,63,65,66,67,80,81,82

例で取得した 1 週間のウェザーコード「3,53,1,3,3,61,61」を晴、曇り、雨の 3 種類で分類すると、「曇り、雨、晴、曇り、曇り、雨、雨」になります。

65

手順⑦では、1 週間のウェザーコードをサーバーから取得して変数に保存することができました。
しかし、変数は 1 つのデータしか保存できないため、7 日間のウェザーコードが 1 つのデータのまとまりとして変数「weather」に保存されています。

このままでは、1 日ごとのウェザーコードをプログラムで使用することができません。
データを使用するためには、ウェザーコードを 1 日分ずつ取り出して、リストに保存する必要があります。

⑧ウェザーコードを 1 日分ずつ保存するために、リスト「weather」を作成します。

⑨データをリストの何番目に保存するかを指定するために、変数「i」を作成します。

⑩リスト「weather」に保存されているデータをすべて削除し、変数「i」を 0 にします。

⑪変数「weather」の０番目から順番に、リストに追加するスクリプトをつくります。
※ JSON データは左から順に 0 番目、1 番目、2 番目と数えます。

0

1

2

3

66

4

5

6

指定する JSON データを変数「weather」に、キーを変数「i」にして以下のブロックを実行すると、変数「weather」の「i」
番目のデータをリストに追加することができます。

例のとき、変数「weather」の 0 番目をリストに追加⑫今回は０～６番目までの７つのウェザーコードが保存されているため、⑦を実行した後に変数「i」に 1 を足すスクリプトを７回繰り返して、リストに 7 つのデータを追加します。

スクリプトを実行すると、変数「weather」に保存されていた 7 つのウェザーコードが、リスト「weather」に順番に追加さ
れます。

67

天気予報モニターを作成しよう
リスト「weather」に保存したデータを用いて、1 週間の天気を LED の光で知らせてくれるプログラムを作成します。
霧や雪など細かく区別して予報することも可能ですが、ここでは簡単に晴、曇り、雨の 3 種類で予報します。

晴

曇り

雨

①リスト「weather」の変数「i」番目に保存されている数値が「0」または「1」のときは赤色で点灯、「2」または「3」のときは白色で点灯、それ以外のときは青色で点灯させます。
また、LED の色を確認しやすくするために、点灯した後に一定時間待って消灯させます。

68

②関数「週間天気予報」を作成して、①を下につなげます。

③ p.67 で作成したスクリプトの「7 回繰り返す」の中に、定義「週間天気予報」をつなげます。

69

④スクリプトの最後にを実行して、Wi-Fi との接続を解除します。

スクリプトを実行すると、1 週間の天気予報を LED の光で知らせてくれます。

70

様々なデータを取得してみよう
p.70 のプログラムでは 1 週間の天気を取得しましたが、Open-Meteo では取得する日付と日数を変えたり、天気の他に湿度や気圧などを取得したりすることができます。
例として、現在の気温のデータを取得してみましょう。
① Open-Meteo にアクセスして「Current Weather」の「Temperature（2m）」に□をクリックして✓を入れます。
「Temperature（2m）」以外の不要な箇所に☑が入っているときは、☑をクリックして✓を外しましょう。

※最初の設定では、取得するデータの地域の座標 ( 緯度と経度 ) はドイツの座標に設定されています。
また、タイムゾーンはイギリスの標準時が設定されているため、取得したい地域の座標・タイムゾーンを設定します。
例）東京：緯度35.6895 、経度

139.691 、タイムゾーン

Asia/Tokyo（UTC+9）

座標は「Location and Time」の「Search」から地域名を入力して選択することでも設定できます。

71

②取得するデータを変更すると、URL も変更されています。
ページを下にスクロールし、新しく設定された URL をコピーしてに貼り付けましょう。

③ ②のスクリプトを実行すると、指定した地域における現在の気温データが、変数「Response」に保存されます。

72

今回取得した JSON データでは、”current” というグループに”time”( 時刻 )、”temperature_2m”( 気温 ) が区分けされています。

④変数「current」、「temp」を作成し、必要なデータだけを抽出して変数に保存しましょう。

取得するデータを変更することで、様々なデータを利用したプログラムを作成できます。
次のページでは、現在の気温データを用いたプログラムを紹介しています。

73

熱中症アラートを作成しよう取得した現在の気温データを利用して、熱中症アラートを作成しましょう。
気温が 30℃以上の場合に LED を赤く点灯させて警告します。

気温が高くなっています。
熱中症に気を付けましょう。

気象情報サーバー

気温のデータを取得

74

①関数「熱中症アラート」を作成します。
気温が 30℃を超える（変数「temp」が 30 より大きい）ときに LED を赤く点灯させます。
また、気温が 30℃以下（変数「temp」が 30 以下）の場合は LED を白く点灯させて区別しましょう。

気温が 30°を超えていたら、LED を赤く点灯させます。

気温が低いときは、LED を白色で点灯させます。

② ①で作成した関数を、p.67 で作成したプログラムの下に追加します。

サーバーからデータを取得している間は LED を黄色で点灯さ
せます。

75

タイムサーバー「ntp2.plala.or.jp」と気象情報サーバー（Open-Meteo）の 2 種類のサーバーから JSON データを取得するプ
ログラムを紹介しました。
これらのサーバー以外にも、地震や津波の速報を提供するサーバーや、テレビの番組表を提供するサーバーなど、JSON データを提供してくれるサーバーは数多く存在しています。
自分が欲しいデータによってサーバーを選択して、便利なプログラムを作成しましょう！

サーバーによっては、事前に会員登録したり、データの取得回数によってお金を支払ったりする必要があります。
必ず使用条件を確認してから利用しましょう。

基本セット 教員用
テキストに関するお問い合わせ

B095762K0424