diff --git a/kameya.tex b/kameya.tex index e6d01fb..b646585 100644 --- a/kameya.tex +++ b/kameya.tex @@ -1,5 +1,5 @@ %#DVIPDF dvipdfmx -f index.txt -\documentclass{jbook} +\documentclass[11pt]{jbook} \addtolength{\topmargin}{-2cm} \addtolength{\textheight}{4cm} \addtolength{\textwidth}{2cm} @@ -13,6 +13,7 @@ \usepackage{ascmac} \usepackage{longtable} \usepackage{geometry} +\usepackage{subfigure} \renewcommand{\bibname}{参考文献} \geometry{textwidth=160mm, textheight=225mm} \makeatletter @@ -36,8 +37,8 @@ \makeatother \title{プログラミング教室の運営と手引の作成} -\author{亀谷千香子} -\date{令和元年○月○日} +\author{廣瀬研究室 4年\\C1160497 亀谷千香子\\} +\date{} @@ -51,24 +52,39 @@ \begin{center} {\bfseries 概要} \end{center} -プログラミング教室が年々増加している。しかし、プログラミング教室を企画・運営するための方法が詳しく書いてあるものがあまり公開されていない。そこでプログラミング教室の手引を作成することにした。 - -東北公益文科大学(以下本学)では、小学5、6年生向けプログラミング教室「Rubyてらこった」を学生が企画し運営を行った。Rubyてらこったでは、参加する小学生に対して分かりやすく、楽しくプログラミングを教えるために、教える内容、授業準備、道具の準備を行った。また、プログラミングを通して論理的思考力以外の力を身につけたいと考えた。文部科学省がプログラミング教育で身につけたい力として挙げている「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」以外にも「工夫する力」、「伝える力」である。 - -はじめてプログラミング教室を運営する人がRubyてらこったのようにプログラミング教室を行うための方法、授業を通して小学生に先に述べた力が身につくにかなどをまとめた手引を作成した。 - +プログラミング教室が年々増加している。しかし、プログラミング教室を企画・運営するための方法が詳し +く書いてあるものがあまり公開されていない。そこでプログラミング教室の手引を作成することにした。 +東北公益文科大学 (以下本学) では、小学 5、6 年生向けプログラミング教室「Ruby てらこった」を学生 +が企画し運営を行った。Ruby てらこったでは、参加する小学生に対して分かりやすく、楽しくプログラミ +ングを教えるために、教える内容、授業準備、道具の準備を行った。また、プログラミングを通して論理的 +思考力以外の力を身につけたいと考えた。文部科学省がプログラミング教育で身につけたい力として挙げ +ている「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」以外にも「工夫す +る力」、「伝える力」である。 +はじめてプログラミング教室を運営する人が Ruby てらこったのようにプログラミング教室を行うため +の方法、授業を通して小学生に先に述べた力が身につくにかなどをまとめた手引を作成した。 \clearpage \tableofcontents \clearpage \chapter{はじめに} -はじめに、この研究を始めるに至った経緯を説明する。 + +小学生のプログラミング教室の運営と手引作成の研究に至った背景を説明する。 + \section{背景} -小学生プログラミング教育の必修化とプログラミング教室の開催状況、プログラミング教室を運営するための課題について述べていく。 +2020年度に小学生のプログラミング教育が必修化になる。プログラミング教育で身につけたい力は、「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」である。 +また、小学校内だけのプログラミングだけではなく、外部のプログラミング教室の開催も年々増加している。そのことから、小学生のプログラミング教育の必修化、プログラミング教室の開催状況から述べていく。 \subsection{小学生プログラミング教育の必修化}\label{hissyu} -2020年度からの小学生プログラミングの必修化に向けて文部科学省では小学校プログラミング教育の手引など公開している。プログラミング教育を導入する理由として、普段の生活の中で身近な家電、自動車にはコンピュータが -内蔵されており、生活を便利にしている。コンピュータはプログラムで動いているため、仕組みを理解し情報を適切に活用、選択し問題を解決していくことが重要だからである。 -小学生のプログラミング教育で身につけたい力として「知識及び技能」、「思考力、判断力、表 -現力等」、「学びに向かう力、人間性等」が述べられている\cite{monbu}。 +2020年度からの小学生プログラミングの必修化に向けて文部科学省では小学校プログラミング教育の手引など公開している。プログラミング教育を通して身につけたい力として「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」が述べられている\cite{monbu}。普段の生活の中で身近な家電、自動車にはコンピュータが内蔵されており、コンピュータはプログラムで動いている。そのため、プログラミング教育を導入することによって、プログラム仕組みを理解し情報を適切に活用、選択し問題を解決していくことが重要となる。 + +身につけたい力の内容は以下の通りである。 + +\begin{description} + \item[知識及び技能]\mbox{}\\ +生活でコンピュータが活用されていくことや、問題の解決には必要な手順があること + \item[思考力、判断力、表現力等]\mbox{}\\ +発達の段階に即してプログラミング的思考力を育成すること + \item[学びに向かう力、人間性等]\mbox{}\\ +発達段階に即して、コンピュータの働き、よりよい人生や社会づくりに生かそうとする態度を涵養すること + \end{description} \subsection{プログラミング教室の開催状況} @@ -95,25 +111,25 @@ KidsVenture 、さくらインターネット株式会社、宇城市と崇城大学が連携し教室を開催した。対象は小学4〜6年生である。内容は、電子工作で自作したコンピュータ上にテキスト型言語によるプログラミングである。 \item[JavaScript による1日プログラミング教室]\cite{kaihatu}\mbox{}\\ -まつもと広域ものづくりフェアで開催した。対象は中高生である。ゲームを簡単に作成できるようにenchantjsを使用。 +まつもと広域ものづくりフェアで開催した。対象は中高生である。ゲームを簡単に作成できるようにenchantjsを使用。enchantjsとはHTML5と JavaScript を利用することにし、ゲームを簡単に作れるライブラリーである。 \item[子ども向けプログラミング教室]\cite{akita}\mbox{}\\ -対象は小学生である。低学年、中学年、高学年の3つのクラスに分けて実施。プログラミンを使用。 +対象は小学生である。低学年、中学年、高学年の3つのクラスに分けて実施。プログラミンを使用。プログラミンは\ref{proguramin}で詳しく説明する。 \item[小学生向けプログラミング体験講座]\cite{niigata}\mbox{}\\ -対象はプログラミングを体験したことが無い小学校4年生から6年生である。Scratch使用。 +対象はプログラミングを体験したことがない小学校4年生から6年生である。Scratch使用。 \end{description} \subsection{プログラミング言語}\label{gengo} -他のプログラミング教室で使われているプログラミング言語は図\ref{wariai}のようになっている。多くのプログラミング教室で利用されているものは、Scratchである。また、その他にもJavaScript、Javaなどである。 +他のプログラミング教室で使われているプログラミング言語で高い比率を占めるのがScratchについでJavaScript、Javaである(図\ref{wariai})。 \begin{figure}[h] \begin{center} -\includegraphics[width=11cm]{aaa.png} +\includegraphics[width=9cm]{aaa.png} \caption{教室・講座で利用されているプログラミング言語\cite{soumu} 図5-11より引用} \label{wariai} \end{center} @@ -124,29 +140,29 @@ \item[LOGO]\mbox{}\\ Seymour A. Papert が児童の思考能力向上を目的として 1960 年代に開発されたもので、命令文によって画面上の「タートル」を動かし、タートルの軌跡で線画を描くようになっている。 \item[ドリル]\mbox{}\\ -筑波大学久野、大阪電気通信大学兼宗が開発したものであり、LOGO 同様にタートルを動かし、図形などを描く機能がある。 +筑波大学久野、大阪電気通信大学兼宗が開発したものであり、LOGO 同様にタートルを動かし、図形などを描く機能がある。\url{https://dolittle.eplang.jp/download} \item[Viscuit]\mbox{}\\ -原田康徳氏よって開発された手書きイラストを用いたアニメーション作成機能に特化したプログラミング言語であり、タブレットで利用可能である。 +原田康徳氏よって開発された手書きイラストを用いたアニメーション作成機能に特化したプログラミング言語であり、タブレットで利用可能である。\url{https://www.viscuit.com/} \item[Scratch]\mbox{}\\ -MITメディアラボが開発したプログラミング言語学習環境であり、ブロックの組み合わせによってプログラミングするオブジェクト指向言語である。 +MITメディアラボが開発したプログラミング言語学習環境であり、ブロックの組み合わせによってプログラミングするオブジェクト指向言語である。\url{https://scratch.mit.edu/} \item[Blockly]\mbox{}\\ -Google が作成したビジュアルプログラミング開発ライブラリであり、ブラウザ上で動作するオープンソースのブロック型言語である。タブレットで利用可能である。 +Google が作成したビジュアルプログラミング開発ライブラリであり、ブラウザ上で動作するオープンソースのブロック型言語である。タブレットで利用可能である。\url{https://developers.google.com/blockly/} \item[Smalruby]\mbox{}\\ -高尾宏治(ネットワーク応用通信研究所)によって開発されたRubyをもとにしたビジュアル言語である。 -\item[プログラミン]\mbox{}\\ -文部科学省が Scratch を参考に開発したものでブラウザで動作するプログラミング学習用サービスである。 +高尾宏治(ネットワーク応用通信研究所)によって開発されたRubyをもとにしたビジュアル言語である。\url{https://smalruby.jp/blog/2017/01/14/smalruby-editor-0-4-1-has-been-released.html} +\item[プログラミン]\label{proguramin}\mbox{}\\ +文部科学省が Scratch を参考に開発したものでブラウザで動作するプログラミング学習用サービスである。 \url{http://www.mext.go.jp/programin/} \item[JavaScript]\mbox{}\\ -Netscape Communications社によって開発されプログラミング教室・講座では WEB アプリケーションの作成に用いられることが多い言語である。 +Netscape Communications社によって開発されプログラミング教室・講座では WEB アプリケーションの作成に用いられることが多い言語である。\url{http://www.ecmascript.org/} \item[Java]\mbox{}\\ Sun Microsystemsによって開発され、プログラミング教室・講座では Android アプリ作成に用 -いられるケースが多い言語である。 +いられるケースが多い言語である。\url{https://www.oracle.com/technetwork/java/javase/overview/index.html} \item[Python]\mbox{}\\ Guido van Rossumによって開発され、 全米の大学では初心者にプログラミングを教育する教材 として最もカリキュラムに取り入れられている言語である。 - +\url{https://www.python.org/} \item[C]\mbox{}\\ ブライアン・カーニハンとデニス・リッチーによって開発され、 現在もっとも普及しているプログラミング言語である。 @@ -158,6 +174,7 @@ OS X や iOS 向けのアプリケーションの開発に利用でき る言語である。現在は改定版である HTML5 が多く利用されており、 HTML5 では高度な Web アプリも作成可能である。 + \url{https://www.w3.org/html/} \end{description} @@ -166,73 +183,87 @@ \section{目的} -プログラミング教室を運営し、参加した小学生は\ref{hissyu}で述べた身につけたい力が身につけることができたのか、指導内容及び指導順番は適切であったかなどを分析する。また、はじめてプログラミング教室を企画・運営をする人にとって分かりやすい手引を作成する。 +本研究では、小学生がプログラミングに対してどのようなイメージ、興味があるのか、プログラミングの授業を通して背景で述べている力が身についたと小学生自身が実感することができるのかを調査していくことを目的とする。また、小学生に回答してもらったアンケートを分析し、はじめてプログラミング教室を運営する人を対象にしたRuby等を用いた小学生向けのプログラミング教室教えるポイント、必要な準備などをまとめた手引を作成する。 \chapter{プログラミング教室} -本学では平成30年度から小学5、6年生向けのRubyを用いたプログラミング教室を行っている。プログラミング教室の内容については以下の通りである。 -\section{Rubyてらこったについて}\label{terakotta} -昨年度から大学のブランディング事業の一つの地域資源を活用する人材育成の研究としてプログラミング言語のRubyを用いたプログラミング教室の企画・運営を行ってきている\cite{terakotta}。目的は、庄内地方を中心とした地域の若者達に情報技術を教え、情報社会を生き抜くために必要な力を身につけていくことである。小学生のうちからプログラミング言語Rubyを用いた本格的なプログラミングを学ぶ機会を提供したいと考えているためである。小学生でも対象は小学5、6年生にした。その理由としては、キーボード入力、操作の関係からアルファベットを習い終わっている方が良いと考えたためである。 +東北公益文科大学(以下本学)では平成30年度から私立大学ブランディング事業の一環として、小学5、6年生向けのRubyを用いたプログラミング教室を行っている。プログラミング教室の内容については以下の通りである。 + +\section{Rubyてらこったの概要} +Rubyてらこったとは小学5、6年生を対象にしたプログラミング教室である。庄内地方を中心とした地域の若者達に情報技術を教え、情報社会を生き抜くために必要な力を身につけていくこと目的としている。本学の私立大学ブランディング事業の一環として行った。本学のブランディング事業については次の\ref{jigyou}で述べる。 +\section{私立大学ブランディング事業}\label{jigyou} +昨年度から私立大学ブランディング事業でRubyてらこったを行った。私立大学ブランディング事業とは大学の特色ある研究を基軸として全学的な独自色を大きく打ち出す取組をここなう私立大学の機能強化を促進することである\cite{siritu}。本学では、5つの軸がある\cite{koeki}。 + +\begin{enumerate} +\item 地域資源の掘り起こし研究 +\item 庄内地域の文化の保存・集積(アーカイブ化) +\item 庄内地域の無形文化財をIT技術により伝承する研究 +\item 地域文化をIT技術により他の地域の人にもわかりやすく伝え、庄内地域の魅力を発信するための手法の研究 +\item 地域資源を産業振興やIT技術により活用できる人材の育成 +\end{enumerate} +その中の5.地域資源を産業振興やIT技術により活用できる人材の育成としてプログラミング言語のRubyを用いたプログラミング教室の企画・運営を行ってきている。詳しくは\ref{terakotta}で説明する。 +\section{Rubyてらこったの内容}\label{terakotta} +Rubyてらこったの対象は小学5、6年生である。その理由としては、キーボード入力、操作の関係からアルファベットを習い終わっている方が良いと考えたためである。小学生のうちからプログラミング言語Rubyを用いた本格的なプログラミングを学ぶ機会を提供したいと考えているためである。授業は、全5回である。授業内容については、\ref{naiyo}で説明する。 %なんのために行うのか \section{Rubyにした理由} プログラミング言語Rubyにした理由は本学の学生の知識と他との差別化という点からである。 -\subsection{学生の知識} -本学では2年次に1年間必修科目の基礎プログラミングという必修科目がある。その科目でプログラミング言語のRubyを学ぶ。学ぶ内容は以下の内容である\cite{naiyou}。 +\subsection{学生が持っているRuby知識} +本学では2年次に1年間必修科目の基礎プログラミングでRubyを学ぶ。学ぶ内容は以下の通りである\cite{naiyou}。 \begin{enumerate} \item 計算システムの基本操作と概念 -基本的なコマンド(コンピュータに特定の機能の実行を指示する命令)操作、Unix(OSの一つ)について、ファイル、ディレクトリの概念 +なぜプログラミングが必要であるのかを知り、基本的なコマンド(コンピュータに特定の機能の実行を指示する命令)操作、Unix(OSの一つ)について、ファイル、ディレクトリの概念などを学ぶ \item プログラミングの基礎 -インタプリタ、プログラミングについての基礎 +インタプリタ、プログラミングについて学ぶ \item 変数と値 -変数と値処理の方法 +変数の概念と値処理の方法を学ぶ \item 演算子 -プログラミングの加減乗除の手法 +プログラム上での四則演算を方法を学ぶ \item 制御構造 -プログラムで命令が実行される流れを定める手法 + +条件分岐や場合分けの方法を学ぶ \item 出力処理を行うメソッド -決めた複雑な処理を行う手法 +画面出力の基本的な内容を学ぶ \item 配列 -多くのデータをまとめて保持する手法 +番号をつけて一度に多くのデータを処理する方法を学ぶ \item パターンマッチング (正規表現) -データに含まれる文字列のパターンを指定する手法 +データに含まれる文字列のパターンを指定し、そこから必要な部分を取り出す方法を学ぶ \item ファイルの入出力 -数にファイルを指定した場合はそのファイルから1行ずつ内容を読み込む手法 +直接ファイルに入出力をする方法を学ぶ \item 計算機の内部構造 -2進数、16進数、文字コードについて +デジタルで数字や文字などを表現する方法について学ぶ \item ハッシュ -任意の値に任意の値を結び付ける手法 +順番、個数にとらわれず任意の属性と値を結びつけ管理する方法をぶ学ぶ \item 再帰 -ハノイの塔のような再帰処理の仕組みと手法 - +大きな問題を類似した小さな問題に分割して考える方法を学ぶ \item CGI -HTML文書内にあるデータ入力窓とそれらを受け渡すスクリプト名を書いておき、ボタンを押すとそのスクリプトに入力値が渡るような手法 +自分が作成したシステムを効果的な形で視覚化させる方法を学ぶ \end{enumerate} -\subsection{他との差別化} -\ref{gengo}でのべたように、多くの場合Scratchを使用する場合が多い。また、小学生のうちから本格的なプログラミングを学ぶ機会を提供したいと思いRubyを教えることにした。 -\section{身につけたい力}\label{tikara} -小学生のプログラミング教育で身につけたい力として「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」が述べられている\cite{monbu}。 +\subsection{他のプログラミング教室との差別化} +\ref{gengo}で述べたように、プログラミング教室でScratchを使用する場合が多い。しかし、Scratchのようなグラフィック型ではなく、小学生のうちからテキスト型の本格的なプログラミングを学ぶ機会を提供したいと思いRubyを教えることにした。 + \section{プログラミング教育で小学生に身につけたい力}\label{tikara} +小学生にプログラミング教育を通して身につけたい力として「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」が述べられている\cite{monbu}。 その3つの力に追加してRubyてらこったで身につけてほしい力についても述べる。 - +\begin{screen} \begin{description} \item[知識及び技能]\mbox{}\\ 生活でコンピュータが活用されていくことや、問題の解決には必要な手順があること @@ -243,45 +274,23 @@ \end{description} -この項目に加えRubyてらこったで身につけたい力は以下の通りである。 +\end{screen} +この項目に加えRubyてらこったでプログラミングを学んだ小学生に身につけたい力は以下の通りである。 \begin{description} - \item[工夫する力]\mbox{}\\ -授業で使うサンプルのプログラムを自分で考えて、工夫をして、他の人とは違うプログラムをつくれるようになること +授業で使うサンプルのプログラムを自分で考えて、工夫をして、他の人とは違うプログラムをつくれるようになることである。 \item[伝える力]\mbox{}\\ -伝える力としては、2つの意味がある。1つ目は、自分の作成したプログラムの発表を通して工夫し点、頑張った点など伝えられるようになれること +伝える力としては、2つの意味がある。1つ目は、自分の作成したプログラムの発表を通して工夫し点、頑張った点など伝えられるようになれることである。 -2つ目は、周りの人が作成したプログラムの発表を聞いて感想など伝えられるようになること +2つ目は、周りの人が作成したプログラムの発表を聞いて感想など伝えられるようになることである。 \end{description} -\section{指導内容} -指導内容は、全5回の限られた回数の中で小学生が理解できる比較的に簡単な内容にした。また、プロログラムを作成、実行する時に複雑にならないようにした。 -教える順番が基本的な操作から徐々に難しい内容になるよう設定している。また、5回目で自由に作成し、発表できるようなプログラムを作成できるように組み立てた表\ref{jyunban}。 - -\begin{description} - \item[出力メソッド (print, printf, puts)]\mbox{}\\ -アスキーアートのように入力したものをそのまま出力させるために必要と判断した。 - -\item[文章処理メソッド(gets, chomp)]\mbox{}\\ -キーボードに打ち込んだ値を文字列として取得するゲームプログラムを作るときに必要と判断した。 - -\item[制御構造(while, if, elsif, else)]\mbox{}\\ -レジスタープログラムなどの入力したものを繰り返しの処理を行うときに必要と判断した。 -また、クイズの結果の判定や条件で繰り返しを行うために使うため必要であると判断した。 - \item[配列及び乱数(srand, rand)]\mbox{}\\ -2つを組み合わせてクイズ問題を用意して乱数で選ばせたり、ジャンケンの手の内をランダムに出したりするために使うので必要と判断した。 - - \item[sleep関数(sleep)]\mbox{}\\ -プログラムを時間を指定して一時停止することができるので小学生が楽しむことができるのではないかと判断した。 - - -\end{description} - - - +\section{指導内容}\label{naiyo} +指導内容は、全5回の限られた回数の中で小学生が理解できる比較的に簡単な内容にした。また、プログラムを作成、実行する時に複雑にならないようにした。 +教える順番が基本的な操作から徐々に難しい内容になるよう設定している。また、5回目で自由に作成し、発表できるようなプログラムを作成できるように組み立てた表(\ref{jyunban})。 \begin{table}[h] \begin{center} @@ -300,6 +309,42 @@ \label{jyunban} \end{center} \end{table} +\begin{description} + \item[出力メソッド (print, printf, puts)]\mbox{}\\ +アスキーアートのように入力したものをそのまま出力させるために必要と判断した。printは画面出力である。putsも同じように画面出力のためのものであるが、 末尾に改行した形で出力される。purintfは書式付のprint文であるため数字などを出力させるのに便利である。 + +\item[文章処理メソッド(gets, chomp)]\mbox{}\\ +キーボードに打ち込んだ値を文字列として取得するゲームプログラムを作るときに必要と判断した。 + +\item[制御構造(while, if, elsif, else)]\mbox{}\\ +レジスタープログラムなどの入力したものを繰り返しの処理を行うときに必要と判断した。 +また、クイズの結果の判定や条件で繰り返しを行うために使うため必要であると判断した。 +盛業構造とはプログラムで実行される流れを定めたものである。 +whileは繰り返しの処理を行うために使うものである。 +条件分岐にはif, elsif, elseを使用した。使い方の例は以下の通りである。 + + \begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single] + if a + hogehoge1 + elsif b + hogehoge2 + else + hogehoge3 + end + \end{lstlisting} + 条件がaであればifのhogehoge1の部分が実行される。条件がaではなく2つ目のbであればhogehoge2の部分が実行される。条件がaでもbでもない時はelseのhogehoge3の部分を実行する。 + + \item[配列及び乱数(srand, rand)]\mbox{}\\ +2つを組み合わせてクイズ問題を用意して乱数で選ばせたり、ジャンケンの手の内をランダムに出したりするために使うので必要と判断した。 + \item[sleep関数(sleep)]\mbox{}\\ +プログラムを時間を指定して一時停止することができるので小学生が楽しむことができるのではないかと判断した。 + + +\end{description} + + + + \subsection{指導体制}%手引を参照 @@ -307,7 +352,7 @@ \subsection{授業について} %小学生でも内容が分かり、楽しく学ぶことができるようにということを意識した。 -小学生でも内容が分かりやすく、楽しく学ぶことができるように意識した。1回の授業時間を2時間に設定した。50分ほど授業をしたら約15分ほどの長めの休憩を取るようにして小学生が集中しやすいようにした。授業の流れは以下の通りである。 +小学生でも内容が分かりやすく、楽しく学ぶことができるように意識した。1回の授業時間を2時間に設定した。50分ほど授業をしたら約15分ほどの長めの休憩を取り、小学生が集中しやすいようにした。授業の流れは以下の通りである。 \begin{enumerate} \item 前回の授業の復習 @@ -329,15 +374,15 @@ 長めの休憩をとる。 \item プログラム作成 -プログラムの作成では、学んだ内容を使い自分で考えて作成してもらう。作成の時は、ホワイトボードにマグネットを貼ったり、ペンで書いたりしてからパソコンに入力する。イメージ通りにプログラムが作れない時は、アシスタントがサポート、説明をする。サポート、説明で重要なのは、考えてもらい理解してもらうということだ。 +プログラムの作成では、学んだ内容を使い自分で考えて作成してもらう。作成の時は、ホワイトボードにマグネットを貼ったり、ペンで書いたりしてからパソコンに入力する。イメージ通りにプログラムが作れない時は、アシスタントがサポート、説明をする。サポート、説明で重要なのは、どうしたらプログラムがうまく動くのか考えてもらい理解してもらうということだ。 \item 作成したプログラム発表 作成したプログラムは、発表する時間をつくる。発表方法はみんなの前で作成したプログラムを実行し発表する方法と他の人が作成したプログラムを実行してみる方法の2つである。 -次の\ref{happyou}で詳しく述べる。 +小学生が作成したプログラムについては\ref{sonota}で詳しく述べる。 \end{enumerate} \section{使用した道具} -授業で使う道具は以下のようなものを用意した。 +授業で使う道具は以下のようなものを用意した。小学生に分かりやすく教えるために教科書、マグネットなどを作成した。 \begin{table}[h] \begin{center} @@ -351,8 +396,10 @@ &無料で配布可能なシステムをインストールしておく \\ 教科書 & 授業の内容を確認すため使用 \\ ノート & 必要なことを書くために使用 \\ - ホワイトボード & プログラムをPCに入力する前に作成したいプログラムを書くために使用 \\ - マグネット & プログラムを作成するときに何を組み合わせると良いのか分かりやすくするために使用 \\ + ホワイトボード & プログラムをPCに入力する前に作成したいプログラムを\\ + & 書くために使用 \\ + マグネット & プログラムを作成するときに何を組み合わせると良いのか分かりやすくする\\ + & ために使用 \\ アルファベット対応表 & 文字を入力するときに分かりやすくするため使用 \\ \hline \end{tabular} @@ -362,14 +409,24 @@ \subsection{PC} PCは小学生用、授業用、スライド用の3種類使用した。小学生用と授業用のOSはNetBSDである。 -NetBSDとはオープンソースのオペレーティングシステムであり、本学のパソコンと同じOSだと学生が教えやすいと考えたからである。また、授業以外でも使ってほしいため無料で配布できるオープンソースが良いと考えたからである。 +NetBSDとはオープンソースのオペレーティングシステムであり、本学の教育計算機と同じOSだと学生が教えやすいと考えたからである。また、授業以外でも使ってほしいため無料で配布できるオープンソースが良いと考えたからである。 \begin{itemize} \item 小学生用 授業中のプログラムを作成、Webページからプログラムをダウンロードするために使用 -\item 授業用 +行った。2つプロジェクターがなかった場合はテレビに映して授業をした。 -小学生の使用しているパソコンと同じであるためどのように操作するのか小学生に分かりやすくするため使用 +\begin{figure}[h] + \begin{center} +\includegraphics[width=8cm]{terakotta-screen.png} +\caption{PC画面} +\label{gamen} +\end{center} +\end{figure} + +\item 講師用 + +小学生の使用している計算機と同じであるためどのように操作するのか小学生に分かりやすくするため使用 \item スライド用 @@ -377,9 +434,16 @@ \end{itemize} 使用した教室に2つ独立したプロジェクタがあったので授業用、スライド用両方を映して授業を行った。2つプロジェクターがなかった場合はテレビに映して授業をした。 - +\begin{figure}[h] + \begin{center} +\includegraphics[width=8cm]{kyouditumitorizu.pdf} +\caption{教室見取り図} +\label{kyousitu} + \end{center} +\end{figure} \subsection{USBメモリ} -今回は16GB以上の容量を持つ高速なメモリにOSと教材に使用するソフトウェア一式をインストールし、USBメモリから起動して授業用環境として使用できるようにした。 +今回は16GB以上の容量を持つ高速なUSBフラッシュメモリにOSと教材に使用するソフトウェア一式をインストールし、USBメモリから起動して授業用環境として使用できるようにした。 +行った。2つプロジェクターがなかった場合はテレビに映して授業をした。 \subsection{教科書} 授業内容に合わせて、学生らで作成した。オリジナルのイラストや分かりやすい図などを取り入れ、興味が湧くような内容にすることを心がけた。また、語句の説明なども小学生でも分かるようにした。内容は以下のようなものである。 @@ -398,42 +462,36 @@ ループについて学ぶ \item[配列、乱数]\mbox{}\\ 配列を使ってランダムに取り出す方法をまとめた - \item[if, elsif, elseについて]\mbox{}\\ -条件分岐をさせる方法、if, elsif, elseの違いについて図を用いて分かりやすくした - - \begin{figure}[h] \begin{center} -\includegraphics[width=12cm]{ifzu.pdf} +\includegraphics[width=10cm]{haitertu.pdf} +\caption{配列のイメージ図} \end{center} \end{figure} + \item[if, elsif, elseについて]\mbox{}\\ +条件分岐をさせる方法、if, elsif, elseの違いについて + \item[プログラムを工夫するためのメソッドについて]\mbox{}\\ プログラムを出力させるときに文字が変化したり、時間をおいて表示させたりするものをまとめた \item[コマンド集]\mbox{}\\ プログラムの作成時などに覚えておくと便利なコマンドをまとめて書いておき、分からない時にすぐに確認できるようにした + \end{description} - - - - - \subsection{ノート} 初回の授業で配布し、小学生が学んだことや気づいたこと、ポイントなどをこまめに書き込めるように用意した。授業内では、ノートに書く場面があれば先 生が指示を促し小学生がノートを書く時間を設けた。 \subsection{ホワイトボード} -ホワイトボードにプログラムを書いてから PC -にプログラムを打ち込んだ方がわかりやすいと -考え、用意した。また、小学生がホワイトボー -ドに書きながらプログラムを組んで行くことで -理解を深める目的で使った。 -\subsection{マグネット} +ホワイトボードにプログラムを書いてから PCにプログラムを打ち込んだ方が間違うことが少なくなり、分かりやすいと +考えたため用意した。また、小学生がホワイトボードに書きながらプログラムを組んで行くことで理解を深める目的で使った。 + +\subsection{マグネットシート(小学生用)} その授業の内容で勉強する新しいことや大切な -ものをマグネットにした。それらを貼るだけで +ものをマグネットシートにした。それらを貼るだけで よいようにし、記憶しやすくするために作った。 これらを授業内でホワイトボードに貼りながら 作業を進めていった。例を挙げると、 @@ -445,15 +503,54 @@ たため、間違いの減少や作業時間の削減にも繋 がった。 + +\subsection{マグネット(黒板用)} +小学生にメソッドの部分を分かりやすくするために、黒板に貼るようのマグネットを用意した。 + + \subsection{アルファベット対応表} -小学5、6年生はアルファベットを習い終えているが大文字小文字を理解するために作成し配布した。キーボードでは大文字表記になっているため「 l( エル ) 」と「 i( アイ ) 」や「 h( エイチ ) 」と「 n( エヌ ) 」などが間違いやすかった。 +小学5、6年生はアルファベットを習い終えているが大文字小文字を理解するために作成し配布した。キーボードでは大文字表記になっているため「 l( エル ) 」と「 i( アイ ) 」や「 h( エイチ ) 」と「 n( エヌ ) 」「 r( アール ) 」などが間違いやすかった。 -\chapter{仮説と判断基準}\label{kasetu} -この章では参加した小学生がプログラミングプログラミングの授業を通してどのような変化があるか仮説を立る。仮説を立てたのを判断するため基準を述べる。 -\section{仮説}\label{kasetu} +\begin{figure}[h] + \begin{center} +\subfigure[USBメモリ]{ +\includegraphics[width=0.23\columnwidth]{usb.jpg} +}\label{USB} +\subfigure[教科書]{ +\includegraphics[width=0.23\columnwidth]{kyoukasyo.jpg} +} +\label{kyoukasyo} +\subfigure[ノート]{ +\includegraphics[width=0.23\columnwidth]{note.jpg} +} +\label{note} +\subfigure[ホワイトボード]{ +\includegraphics[width=0.23\columnwidth]{whitewboard.jpg} +} +\label{board} +\subfigure[マグネットシート]{ +\includegraphics[width=0.23\columnwidth]{magnet.jpg} +} +\label{magnet} +\subfigure[マグネットシート(黒板用)]{ +\includegraphics[width=0.23\columnwidth]{kokuban.jpg} +} +\label{kokuban} + +\subfigure[アルファベット対応表]{ +\includegraphics[width=0.23\columnwidth]{taiou.pdf} +} +\label{taiou} + \end{center} +\end{figure} + + +\chapter{プログラミングで身につく力の仮説}\label{kasetu} +この章では参加した小学生がプログラミングプログラミングの授業を通してどのような変化があるか仮説を立る。仮説を判断するため基準を述べる。 +\section{プログラミング教室実施の仮説}\label{kasetu} 参加する小学生はある程度プログラミングに興味があり、難しいという印象よりも楽しそうという印象があると考える。授業を通してプログラムが難しいというイメージが減少するのではないかと考えた。また、授業を通して波及効果として学習が好きな方に変化し、別のことにも挑戦してみようという意欲的になると仮説を立てる。 -\section{判断基準}\label{kijyun} +\section{身につく力の判断基準}\label{kijyun} %\ref{tikara}で述べた力が小学生に身についたか判断する基準は以下の通りである。 実際に\ref{kasetu}の仮説を立てたものを検証をする方法としてアンケートを作成した。アンケートは3種類作成をした。アンケートの種類と結果については以下の通りである。また、知識などについては、小学生が作成したプログラミングを参考に判断する。また、アンケートで判断できないものは小学生が作成したプログラムより判断する。 @@ -483,8 +580,8 @@ \item 工夫する力 -サンプルプログラムを自分が作りたいものに作り変えることができる - +サンプルプログラムを自分が作りたいものに作り変えることができ +る \item 伝える力 作成したものに対して発表ができる @@ -522,13 +619,13 @@ \subsection{作成したプログラムより判断} -知識などは、小学生が授業をした後にサンプルプログラムを改造、5回目の授業では学んだ内容をまとめたオリジナルプログラムを作成する。そのプログラムより、知識が身につけたか判断する。 -\chapter{実施結果}\label{kekka} -Rubyてらこったは、6月開始の教室には6名、7月開始の教室には6名、合計で12名参加した。12名のアンケートの結果と作成したのプログラムは以下の通りである。アンケート結果については()の中の数字が回答人数となっている。 +知識などは、小学生が授業をした後にサンプルプログラムを改造、5回目の授業では学んだ内容をまとめたオリジナルプログラムを作成する。そのプログラムより、知識が身についたか判断する。 +\chapter{プログラミング教室の実施結果}\label{kekka} +2019年度のRubyてらこったは、6月開始の教室には6名、7月開始の教室には6名、合計で12名参加した。12名のアンケートの結果と作成したのプログラムは以下の通りである。アンケート結果については()の中の数字が回答人数となっている。 \section{授業前} 普段の機械操作とプログラミングのイメージ、経験、学校の学習についてのアンケートを実施した。 -\subsection{機会操作について}\label{sousa} +\subsection{機械操作について}\label{sousa} \begin{itemize} \item パソコンは使いますか @@ -688,7 +785,7 @@ 参加した小学生が5回目のオリジナルプログラムで作成たものは以下のようなものがある。 -このプログラムはクイズプログラムで学校の授業で習ったことをクイズにし、回答時間を出力したものである。 +このプログラムはクイズプログラムで学校の授業で習ったことをクイズにし、回答時間を出力したものである。ポイントは、条件分岐である。それぞれの問題に4つの選択肢があり、回答をキーボード入力から受け取り、選択したものによって出力するものを変えている。ただ、出力させるのではなく、sleepを使い工夫をしている。 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single] # coding: utf-8 @@ -805,8 +902,7 @@ このプログラムはlatterという配列の中に入っている"グラードン","カイオーガ","レシラム","キュレム"の4つをどのくらいの時間で入力できるかというプログラムである。 -%\begin{verbatim} -%\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single] +ポイントは、繰り返し処理で条件があったときに、配列の中にある問題を順番に入力させるものが変わるようになっている。最後にかかった時間を出力できることである。 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single] #!/usr/koeki/bin/ruby # -*- coding:utf-8 -*- @@ -834,13 +930,39 @@ \end{lstlisting} -\chapter{考察} -\ref{kekka}章の結果から考察を述べる。 +\chapter{プログラミング教育の考察} +\ref{kekka}章のアンケート結果から考察を述べる。 \section{機械操作について} -機械操作については普段はパソコンよりもスマホの方が使用していると結果が出た。普段パソコンのキーボード操作をしていない小学生にとっては入力、コマンド操作は難しいため授業の感想の難しかった部分の回答となったのではないかと考える。 +機械操作については普段はパソコンよりもスマートフォンの方が使用していると結果が出た。普段パソコンのキーボード操作をしていない小学生にとっては入力・コマンド操作は難しいため授業の感想の難しかった部分の回答となったのではないかと考える。 -\section{プログラミングについて} -プログラミングのイメージは楽しそうというイメージがある。しかし、難しそうというイメージもあった。授業をしてまたプログラミングをしてみたいという回答が多かった。しかし、難しかったという回答に対しては内容が小学生にとって少し難しかったのではないかと考える。\ref{maikai}の結果にあるようにキーボード入力だけではなく内容について難しいという感想があったのでそのように考えた。 +\section{プログラミングについて}\label{sikou} +プログラミングのイメージは楽しそうというイメージがある。しかし、難しそうというイメージもあった。授業をしてまたプログラミングをしてみたいという回答が多かった。実際にプログラミングを学んでみて難しかったという回答があった。ピアジェの認知発達理論では、図\ref{hattatu}のようになっている。そのために難しく感じた小学生がいたのだと考えられる。また、キーボード操作も難しく感じた要因ではないかと考える。 + + +\begin{table}[h] + \begin{center} + \small + \caption{ピアジェが仮説化する各発達段階での子どもの思考特徴\cite{sinri} より引用} + + \begin{tabular}{|l|l|l|} \hline + 発達段階 &年齢の範囲&達成可能な典型と限界\\ \hline \hline + 具体的操作段階 &7〜12歳&具体物を扱う限りにおいては論理的操作が可能になる。ものや事象の静的な\\ + & &状態的な状態だけでなく変換の状態をも表象可能、外見的な見えに左右されず\\ + & &保存問題や系列化やクラス化の問題解決が可能、だが科学的な問題や論理的\\ + & &変換のようにあらゆる可能な組み合わせを考えねばならぬ問題には困難を示す。\\ \hline + 形式的操作段階 & 12歳〜 & 経験事実に基づくだけではなく、仮説による論理的操作や、命題間の論理的関係\\ + & &の理解が可能である。より抽象的で複雑な世界についての理解が進み、たとえば、\\ + & &エネルギーの保存や化学的い合成に関するような抽象的概念や知識が獲得される。\\ \hline + \end{tabular} + + \label{hattatu} + \end{center} +\end{table} + + + + + \section{身につけたい力について} \begin{description} @@ -852,27 +974,115 @@ \item[学びに向かう力、人間性等]\mbox{}\\ プログラムを作成したり、授業中に分からない所があった時に周りの大学生に積極的に質問をして解決をしていた小学生が多かった。 \item[工夫する力]\mbox{}\\ -毎回の授業でサンプルのプログラムを自分で考えて変えていた。5回目の授業のオリジナルのプログラミングを作成する時に前に作成したものを改良して作成ができていたので身についたと考える。 +毎回の授業でサンプルのプログラムを自分で考えて変えていた。5回目の授業のオリジナルのプログラムを作成する時に前に作成したものを改良して作成ができていたので身についたと考える。 \item[伝える力]\mbox{}\\ -自分が作成したプログラムの工夫した点や頑張ったところなど発表することができていた。また、他の人が作成したプログラムにたいしての感想やどうやったらこの動きになるのかなど質問をお互いにしていたので力が身についたと考える。 +自分が作成したプログラムの工夫した点や頑張ったところなど発表することができていた。また、他の人が作成したプログラムに対しての +感想やどうやったらこの動きになるのかなど質問をお互いにしていたので力が身についたと考える。 \end{description} \section{論理的思考について} -論理的思考については\ref{jissai}での結果では身についたと思う実感している小学生が多いという結果になった。5回目の授業で今まで学んだものを使い作成するときにもどのようにしたら動くのかを考えて作成している小学生が多かった。 +論理的思考については\ref{jissai}での結果では身についたと思う実感している小学生が多いという結果になった。5回目の授業で今まで学んだものを使い作成するときにもどのようにしたら動くのかを考えて作成している小学生が多かった。しかし、\ref{sikou}で述べたようにプログラミングが難しいという結果も出た。 \section{波及効果について} -波及効果では授業の最初と5回目の授業のあとに同じ質問項目の学習についての部分に変化があるのを調べた。仮説では変化があるのではないかと考えたが実際には変化がなかった。しかし、自由記述の部分では、もっと難しいプログラムを作る、自分でゲームを作りたい、みんなにプログラミングを教える、 50m クロールで泳ぎたいなどの回答があった。そのような回答から波及効果があったのではないかと考える。学習の項目だけに変化がなかっただけで質問方法に問題があったのではないかと考える。 +波及効果では授業の最初と5回目の授業のあとに同じ質問項目の学習(勉強が好き、勉強が難しい)の部分についての部分に変化があるのを調べた。調べる方法としてT検定を用いた。結果は以下の通りである。 + +\begin{itemize} +\item 勉強が好き +\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single] + +== Mean & S.D. ( SD=sqrt(Vtotal/N) ) == + +------------------------------------------------ + N Mean S.D. +------------------------------------------------ +水準1 12 3.42 0.76 +水準2 12 3 0.58 +------------------------------------------------ + 差 12 0.42 1.26 +------------------------------------------------ + t(11)= 1.1055 , ns (.10