ICT・Educationバックナンバー
ICT・EducationNo.38 > p14〜p17

教育実践例
情報Bにおけるアルゴリズム指導
−普通科高校とプログラミングー
栃木県立鹿沼東高等学校 山崎 貴史
yamazaki-t02@tochigi-edu.ed.jp
1.はじめに
 鹿沼市は栃木県のほぼ中央部に位置し,人口10万人の自然環境豊かな田園都市である。市の東部の丘陵に設立された本校は,今年で創立25周年を迎える活気あふれる学校である。創立当初より「普通科における情報教育」の推進校として,プログラミング教育やCAIを活用した教科教育を実践してきた。今日では,4年制大学への進学が9割,部活動への加入が8割を超え,地域から嘱望される進学校を目指して躍進している。
2.本校の情報教育
 情報教育の研究拠点として取り組んできた背景から,普通教科「情報」では,アルゴリズムやプログラミング領域のある「情報B」を採択し,平成15年度より1年次に2単位実施している。また,専門教科「情報と表現」を3年選択者に2単位実施している。低年次に2単位確保していることは,教科の目標を達成する上でも理想的であるといえる。
3.情報Bの指導計画
 授業ではさまざまなテーマの実習を計画し,実施している。

学習の内容
4

5

6

7
・タイピング練習
・コンピュータによる表現
(自己紹介)
・情報のディジタル化
(成績管理表作成)
・コンピュータの仕組み
(レポート作成)
【レポート データ提出】
8

9

10

11

12
・アルゴリズム
・表計算ソフトの活用
・Excel VBAプログラミング
(基本3構造,探索,ソート)
・モデル化の方法
・シミュレーション(預金)
・総合実習1(職業と進路)
・著作権とモラル
【作品 データ提出】
1

2

3
総合実習2
(数学とコンピュータ)
・順列/組合/確率の演習
・入試問題に挑戦
・情報通信とセキュリティ
▲図1 情報Bシラバス(抜粋)

 1学期では,操作説明中心の授業は避けて,生徒自身が与えられた課題を解決するためにワープロ,表計算,プレゼンテーションソフトを適宜使用することで,自然に修練していくことをねらいとした実習を実施している。入学当初は大きく感じるスキルの差も,次第に小さくなっていくのが興味深い。
 2学期では,アルゴリズムとプログラミング実習が主である。これらの詳細については後述したい。
 3学期では,情報モラルとセキュリティ実習に加えて,Excel上で動作する教科学習を支援するシステム(本校齋藤成美教諭と共同開発)を利用して総合実習を行っている。

図2 システムメニュー(センター数学)
▲図2 システムメニュー(センター数学)

 出題している問題は著作権の関係で掲載することはできないが,学習履歴が残ること,自分のペースで学習できることから,生徒は熱心に取り組んでいる。本システムの詳細については,機会があれば紹介したい。
4.指導の工夫
 情報教育の一つの柱ともいえるアルゴリズムとプログラミング領域において,できるだけ実習を通して生徒が体験的に理解することを目標に工夫をしてみた。

(1)導入
 JIS規格におけるアルゴリズムとは,次のように定義されている(JIS X 0001 01.05.05)。
 『問題を解くためのものであって,明確に定義され,順序づけられた有限個の規則からなる集合』「まあ,簡単に言えば処理手順のことだ」と,まとめたくなるのをグッとこらえ,生徒の言葉で表現させるために「ピタゴラスイッチ(NHK教育)」というTV番組の映像「アルゴリズム行進」を見ながら,アルゴリズムの良さや必要性についてまとめさせた。
 この行進の映像は,是非TV番組をご覧いただきたい。

<生徒の反応>
・1つ1つに意味があり,それらがつながって成り立っていた。
・どうでもいい一連の動きがたくさんの人でやってもぶつからないとは…。一人でも違うことしたらダメだけど。
・順序よくやらないと全体のバランスがとれない。順序が大切だ。
・何かをやりとげる計画をたてるにはもってこいだと思う。生活にも役立ちそうな授業だった。
・時には逆から考えることが必要だと思った。

<考察>
 平易な単語で,稚拙な表現もあるが,アルゴリズムの良さや必要性が,生徒なりにある程度理解できているようだ。導入段階としては及第点ではないだろうか。

(2)流れ図の徹底
 導入段階では,アルゴリズムの概念の理解や文章による表現にとどめたが,さまざまな課題解決のアルゴリズムを表現するのは,文章ではやはり限界がある。
 そこで,アルゴリズムを表現する一つの手段として,流れ図を扱うことにした。とはいうものの,流れ図を手書きで(鉛筆とテンプレートを駆使して)作成するのは正直言って私だってメンドウである。生徒はなおのことメンドウに感じるはずであり,流れ図なんか省略していきなりプログラムを組んでしまえ…,などと悪い癖をつけてしまっては,元も子もない。
 さんざん悩んだあげく,処理内容の把握→流れ図作成→プログラム作成という作業の流れを定着させるよう,流れ図を簡単に作成できるツール「流れ図作成支援ツール」を開発した。

図3 流れ図作成支援ツール
▲図3 流れ図作成支援ツール

 生徒のスキルや情報実習室の環境などを考慮に入れて,MicrosoftExcel(2000以降)で動作するツールを開発した。処理の大部分をExcelVBAで記述し,以下の機能を有する。
