教育図書プレゼンツ 新学習指導要領に対応

技術

プログラム言語分野

ワークシートですぐできる！

本書に掲載しましたプログラムの一部は，教育図書のWebサイトからダウンロードできます
https://www.kyoiku-tosho.co.jp から「なでしこプログラム」を選択願います。

C 教育図書○なでしこプログラミング_本紙.indd 1

2018/10/05 18:49

「どのようなプログラムをつくらせるか」から「どのような問題を解決させるか」へ－内容Ｄ⑵の題材検討の基本的な考え方－

文部科学省
初等中等教育局教育課程課

教科調査官

生涯学習政策局情報教育課

教科調査官

国立教育政策研究所
教育課程研究センター研究開発部

上野

教育課程調査官

耕史

今回の改訂において，従前はソフトウェアを用いて学習することの多かった「ディジタル作品の設計と制作」が，「ネットワークを利用した双方向性のあるコンテンツのプログラミングによる問題の解決」となった。そのため各学校等では現在，どのような題材を設定するか検討していただいていると思われる。
題材は，目指す資質・能力を育成できることが基本である。そのため，まず，内容Ｄの⑵で指導すべき，「知識及び技能」，「思考力，判断力，表現力等」及び，「学びに向かう力，人間性等」を解説等で確認する必要がある。その上で，指導学年や生徒のこれまでの学習経験なども踏まえて，目指す資質・能力を具体化し，それを育成するために，指導時間等にも配慮しつつ，「どのような生活や社会の中から見いだした問題を，情報通信ネットワークを利用した双方向性のあるコンテンツのプログラミングによって解決させるか」を検討することが重要である。
その際，解説に示された，「使用者の働きかけ（入力）によって，応答（出力）する機能をもつ」
及び，「一部の処理の過程にコンピュータ間の情報通信を含む」というコンテンツについての規定や，内容の取扱いに示された，「コンテンツに用いる各種メディアの基本的な特徴」及び，「個人情報の保護の必要性」について取りあげることといった指導内容についての規定を満足させるものとなる
ようにしなければならない。
加えて，例えば，「情報通信ネットワークの構成と，情報を利用するための基本的な仕組みの理解」
を深めるために，「どのようなコンピュータ間の情報通信が必要となる課題」を設定させるか，その課題の解決には「どのようなプログラミング言語や教材」が適しているかなど，目指す資質・能力を育成するという視点をもって題材を検討することも大切である。
各学校では題材について，「どのようなプログラムをつくらせるか」ではなく「どのような問題を解決させるか」といった視点で検討を進め，必要なプログラミング言語や教材等の準備を計画的に進めていただきたい。

なでしこプログラミング_本紙.indd 2

2018/10/05 18:49

1

新学習指導要領

コンテンツとネットワークを「なでしこ」で！

本冊子では，フリーのプログラミング言語「なでしこ」を利用した，技術分野の授業実践をご紹介します。実際に中学校で実践されている事例を参考にして，こんな授業ができるのではないか，こんな内容を学習できるのではないか，という授業イメージを広げていただきたいと思っています。
■日本語プログラミング言語「なでしこ」
この言語は，くじらはんど氏が開発している，フリーのプログラミング言語です。次のサンプルプログラムをご覧ください。
プログラムの例

実行画面
実行画面に
文字が表示
されます！

実行画面に
画像が表示
されます！

中学生にとって，プログラムが日本語なので，読み取りやすく，意味を理解しやすいことが最大のメリットです！

それは，授業で実践していても実感できます。他にも，授業で扱ってみて実感できるメリットには，次のようなものがあります。

◦文字や画像，音を手軽に扱うための命令が用意されている。
メディアの特徴や，メディアの複合について，学習しやすい！
◦ネットワークを通じた双方向のプログラムをつくることができる。
ネットワーク経由のプログラムを設計・制作して，問題を解決する学習を実践しやすい！
◦コンピュータ教室の「共有フォルダ」に置いて，生徒機で実行できる。
インストールを禁止されている学校でも，実践しやすい！
◦「プログラムって，カンタン！」と実感できるから，生徒が最後まで頑張れる。
日本語でプログラミングができるからわかりやすい！
もちろん，他にも様々なプログラム言語がありますし，学校ごとにコンピュータ学習の環境も異なります。でも「なでしこ」の授業では，生徒がプログラムを読めるので，全員があきらめない！
紹介したい！

その喜びをみなさんにごそこで本冊子では「なでしこ」を使った授業の準備と，授業用のワークシート例をまとめました。

ワークシートは，そのまま印刷して授業で使えるように留意しました。「新学習指導要領で，Ｄ⑵は何をすればいいか，分からない！」と悩んでいる先生方にとっても，他のプログラム言語で実践される先生方にとっても，
何か１つでもヒントになればいいな，と願っています。本冊子が，微力ながら先生方のお役に立てれば幸いです。

1

なでしこプログラミング_本紙.indd 1

2018/10/05 18:49

2

授業の準備 「なでしこ」のインストール

まず，「なでしこ」を実行できる環境を整えます。ネットワーク・プログラミングを実践するためには方法2のようにダウンロードする必要があります。（でも，インストールしなくてＯＫ！）

方法1

ブラウザ上で実行する

ブラウザソフトウェアを使って，パソコンでも，スマートフォンでも実行できます。（2018 年 7 月末現在）
アドレス欄に，URL を半角で https://nadesi.com/ と入力する。

v3 の 簡易エディタ をクリックするプログラムを入力して実行してみよう!

