%#!platex -kanji=%k %#DVIPDF dvipdfmx -f ipa.map \AtBeginDvi{\special{pdf:mapfile ptex-ipa.map}} \documentclass{jsbook} %\pagestyle{empty} \usepackage[dvipdfmx]{graphicx} %\usepackage{listings, jlisting} %\usepackage[sectionbib]{chapterbib} %\usepackage{ascmac} \usepackage{geometry} \usepackage{url} % 文中にURLを書くときは \url{} で括る \geometry{textwidth=160mm, textheight=225mm} \renewcommand{\bibname}{参考文献} \title{Unityによる学習アプリの提案} \author{広瀬研究室3年 \\C1211088 佐藤逸樹} \date {令和6年1月11日} \begin{document} \maketitle \begin{center} {\bfseries 概要} \end{center} 日本では2020年からは小学校,2021年からは中学校,2022年からは高校でのプログラミング教育の必修化が始まっている。小学校,中学校の場合,実際に行われるプログラミング教育とは文字を入力していくようなプログラミング言語を学ぶものではなく,ビジュアル型プログラミング言語などを用いてプログラミング的思考を育むものである。実際にテキスト型プログラミング言語を学ぶのは高校に進学してからである。しかし,後に学ぶ言語に触れておくことは予習となり、高校に進学してかの授業理解に役立つのではないだろうかと考えた。そこで,小学生,中学生が高校に進学したときに予習となるような学習アプリケーションの作成を提案する。本研究で作成するアプリケーションは,Unityを用いて作成し,パズル形式で学習できるようにすることで,小学校,中学校で扱うビジュアル型プログラミング言語を学ぶ際の形に近い状態で,テキスト型プログラム言語を学べるようにする。(412文字) \tableofcontents \chapter{はじめに} \section{背景} 2017年及び2018年に行われた文部科学省による学習指導要領改訂\cite{tebiki}によって,コンピュータを理解し上手に活用していくことは,これからの社会を生きていく子どもたちにとって,将来どのような職業に就くとしても,極めて重要なこととなっているという考えから,2020年には小学校,2021年には中学校,2022年には高校でのプログラミング教育の必修化が行われている\cite{suke}。平成28年に行われた文部科学省の有識者会議によると,小学校,中学校のプログラミング教育は実際に文字を書くようなテキスト型プログラミング言語を学ぶのではなく,自分の意図した一連の活動を実現させるためにどのような動きや記号が必要で,それらをどのように組み合わせたり改善していけばよいかを論理的に考えていく力であるプログラミング的思考を育むことが目的であると定義した\cite{kaigi}。テキスト型プログラミング言語は高校に進学してから学習する\cite{koukou}。文部科学省はプログラミング的思考を育む方法のうちコンピュータを用いる方法でブロックを積み上げるようにしてプログラミングを行うビジュアル型プログラミング言語を用いて自分が考えている動きを実現させる方法を想定している。実際に岐阜県の小学校では第3学年からビジュアル型教材を扱っているという実施例がある\cite{gihu}。ビジュアル型プログラミング言語は初学者にとって使いやすいプログラミング言語と考えられており,入門段階で成功を収めている。 %この間に文章を入れる(予習の重要性、しかし〜と始めるようなテキスト型を急に学習する難しさなど) \\ しかし,ビジュアル型プログラミング言語が入門段階で成功を収めていると言っても,高校に進学後いきなりテキスト型プログラミング言語を学ぶことは,学習内容を理解することがで難しい人も出てくるのではないかと考える。%例えば公益大の...。:公益大の基礎プロで履修者に対して落とす人はどれくらいいるかなどを書いてテキスト型プログラミングを初めて学ぶ難しさの根拠を書く。 プログラミングに限らず学校で学ぶことは一度で覚えられるものばかりではないため,学校での学びで授業に遅れず理解を深めるためには予習を行うことが重要であると考える。%予習が重要であるという例。予習:反転授業 \\ そこで,このビジュアル型プログラミング言語を利用して後に学習するテキスト型プログラミング言語を学ぶことは,今後プログラミング言語を学習する際の予習となり,授業理解が捗るのではないかと考えた。 \section{目的} 本研究ではビジュアル型プログラミング言語の形でテキスト型プログラミング言語を学習できるアプリケーションを開発し,プログラミング学習を受けている小中学生が,高校に進学した後にプログラミング言語を学習する際の予習としてもらうことを目的とする。 \chapter{先行事例} \section{先行サービスの例} ビジュアル型プログラミング言語はすでにいくつも世の中に出回っている。ここでは先行サービスを3つ紹介していく。 \subsection{Scratch} Scratch\footnote{\url{https://scratch.mit.edu/}}は世界最大の子供向けコーディングコミュニティーでシンプルなビジュアルインターフェースを持ったコーディング言語であり,特に8歳から16歳向けにデザインされているがすべての年代の人々使われている。自宅,学校,博物館,図書館など幅広い場面で利用されている。 %スクラッチの画面を入れる \subsection{Viscuit} Viscuit\footnote{\url{https://www.viscuit.com/}}はメガネという単純な仕組みたった一つだけで簡単なプログラムから組み合わせ次第で複雑なプログラムまで作ることができるプログラミング言語である。Viscuitではアニメーション・ゲーム・絵本などを簡単に作ることができる。 %ビスケットの画面を入れる \subsection{TILES} TILES\footnote{\url{https://vpltiles.com/}}はシンプルなプログラミング言語であり使用する命令は6つのみであるため多くの命令を覚える必要がない。またプログラミングの基本を学ぶための学習テキストがついているため,学習を勧めていくのが容易である。この学習テキストの応用編では人工知能の基礎を学ぶこともできる。 %タイル図の画面を入れる \section{先行研究の例} ここではビジュアル型プログラミング言語とテキスト型プログラミング言語の両方を使用した先行研究を紹介していく。 \subsection{松澤芳昭・酒井三四郎による研究} 松澤と酒井の研究\cite{bizyuron}は,ビジュアル型プログラミング言語は入門段階で成功を収めているが,将来テキスト型プログラミング言語を必要とする学習者がテキスト型言語への発展が見えにくいシステムを利用することは,入門学習への動機付けをそぐ理由となり,ビジュアル型プログラミング言語で学習した内容がその後の発展につながらないとしたら本末転倒であるとして,ビジュアル型プログラミング言語とテキスト型プログラミング言語を相互変換できるBlockEditorというシステムを用いて,ビジュアル型言語でプログラミングの基礎知識を学習し理解したあとテキスト型言語による実装へとシームレスな移行を目的としている。結果として,最終的に全体の80%の人のBlockEditor使用率が低下している。またBlockEditorを使うことによるJava習得への影響についての質問でBlockEditorを使うことでJava構文の理解が深まると思うというものの支持率が半数程度得られた。このことからBlockEditorがJava言語習得の足場かけとして機能しているという結論がなされている。 \subsection{岡本恭介・安藤明伸による研究} 岡本と安藤の研究\cite{okamoto}は,ビジュアル型プログラミング言語としてBlocky Gamesを,テキスト型プログラミング言語としてPythonを利用し,その学習順序がプログラミングへの知識・技能・情意面の変化として教育効果にどのような影響を与えるのか考察することを目的としている。結果として,どちらのグループも事前・事後アンケートの結果から情意面の意識に有意な変化はなかったが,事前・事後テストでは先にビジュアル型プログラミング言語を学習したグループの方がもう一方に比べ「全くわからない」という回答が少なくなっていたことから,先にビジュアル型プログラミング言語を学習することの優位性が示された。 \subsection{先行事例の課題点} スクラッチやタイルズはもともとが子供向けに作られているためプログラミングを全く行ったことがない人であってもプログラムを組むことができるが,ビジュアル型言語であるためテキスト型言語を習得することができない。 ビスケットはプログラムを書く際にメガネという独自のルールに則って作業をするため,テキスト型言語を使用する際の形と大きく異なることになる。 松澤,酒井らは彼らの研究の限界として,BlockEditorの利用率の分析にとどまっており,BlockEditorが理解度の向上に寄与した直接的なデータが得られなかったことを上げている。 岡本恭,安藤らの研究の今後の課題として,彼らが実験で行った画像処理に対する学習以外の学習内容に変えても効果が得られるかどうかというものを挙げている。 \subsection{先行研究からの考察} 先行研究では,先にもしくはテキスト型言語と併用してビジュアル型言語を学習することによる優位性やテキスト型言語習得への足がけとなることが示された。しかし,理解度の向上や他の学習内容に対して効果があるのかは直接的に示されていない。本研究では,ビジュアル型言語を用いて直接テキスト型言語を学ぶため理解度の向上及び他の学習内容に対して効果があるのかどうかを示すことができると考えられる。これはこれからプログラミング教材を作成する人にとって意義のあることである。本研究で開発するシステムは先行研究に残された課題を解決できるよう提案を行った。 \chapter{Unityを用いた学習アプリケーションの提案} ここでは、先述した先行事例の課題点を解決できるシステムを提案する。 \section{システムの提案} 本研究では,語群欄に表示させたビジュアル型言語のような文字の書かれたブロックをパズルゲームのように解答欄に並べ,問題に回答することでテキスト型言語を学習できるシステムを作成する。(図\ref{figure:quiz})問題の前にはその問題で扱われる単元やメソッドに対する説明を行う。(図\ref{figure:image}) このシステムを利用することでプログラミングを初めて学習する人やビジュアル型言語しか学習したことがない人であっても,簡単にテキスト型言語を学習することができる。 \begin{figure}[htb] \centering \includegraphics[width=7cm]{aprigaiyou(1).pdf} \caption{クイズの出題例} \label{figure:quiz} \end{figure} \begin{figure}[htb] \centering \includegraphics[width=5cm]{sistem-1.pdf} \caption{システムの流れ} \label{figure:image} \end{figure} \chapter{システムの設計} \section{システムの前提} \begin{description} \item[前提1]システムの利用者はテキスト型プログラミング言語を学習したことのない学生とする。 \item[前提2]システムはWeb上に投稿し,アクセスした人は誰でも利用できるようにする。 \item[前提3]アクセス及びシステムを用いた学習のタイミングはテキスト型プログラミング言語を学習するまでの間で任意とする。 \item[前提4]システムの利用は,テキスト型プログラミング言語学習のための予習とするために行う。 \end{description} \section{システムの全体の流れ} \begin{enumerate} \item 利用者はシステムが投稿されたWebサイトにアクセスする。 \item 学習したい単元を選択し,問題のあるページに移動する。 \item はじめに問題に即した説明文を読む。 \item 問題文を表示し,解答に使うブロックとブロックを当てはめるための解答欄を表示する。 \item 解答欄に正しくブロックが配置されたら正解を表示する。 \item 1から3のを別の問題で繰り返す。 システムの概念図は図\ref{figure:unitysistem},システムの流れは図\ref{figure:gainen}の通りである。 \end{enumerate} \begin{figure}[htb] \centering \includegraphics[width=9cm]{unitysistem.pdf} \caption{システムの概念図} \label{figure:unitysistem} \end{figure} \begin{figure}[htb] \centering \includegraphics[width=7cm]{sistem.pdf} \caption{システムの流れ} \label{figure:gainen} \end{figure} \section{システムの概要} 本システムの機能は,プログラミング言語であるRuby言語についての問題を学習する単元ごとに用意し,その問題に利用者が本システム上でパズル形式で回答するという機能である。単元は問題回答前に利用者自身が選べるようにする。 \section{学習内容について} プログラミング言語学習で学習する単元の一覧は図\ref{tab:unit}のとおりである。 本研究で作成したシステムを利用者がWeb上で利用する際に学習するプログラミング言語は東北公益文科大学の基礎プログラミングの授業でも扱われているRubyとし,内容は上記の単元の中でもプログラミングをする際によく使われる変数,制御構造,メソッドの一部の範囲とする。 \begin{table}[hbtp] \caption{プログラミング学習における単元の一覧} \label{tab:unit} \centering \begin{tabular}{|c|p{7cm}|} \hline 単元 & 主な学習内容 \\ \hline \hline 変数 & 値と変数の種類,演算子,代入演算子,論理演算子 など \\ \hline 制御構造 & if,while など \\ \hline メソッド & print,printf,gets,chomp,to\_i など \\ \hline 配列 & 配列について,配列の作り方,配列の値を取り出す方法 など \\ \hline 正規表現 & 正規表現とは,正規表現の使い方 など \\ \hline ハッシュ & ハッシュとは,ハッシュの利用方法 など \\ \hline など & \\ \hline \end{tabular} \end{table} %\begin{figure}[htb] % \centering % \includegraphics[width=7cm]{unit.pdf} % \caption{プログラミング学習における単元の一覧} % \label{figure:unit} %\end{figure} %表だからキャプションを表の上にする \chapter{システムの開発} \section{開発環境} \begin{itemize} \item Unity Unityとは主に2D,3Dゲームの制作に用いられるゲーム制作エンジンで簡単なゲームから複雑なゲームまで様々なゲーム開発に用いられている \item C# C#とはマイクロソフトが開発したプログラミング言語でオブジェクト指向型の言語であり,GUIアプリ開発や,Webtアプリ開発,ゲーム開発などに使われる。今回はUnityにプログラムを入力する際に使用。 \end{itemize} \section{システムの機能} ここではシステムに含まれる機能を説明する。 \subsection{単元選択機能} 単元選択機能は,単元選択画面に実装される機能である。システムの利用者がシステムを利用するときに自身が学習したい単元を選択するための機能である。作成途中の単元選択機能の画面を図\ref{figure:selectunit}に示す。この図のunit1と書かれているようなところに単元名を記入し,その場所が押されたら問題説明画面\footnote{選択した単元やその問題で扱われるメソッドに対する説明を行う画面。その画面のときに画面を押すと問題回答画面に移動する。}に移動した後,パズルクイズ形式学習機能が実装された問題回答画面へ移動する。選択できるようにする単元の内容は5.4節で示したとおりである。 %作成途中のunityの画像を貼る、どうして画像のような構図にしたのかかく \begin{figure}[htb] \centering \includegraphics[width=7cm]{selectunit.png} \caption{単元選択画面の図(仮)} \label{figure:selectunit} \end{figure} \subsection{パズルクイズ形式学習機能} パズルクイズ形式学習機能は,システムの利用者が単元選択画面で選択した単元についての問題が出題され,それに対して利用者はパズル形式で回答する機能である。作成途中のパズルクイズ形式学習機能の画面を図\ref{figure:unity}に示す。この図のquizと書かれているところに問題文が表示される。右にあるworld”と書かれたブロックがおいてある欄は語群であり,そこから解答欄である緑色の箱にブロックを移動して問題に回答する。このような構図にしたのはシステムの利用者がWebサイトにアクセスする媒体が計算機であってもスマートフォンであっても同じ画面で利用できるようにするためである。 \begin{figure}[htb] \centering \includegraphics[width=7cm]{unity.png} \caption{問題回答画面の図(仮)} \label{figure:unity} \end{figure} \subsection{機能の開発} 単元選択機能及びクイズ学習機能の開発にはUnityとC#を使用する。 \section{システムの提供方法} Unityではシステムをwebサイトに投稿することができるためweb上に上げたシステムを使用者に使ってもらうという形で提供する。 \chapter{実験} \section{実験方法} 本研究のシステム評価の方法として東北公益文科大学の野球部一年生を利用者として,システムを利用してもらった後,アンケートに回答してもらいその結果によって評価を行う。(図.\ref{figure:test}) \begin{figure}[htb] \centering \includegraphics[width=7cm]{test.pdf} \caption{実験の流れ} \label{figure:test} \end{figure} アンケートの内容は表\ref{tab:result}のとおりである。 \begin{itemize} \item 実際にコードを書くときに自分でかけそうか この質問の回答結果からシステムによる学習で利用者が学習内容に対する予習となったかを考察する。 \item これからもプログラミングを続けられそうか この質問の回答結果からシステムによる学習で利用者の学習意欲に対する影響を考察する。 \item 自由記述 利用者のシステムに対する意見を書いてもらい,システムの改善に繋げられるようにする。 \end{itemize} \begin{table}[hbtp] \caption{アンケートの内容} \label{tab:result} \centering \begin{tabular}{|c|p{4cm}||c|p{4cm}|} \hline 質問 & できない←ーー→できそう \\ \hline \hline 実際にコードを書くときに自分でかけそうか & 1ー2ー3ー4 \\ \hline これからもプログラミングを続けられそうか & 1ー2ー3ー4 \\ \hline 自由記述 & \\ \hline \end{tabular} \end{table} %\begin{figure}[htb] % \centering % \includegraphics[width=7cm]{wsheet.pdf} % \caption{アンケートの内容} % \label{figure:result} %\end{figure} \chapter{結論} \section{現在の状況} %結論は簡潔に書く。 現在システムは単元選択機能・パズルクイズ形式学習機能を実装するためのUI画面はおおむね完成といったところまでできており,機能そのもののプログラムを書き進めているところである。課題点として利用者が使用する端末によって画面や動作にどのような変化が現れるかを確認できていないことが挙げられる。 \section{今後の展望} 今後の展望として機能ごとのプログラムを完成させ各機能を連結させることを考えている。また,システムが完成したときにもっと利用しやすいUIにするためにや使用する端末によって画面や動作にどのような変化が出るのかを確認し,どの端末であってもほぼ同じ動作と画面になるように改良を行っていく。 \begin{thebibliography}{} \bibitem{tebiki}文部科学省. ``小学校プログラミング教育の手引(第三版)''. 2020-02. \url{https://www.sejuku.net/blog/wp-content/uploads/2021/07/20200218-mxt_jogai02-100003171_002.pdf}, (参照2023-08-15). \bibitem{suke}文部科学省. ``学習指導要領改訂に関するスケジュール''. \url{https://www.mext.go.jp/content/20220907-mxt_kyoiku02_100002604_001.pdf}, (参照2023-08-15). \bibitem{kaigi}文部科学省. ``小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)''. 2016-06-16. \url{https://www.mext.go.jp/b_menu/shingi/chousa/shotou/122/attach/1372525.htm}, (参照2023-11-20). \bibitem{koukou}文部科学省. ``高等学校 学習指導要領(平成30年公示)''. 2018-03. \url{https://www.mext.go.jp/content/20230120-mxt_kyoiku02-100002604_03.pdf}, (参照2023-08-15). \bibitem{gihu}岐阜県教育委員会 学校支援課. ``小学校プログラミング教育 実践事例集''. 2020-02. \url{https://www.pref.gifu.lg.jp/uploaded/attachment/238416.pdf}, (参照2023-08-15). \bibitem{bizyuron}松澤 芳昭,酒井 三四郎. ``ビジュアル型言語とテキスト記述型言語の併用によるプログラミング入門教育の試みと成果''. 研究報告コンピュータと教育. vol.2013-CE-119, no.2. \bibitem{okamoto}岡本 恭介,安藤 明伸. ``ビジュアル型とテキスト型プログラミングにおける学習順序が教育的効果に与える影響''. 2020. \url{https://www.jstage.jst.go.jp/article/jjet/44/Suppl./44_S44052/_pdf/-char/ja}, (参照2023-09-25). \end{thebibliography} \end{document}