%#DVIPDF dvipdfmx -f index.txt
\documentclass[11pt]{jbook}
\addtolength{\topmargin}{-2cm}
\addtolength{\textheight}{4cm}
\addtolength{\textwidth}{2cm}
\addtolength{\oddsidemargin}{-1cm}
\addtolength{\evensidemargin}{-1cm}
%\usepackage{listings}
%\usepackage{graphicx}
\usepackage[dvipdfmx]{graphicx}
\usepackage{listings, jlisting}
%\usepackage[sectionbib]{chapterbib}
\usepackage{ascmac}
\usepackage{longtable}
\usepackage{geometry}
\usepackage{subfigure}
\usepackage{tabularx}
%\usepackage{boites}
%\usepackage{boites,boites_exemples}
\renewcommand{\bibname}{参考文献}
\geometry{textwidth=160mm, textheight=225mm}
\makeatletter
\def\maketitle{%
  \null
  \thispagestyle{empty}%
  \vfill
  \begin{center}\leavevmode
    \normalfont
    {\LARGE \@title\par}%
    \vskip 1cm
    {\Large \@author\par}%
    \vskip 1cm
    {\Large \@date\par}%
  \end{center}%
  \vfill
  \null
  \@thanks%\vfil\null
  \cleardoublepage
  }
\makeatother
 
\title{プログラミング教室の運営と手引の作成}
\author{廣瀬研究室 4年\\C1160497 亀谷千香子\\}
\date{}
 
  
 
\usepackage{url}	% required for `\url' (yatex added)
 
\usepackage{eclbkbox}	% required for `\breakbox' (yatex added)
\begin{document}
\maketitle
 
%\tableofcontents
 
\begin{center}
 {\bfseries 概要}
\end{center}
現代の生活の中で身近な家電、自動車にはコンピュータが内蔵されており、コンピュータを動かしているのはプログラムであることから、プログラム仕組みを理解し情報を適切に活用、選択し問題を解決していくことが重要と考えられている。そのため、2020年度から小学生プログラミング教育が必修化になる。文部科学省は、プログラミング教育を通して身につけたい力として、「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」と述べている。
また、小学校だけのプログラミング教育だけではなく、外部のプログラミング教室も年々増加している。しかし、プログラミング教室を企画・運営をするにはどの人を対象とするのか、道具は何を準備するのか、教える体制、準備期間など決め方が明らかでない。また、そのような情報について詳しくまとめてあるものがWeb上で公開されていない。
 
 
本研究では、プログラミング教室を運営するための手引が必要であると考えたため、手引を作成する。
手引は、小学生向けプログラミング教室「Rubyてらこった」という東北公益文科大学の私立大学ブランディング事業の一環として行った活動から作成する。Rubyてらこったでは、大学生がプログラミング教室を企画・運営し、小学生にプログラミングを教えた。プログラミング教室に参加した小学生にプログラミング教育を通して、身につけさせたい力を身に付けることができた。そのことから、Rubyてらこったの活動を踏まえて手引を作成した。(633文字)
 
\clearpage
\tableofcontents
\clearpage
\chapter{はじめに}
2020年に小学生のプログラミング教育が必修化となり、それぞれの科目をプログラミングを使い学ぶ。また、小学校内だけのプログラミング教育だけではなく、外部のプログラミング教室の開催も年々増加している。そのことから、小学生のプログラミング教育の必修化、プログラミング教室の開催状況から述べていく。
 
 
\section{小学生プログラミング教育の必修化}\label{hissyu}
普段の生活の中で身近な家電、自動車にはコンピュータが内蔵されている。そのコンピュータを動かしているのはプログラムであるため、プログラム仕組みを理解し情報を適切に活用、選択し問題を解決していくことが重要と考えられている。文部科学省は、2020年度から小学生プログラミング教育を通して身につけたい力として、「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」を挙げている\cite{monbu}。
 
 
\begin{description}
 \item[知識及び技能]\mbox{}\\ 
身近な生活でコンピュータが活用されていることや､問題の解決には必要な手順があることに気付くこと。
 \item[思考力、判断力、表現力等]\mbox{}\\
発達の段階に即してプログラミング的思考力を育成すること。
 \item[学びに向かう力、人間性等]\mbox{}\\
発達段階に即して、コンピュータの働き、よりよい人生や社会づくりに生かそうとする態度を涵養すること。
 \end{description}
 
\section{小学生の発達段階}\label{dankai}
%小学校の学習指導要領に書いてある主な内容は、表\ref{kamoku}である。小学生にとってプログラミング教育は、発達段階的に難しく感じるのではないかと考える。小学生の発達段階は\ref{sinri}の通りである。
小学校の学習指導要領に書いてあるプログラミングで学ぶ内容は、3 〜6 年生の音楽の授業で様々なリズム・パターンを組み合わせて音楽をつくることなどである(表\ref{kamoku})。
 
 
学習指導要領では、科目で学ぶ内容に合せプログラミングを行うが、プログラミング教育は、小学生の発達段階において難易度が高いのではないかと考える。ピアジェが仮説化する各発達段階での子どもの思考特徴(表\ref{sinri})では7〜12歳(小学校生)は、具体的操作段階である。その段階では、具体物を扱う限りにおいては論理的操作が可能だか、科学的な問題や論理的
変換のようにあらゆる可能な組み合わせを考えねばならぬ問題には困難を示すとある。しかし、12歳以上になる と形式的操作段階となり、経験的事実に基づくだけではなく、仮説による論理的操作や、命題間の論理的関係の理解が可能である。そのため、具体的操作段階である小学生は、プログラミングが難しく感じ、プログラミング教育で身につけたい力が身につかないのではないかと考える。そのため、本研究では、プログラミング教室に参加した小学生が身につけたい力が身につくのかを調査する。
\\
 
 
 
 
\begin{table}[h]
  \begin{center}
 
    \caption{科目とプログラミング内容\cite{monbu} より作成}
 
    \begin{tabular}{|l|l|l|} \hline
         学年 &科目&内容\\ \hline \hline
3〜6年生&音楽&    様々なリズム・パターンを組み合わせて音楽をつくることをプログラミングを\\
         &   &通して学習する場面\\\hline
4年生   &社会&都道府県の特徴を組み合わせて４７都道府県を見付けるプログラムの活用を通して、\\
        &    &その名称と位置を学習する場面\\\hline
 5年生 &算数&プログラミングを通して、正多角形の意味を基に正多角形をかく場面\\ \hline
      6年生&理科 &身の回りには電気の性質や働きを利用した道具があること等をプログラミングを\\
          &     &通して学習する場面\\\hline
      6年生&家庭科&自動炊飯器に組み込まれているプログラムを考える活動を通して、炊飯について\\
&&学習する場面\\\hline
    \end{tabular}
  
  \label{kamoku}
  \end{center}
\end{table}
 
 
 
 
 
\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{sinri}
  \end{center}
\end{table}
 
\section{プログラミング教室の開催状況}\label{kaisaijyoukyou}
小学校以外にもプログラミングを学ぶことのできる教室がある。外部のプログラミング教室は1999年から2014年以降までを比べてみると、年々増加していることが分かる(図\ref{hikaku})。2013年以降からはプログラミング教室を開催している団体が急増している。
 
 
\begin{figure}[h]
  \begin{center}
 
\includegraphics[width=15cm]{kaisai.pdf}
\caption{プログラミング教室始時期\cite{soumu} 図5-3より引用}
\label{hikaku}
 \end{center}
\end{figure}
 
 
\section{プログラミング教室の事例}
\ref{kaisaijyoukyou}節で述べたように年々プログラミング教室は増加している。プログラミング教室の対象は、子どもから大人まであり、学べる言語は、Scratch 、 JavaScriptなどがある。その中でも小学生を対象にしたプログラミング教室の事例について述べる。
\begin{description}
 
 \item[松本大学キッズプログラミング教室]\cite{matumoto}\mbox{}\\
2011年度長野県のまつもと広域ものづくりフェアで開催した。講習対象を小学校高学年以上であり、プログラミング言語はScratchを使用した。
 
 
 \item[宇城市プログラミング教室]\cite{sojyo}\mbox{}\\
2018年に熊本県で、KidsVenture 、さくらインターネット株式会社、宇城市と崇城大学が連携し教室を開催した。対象は小学4〜6年生である。内容は、電子工作で自作したコンピュータ上にテキスト型言語によるプログラミングである。
 
 
\item[地方大学における学生主体の子ども向けプログラミング教室]\cite{akita}\mbox{}\\
2015年6月頃から秋田県由利本荘市中央公民館の科学教 室の 一部としてで開催した。対象は小学生である。低学年、中学年、高学年の3つのクラスに分けて実施。プログラミンを使用。プログラミンは\ref{gengo}で詳しく説明する。
 
 
\item[小学生向けプログラミング体験講座]\cite{niigata}\mbox{}\\
2016年に新潟の新潟国際情報大学中央キャンパスで開催した。対象はプログラミングを体験したことがない小学校4年生から6年生であり、プログラミング言語はScratchを使用した。
 
 
\end{description}
 