ネットワークを経由しないプログラムなら，
この方法で実行できます。

2

なでしこプログラミング_本紙.indd 2

2018/10/05 18:49

方法2

実行ファイルをダウンロードして利用する

ネットワークを経由したプログラミングを実践するためには，実行ファイルをダウンロードする必要があります。
（執筆時点では，Windows 版のみ可能。バージョンは 1.572 です。
）⑴ 上記サイトから「ダウンロード」をクリックして，「なでしこ v1（Windows 版）のダウンロード」という項目から「合い言葉」を入力して，「ZIP ファイル版」をダウンロードします。
⑵

ダウンロードした ZIP ファイルを，解凍します。
右クリック

⑶

解凍したフォルダを，コンピュータ教室の共有フォルダに移動します。

⑷ フォルダ内の「nakopad.exe」が，なでしこのエディタです。このファイルのショートカットを作り，生徒が実行できる場所に置きます。

生徒の個人フォルダに入れてショートカットの名前を変えると便利。

★実践している学校では，授業を準備するとき「なでしこ」でプログラムを作って，◇生徒一人ひとりのフォルダに，このショートカットをコピーする。
◇年度始めに，生徒名簿から個人フォルダを作る。
◇授業の前に，必要なファイルを生徒機に配る。
といった作業をしているようです。
「なでしこ」って，便利！

3

なでしこプログラミング_本紙.indd 3

2018/10/05 18:49

3 「なでしこ」で，メディアとコンテンツを学習しよう！
【ワークシート

課題①⑴

No.1】

学習日

月プログラム言語「なでしこ」を起動しよう！

なでしこエディタのアイコンをダブルクリックしよう。
アイコンの場所を書いておこう。→（

⑵

日

）

アプリが起動して，次のようなウィンドウが開いたかな？
上書き保存

プログラムを実行

プログラムを入力するエリア※［EOF］とは，End of Fileの略で，ファイルの末尾という意味です。

課題②⑶

プログラムを実行してみよう！

次のように入力してみよう。
｝」］む記号 」 は記号 ！ は⇒｛「記号 「 は ［ 。

をおしながら記号 。 は

＞。
. る

Shift

!
1ぬ

入力できた人は， 実行ボタン をクリックしよう。何が表示されるかな？
こんなふうに表示されたかな？

⑷

カギカッコ「…」の中を，好きな文字に変えて，実行してみよう！

例

覚えよう！

「

…

」と表示。

♯

メモを書こう

行末に「。
（句点）」を付けましょう。
「♯（シャープ）」より右側は，実行されないよ。
年

組

番 名前

4

なでしこプログラミング_本紙.indd 4

2018/10/05 18:49

【ワークシート⑸

No.2】

学習日

月日

次のように，プログラムを入力して，実行してみよう。どんな結果になるかな？
プログラム例

実行結果の例「命令」の説明
「

例

…

」と表示。

「 」内の文字を，実行画面に表示する。
「

①

…

」と言う。

ダイアログが出現して，「 」内の文字を表示する。
クジラが「

②

…

」と言う。

（なでしこのオマケ機能）
クジラの絵と吹き出しで「 」内の文字を表示する。

※他にライオン，ペンギンなどがいるよ。

｛｝（中カッコ）「 」の中で｛｝に囲まれた計算式は，その計算結果を表示する。
③※他にも，様々な計算ができるよ！

「

たず

…

」と尋ねる。

入力ボックスを表示する。
入力した内容（文字や数）を変数「それ」に代入する。
｛④｝「 」の中で｛｝に囲まれた変数は，その内容を表示する。

※別の変数を使っても，同じプログラムを
作れるよ。

実行結果は
同じだよ！

年

組

番 名前

5

なでしこプログラミング_本紙.indd 5

2018/10/05 18:49

【ワークシート

課題③⑴

No.3】

学習日

月日

メディアを使ってみよう！

画像ファイルと，音のファイルを，プログラムのファイルと同じフォルダ（自分のフォルダ）に入れておこう。

プログラムのファイルと画像や音などのファイルは同じフォルダに保存します。

DL

C 教育図書○※次の画像ファイルは，上記のフォルダに無いけれど，表示されます。

⑵

次のように，プログラムを入力して，実行してみよう。どんな結果になるかな？
プログラム例

実行結果の例「命令」の説明（「ピンポーン」と音が鳴ります！）⑤
半角で入力。

「（ファイル名）」を再生。
「 」で指定した音のファイルを再生します。
BEEP。

⑥

Windowsの警告音を鳴らします。

⑦

部品名 とはイメージ。

…実行画面に，画像を表示する部品を作ります。

部品名 の画像は「（ファイル名）」。

…その部品に（ファイル名）の画像を読み込みます。

部品名 を
（幅）（
，高さ）で画像比率変えずリサイズ。

…部品の幅と高さを指定して，その中に収まるように画像を表示します。

年

組

番 名前

6

なでしこプログラミング_本紙.indd 6

2018/10/05 18:49

【ワークシート⑶

No.4】

学習日

月日

次のように，プログラムを入力して，実行してみよう。どんな結果になるかな？
プログラム例

実行結果の例
X座標（0，0）（200，10）（0，200）⑧

絵１

絵２（200，200）

絵３

絵４

Y座標
部品名の画像は「（別の部品名）」。

同じ画像をもう一つ増やすことができます。

部品名の位置は「（X 座標），（Y 座標）」。 画像の位置を指定します。座標は半角数字。
部品名を画像ネガポジ。