・簡易ヘルプ機能(Excel入力規則で実現)
・画面拡大・縮小/印刷プレビュー/印刷/保存機能(Excel搭載機能を呼び出すことで実現)
・流れ図記号描画/画面消去機能(オートシェイプを利用)
・教師への提出シート印刷機能(指定範囲を印刷)
※本ツールは,栃木県総合教育センターのWebサイト(教科「情報」指導事例)からダウンロード可能である(※注1)。
 このツールを生徒全員に配布して,起床から登校までのアルゴリズムの流れ図を,手書きとツール利用の2つ作成させ,それらを比較させてみた。

<生徒の反応>
・手書きで作った流れ図よりも見やすく,わかりやすくなった。
作りやすい。
・朝起きて学校に着くまでには,みんな違った順番で行動している。それぞれの朝ってカンジ。
・イルカ(Excelヘルプのキャラクター)がしゃべってる!
スゲー!
・このソフト作るの大変ですね…。ホントに先生が作ったんですか?

<考察>
 流れ図を手書きで書くメンドウさから解放し,少しでも処理内容やアルゴリズムを考える時間を増やす目的で開発したツールである。「手書きよりきれいだ」「作りやすい」という感想が大半をしめ,なかには労をねぎらってくれるものもあり,空き時間を工面して開発した私にとっては,本当にうれしい結果となった。
 また,起床から学校到着という同じ処理内容なのに,全員異なるアルゴリズムになるという本質に気付く生徒が大勢いた。
 
5.生徒の反応
 昨年度(平成19年度)に情報Bを履修した1年生に対してアンケート(回答数269名)を実施した。

(1)授業による変化
 本校の授業を受ける前と後で,生徒それぞれの理解度がどのように変化したのか,回答を集計した。

質問1 アルゴリズムについて
・アルゴリズムとは?
・アルゴリズムの必要性や重要性など


質問2 流れ図について
・流れ図記号(意味と使い方)
・流れ図の必要性や重要性など


質問3 プログラミングについて
・基本3構造(順次・選択・繰り返し)
・ExcelVBA(マクロ)
・プログラミングの必要性など


<考察>
 授業前の20%程度であった理解度は,授業後は90%に達している。講義で知識を詰め込むよりも,実習を通して体験的に理解することの大切さを物語るものではないか。
 また,3つの質問でばらつきが出ると予想したのだが,意外にもほぼ同一の分布であった。中学校では,アルゴリズムやプログラミング領域に関する指導は,ほとんど実施されていないように感じる。

(2)ツールや流れ図の印象
質問4 手書きに比べてツールを使って流れ図を作成することは?


質問5 ツールは流れ図を作成するときに役に立ちますか?


質問6 流れ図はプログラムを作成するときに必要ですか?


質問7 ExcelVBA(マクロ)によるプログラミングを学んだことは役に立ちますか?


<考察>
 流れ図作成支援ツールを利用することで「簡単に」「きれいな」流れ図が作成できるということには,ほぼ100%の支持があり,開発の労苦を忘れさせられる。また,流れ図はプログラム作成の一助となることや,この授業が将来様々な場面で役に立つと感じてくれていることに大きな喜びを感じる。

(3)自由意見より
 1年間の実習を振り返って,賛否ともに感想が多いのは,やはりアルゴリズムとプログラミング実習である。代表的なものをいくつか紹介したい。

<<良かった点>>
・複雑な処理も,流れ図をつくると,処理の流れがわかりやすくなった。
・基本3構造(順次・選択・繰り返し)を組み合わせることで,どんな処理でも作れてしまったことに驚いた。
・日常生活にもアルゴリズムがあることにビックリした。勉強も仕事もアルゴリズムを工夫すれば,効率良くできる気がします!
・中学校のときよりも,情報らしいっていうか,PCを操っている感じがして私ってスゴイと思った。
・難しいと思っていたプログラミングも,やってみると意外と簡単でした。情報の授業を受けて本当に良かったです。
・自分で作ったプログラムが,目の前で動いたときは,本当にうれしかった。もっと勉強して,色々なプログラムを作ってみようと思います。

<<悪かった点>>
・1文字打ち間違えただけで,無限ループした…。PCって怖い。
・私には難しすぎて,良くわからないままでした。周りの友達が教えてくれなかったら,全然完成できませんでした…。
・こんな難しいモノを将来使うとは思えない!

<考察>
 前職(6年間)がSE(システムエンジニア)であった私が,SE活動を通して感じたこととほぼ一致している。複雑であるからこそ流れ図などでアルゴリズムの見通しを立てる必要があるのである。難しいからこそ完成したときの達成感があるのである。
 基本的には1人で解決するものだが,それが叶わぬときは,参考書や友人を頼るのである。流れ図で表現すると以下のようになる。

図4 課題解決の流れ図
▲図4 課題解決の流れ図

 これらは他教科の学習のみならず日常生活全てにあてはまる極めて基本的な処理手順であろう(うまくいったあと達成感にひたるのは私だけかもしれないが…)。
 数々の難題に,果敢に挑戦した生徒達に敬意を表したい。
6.おわりに
 本年度より本校は,栃木県高等学校教育研究会普通教科「情報」部会事務局を担当することになった。情報では古典的ともいえるプログラミング教育だが,指導する価値や重要性は,情報モラルに匹敵するものと確信している。研究拠点として,県内外を問わず本校の取り組みを広めながら,これからもプログラミング教育を続けていきたい。
注1:http://www.tochigi-edu.ed.jp/center/cyosa/jissenshiryou/jyouhou/sidoujirei/algorithm.htm
前へ   次へ
目次に戻る
上に戻る