\section{プログラミング言語}\label{gengo}
プログラミング教室で使われているプログラミング言語で高い比率を占めるのがScratch、JavaScript、Javaの順である(図\ref{wariai})。
 
\begin{figure}[h]
  \begin{center}
 
\includegraphics[width=13cm]{aaa.png}
\caption{教室・講座で利用されているプログラミング言語\cite{soumu} 図5-11より引用}
 \label{wariai}
 \end{center}
 
\end{figure}
主なプログラミング言語について説明する。
\\
 
 
\begin{breakbox}
 
\begin{enumerate}
 
 \item LOGO
 
 
Seymour A. Papert が児童の思考能力向上を目的として 1960 年代に開発されたもので、命令文によって画面上の「タートル」を動かし、タートルの軌跡で線画を描くようになっている。
 \item ドリトル
 
 
筑波大学久野、大阪電気通信大学兼宗が開発したものであり、LOGO 同様にタートルを動かし、図形などを描く機能がある。\\\url{https://dolittle.eplang.jp/download}
\item Viscuit
 
 
原田康徳氏によって開発された手書きイラストを用いたアニメーション作成機能に特化したプログラミング言語であり、タブレットで利用可能である。\\\url{https://www.viscuit.com/}
 
\item Scratch
 
 
MITメディアラボが開発したプログラミング言語学習環境であり、ブロックの組み合わせによってプログラミングするオブジェクト指向言語である。\\\url{https://scratch.mit.edu/}
 
\item Blockly
 
 
Google が作成したビジュアルプログラミング開発ライブラリであり、ブラウザ上で動作するオープンソースのブロック型言語である。タブレットで利用可能である。\\\url{https://developers.google.com/blockly/}
\item Smalruby
 
 
高尾宏治(ネットワーク応用通信研究所)によって開発されたRubyをもとにしたビジュアル言語である。\\\url{https://smalruby.jp/blog/2017/01/14/smalruby-editor-0-4-1-has-been-released.html}
\item プログラミン
 
 
文部科学省が Scratch を参考に開発したものでブラウザで動作するプログラミング学習用サービスである。\\ \url{http://www.mext.go.jp/programin/}
\item JavaScript
 
 
Netscape Communications社によって開発されプログラミング教室・講座では Web アプリケーションの作成に用いられることが多い言語である。\\\url{http://www.ecmascript.org/}
\item Java
 
 
Sun Microsystemsによって開発され、プログラミング教室・講座では Android アプリ作成に用
いられるケースが多い言語である。\\\url{https://www.oracle.com/technetwork/java/javase/overview/index.html}
 \item Python
 
 
Guido van Rossumによって開発され、
全米の大学では初心者にプログラミングを教育する教材
として最もカリキュラムに取り入れられている言語である\footnotemark。
\\\url{https://www.python.org/}
\item C 
 
 
ブライアン・カーニハンとデニス・リッチーによって開発され、
現在もっとも普及しているプログラミング言語である。
国際標準化機構(ISO)や日本工業規格(JIS)にも標準とし
て採用されている。
 
\item HTML
 
 
CERN（欧州合同素粒子原子核研究機構）の研究者であったティム・バーナーズ・リーによって開発・公開され
OS X や iOS 向けのアプリケーションの開発に利用でき
る言語である。現在は改訂版である HTML5 が多く利用されており、
HTML5 では高度な Web アプリも作成可能である。
\\ \url{https://www.w3.org/html/}
\end{enumerate}
\end{breakbox}
\footnotetext{\url{https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-\slash language-at-top-u-s-universities/fulltext}}
 
 
 
\section{プログラミング教室運営の課題と本研究の目的}
東北公益文科大学(以下本学)ではRubyを用いたプログラミング教室「Rubyてらこった」を開催した。当初、大学生がプログラミング教室を企画・運営をする時に、どのような準備、指導する内容、指導体制など決める基準が明確に分からなかった。また、プログラミング教室の企画の立て方、運営の方法、準備する道具、準備期間について詳しくまとめてあるものがWeb上で公開されているものがなかったため、授業の準備、必要なものが分からず苦労した。そのことから、プログラミング教室を運営する人がスムーズに運営するための方法をまとめた手引が必要と考えた。
 
 
本研究では、小学生向けのプログラミング教室を企画・運営し、はじめてプログラミング教室を運営する人を対象にしたRuby等を用いた小学生向けのプログラミング教室の手引を作成することを目的とする。
 
\chapter{プログラミング教室}
本学では平成30年度から私立大学ブランディング事業の一環として、小学5、6年生向けのRubyを用いたプログラミング教室を行っている。プログラミング教室の内容については以下の通りである。
 
 
\section{私立大学ブランディング事業}\label{jigyou}
本学は平成29年度から私立大学研究ブランディング事業に採択された。私立大学ブランディング事業とは、大学の特色ある研究を基軸として全学的な独自色を大きく打ち出す取組を行う私立大学の機能強化を促進する取り組みである\cite{siritu}。本学のブランディング事業では、以下の5つの軸を掲げ研究を推進している\cite{koeki}。
 
\begin{enumerate}
\item 地域資源の掘り起こし研究
\item 庄内地域の文化の保存・集積（アーカイブ化）
\item 庄内地域の無形文化財をIT技術により伝承する研究
\item 地域文化をIT技術により他の地域の人にもわかりやすく伝え、庄内地域の魅力を発信するための手法の研究
\item 地域資源を産業振興やIT技術により活用できる人材の育成
\end{enumerate}
その中の「5.地域資源を産業振興やIT技術により活用できる人材の育成」としてRubyてらこったの企画・運営を行ってきている。
\section{Rubyてらこったの概要}\label{terakotta}
プログラミング教室の「Rubyてらこった」の目的は、庄内地方を中心とした地域の若者達に情報技術を教え、情報社会を生き抜くために必要な力を身につけていくことである。Rubyてらこったは、
キーボード入力、操作の関係からアルファベットを習い終わっている方が良いと考えたため小学5、6年生を対象としている。
 
%なんのために行うのか
\subsection{言語の設定}
%様々なプログラミング言語がある。\ref{gengo}で述べたように、プログラミング教室でScratchを使用する場合が多い。しかし、Scratchのようなグラフィック型ではなく、小学生のうちからテキスト型の本格的なプログラミングを学ぶ機会を提供したいとの判断からRubyを教えることにした。
プログラミング教室を開催するにあたり、まず教える対象となる言語を決定した。様々なプログラミング言語がある中でRubyを選択した理由は二つあり、一つは、Scratchのようなグラフィック型ではなく、小学生のうちからテキスト型の本格的なプログラミングを学ぶ機会を提供したいと考えたからで、もうひとつは、本学では2年次に1年間必修科目の基礎プログラミングでRubyを学ぶため教えやすいと考えたからである。この2つの理由より、Rubyを設定した。


2年次に学ぶ内容は以下の通りである\cite{naiyou}。
\begin{breakbox}
 \begin{enumerate}
\item 計算システムの基本操作と概念 
 
なぜプログラミングが必要であるのかを知り、基本的なコマンド(コンピュータに特定の機能の実行を指示する命令)操作、Unix(OSの一つ)について、ファイル、ディレクトリの概念などを学ぶ
 
\item プログラミングの基礎
 
インタプリタ、プログラミングについて学ぶ
 
\item 変数と値 
 
変数の概念と値処理の方法を学ぶ
 
\item 演算子
 
プログラム上での四則演算を方法を学ぶ
 
\item 制御構造
 
 
条件分岐や場合分けの方法を学ぶ
\item 出力処理を行うメソッド
 
画面出力の基本的な内容を学ぶ
 
\item 配列
 
番号をつけて一度に多くのデータを処理する方法を学ぶ
\item パターンマッチング (正規表現) 
 
データに含まれる文字列のパターンを指定し、そこから必要な部分を取り出す方法を学ぶ
\item ファイルの入出力
 
直接ファイルに入出力をする方法を学ぶ
\item 計算機の内部構造
  
デジタルで数字や文字などを表現する方法について学ぶ
\item ハッシュ
 
順番、個数にとらわれず任意の属性と値を結びつけ管理する方法を学ぶ
\item 再帰
 
大きな問題を類似した小さな問題に分割して考える方法を学ぶ
\item CGI
 
自分が作成したシステムをWeb上に効果的な形で視覚化させる方法を学ぶ
\end{enumerate}
\end{breakbox}
 
\subsection{プログラミング教育で小学生に身につけたい力}\label{tikara}
 文部科学省は、小学校プログラミング教育の手引(第二版)において小学生にプログラミング教育で身につけたい力として「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」が述べられている(表\ref{mini})。この項目に加えRubyてらこったでプログラミングを学んだ小学生に身につけたい力は「工夫する力」、「伝える力」であり、内容は、以下の通りである。
\begin{table}[h] 
    \caption{身につけたい力\cite{monbu} より作成}
 
\begin{screen}
\begin{description}
 \item[知識及び技能]\mbox{}\\ 
身近な生活でコンピュータが活用されていることや､問題の解決には必要な手順があることに気付くこと。
 \item[思考力、判断力、表現力等]\mbox{}\\
発達の段階に即してプログラミング的思考力を育成すること。
 \item[学びに向かう力、人間性等]\mbox{}\\
発達段階に即して、コンピュータの働き、よりよい人生や社会づくりに生かそうとする態度を涵養すること。
 
 
\end{description}
\end{screen}
  
  \label{mini}
\end{table}
 
\begin{description}
 \item[工夫する力]\mbox{}\\
授業で使うサンプルのプログラムを自分で考えて、工夫をして、他の人とは違うプログラムを作ることができるようになること。
 \item[伝える力]\mbox{}\\ 
伝える力には、2つの意味がある。1つ目は、自分の作成したプログラムの発表を通して工夫した点、頑張った点など伝えられるようになること。
 
2つ目は、周りの人が作成したプログラムの発表を聞いて感想などを伝えられるようになること。
 
 
\end{description}
 
 
\section{各メソッドの指導内容}\label{naiyo}
 
授業は、全5回の限られた回数の中で理解でき、基本的な操作から徐々に難しい内容になるようにした。また、5回目で自由に作成し、発表できるようなプログラムを作成できるように組み立てた(表\ref{jyunban})。
 
\begin{table}[h]
  \begin{center}
 
    \caption{授業内容}
 
    \begin{tabular}{|l|l|l|} \hline
         回数 &内容&作成プログラム  \\ \hline \hline
      1回目 & 基本操作& 画面出力  自己紹介プログラム \\
      2回目 & ループ  &繰り返し処理のプログラム \\
      3回目 & 配列  &データ処理のプログラム  \\
      4回目 & 条件分岐 &条件のあるプログラム  \\
      5回目 & まとめ &習ったことを応用してプログラムを作成  \\ \hline
    \end{tabular}
  
  \label{jyunban}
  \end{center}
\end{table}
1回目から5回目までの学習する内容は、出力メソッド、文字列入力処理に必要なメソッド、制御構造、配列及び乱数、sleep関数である。内容は、以下の通りである。
\begin{description}
 \item[出力メソッド (print, printf, puts)]\mbox{}\\ 
アスキーアートのように入力したものをそのまま出力させるために必要である。printとputsも同じように画面出力のためのものであるが、 putsは末尾に改行した形で出力される。printfは書式付の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{指導体制}%手引を参照
授業でただ説明するだけでは、教えにくいため、授業の担当者1人、タイムキーパーが1人、授業アシスタントは参加する小学生の人数と同じようになるような体制にした。1対1で教える体制にしたのは、授業に追いつけない部分をサポートできるようにするためである。授業が進む速度に対して、小学生が理解する速度に差が発生することがあった。その際には、随時授業の合間に時間をとり、小学生が理解する速度に合わせて授業を展開していく形を心がけた。
 
\subsection{授業について}
 
教える内容は、分かりやすく、楽しく学ぶことができるようにするようにした。また、1回の授業時間を2時間に設定し、50分ほど授業をしたら約15分ほどの長めの休憩を取り、小学生が集中しやすいようにした。授業の流れは以下の通りである。
 
\begin{breakbox}
 
\begin{enumerate}
 \item 前回の授業の復習
 
授業で学んだ内容のポイントを復習する。
 \item タイピング練習 
 
授業で使う英単語を3回ずつ練習する時間を取る。
\item 内容の説明
 
授業で新しく学ぶことを説明し、重要なポイントは、メモをとる時間を作る。
 \item サンプルプログラムの実行
 
最初にどのようなプログラムなのか実行させる時間にする。
 \item サンプルプログラムの説明
 
4のサンプルプログラムがどうしてそのような動きをするのか説明する時間をつくる。
 \item 休憩
 
長めの休憩をとる。
 \item プログラム作成
 
プログラムの作成では、学んだ内容を使い自分で考えて作成してもらう。作成の時は、ホワイトボードにマグネットシートを貼ったり、ペンで書いたりしてからパソコンに入力する。イメージ通りにプログラムが作れない時は、アシスタントがサポート、説明をする。サポート、説明で重要なのは、どうしたらプログラムがうまく動くのか考えてもらい理解してもらうことである。
 
 \item 作成したプログラム発表
 
作成したプログラムをみんなの前で発表する。発表方法は、二つあり、一つは、発表方法はみんなの前で作成したプログラムを実行し発表するでもうひとつは、他の人が作成したプログラムを実行してみる方法である。
小学生が作成したプログラムについては\ref{sonota}で詳しく述べる。
\end{enumerate}
\end{breakbox}
 
\section{使用した道具}
小学生に分かりやすく教えるための道具として、教科書、マグネットシートなどを作成した(表\ref{dougu})。
\begin{table}[h]
\small
  \begin{center}
 
    \caption{必要な道具一覧}
 
    \begin{tabular}{|l|l|} \hline
      アイテム &用途  \\ \hline \hline
      PC & 小学生の操作用、授業用、スライド用のために使用 \\
      USBメモリ & 作成したプログラムを記録するために使用また、教室閉講後にも利用できるよう\\
                &無料で配布可能なシステムをインストールしておく   \\
      教科書 & 授業の内容を確認するために使用 \\
      ノート & 必要なことを書くために使用 \\
      ホワイトボード & プログラムをPCに入力する前に作成したいプログラムを\\
                  & 書くために使用 \\
     マグネットシート & プログラムを作成するときに何を組み合わせると良いのか分かりやすくする\\
               & ために使用 \\
      アルファベット対応表 & 文字を入力するときに分かりやすくするために使用 \\ \hline
    \end{tabular}
  
   \label{dougu}
  \end{center}
\end{table}
 
\subsection{PC}
小学生用、授業用のPCのOSはNetBSDである。NetBSDとはオープンソースのオペレーティングシステムであり、本学の計算機と同じOSだと学生が教えやすいからである。また、授業以外でも使ってほしいため無料で配布できるオープンソースが良いと考えたからである。PCは、小学生用、授業用の他にスライド用のPCも用意した。
\\
\begin{itemize}
\item 小学生用PC
 
授業中のプログラムを作成、Webページからプログラムをダウンロードするために使用
した(図\ref{gamen})。
\begin{figure}[h]
  \begin{center}
\includegraphics[width=10cm]{terakotta-screen.png}
\caption{PC画面}
\label{gamen}
\end{center}
\end{figure}
 
\item 講師用PC
 
小学生に分かりやすくするため小学生の使用している計算機と同じものを使用した。
 
\item スライド用PC
 
教室では2つのプロジェクタが利用できるため、教卓PCから実際の操作画面と同時に、教材のスライドを映すためのPCを別途用意した。2台のプロジェクターを確保できない教室もあり、その場合は、1台を大型液晶ディスプレイで代用した。
\end{itemize}
\newpage
\begin{figure}[h]
  \begin{center}
\includegraphics[width=10cm]{kyouditumitorizu.pdf}
\caption{教室見取り図}
\label{kyousitu}
 \end{center}
\end{figure}
\subsection{USBメモリ}
今回は16GB以上の容量を持つ高速なUSBフラッシュメモリにOSと教材に使用するソフトウェア一式をインストールし、USBメモリから起動して授業用環境として使用できるようにした(\pageref{syasin}ページ図(a))。
USBメモリは、OSのインストール後に、参加者一人のアカウントを作成し、名前を記入して配布をした。
 
\subsection{教科書}
授業内容に合わせて、学生らで作成した(\pageref{syasin}ページ図(b))。オリジナルのイラストや分かりやすい図などを取り入れ、興味が湧くような内容にすることを心がけた。また、語句の説明なども小学生でも分かるようにした。内容は以下のようなものである。
 
\begin{description}
 \item[プログラミングとは]\mbox{}\\ 
Rubyとは何か、プログラムの作成方法を説明する。
 
 \item[ファイル、ディレクトリ]\mbox{}\\
小学生でも分かりやすいようにディレクトリは、プログラムをしまっておく場所、ファイルはプログラムをつくる場所とイメージ図を使い説明した(図\ref{aaaa})。
 
\begin{figure}[h]
  \begin{center}
\includegraphics[width=10cm]{file.pdf}
\caption{ファイル、ディレクトリ}
\label{aaaa}
 \end{center}
\end{figure}
 
 \item[print, puts, getsについて]\mbox{}\\ 
画面出力の方法、キーボードから入力させる方法をまとめた。
 \item[whileについて]\mbox{}\\ 
ループについて学ぶ。
 \item[配列、乱数]\mbox{}\\ 
配列を使ってランダムに取り出す方法をまとめた。
\begin{figure}[h]
  \begin{center}
 
\includegraphics[width=12cm]{haitertu.pdf}
\caption{配列のイメージ図}
 \end{center}
 
\end{figure}
 \item[if, elsif, elseについて]\mbox{}\\ 
条件分岐をさせる方法、if, elsif, elseの違いについてまとめた。
 
 \item[プログラムを工夫するためのメソッドについて]\mbox{}\\ 
プログラムを出力させるときに文字が変化したり、時間をおいて表示させたりするものをまとめた。
 \item[コマンド集]\mbox{}\\ 
プログラムの作成時などに覚えておくと便利なコマンドをまとめて書いておき、分からない時にすぐに確認できるようにした。
 
\end{description}
 
\subsection{ノート}
初回の授業で配布し、小学生が学んだことや気づいたこと、ポイントなどをこまめに書き込めるように用意した(\pageref{syasin}ページ図(c))。授業内では、ノートに書く場面があれば講師が指示を促し小学生がノートを書く時間を設けた。
 
 
\subsection{ホワイトボード}
A3程の大きさのホワイトボードを参加者全員に配布した。
ホワイトボードにプログラムを書いてから PCにプログラムを打ち込んだ方が間違えることが少なくなり、分かりやすいと
考えたため用意した(\pageref{syasin}ページ図(d))。また、小学生がホワイトボードに書きながらプログラムを組んで行くことで理解を深める目的で使用した。
 
\subsection{マグネットシート(小学生用)}
授業の勉強する新しいことや大切な
ものをマグネットシートにした(\pageref{syasin}ページ図(e))。
これを貼るだけで
各メソッドを記述できるようにし、記憶しやすくするために作った。例を挙げると、
「 while 」と「 end 」などのセットで扱うものに関しては、セッ
トで先にマグネットをホワイトボードに貼り付
けてからプログラムを組み立てるなどの工夫を
した。あらかじめ用意されているものを使用し
たため、間違いの減少や作業時間の削減にも繋
がった。
\begin{figure}[h]
  \begin{center}
 
\includegraphics[width=5cm]{sakuse.jpg}
\label{ab}
\caption{whileとendのマグネットシートを使用}
 
 \end{center}
\end{figure}
 
 
\subsection{マグネットシート(教室のホワイトボード)}
小学生にメソッドの部分を分かりやすくするために、教室のホワイトボードに貼るマグネットシートを用意した(\pageref{syasin}ページ図(f))。
 
 
\subsection{アルファベット対応表}
小学5年生は、ローマ字の大文字だけ習っているため、小文字で書かれたプログラムリストの小文字は分からない。特に、大文字と小文字が違う「 l( エル ) 」と「 i( アイ ) 」や「 h( エイチ ) 」と「 n( エヌ ) 」と「 r( アール ) 」などが小学生にとって分かりにくい。そのため、大文字小文字を理解するために作成し配布した(\pageref{syasin}ページ図(g))。また、アルファベット対応表の配布だけではなく、小文字で書かれたRubyの単語の文字ごとに大文字のルビを振るようにした。
 
\label{syasin}
\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}
%\ref{tikara}で述べた力が小学生に身についたか判断する基準は以下の通りである。
 
実際に\ref{kasetu}節の仮説を立てたものを検証をする方法としてアンケートを3種作成した。アンケートの種類と結果については以下の通りである。また、アンケートで判断できないものは、授業の様子や小学生が作成したプログラムより判断する。
%行った結果【アンケート】関係をまとめる
 
 
 
\section{身につけたい力の判断基準}
 
\ref{tikara}節で述べた力をRubyてらこったでの具体的に判断する基準を述べる。
\begin{itemize}
\item 知識及び技能
 
プログラムを作成できる。
 
様々なメソッドを覚え、使うことができる。
 
\item 思考力、判断力、表現力等
 
自分が作成したいプログラムに対してどのメソッドを使うとできるか考えることができる。
 
\item 
学びに向かう力、人間性等
 
サンプルプログラムをどのよう工夫できるか自分で教科書を見てたり、大学生に聞きたりして取り組むことができる。
 
 
\item 工夫する力
 
サンプルプログラムを自分が作りたいものに作り変えることができ
る。
\item 伝える力
 
作成したものに対して発表ができる。
 
他の人の発表を聞いた後に感想を伝えることができる。
 
\end{itemize}
\subsection{アンケートの種類}
プログラミングで身につく力についての仮説を検証するために、アンケートは1回目の授業の開始前、毎回の授業後、最後の授業後に行った。
\\
\\
授業開始前アンケート
 
\begin{itemize}
 \item 普段の機械操作について
\item プログラミング教室参加理由
\item プログラミングの経験
\item プログラミングのイメージ
\item 作成したいプログラム
\item 学習について
\end{itemize}
 
毎回の授業後アンケート
\begin{itemize}
\item 授業で楽しかったこと(何でも可)
\item 授業中難しかったこと(何でも可)
\end{itemize}
最後の授業後アンケート
\begin{itemize}
\item 授業について
\item プログラミングについて
\item 論理的思考力について
\item 学習について
\end{itemize}
 
 
\subsection{作成したプログラムより判断}
小学生が授業をした後にサンプルプログラムの改造、5回目の授業で作成したオリジナルプログラムから知識が身についたか判断する。
\chapter{プログラミング教室の実施結果}\label{kekka}
作成したアンケートを1回目の授業前、毎回の授業後、最後の授業後に行った。本章では、そのアンケート結果を述べていく。
\section{アンケートの実施}
2019年度のRubyてらこったは、6月開始の教室には6名、7月開始の教室には6名、合計で12名参加した。
\section{授業前}
普段の機械操作とプログラミングのイメージ、経験、学校の学習についてのアンケートを実施した。
\subsection{機械操作について}\label{sousa}
普段どんな機器を使っているのか調査した結果は以下の通りである(表\ref{kankyou})。
選択肢の後につく()は点数化したものである。機械操作の部分については、使用頻度の高いものから高い点数をつけた。
 
 
\begin{table}[h]
\small
 \begin{center}
 \caption{機械操作について}
\begin{tabular}{|c|c|c|c|}
%\begin{tabularx}{50mm}{Y|Y|Y|Y}
\hline
\multicolumn{4}{|l|}{パソコンは使いますか}\\ \hline
  週3回以上(3)     &   週2回以上(2) &  週1回以下(1) &  使わない(0) \\ \hline
  0 &2 & 6 & 4 \\ \hline
 
 
\multicolumn{4}{|l|}{スマートフォンは使いますか}\\ \hline
  週3回以上  (3)   &   週2回以上(2) &  週1回以下(1) &    使わない(0)\\ \hline
  9 &0 & 1 & 2 \\ \hline
 
 
\multicolumn{4}{|l|}{テレビゲームはしますか(iPad, Switchも含めて)}\\ \hline
  週3回以上 (3)    &   週2回以上(2) &    週1回以下(1) &   しない(0) \\ \hline
  7 &2 & 1 & 2 \\ \hline
 
 
\multicolumn{4}{|l|}{パソコンゲームはしますか}\\ \hline
  週3回以上 (3)  &   週2回以上(2) &     週1回以下(1) &   しない(0) \\ \hline
  1 &1 & 1 & 9 \\ \hline
 
 
\multicolumn{4}{|l|}{携帯ゲームはしますか}\\ \hline
  週3回以上(3)      &   週2回以上(2) &  週1回以下(1) &    しない(0) \\ \hline
  0 &5 & 2 & 5 \\ \hline
%end{tabularx}
\end{tabular}
\label{kankyou}
    \end{center}
\end{table}
 
 
機械操作については、パソコンよりもスマートフォンを使用している参加者が多かった。また、ゲームをするときも、パソコンよりもテレビゲーム(iPad, Switchも含め)のほうが使用頻度が多いという結果がでた。
\subsection{プログラミングについて}\label{imeji}
プログラミング教室に参加した理由とプログラミングのイメージについて調査した。結果は以下の通りである(表\ref{bp})。選択肢の後につく()は点数化したものである。
 
\begin{table}[h] 
  \begin{center}
\caption{プログラミング教室に参加した理由とプログラミングのイメージについて}
 
\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{4}{|l|}{なぜプログラミング教室に参加しましたか}\\ \hline
 親のすすめ  &  友達が一緒だから & プログラミングに興味があるから &その他\\ \hline
  4 &0 & 7 & 1 \\ \hline
 
 
\multicolumn{4}{|l|}{プログラミングをしたことがありますか}\\ \hline
\multicolumn{2}{|l|}{したことがある} & \multicolumn{2}{|l|}{したことがない} \\ \hline
  \multicolumn{2}{|c|}{5} & \multicolumn{2}{|c|}{7} \\ \hline
 
 
 
\multicolumn{4}{|l|}{プログラミングは楽しそう}\\ \hline
  とても楽しそう(4) &   楽しそう(3) &  楽しそうではない(2) &  全く楽しそうではない(1) \\ \hline
  6 &6 & 0 & 0 \\ \hline
 
 
\multicolumn{4}{|l|}{プログラミングは難しそう}\\ \hline
  とても難しそう(4) &  難しそう(3) & 難しそうではない(2) &  全く難しそうではない(1) \\ \hline
  2 &7 & 3 & 0 \\ \hline
 
\multicolumn{4}{|l|}{作ってみたいプログラムはありますか(自由記述)}\\ \hline
  \multicolumn{4}{|l|}{ゲームプログラム(3名回答)、計算させるプログラム、学習のプログラム、字を書くプログラム}\\ 
 \multicolumn{4}{|l|}{占いプログラム}\\ \hline
 
  \end{tabular}
\label{bp}
    \end{center}
\end{table}
 
プログラミング教室の参加理由は、親の勧めや友達と一緒だからという理由よりも、プログラミングに興味があるからという理由が一番多かった。プログラミング経験については、半数以上が経験がないという結果になった。
プログラミングのイメージでは、楽しそうというイメージもあるが、難しそうというイメージがあることが分かる。作成してみたいプログラムについては、ゲームプログラムを作成してみたいというのが多かった。
\subsection{学習について}\label{gakusyu}
 
小学校での学習について調査した。結果は以下の通りである(表\ref{bsyougaku})。選択肢の後につく()は点数化したものである。
\begin{table}[h] 
 
  \begin{center}
\caption{小学校での学習について}
\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{4}{|l|}{ 学校の勉強が好き}\\ \hline
  とても好き(4) &      好き(3) &    好きではない(2) &  全く好きではない(1) \\ \hline
  4&6 & 2 & 0 \\ \hline
\multicolumn{4}{|l|}{学校の勉強が難しい}\\ \hline
  とても難しい(4) &  難しい(3)  & 難しくはない(2) &  全く難しくない(1) \\ \hline
  0&2 & 6 & 4 \\ \hline
\end{tabular}
  \label{bsyougaku}
    \end{center}
\end{table}
 
 
学習については、学校の勉強が好きであると回答した参加者が半数以上いた。また、学校の勉強が難しいと感じている人が少なかった。
\\
\\
\\
\section{毎回の授業}\label{maikai}
授業の振り返りとして授業中に楽しかったこと、難しかったことを書いてもらった。
\subsection{楽しかったこと}\label{tanosimi}
1回目の授業から5回目の授業で楽しかったことは以下の通りである(表\ref{furikaeri1})。
\begin{table}[h]
 
 \begin{center}
\caption{授業で楽しかったこと}
    \begin{tabular}{|l|l|} \hline
      回数 & 内容  \\ \hline \hline
      1回目 &  文字を打つこと(4名)、プログラム作成(3名)、作成したプログラム発表(3名)\\
          &コマンド入力(2名)、大学生と話したこと、学校で学習できないことを学べた\\ \hline
      2回目 & プログラムの改造(6名)、作成したプログラムの実行(2名)、文字を打つこと(2名)\\
           &他の人の作成したプログラムを実行すること、大学生と話したこと \\ \hline
      3回目 & プログラムを改造したこと(5名)、他の人が作成したプログラムを実行すること(4名)\\ \hline
      4回目 & プログラムの改造(9名)、プログラムを実行すること(2名)、大学生と話したこと \\ \hline
      5回目 & プログラムを作成したこと(10名)、プログラムを実行したこと、大学生と勉強したこと \\ \hline
    \end{tabular}
    \label{furikaeri1}
    \end{center}
\end{table}
 
 
授業で楽しかったことは、プログラミングを改造したことや文字を入力するという作業だけではなく、発表したり、他の人のプログラムを実行したことなどであった。
 
\subsection{難しかったこと}\label{muzukasisa}
初回から5回目までの全体を通して難しいと感じたことは以下の通りである(表\ref{fueikaeri2})。
\begin{table}[h]
 
  \begin{center}
\caption{授業で難しかったこと}
    \begin{tabular}{|l|l|} \hline
      回数 & 内容  \\ \hline \hline
      1回目 & 文字を打つこと(6名)、print と putsの違い(3名)、発表すること\\ \hline
      2回目 & プログラムの改造(4名)、文字を打つこと(3名)、whileの考え方(2名)\\
           &breakについて \\ \hline
      3回目 & プログラムを改造したこと(3名)、文字を打つこと(2名)、配列、乱数 \\ \hline
      4回目 & プログラムの改造(5名)、文字を打つこと、条件分岐 \\ \hline
      5回目 & プログラム作成(4名)、文字を打つこと(3名)、変数(2名)、覚えることが多い\\
          &発表したこと \\ \hline
    \end{tabular}
  \label{fueikaeri2}
    \end{center}
\end{table}
\\
なかでも、プログラムの改造、文字を打つこと、プログラムを作成するためのメソッドについての意見が多かった。文字を打つことでは、\ref{sousa}の結果から、PCを使用する機会が少ないため、キーボード操作が難しく感じたのではないかと考える。
 
\section{最後の授業後}\label{suuti}
5回目の授業後に1回目から5回目までの授業について、プログラミングを実際にしてみてどうだったか、学校の学習について、今後挑戦したいことについてアンケートを行った。
\subsection{授業について}\label{jyugyoukansou}
プログラミングの授業を実際に受講してみてどうだったか調査した。結果は以下の通りである(表\ref{ajyugyou})。選択肢の後につく()は点数化したものである。
\begin{table}[h] 
  \begin{center}
\caption{授業について}
\begin{tabular}{|l|l|l|l|l|l|l|l|l|l|l|l|}
\hline
 
\multicolumn{12}{|l|}{ 授業時間はどうでしたか}\\ \hline
\multicolumn{4}{|l|}{長い(1) ~~~~~~~~~~~~~~~~~~~~~~~~~~} &  \multicolumn{4}{|l|}{ちょうどよい(2) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}&\multicolumn{4}{|l|}{短い(3)}\\ \hline
   \multicolumn{4}{|c|}{1}&\multicolumn{4}{|c|}{11}&\multicolumn{4}{|c|}{0}\\ \hline
\multicolumn{12}{|l|}{内容は分かりやすかった}\\ \hline
\multicolumn{3}{|l|}{とても分かりやすい(4) ~~~~}&\multicolumn{3}{|l|}{分かりやすい(3) ~~~~~~~~}&\multicolumn{3}{|l|}{分かりにくい(2) ~~~~~}&\multicolumn{3}{|l|}{とても分かりにくい(1) }\\ \hline
\multicolumn{3}{|c|}{7}&\multicolumn{3}{|c|}{5}&\multicolumn{3}{|c|}{0}&\multicolumn{3}{|c|}{0}\\ \hline
\multicolumn{12}{|l|}{大学生は優しかったですか}\\ \hline
\multicolumn{3}{|l|}{とても優しい(4) }&\multicolumn{3}{|l|}{優しい(3) }&\multicolumn{3}{|l|}{優しくない(2) }&\multicolumn{3}{|l|}{全く優しくない(1) }\\ \hline
\multicolumn{3}{|c|}{12}&\multicolumn{3}{|c|}{0}&\multicolumn{3}{|c|}{0}&\multicolumn{3}{|c|}{0}\\ \hline
\multicolumn{12}{|l|}{授業に参加してみて楽しかったことを書いてください(自由記述)}\\ \hline
\multicolumn{12}{|l|}{プログラムを作成・改造すること(8名)、プログラムを実行できたこと、文字を打つこと}\\ 
\multicolumn{12}{|l|}{発表を聞くこと、大学生と話すこと、全て}\\ \hline
\multicolumn{12}{|l|}{授業に参加してみて難しかったことを書いてください(自由記述)}\\ \hline
\multicolumn{12}{|l|}{覚えることが多いこと(3名)、文字を打つこと(3名)、プログラムを作成・改造すること}\\ 
\multicolumn{12}{|l|}{(2名)、変数(2名)、配列、print}\\ \hline
 
\end{tabular}
  \label{ajyugyou}
    \end{center}
\end{table}
\\
授業については、授業時間はちょうどよく、内容は分かりやすかったという結果がでた。参加してみて楽しかったことは、プログラミングを作成・改造すること、プログラムの実行だけではなく、大学生と話したことなどがあった。難しく感じたこととして、覚えることが多い、文字を打つことという回答があった。
 
\subsection{プログラミングについて}\label{jissai}
プログラミングをしてみてどうだったのか調査してみた。結果は(表\ref{apr})の通りである。選択肢の後につく()は点数化したものである。
 
\begin{table}[h] 
  \begin{center}
\caption{プログラミングについて}
\begin{tabular}{|c|c|c|c|}
 
\hline
\multicolumn{4}{|l|}{プログラミングは楽しかった}\\ \hline
  とても楽しかった(4)& 楽しかった(3) &  楽しくなかった(2) &  全く楽しくなかった(1) \\ \hline
  8 &4 & 0 & 0 \\ \hline
\multicolumn{4}{|l|}{プログラミングは難しかった}\\ \hline
  とても難しかった(4) &  難しかった(3) &  難しくなかった(2) &  全く難しくなかった(1) \\ \hline
  1 &7 & 2 & 2 \\ \hline
\multicolumn{4}{|l|}{またプログラミングをしたい}\\ \hline
  とてもしたいと思う(4) & したいと思う(3) & したくないと思う(2) & 全然したくないと思う(1) \\ \hline
  5 &7 & 0 & 0 \\ \hline
\multicolumn{4}{|l|}{筋道をたてて考える力が身についたと思う}\\ \hline
  とても思う(4) &  思う(3) &  思わない(2) & 全く思わない(1) \\ \hline
  3 &9 & 0 & 0 \\ \hline
 
 
\end{tabular}
  \label{apr}
    \end{center}
\end{table}
 
プログラミングを実際にしてみて、楽しかったという回答もあったが、難しく感じていた参加者がいた。しかし、またプログラミングをしたいと思っていることが分かった。また、プログラミングを通して論理的思考力が身についたと参加者が実感できたと回答していた。
 
\subsection{学習について}\label{agakusyu}
 
小学校での学習について調査した。結果は以下の通りである(表\ref{agaku})。選択肢の後につく()は点数化したものである。学習については、授業開始前の結果\ref{gakusyu}節と比較してあまり変化が現れなかった。\\
\begin{table}[h] 
 
  \begin{center}
\caption{小学校での学習について}
\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{4}{|l|}{ 学校の勉強が好き}\\ \hline
  とても好き(4) &      好き(3) &    好きではない(2) &  全く好きではない(1) \\ \hline
  5&4 & 3 & 0 \\ \hline
\multicolumn{4}{|l|}{学校の勉強が難しい}\\ \hline
  とても難しい(4) &  難しい(3)  & 難しくはない(2) &  全く難しくない(1) \\ \hline
  0&3 & 4 & 5 \\ \hline
\end{tabular}
  
  \label{agaku}
    \end{center}
\end{table}
 \\
\\
\\
\\
 
\subsection{その他}\label{sonota}
自由に今後挑戦したいことを書いてもらった。内容は、以下の通りである(表\ref{tyousen})。
\begin{table}[h] 
  \begin{center}
\caption{挑戦したいこと}
\begin{tabular}{|l|l|l|l|l|l|l|l|l|l|l|l|}
\hline
\multicolumn{12}{|l|}{挑戦してみたいことを書いてください(何でも可)}\\ \hline
\multicolumn{12}{|l|}{もっと難しいプログラムを作る(3名)、家でもプログラミングをする(2名)、自分でゲームを}\\ 
 \multicolumn{12}{|l|}{作りたい(2名)、みんなにプログラミングを教える、50mクロールで泳ぐ、看護師になっていろんな}\\ 
 \multicolumn{12}{|l|}{人を救いたい}\\ \hline
\end{tabular}
   \label{tyousen}
    \end{center}
\end{table}
 
挑戦してみたいこととして、もっと難しいプログラムを作る 、家でもプログラミングをする、自分でゲームを作りたいなどプログラミングに関することや、50m クロールで泳ぐ、看護師になっていろんな人を救いたいなどプログラミング以外のことにも挑戦したいこと回答した参加者がいた。
 
 
\section{アンケートの分析}
プログラミングをしてみる前としてみた後では、波及効果が現れるのか、数値に変化があるのかを比較するために調べる方法としてt検定を用いた。
\subsection{アンケートの分析方法}
同じ人を2回測定するので対応のあるt検定を用いた。アンケートの結果を数値化し分析を行った\cite{kentei}。アンケート結果を数値に直した値ついては、\ref{suuti}節のアンケート結果にある通りである。Rに与えた実際の数値や関数のリストは、付録に添付する。
\subsection{アンケートの分析結果}
t検定で比較する質問項目は、プログラミングについて楽しそう、難しそうが実際にプログラミングを体験してみて楽しかった難しかったの経験、
学習(勉強が好き、勉強が難しい)についてである。結果は以下の通りである。
\begin{itemize}
 
\item 楽しそうと楽しかったを比較
 
水準1は授業前の「プログラミングは楽しそう」というイメージ(とても楽しそう (4)、
楽しそう (3)、楽しそうではない (2)全く楽しそうではない (1))の数値である。
水準2は授業後の「プログラミングは楽しかった」という(とても楽しかった (4)、楽しかった (3)、楽しくなかった (2) 全く楽しくなかった (1))数値である。
 
\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single]
 == Mean & S.D. ( SD=sqrt(Vtotal/N) ) ==
 
------------------------------------------------
          N      Mean      S.D.
------------------------------------------------
水準1    12      3.75      0.43
水準2    12       3.5       0.5
------------------------------------------------
 差      12      0.25      0.72
------------------------------------------------
 t(11)= 1.1516 ,    ns (.10<p)
------------------------------------------------
 
\end{lstlisting}
\ \ 事前のアンケートの「プログラミングは楽しそう」であるの結果と5回目の授業の「プログラミングは楽しかった」の結果の平均を比較したところ有意ではなかった。つまり、イメージと実際の差はなかった。
\item 難しそうと難しかったを比較
 
 
水準1は、授業前の「プログラミングは難しそう」というイメージ(とても難しそう (4)、
難しそう (3)、難しそうではない (2)、全く難しそうではない (1))数値である。
水準2は、授業後の「プログラミングは難しかった」(とても難しかった (4)
、難しかった (3)、難しくなかった (2)、 全く難しくなかった (1))数値である。
\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single]
 == Mean & S.D. ( SD=sqrt(Vtotal/N) ) ==
 
------------------------------------------------
          N      Mean      S.D.
------------------------------------------------
水準1    12      2.58      0.76
水準2    12         3      0.58
------------------------------------------------
 差      12     -0.42      0.95
------------------------------------------------
 t(11)= 1.4663 ,    ns (.10<p)
------------------------------------------------
 
 
\end{lstlisting}
\ \ 事前のアンケートの「プログラミングは難しそう」の結果と5回目の授業の「プログラミングは難しかった」の結果の平均を比較したところ有意ではなかった。つまり、イメージと実際の差はなかった。
\item 勉強が好き
 
 
水準1は、授業前の「学校の勉強が好き」の値(とても好き (4)、好き (3)、好きではない (2)、全く好きではない (1))である。
水準2は、授業後の学校の「勉強が好き」の値(とても好き (4)、好き (3)、好きではない (2)、全く好きではない (1))である。
\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<p)
------------------------------------------------
 
 
\end{lstlisting}
\ \ 事前のアンケートの「学校の勉強が好き」の結果と5回目の授業の「学校の勉強が好き」の結果の平均を比較したところ有意ではなかった。
\item 勉強が難しい
 
 
水準1は、授業前の学校の勉強が難しいの値(とても難しい (4) 、難しい (3)、難しくはない (2)全く難しくない (1))である。
水準2は、授業後の学校の勉強が難しいの値(とても難しい (4) 、難しい (3)、難しくはない (2)全く難しくない (1))である。
\end{itemize}
\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single]
 
 == Mean & S.D. ( SD=sqrt(Vtotal/N) ) ==
 
------------------------------------------------
          N      Mean      S.D.
------------------------------------------------
水準1    12       1.5       0.5
水準2    12      2.17       0.8
------------------------------------------------
 差      12     -0.67      1.03
------------------------------------------------
 t(11)= 2.1574 ,    +  (.05<p<.10)
------------------------------------------------
 
\end{lstlisting}
\ \ 事前のアンケートの「学校の勉強が難しい」の結果と5回目の授業の「学校の勉強が難しい」の結果の平均を比較したところ差があり有意傾向である。この数値の差は、5回目の授業のアンケートの数値の方が学校の授業が難しく感じたということである。
\\
考察については次の第\ref{kousatu}章で述べる。
 
 
\section{小学生が作成したプログラム}
授業を通して様々なメソッドを学んだ小学生が5回目のオリジナルプログラムで作成たものは、ゲームプログラム、クイズプログラム、タイピングプログラムなどである。
 
このプログラムはクイズプログラムで学校の授業で習ったことをクイズにし、回答時間を出力したものである。ポイントは、条件分岐である。それぞれの問題に4つの選択肢があり、回答をキーボード入力から受け取り、選択したものによって出力するものを変えている。ただ、出力させるのではなく、sleepを使い工夫をしている。
 
\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single]
# coding: utf-8
#!/uer/bin/env ruby
# coding: utf-8
 
puts("(9*7)/(2+1)の答えはいくつでしょう")
 
puts("1:32")
puts("2:24")
puts("3:21")
puts("4:31")
print("答えを入力:")
 answer = gets.to_i
 
sleep(1)
puts("結果は……")
sleep(1)
 
 
if answer == 1 then
  puts("ザンネン！ハズレ!もう1度やってみよう!")
elsif answer == 2 then
  puts("ハズレだよ!おしい!")
elsif answer == 3 then
  puts("正解だよ!すごいね!!")
elsif answer == 4 then
  puts("残念!はずれだよ!")
else
  puts("その番号はないよ！！")
end
 
puts("")
puts("4と9の最小公倍数はいくつでしょう")
 
puts("1:24")
puts("2:27")
puts("3:32")
puts("4:36")
print("答えを入力:")
 answer = gets.to_i
 
sleep(1)
puts("結果は……")
sleep(1)
 
 
if answer == 1 then
  puts("ザンネン！ハズレ!もう1度やってみよう!")
elsif answer == 2 then
  puts("ハズレだよ!おしい!")
elsif answer == 3 then
  puts("残念!次がんばろう!")
elsif answer == 4 then
  puts("正解だよ!すばらしい!!!")
else
  puts("その番号はないよ！！")
end
 
puts("")
puts("日本列島の春の季節のだいたいの雲の動きは")
 
puts("1:南から北")
puts("2:西から東")
puts("3:東から西")
puts("4:北から南")
print("答えを入力:")
 answer = gets.to_i
 
sleep(1)
puts("結果は……")
sleep(1)
 
 
if answer == 1 then
  puts("ザンネン！ハズレ!もう1度やってみよう!")
elsif answer == 2 then
  puts("正解!絶好調!!!!")
elsif answer == 3 then
  puts("残念!次がんばろう!")
elsif answer == 4 then
  puts("ザンネン!ちがうよ!")
else
  puts("その番号はないよ！！")
end
 
puts("")
puts("日本列島は何個の島が集まって出来ているでしょうか")
 
puts("1:4こ")
puts("2:6こ")
puts("3:7こ")
puts("4:5こ")
print("答えを入力:")
 answer = gets.to_i
 
sleep(1)
puts("結果は……")
sleep(1)
 
 
if answer == 1 then
  puts("正解だよ!完璧!!!")
elsif answer == 2 then
  puts("ザンネン!ちがうよ!")
elsif answer == 3 then
  puts("もう1度確認しよう!!")
elsif answer == 4 then
  puts("おしい!!!!もう1度やってみよう!")
else
  puts("その番号はないよ！！")
end
\end{lstlisting}
 
 
このプログラムはlatterという配列の中に入っている``グラードン'',``カイオーガ'',``レシラム'',``キュレム''の4つをどのくらいの時間で入力できるかというプログラムである。
ポイントは、繰り返し処理で条件があったときに、配列の中にある問題を順番に入力させるものが変わるようになっている。最後にかかった時間を出力できることである。
\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single]
#!/usr/koeki/bin/ruby
# -*- coding:utf-8 -*-
 
letter = ["グラードン","カイオーガ","レシラム","キュレム"]
 
print("どれだけ早くポケモンを打てるかな\n")
printf("%s\n", letter)
 
start = Time.now.to_i
 
i = 0
while i < letter.length 
  printf("\v%s:", letter[i])
  input = gets.chomp
  if input == letter[i]
    stop = Time.now.to_i
    STDERR.print("\t正解\n") 
    i += 1
  end
end
 
printf("かかった時間 %d 杪!\n", stop - start)
 
 \end{lstlisting}
 
 
\chapter{プログラミング教育の考察}\label{kousatu}
本章では、第\ref{kekka}章のアンケート結果から考察を述べる。
 
\section{プログラミングについて}
プログラミングのイメージは楽しそうというイメージがある。しかし、難しそうというイメージもあった。授業をしてまたプログラミングをしてみたいという回答が多かった。実際にプログラミングを学んでみて難しかったという回答があった。内容が難しく感じたのは、\ref{dankai}で述べたように発達段階の要因があるのではないかと考える。また、内容が難しく感じたという理由だけではなく、キーボード操作も難しく感じた要因ではないかと考える。
 
\section{小学生に身につけてほしい力}
Rubyてらこったで参加した小学生に身につけてほしい力についてアンケート結果、授業の様子、作成したプログラムから考察を述べる。
\begin{description}
 \item[知識及び技能]\mbox{}\\ 
5回目の授業で自由に作成したプログラムを見ると授業で学んだことを理解し、工夫してプログラムを作成していた。そのことから、知識及び技能が身についたと言える。
\item[思考力、判断力、表現力等]\mbox{}\\ 
毎回の授業でプログラムを作成するときに、分からないことがあると教科書を見て考えたり、大学生に質問をしたりしていた。また、もっとプログラムを良くするにはどのメソッドを使えばいいのか判断していた。そのことから、思考力、判断力、表現力等の力が身についたと言える。
\item[学びに向かう力、人間性等]\mbox{}\\ 
プログラムを集中して作成したり、授業中に分からない所があった時に周りの大学生に質問をしたりして解決をしていた。また、難しい内容の部分でも積極的に学ぼうとする姿勢があったことから、
学びに向かう力・人間性等が身についたと言える。
\item[工夫する力]\mbox{}\\
毎回の授業でサンプルのプログラムを自分で考えて作成していた。5回目の授業のオリジナルのプログラムを作成する時に前に作成したものを改良して作成ができていたので、身についたと言える。
\item[伝える力]\mbox{}\\ 
自分が作成したプログラムの工夫した点や頑張ったところなど発表することができていた。また、他の人が作成したプログラムに対しての
感想やどうやったらこの動きになるのかなど質問をお互いにしていたので、力が身についたと言える。
\end{description}
 
 
\section{論理的思考について}
論理的思考についての結果\ref{jissai}節では身についたと実感している小学生が多いという結果になった。5回目の授業で今まで学んだものを使い作成するときにもどのようにしたら動くのかを考えて作成している小学生が多かった。しかし、\ref{jissai}節で述べたようにプログラミングが難しいという結果も出た。
\section{波及効果について}
 
仮説では学校の勉強が好きになり、難しく感じなくなるという変化があるのではないかと考えたが実際には変化がなかった。変化がなかった原因としては以下3つの原因があると考える。1つ目は、回数が少ないことである。プログラミング教室開催が全5回と回数が少ないため変化が現れなかったと考える。2つ目は、対象人数が少ないことである。今回の調査対象12人中、勉強が好きの項目で数値が変化しなかったのは7人、数値があがった人は2人、数値が下がった人は3人であった。勉強が嫌いの項目では、変化しなかったのは10人、数値が上がったのは1人、数値が下がったのは1人であった。変化しない参加者が多く数値に変化が現れなかった。3つ目は、質問方法に問題があったことである。学習の部分だけでは、波及効果が見られなかった。しかし、自由記述では、\ref{sonota}で述べたように、もっと難しいプログラムを作る、自分でゲームを作りたい、みんなにプログラミングを教える、50m クロールで泳ぎたいなどの回答があった。そのような回答から波及効果があったのではないかと考える。そのため、学習の項目だけに変化がなかっただけで質問方法に問題があったのではないかとも言える。
 
 
\section{t検定の結果}\label{tkekka}
有意傾向の結果がでたのは、勉強が難しいという項目であった。
小学校の学習内容よりも今回のプログラミング教室の内容が難しく感じたためこのような結果がでたと考える。また、プログラミング教室の開催期間が夏休み中であり、学校で授業をしていない期間であるため、実感をもって答えられなかった可能性がある。
 
\chapter{手引作成について}
\ref{kaisaijyoukyou}節で述べたようにプログラミング教室は、年々増加している。しかし、プログラミング教室を企画・運営をするには「どの人を対象とするのか」、「道具は何を準備するのか」、「教える体制、準備期間など」を決めなければならない。しかし、そのような情報について詳しくまとめてあるものがWeb上で公開されていない。そのため、プログラミング教室を運営するための手引が必要であると考えた。
Rubyてらこったの授業でのアンケートの結果、アンケート分析、授業の様子、作成したプログラムからプログラミング教育を通して、力を身に付けることができたという結果になった。そのことから、Rubyてらこったの活動を基準としたプログラミング教室の手引を作成した。
\section{手引の作成の概要}
Webサイトにてプログラミング教室を開催するための方法が公開されている\cite{web1}\cite{web2}\cite{web3}。公開されて
いる情報はプログラミング教育の目的、使用教材、所要時間などである。しかし、その情報では足りない部分があると考えた。例えば、小学生にプログラミングを教える体制、教える方法など具体的な内容などである。そのため、実際にプログラミング教室を開催する企画を立ててから授業を行うための手引が必要であると考えた。
 
 
本研究で作成する手引は、実際にRubyなどを用いたプログラミング教室を企画し、運営していくのに利用してもらうことを目的としている。そのために、企画するうえでの計画の立て方、プログラミング教室を通して身につけてほしい力、小学生に教える範囲の決め方などを述べている。運営では、教えるために必要な役割、授業の準備、教えるための方法を述べている。
\section{手引の構成}
Rubyてらこったの活動の企画、運営方法、授業の進め方をまとめ、はじめてプログラミング教室を運営する人を対象にした手引を作成した。
\begin{description}
 
\item[1章~ はじめに] \mbox{}\\ 
プログラミング教育必修化の背景、プログラミング教室、プログラミング教室の課題についてまとめてある。
\item[2章~ プログラミング教室実施のための必要項目] \mbox{}\\ 
教える側が必要なこと、プログラミング教室の目的と小学生に身につけてほしい力、授業・日程についてまとめた。
\item[3章~ 運営] \mbox{}\\ 
運営方法、必要な道具(PC、USBメモリ、教科書、ノート、ホワイトボード、マグネットシート、アルファベット対応表)、授業準備、各授業のサンプルプログラム、模擬授業、他の機関との調整についてまとめた。
\item[4章~ 授業をするための方法] \mbox{}\\ 
当日の準備・確認事項、授業の流れ、プログラムの発表方法について、授業後のミーティングについてまとめた。
\item[5章~ 授業を受講した小学生の感想] \mbox{}\\ 
アンケートから、参加した小学生が授業で楽しいと感じた部分、難しいと感じた部分についてまとめた。
\item[6章~ 教えるための要点] \mbox{}\\
教える上で注意すること 、その他(授業の内容が予定より進まなかった場合、参加者が来れなくなった場合、利用している PC の調子が悪くなった時についてまとめた。
\item[7章~ 実際に行うための一例] \mbox{}\\ 
Ruby てらこったの活動を踏まえて企画、運営を円滑に行うための提案についてまとめた。内容は、企画、運営方法、広報関係の提案、ミーティング方法、申し込み方法の提案授業、6月に行った準備日程についてまとめた。
\item[8章~ 課題の考察] \mbox{}\\ 
プログラム教室を運営するための課題(プログラミングツールに関する課題、プログラミング環境に関する課題、プログラミング教育を行う教員の課題)の考察についてまとめた。
\item[付録] \mbox{}\\ 
授業で使用した、コマンド集、アルファベット対応表を添付している。
\end{description}
\chapter{結論}
 
 
\section{結論}
参加した小学生は、プログラミング教育を通して、「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」、「工夫する力」、「伝える力」が身に付けることができたという結果になった。
\section{今後の展望}
今後の展望については、以下の通りである。
\begin{description}
 
 
 \item[はじめてプログラミング教室を運営をする人に手引を利用してもらう]\mbox{}\\ 
実際に手引を利用してもらいプログラミング教室を運営してもらう。そこで情報が不足していたり、改善をしたほうがよい場合は手引を修正する。
 
 
\item[アンケートの改善]\mbox{}\\ 
今回はアンケートと作成したプログラムにより身についた力の判断をした。プログラムができてもそれぞれのメソッドについてしっかり理解しているのか分からない部分がある。そこでアンケートに加え、学習した用語を実際にテストのように書いてもらう方法で判断し検証をする。
 
\end{description}
\section{手引}
Rubyてらこったでの活動でプログラミング教育の効果があったという結果になった。そのことから、Rubyてらこったを基準に手引を作成し、付録と添付する。
\newpage
\section*{謝辞}
本研究は、平成30年度私立大学ブランディング事業「地域資源を産業振興やIT技術により活用できる人材の育成」の助成を受けた成果である。
酒田市教育委員会、鶴岡教育委員会、参加してくれた方などRubyてらこったの活動に協力をしていただいた方に感謝を申し上げる。
 
\begin{thebibliography}{99}
 
 
             \bibitem{monbu}  文部科学省. ``小学校プログラミング教育の手引(第二版)''. \url{http://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2018/11/06/1403162_02_1.pdf}, (参照日2019-5-24).
 
 
 \bibitem{sinri} サトウタツヤ  渡邊芳之.「心理学・入門ー心理学はこんなに面白い」,株式会社有斐閣,2011,p268.　
　\bibitem{soumu}  総務学省. ``プログラミング人材育成の在り方に関する調査研究報告書''. \url{http://www.soumu.go.jp/main_content/000361430.pdf}, (参照日2019-8-1).　　
\bibitem{matumoto} 室谷心 .``小学生にプログラミングを教える''.松本大学研究紀要（2013)p269-281.
 
\bibitem{sojyo} 田口雄太 杉浦忠男 中島厚秀 .``プログラミング教室を通した相互成長―宇城市プログラミング教室―''.崇城大学紀要（2019)p115-122.
 
 
\bibitem{akita} 廣田千明 寺田裕樹 橋浦康一郎  渡邉貫治.``地方大学における学生主体の子ども向けプログラミング教室　ー秋田県におけるIT教育の推進ー''.秋田県立大学ウェブジャーナルA（地域貢献部門）（2017)p71-80.
  \bibitem{niigata} 河原和好 .``小学生を対象にしたプログラミング教育について''.新潟国際情報大学情報文化学部紀要（2017)p27-35.
 
 \bibitem{siritu}  文部科学省.``私立大学研究ブランディング事業''. \url{http://www.mext.go.jp/a_menu/koutou/shinkou/07021403/002/002/1379674.htm}, (参照日2019-9-18).
 \bibitem{koeki}  東北公益文科大学. \url{https://www.koeki-u.ac.jp/news_topics/branding-saitaku_2017.html}, (参照日2019-9-18).
 
  \bibitem{naiyou} 広瀬雄二.「Ruby プログラミング基礎講座」,技術評論社,2006,p312.
 
             \bibitem{terakotta}  大石桃菜 佐々木大器 山口円馨 .``東北公益文科大学における小学生向けプログラミング教室「Rubyてらこった」の取り組み''.文部科学省 私立大学研究ブランディング事業 日本遺産を誇る山形県庄内地方を基盤とした地域文化とＩＴ技術の融合による伝承環境研究の展開（平成29年度～平成33年度)p50-54.
 
 
 \bibitem{kentei}  田中敏 Nappa. ``js-STAR''.\url{http://www.kisnet.or.jp/nappa/software/star/}, (参照日2019-12-3).
 
\bibitem{web1} Progra!. ``小・中学生向けプログラミング教室を開業（開校）するための準備と手順のポイント''. \url{https://progra.org/blog/65/}, (参照日2019-11-14).
　
 
\bibitem{web2} NPO法人Rubyプログラミング少年団. ``~一日Rubyプログラミング体験教科書''. \url{https://github.com/smalruby/smalruby.jp/tree/master/source/files}, (参照日2019-11-14).　　　　       
 
 
\bibitem{web3} 総務省. ``一日Rubyプログラミング体験教科書''. \url{http://www.soumu.go.jp/programming/data/017/017_01_01.pdf}, (参照日2019-11-14).　
 
 
 
　　　　　             
　\end{thebibliography}
\chapter*{付録}
 
 
 
 
 
 
 
 
\end{document}
 
 
 