画像の色を反転します。

部品名を画像右回転。

画像を時計回りに回転させます。

部品名に（数値）の画像モザイク。

画像をモザイク処理します。

★
「なでしこ」で座標を指定するとき，X座標とY座標は次のようになっています。

Y＝0
左上が（0，0）

100

200

X＝0

100

200

300

400

年

500

組

300
600

番 名前

7

なでしこプログラミング_本紙.indd 7

2018/10/05 18:49

【ワークシート

課題④

No.5】

学習日

月日

プログラムで，デジタル化の仕組みを調べよう！ その１

コンピュータは，全ての情報を数値化（デジタル化）して処理しています。プログラミングで，その仕組みを理解しましょう。
メニュー表示
左タブパネルと選び，チェックマーク□をつける。

このツールを使うと，デジタル化や
メディアの学習ができます！

⑴

多角形描画ツール★かいた図形を，プログラムに変換します。

色は番号でマウスでクリック

指定するよ！

して，多角形をかきます。

かいた図形の頂点の座標を表しているよ！

⑵

色番号の挿入ツール

選んだ色の番号を貼り付けてくれる！
色を選ぶと…

★同じことを，プログラムで試そう
塗り色は$FF0000。
「65，28，17，162，129，159」で多角形。

⑴や⑵のツールで作った

塗り色は$00FF00。
「65，39，21，66，40，126」で多角形。

組み合わせてみよう！

覚えよう！

プログラムをコンピュータは，全ての情報を数値化して，処理しているよ。

年

組

番 名前

8

なでしこプログラミング_本紙.indd 8

2018/10/05 18:49

【ワークシート

課題⑤⑶

No.6】

学習日

月日

プログラムで，デジタル化の仕組みを調べよう！ その２

キー番号の挿入ツール★同じことを，プログラムで試そう

押したキー
（文字）
の
文字コードを表示してくれる！

覚えよう！
⑷

文字の例＝
「A」
。
「 文字の例 の文字コードは ASC（文字の例）です。」と表示。
コードの例＝66。
「文字コードが コードの例 の文字は CHR（コードの例）
です。」
と表示。

コンピュータは，文字の情報を文字コードで処理しているよ。

次のプログラムを実行して，画像を処理する仕組みを調べよう。

DL

C 教育図書
○元データ＝「
00011000
00100100
01000010
11111111
10000001
10000001
10000001」。
元データを表示。

それぞれのマスに，0番の色（白色）
か，1番の色（黒色）を当てはめていきます。

元データを反復。
対象の「0」を「□」に置換。
それの「1」を「■」に置換。
それを表示。

覚えよう！
⑸

コンピュータは，画像をマス目に区切り，それぞれ色の番号で覚えているよ。
マス目の数をピクセルという単位で数えているよ。

デジタル化（＝数値化）すると，どんなプラス面があるかな？

覚えよう！
DL

C 教育図書
○P［0］～P［9］に，値を代入します。

座標
（65，
39）
→
（21，
66）
→
（40，
126）
→
（95，
127）
→
（111，
66）
→
（65，
39）
の順に線を結びます。

年

組

情報をデジタル化（数値化）
していると，
計算しやすいので，
画像の拡大・縮小・変形がカンタンにで
きるよ！

番 名前

9

なでしこプログラミング_本紙.indd 9

2018/10/05 18:49

【ワークシート

課題⑥⑴

No.7】

学習日

月日

プログラムで，ネットワークの仕組みを調べよう！

次のプログラムを実行して，ネットワークの仕組みを調べよう。

＃①
IP＝IPアドレス取得。
「私のIPアドレスは IP 」と表示。

①

あなたのパソコンのIPアドレスは？
（

②

＃②

www.nier.go.jpのIPアドレスは？
）（

Y＝「www.nier.go.jp」。
YIP＝YのIPアドレス取得。

）③

192.218.1.7のホスト名は？
（「 Y のIPアドレスは YIP 」と表示。

）＃③
H＝「192.218.1.7」。
HS＝Hのホスト名取得。
「 H のホスト名は HS 」と表示。

⑵

次のプログラムを実行して，ネットワークの仕組みを調べよう。

URL＝「https://www.kyoiku-tosho.co.jp/」。
ページ＝URLからHTTPデータ取得。
ページを表示。

覚えよう！

ブラウザで表示するのと，何が違ったかな？

・コンピュータ同士で情報をやりとりする仕組みを
（④

）という。

・ネットワークでは，コンピュータの場所を（⑤）で調べる。

・私たちはIPアドレスを使わず（⑥）
を使って情報の場所を指定する。

・Webページの情報は
（⑦
）
という約束
（⑧
）
に従って，文字の情報で取り寄せている。それをブラウザソフトウェアが読み取って，
画像を読み込んだりして，見やすく変換している。
⑶ 次のプログラムを実行して，情報セキュリティの仕組みを調べよう。
情報セキュリティの仕組み
S1＝「AbCdEz」。

＃送りたい文章

Z＝2。

＃暗号化するキー※他にも，SをKEYでBLOWFISH暗号化
SをSALTでCRYPT暗号化

S2＝S1をZで簡易暗号化。
「 S1 を暗号化すると S2 になります」と表示。
＃この暗号は，元に戻すことができます。

SをKEYでAES暗号化という命令があります。これらは不可逆的な暗号なので，元に戻す（復号する）
ことができません。

S3＝S2をZで簡易暗号化解除。
「 S2 を暗号化解除すると S3 になります」
と表示。

覚えよう！

・コンピュータは，ネットワークで情報をやりとりするときに，その情報を読み取られても内容を解読されないように情報を暗号化して送受信している。

年

組

番 名前

10

なでしこプログラミング_本紙.indd 10

2018/10/05 18:49

【ワークシート

No.8】

学習日

月日

課題⑦ 「順次」「反復」「分岐」で動作させよう！
コンピュータは「順次」「反復」「分岐」を組み合わせて動作します。その仕組みを理解しましょう。
⑴

次のように，プログラムを入力して，実行してみよう。どんな結果になるかな？
①

②

覚えよう！

このような処理を覚えよう！

（①と呼びます。
⑵

処理）

このような処理を（②と呼びます。

処理）

次のように，プログラムを入力して，実行してみよう。どんな結果になるかな？

覚えよう！

このような処理を（③処理）と呼びます。

プログラムを読み解いてみよう！

★うまく動作したら，プログラムを保存しておこう。

課題⑧⑶

数当てゲームを作ってみよう！

次のように，プログラムを入力して，実行してみよう。どんな結果になるかな？

DL

C 教育図書○ファイル名は半角で「pinpon.wav」
だよ！

ファイル名は半角で「bubu.wav」
だよ！

おもしろーい！
プログラムを読むと仕組みもわかる！

★うまく動作したら，プログラムを保存しておこう。
★これまでに学習したことを使って，プログラムを改良してみよう！

年

組

番 名前

11

なでしこプログラミング_本紙.indd 11

2018/10/05 18:49

4 「なでしこ」でネットワーク・プログラミング！
なでしこには，TCP/IP を利用して，情報（主に文字の情報）をやりとりする命令があります。これを利用して，ネットワークの仕組みを理解する学習を実践できます。また，新学習指導要領にある「ネットワークを利用した双方向性のあるコンテンツのプログラミング」を実践できます。
■内容Ｄ⑵で想定されている学習活動とは？
新学習指導要領における内容Ｄ⑵では，次のように規定されています。
学習指導要領⑵

内容D（2)

補足説明

生活や社会における問題を，ネットワークを利用した双方向性 のある

入力に応じて応答すること
ネットワークで通信することコンテンツ のプログラミングによってデジタル化された文字，音声，
静止画，動画などを意味のある情報として表現したもの

解決する活動を通して，
次の事項を身に付けることができるようにする。
コンテンツやネットワークのア

情報通信ネットワークの構成と，プログラミングと問題解決を

情報を利用するための基本的な仕組みを 理解し ，通して，科学的に理解する

安全・適切なプログラムの制作，動作の確認及びデバッグ等が できる こと。

イコンテンツやネットワークのプログラミングと問題解決を通して，技能を習得する技術による問題の解決を，問題を見いだして課題を設定し，使用するメディアを複合する方法と①問題の発見と課題の設定

その効果的な利用方法等を構想して②解決策＝プログラムの設計

情報処理の手順を具体化するとともに，④プログラミング（＝制作）

制作の過程や結果の評価，改善及び修正について考える③設計をUML図等にかき表すこと。

制作中のデバッグや修正⑤設計の修正，制作のふり返りという流れで進める。

すると，D ⑵のプログラミングを通して育てたい資質・能力は，次のように整理できます。
○ネットワークの仕組みや，デジタル化の仕組み，情報を処理する仕組みなどを理解する。
○プログラムを制作する技能（ネットワークを通じて情報を送受信する技能，プログラミングによってメディアを複合・活用する技能）や，動作を確認する技能，デバッグ（エラーを見つけて修正する）の技能など，
プログラミングで問題を解決するための技能を習得する。
○プログラミングを利用して，問題を解決する力（設計，制作，修正する力）を身に付ける。
12

なでしこプログラミング_本紙.indd 12

2018/10/05 18:49

■「なでしこ」では，何ができるのか？
「なでしこ」のサンプルプログラムに，TCP/IP を利用したチャットの例があります。これを，授業向けに改良することにしました。なでしこでは，文字情報の送信・受信ができます。
★TCP/IPを利用したチャット・サーバーのプログラム
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

＃KT中チャット サーバー側＃---------------------------------------------------------------------＃ネットワークプラグインを利用！「nakonet.nako」を取り込む＃--------------------------------------------------------------------アドレス＝IPアドレス取得。
＃GUIの作成
母艦のテキストは「TCPチャットサーバー： アドレス 」
ログメモとはメモ。
そのレイアウトは「全体」。
そのテキストは「チャットサーバーを起動しました。
チャットクライアントで接続してきてください。」

DL

C 教育図書○サーバーのウィンドウを作ります。

＃サーバーの生成サーバーとはTCPサーバー。
サーバーのポートは10001＃適当な番号
サーバーの接続した時は～
Sは「● サーバーの相手IP が接続 改行 」
ログメモは、「 S ログメモ 」
Sを、サーバーで全送信

生徒機が「接続」したら，相手のIPアドレスを，全員に送信します。

サーバーの切断した時は～
Sは「○ サーバーの相手IP が切断 改行 」
ログメモは、「 S ログメモ 」
Sを、サーバーで全送信
サーバーの受信した時は～
Sはトリム（サーバーの受信データ）＆改行
ログメモは、「 S ログメモ 」
Sを、サーバーで全送信

生徒機からメッセージ（文字情報）が届いたら，それを全員に送信します。

サーバーのエラー時は～
ログメモは「●●● サーバーのエラーメッセージ
改行 ログメモ 」
サーバーを開始。

■先生機で「サーバー」を起動して，生徒機で「クライアント」を改良する
次ページからの実践を進めるにあたっては，おおむね次の手順で準備と授業を進めます。
①先生機で「チャット・サーバー」のプログラムを実行②生徒機用の「クライアント」のプログラムを配布◇先生機のIPアドレスを，プログラムに入力。
〔ワークシート No.9〕◇「クライアント」のプログラムを，生徒の個
人フォルダに配布しておく。
③生徒機で「クライアント」を実行◇主な動作を，プログラムから読み取る。
◇サーバーとクライアントの関係を理解させる。
メールやSNSも同じ仕組みと理解させたい。
④改善したい問題を考えて，プログラムを改良する。
◇まず，何を改善したいのか（生徒一人ひとりの課題）を明確にしておく。
◇その問題が起こる原因を「なぜ？」「どうして？」と考えさせ，改善策を設計させる。 〔ワークシート No.10〕◇初めは，授業者が用意した「課題」を解決させてトレーニングしてもよい。
13

なでしこプログラミング_本紙.indd 13

2018/10/05 18:49

【ワークシート

No.9】

学習日

月日

課題⑨ 「KT 中チャット」で，ネットワークの仕組みを理解しよう！
⑴

先生から生徒用のプログラムを受け取って実行しよう。みんなで一緒に使ってみよう。
チャットとは，SNSのグループトークのようなものだよ。

⑵

チャットのプログラムを読み解いて，仕組みを理解しよう。
（他の生徒機にも送信）
先生機（チャット・サーバー）①
あなたの名前を
入力する

②
サーバーに
接続する

③
サーバーに
発言を送信する④
サーバーから
発言を受信する

→
（

→（

→（

→（

行目）

行目）

★上の①～④の処理はどこにあるかな？
DL

C 教育図書
○

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

発言エディタとはエディタ。
そのWは480。
そのキータイピング時は～＃◆1もし、発言エディタの押されたキーがCHR（13）ならば
S＝「 発言者 の発言： 発言エディタ 改行 」。
Sをクライアントで送信。
発言エディタは「」。
＃◆2
絵とはイメージ。
絵の画像は「nadesiko.png」。
絵を160，80で画像比率変えずリサイズ。
絵の可視はオン。

先生からIPアドレスを教えてもらおう。

先生機IP＝「***.**.**.**」。
生徒機名＝コンピュータ名取得。
＃生徒側の様々な処理
クライアントとはTCPクライアント。
クライアントのポートは10001。
クライアントのホストは先生機IP。
＃◆3

行目）

次のプログラムから探してみよう！

！「nakonet.nako」を取り込む
母艦のテキストは「KT中チャット」。
発言者とは文字列。

ログメモとはメモ。
そのWは480。
そのHは240。

行目）

サーバーから
切断する

35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

クライアントの接続した時は～
Sは「■接続しました。改行 」。
ログメモは、「 S ログメモ 」。
＃◆4
クライアントの受信した時は～
Sはトリム（クライアントで受信）
ログメモは、「 S 改行 ログメモ 」。
絵の画像は「kujira.png」。
絵を160，80で画像比率変えずリサイズ。
＃◆5
クライアントの切断した時は～
Sは「○ サーバーの相手IP が切断 改行 」。
ログメモは，「 S ログメモ 」。
＃◆6
クライアントのエラー時は～
ログメモは「●●● クライアントのエラーメッセージ
改行 ログメモ 」。
＃◆7
＃接続処理
ダイアログ初期値は「」。
発言者＝「チャットで使う名前を入力してください。
」と尋ねる。
もし、発言者が空ならば、終わり。
発言者＝「 生徒機名（ 発言者 ）」。
母艦のテキストは「KT中チャット【 発言者 】」
クライアントで接続。

※このプログラムは，
なでしこのサンプルに含まれるものを改良したものです。
年

組

番 名前

14

なでしこプログラミング_本紙.indd 14

2018/10/05 18:49

【ワークシート

No.10】

学習日

月日

課題⑩ 「KT 中チャット」の問題点を改良しよう！
⑶

次の問題（困ったこと）を，プログラムを改良して解決してみよう。
※改良案は，「音を使う」「画像を使う」「動作の手順を変える」など。
※「メッセージを変える」だけでは，プログラムを設計する学習にはならないので，ダメ。
※これまでに学習した命令を使ってみよう。

困ったこと（１）

困ったこと（２）

困ったこと（３）みんなの発言を受信したときに，着信音が鳴ると分かりやす
いな。

せっかく画像が表示されているから，これが変化すると（回転する，色が変わる，別の絵に変わる等），より使いやすくな
るかな。

（あなたが感じたことを書こう）

プログラムを加えたり，改良したりしてみよう！ 以前のプリントにヒントがあるよ！
★あなたが加えた・改良したプログラムを，下に書いておこう。
「＃◆１」～「＃◆７」の，どの位置に処理を加えるとよいかな？
＃◆

の位置

＃◆

の位置

（１）
のために加えたプログラム（２）のために加えたり，改良したりしたプログラム（３）のために改良したプログラム（どの位置に何を足したか，どの位置をどう改良したか）

年

組

番 名前

15

なでしこプログラミング_本紙.indd 15

2018/10/05 18:49

5

さらに授業を深めるために…

■チャットが「荒れる」！→これを利用して，情報モラルやセキュリティの学習を！
チャットの授業を実践すると，どのクラスでも必ず「荒れる」場面があります。このプログラムは，最低限の機能しかありませんから，一部の生徒の悪意がそのまま全員に届きます。度が過ぎれば，授業者がそれを指導す
ることも必要になります。
しかし，これを利用して，「なぜ，こうやって荒れてしまうのだろう？」と投げかけることで，情報モラルの学習や，情報セキュリティの学習につなげることができます。
先

生：うーん，ちょっと荒れてきたね。
あれ？ この子は他人の名前を語っているね。
『なりすまし』かな？

生徒１：しかも，ウソの内容を書いているよ！
生徒２：やだ，もう！

じゃましないで！

生徒３：今度は，無言がたくさん！

もうやめてよ！

生徒４：これじゃあ，自分が考えたプログラムを試せないよ…。
先生：なぜ，こうやって荒れてしまうのだろう？

生徒１：コンピュータはデジタル情報で，誰が書いたかすぐに分からないからかなあ。
生徒２：自分が送った情報が瞬時に届くでしょう？

すぐに反応がほしいだけだよ。

生徒３：クライアントが送った内容を，サーバーが何もチェックしていないからじゃない？
生徒４：でも，サーバーが勝手に情報を書き換えると，新聞でも問題になっているよ…。
先生：じゃあ，この問題をどうやって解決したらいいかな？

生徒５：SNS では，どういうプログラムになっているのだろう…？
■中学生では「情報を送受信する」だけでよいのでは？ 「データを保存する」のは高校で！
授業実践では，チャットに対する，生徒と大人との「感覚のずれ」を感じました。

◦生徒は，このチャットでも，SNS と同様に後で内容を読めると思った。
それならば，サーバーやクライアントに，送信・受信したデータが保存されているはず。
◦しかし，ここで扱うチャットは，送信・受信したデータを画面に表示するが，保存していない。
プログラムを実行してからメッセージが届く。
生徒がクライアントのプログラムを実行する前のメッセージは，自分の画面に表示されない。
もし，生徒の感覚に合わせて「後で内容を読める機能を加えたい」と考えて，データをファイルに保存する処理を作ろうとすれば，ファイルを開く，データを追記する，ファイルの内容を表示する…等の複雑な処理を，授業で扱うことになります。文字列の処理についても，複雑なことが要求されるでしょう。しかし，それは現実的ではないように感じます。
中学生では「（文字の）情報を送信・受信する」ことに限定して学習し，ファイル処理等の複雑なプログラミ
ングは高校（特に専門高校）に委ねてもよいのではないかと考えました。その方が，新学習指導要領のねらいを確実に達成できると思ったからです。

16

なでしこプログラミング_本紙.indd 16

2018/10/05 18:49

■画像や音などのメディアは，どうやって送信する…？
今回のサーバーとクライアントでは，「文字の情報」をやりとりすることができます。文字列の処理についてもう少し学習すれば，やりとりする文字情報の約束ごと（フォーマット）をクラスで統一して，チャット以外のシステムを作れそうです。例えば「学校クイズサーバー」とか，「学校の便利帳検索システム」など，
文字のやりとりだけならば，中学生でも考えられそうですし，サーバー側のプロ
グラムも大きく改良せずに済みそうです。
しかし，画像や音などメディアのファイルをやりとりするには，工夫が必要です。「なでしこ」で TCP/IP を利用する命令を使うときは，メディアのファイルを一度「文字列」に変換して送信し，受信した文字列を「メディアのファイル」に変換する必要があります（下図）。これをうまく教材化すれば，デジタル情報の処理や，ネッ
トワークの仕組みの理解が深まる，面白い学習になりそうです！

エンコード処理

変換したファイル

メディアのファイル
traﬃc-S.jpg

traﬃc-S.txt

デコード処理変換したファイル（文字の情報）を，今回のチャット・サーバー経由でやりとりしようとすると，データの量が多いためうまくいきません。さらに，大量のデー
タを全てのクライアントに「全送信」したらどうなるか…。
そこでチャットではなく，別の通信プログラムを作って，生徒同士が１対１で送信・受信できるようにする方法が考えられます。また，クライアントから「◯番の画像がほしい」とサーバーへ要求して，サーバーが該当する文字情報を送信する。それをクライアントが受信して画像に戻して表示する，というプログラムも考えられそうです。
画像ファイルを使わなくても，かんたんな図形（多角形）ならば，クライアントから座標の値を送信して，p. ８にある命令を使って図形（多角形）を描画する方法も考えられます。
■「なでしこ」では，文字を軸にして，メディア，コンテンツ，ネットワークを学習したい！
いずれにしても，「なでしこ」を使って，コンテンツやネットワークのプログラミングをする場合は，文字の情報を送信・受信する学習を軸にして，どんなデータをやりとりするか，そのデータを使ってクライアント側のアプリでどんな処理ができるか，と考えれば，生徒が自分の力でプログラミングできると思います。

17

なでしこプログラミング_本紙.indd 17

2018/10/05 18:49

6

新しい題材の開発に向けて■「題材」とは「つくるプログラム」ではなく「生徒を育てる授業づくり」のこと
本冊子では，「なでしこ」をご紹介しましたが，他にも様々なプログラミング言語がありますし，学校や市区町村によって環境が異なります。授業者の先生方の得意や好みもあるでしょう。しかし，その言語でできる作品（＝プログラム）づくりだけに注目してしまうと，学習指導要領改訂の趣旨に合いません。今回の改訂は，作品をつくるだけで終わらず，その実習を通して，生活上の問題を自分の力で解決できる生徒を育てよう，そのために「技術の基礎」を身に付け，自分で「設計・計画して製作・制作・育成できる」力を身に付けようという大きなねらいがあります。
■「困ったこと」「便利にしたいこと」のうち「プログラムで解決」できそうなこと
そこで，生活や社会にある「困ったこと」や「もっと便利にしたいこと」のうち，「生徒がプログラムをつくって解決できそうなこと」を題材のテーマにすると，問題解決的な学習を展開しやすくなります。「なでしこ」を使って問題解決に取り組む題材を考えてみると…。

題材例１：チャットのプログラムを，より安全で使いやすくするために，メディアを使ったり，送受信するデータを処理したりして，改良できないか？（これは本冊子の例です）
題材例２：災害があったとき，ネットワークを使えると便利だなと思うことを見つけよう。
」「引渡し訓練の時に，どのクラスで，誰が，あと何人が残っているのか把握したいな。
少し簡略化して，各クラスの残り人数だけ数えて表示するプログラムを考えてみよう。
「みんなが無事かどうか，スマホで学校に知らせておけると安心だよね」
スマホではリアルすぎて難しいから，ＰＣ教室のコンピュータでできる範囲で，無事かどうかが一目で分かるプログラムを考えてみよう
こんなふうに「文字の送受信」で解決できそうな問題を見つけて，「授業だから簡略化（モデル化）した作品を考えてみよう」と投げかけることにすれば，先生方も「なでしこ」を使った題材のアイディアが広がりそうです。別の言語でもよければ，題材のアイディアはもっと広がります。
◯どんな状況で「問題解決」を経験させようかな。
◯どこまでなら，生徒が自分でプログラムを考えて解決できそうかな。
◯この程度までは，全員ができるようになってほしいな。
◯じゃあ今回の授業はここまでを共通にして，ここから先を考えさせるようにしようかな。
など，生徒が授業の中で「問題を解決するためのプログラムを頑張って考える」姿を思い浮かべながら指導計画を考えたり，プログラミング言語を選択したりできると理想的です。本来の「題材づくり」とは，このように「生徒を育てる授業づくり」を考えることだと思います。
■どんなプログラミング環境でも，「技術の魅力」を伝え，生徒の「問題解決力」を育てよう！
新学習指導要領の全面実施まであと数年。その間に，新しいプログラミング環境が開発されることが期待されます。もちろん「なでしこ」もバージョンアップするでしょう。全面実施の年に，どのプログラミング環境を選んだとしても，生徒たちが「小学校とは違うプログラミングの授業」を受け，「技術って面白い！」「自分でもっと作ってみたい！」と技術の真の魅力を感じて，自分でプログラミングして問題を解決する力を育てたい！
その準備は，まだ始まったばかり。本冊子が，一人でも多くの生徒の笑顔のために，先生方の題材研究のために，少しでもお役に立てれば幸いです。みなさん，一緒に頑張りましょう！

18

なでしこプログラミング_本紙.indd 18

2018/10/05 18:49

オマケ

授業の準備に使えるプログラム集

あらかじめ用意しておきます。（下の①②の説明を参照）※①②のプログラムと同じフォルダに保存しておきます。
下の①，②のプログラムです！
① 生徒名簿（ＣＳＶファイル）から個人フォルダを作り，その中に「なでしこ」のショートカットを作成する
プログラム
生徒名簿 .csv の例

DL

2101 徳川家康
2102 豊臣秀吉
2103 織田信長

C 教育図書○…

フォルダを作成しておく。
各校の環境に合わせて修正。

※メモ帳や表計算ソフト等
で準備します。

フォルダ選択のダイアログで選びます。

★実行結果

CSVファイルから読みこんだ生徒リスト
CSVファイルを１行ずつ読みこむ。
読みこんだ生徒名のフォルダを作る。

②

生徒の個人フォルダに，指定したファイルを配付（コピー）するプログラム

DL

コピー先のファイル名をC 教育図書○KT中チャット －あらかじめ用意したフォルダ①で作られたフォルダ.nako とする

変数
生徒一人ひとりの変数「新ファイル名 フォルダ名が「新ファイル名
前半」
自動的にあてはめられる。 後半」
画面の設定によりnakoは表示されない場合がありま
す。

★実行結果

19

なでしこプログラミング_本紙.indd 19

2018/10/05 18:49

日本語プログラミング言語「なでしこ」開発のきっかけと，今後
くじらはんど代表プログラマー

クジラ飛行机（酒徳峰章）

連日会社に泊まり込むこともありました。当時は，さまざまなプログラミング言語やツールを使って自動処理を実現していました。しかし，自分のパソコ
ン内の環境だけでなく，社内外にある複数のパソコンで作業を行う必要もあったため，そうした多様なツールをインストールするのは大変で，現実的ではありませんでした。そこで，可搬性の高い自作のプ『なでしこで誰でも簡単プログラマー』

ログラミング言語の開発を始めようと思い立ちました。
その際，自分だけが使える，自分一人のためのツー

本職のプログラマーでなくても，日本語でプログ

ルにはしたくありませんでした。というのも，私がラミングが組めたらいいなぁという思いから，こん自動化したさまざまな業務を，自分以外の同僚たちな標語を掲げて，プログラミング言語を開発しましが引き継いだ時に，「よく分からないプログラムをた。そもそも，私が「日本語プログラミング言語」

手順に従って実行するだけ」という状態にしたくあの開発を始めたのは，2001 年のことでした。

りませんでした。できれば，継続して，より効率的にプログラムを改良してもらえたらという希望があ

開発背景りました。それで，できるだけプログラムが，読みやすく，誰にでも分かりやすいものにしたいと思い「なでしこ」の開発は，2004 年の情報処理推進ました。本職のプログラマーでなくても，どんな処機構（IPA）による未踏プロジェクトの支援を受け理が行われているかプログラムを読むことのできる

始まりました。しかし，私が日本語プログラミングものにしたかったのです。それで，思いついたのが，言語の開発をはじめたのは，2001 年に一般公開し母国語で処理を記述する「日本語プログラミング言た「ひまわり」という言語からです。当時，私は，語」でした。

不動産関連会社で SE をしており，事務や雑用に翻弄されていました。仕事内容は，不動産の物件管理

なでしこの誕生から，顧客名簿の管理，営業支援のためのツールや，経理の自動化など，さまざまでした。忙しいながらこのような経緯でプログラミング言語「ひまわり」

も，やりがいのある仕事で，頻繁に残業をしており，を開発し，2001 年より一般公開しました。すると，

20

なでしこプログラミング_本紙.indd 20

2018/10/05 18:49

多くの方から好意的な意見や感想をいただきましら，なでしこは，業務の自動化が得意です。例えば，

た。それで，日本語プログラミング言語という方針

Word と Excel の自動化処理ができます。日本の多は間違っていなかったと思いました。

くの現場では，今でもマイクロソフトの Word と

しかしながら，仕事の合間に時間を見つけて適当

Excel が多く利用されています。なでしこを使うと，に作っていた「ひまわり」は，すぐに機能の拡張が集計用に作った一覧表を元に個別の請求書を印刷す難しくなってしまいました。そこで，2004 年より，

るなど，ほんの数行で記述できます。

後継言語となる「なでしこ」の開発に取りかかりました。なでしこの開発では，ひまわりを公開したこ

今後も「日本語」に注力とで得た知見を大いに活かすことができました。拡
張性や実行効率を考慮したのは当然ですが，より自とにかく，なでしこの魅力は私たちの母国語であ然な日本語に見えるような仕組みを考案し，プログる「日本語で記述できる」という部分です。なでしラミング言語の文法を練りに練りました。

このユーザーさんから「他のプログラミング言語は難しくよく分からなかったのに，なでしこから始め

オープンソースで安定した開発

たらプログラミングが分かるようになった」という声を聞きます。これは，英語ベースのプログラミン

ちなみに，なでしこの開発は，当初より，オープ

グ言語に対する拒否反応を抑えることができている

ンソースの形態で行うことにしました。便利なツーという点に加えて，やはり，母国語を使って学習す

ルをより多くの人に安心して使ってもらいたいといるなら，心にすっと入りやすいという点を挙げるこう気持ちがあったからです。オープンソースなので，とができます。これは，大きなメリットです。

誰でも開発に参加できます。これまで，たくさんのプログラミング言語は，一つ覚えてしまえば，別開発者が開発に参加してくれました。2004 年の公のプログラミング言語を学ぶのはそれほど大変では

開以来，オープンな形で安定した開発が行われていありません。プログラミングに必要な論理的な思考ます。

能力を身につけたなら，より複雑な他の言語の習得も容易です。

なでしこの得意分野

今後も，この日本語に注目して，分かりやすく誰でも楽しく学べる日本語プログラミング言語を開発

なお，業務の自動化を目標に開発されていますか

していきたいと思っています。

なでしこの Web サイト https://nadesi.com

Word/Excel をはじめ，日本語でアプリ操作の自動化が記述可能

21

なでしこプログラミング_本紙.indd 21

2018/10/05 18:49

CONTENTS「どのようなプログラムをつくらせるか」から「どのような問題を解決させるか」へ ・・・・・・・・・・ ①
1

新学習指導要領コンテンツとネットワークを「なでしこ」で！・・・・・・・・・・・・ p. 1

2

授業の準備 「なでしこ」のインストール・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ p.2

3「なでしこ」で，メディアとコンテンツを学習しよう！・・・・・・・・・・・・・・・・・・・・・・・ p.4
ワークシートNo.１～No.８「なでしこ」でネットワーク・プログラミング！・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ p.12

4

ワークシートNo.9～No.10

5さらに授業を深めるために… ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ p.16

6

新しい題材の開発に向けて ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ p.18

オマケ

授業の準備に使えるプログラム集 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ p.19

日本語プログラミング言語「なでしこ」開発のきっかけと，今後 ・・・・・・・・・・・・・ p.20
なでしこ URL

ワークシートの解答

https://nadesi.com/

本書のプログラムの無断転載を禁じます。また，本書のプログラムは，すべての環境における動作を保証するものではありません。ご了承のほどお願いします。

p.10 ①各自 ②192.218.1.7 ③www.nier.go.jp④ネットワーク ⑤IPアドレス ⑥URL ⑦TCP/IP⑧プロトコル

p.11 ①順次 ②反復 ③分岐
p.14 ①59
②63
③12
④40

執筆

尾﨑 誠（厚木市立荻野中学校）（くじらはんど代表プログラマー）
クジラ飛行机（酒徳峰章）
協力

上野耕史（文部科学省・国立教育政策研究所）〒101‐0052

東京都千代田区神田小川町3‐3‐2
TEL.03‐3233‐9100（代） FAX.03‐3233‐9104
URL：https://www.kyoiku-tosho.co.jp

なでしこプログラミング_本紙.indd 22

2018/10/05 18:49