# スマートフォン向け 日本語プログラミング学習アプリケーションの開発

大久保遥花・宍戸真
東京電機大学大学院情報環境学研究科
\{20jkm05\}@ms.dendai.ac.jp, \{shishido\}@mail.dendai.ac.jp

## 1 はじめに

近年,プログラミング教育が重要視され,日本で は,2020 年度から小学校においてもプログラミング 教育が導入されている[1].文部科学省の狙いは，「知識及び技能」,「思考力,判断力, 表現力等」,「学びに 向から力,人間性等」のような資質・能力を育成する ことである.手引書では,プログラミング教育におい て,身近な生活でコンピュータが活用されているこ とや,問題の解決には必要な手順があることに気付 くことで「知識及び技能」を育成し, 発達の段階に即 して,プログラミング的思考を育成することで「思考力,判断力,表現力等」を育成し,コンピュータの働き を,よりよい人生や社会づくりに生かそうとする態度を涵養することで「学びに向から力,人間性等」を 育成するとされている。

このような現状の中,プログラミング学習を支援 するシステムは有益であると言える.本研究の目的 は,多くの人にプログラミングの面白さを実感して もらい,人々のプログラミング学習を支援する学習教材を開発することである.

## 2 先行研究

## 2.1 ビジュアル言語とテキスト言語の違い

図 1 Scratch の記述イメージ小学校教育に適した教育用プログラミング言語の 提案の論文[2]では,テキスト型言語,フローチャート 型言語,ルールベース型言語,ブロック型言語のよう なプログラミング言語について,それぞれの利点と 欠点を述べている.その中でも,教育用言語として特 に使用されることが多いブロック型言語について，問題と考えられる点がいくつか挙げられている.こ の中で挙げられているブロック型言語のテキスト型言語とのギャップという項目に,共感する部分があ った.ブロック型言語は,用意されているブロックを 組み立ててプログラムを組むので,コードを一から 入力するテキスト型言語に比べて,入力の手間が省 け簡単にプログラムを組むことができる.また,文法 のエラーを防ぐことができるという利点があるが，一方で,そのプログラムの組み立てる手法は,テキス 卜型言語の手法と大きく異なる. 図 1 は,教育現場で よく使用されているブロック型言語である Scratch の画面の例である.ブロック型言語のようなビジュ アル言語は,プログラミング的思考力を培う教材で はあるが,見た目やプログラミングの手法がテキス 卜型言語と乘離しているため,汎用的なテキスト型 のプログラミング言語の学習にスムーズに移行する ことは難しいだろう.そこで本研究は,汎用的なテキ スト型プログラミング言語の学習への移行を円滑に することを目標とする。

## 3 提案システム

本節では,提案するシステムの特徴や機能を説明 する。

## 3.1 日本語によるプログラミング

コードの記述・エラーメッセージは基本的に日本語を用いる.その理由は,プログラミング初学者にと って,母国語でない言語による記述は学習を進める 上で障壁になる場合が多いからである.日本語によ って内容を理解しやすくすることで,初学者が挫折

しないようにすることが狙いである.

## 3.2 スマホで使用できるアプリケーション

現在, 日本はスマートフォン,PC, タブレット端末 などの電子機器が広く普及しているが, 普段コンピ ユータ機器をあまり使用しない人も含めた個人での 所有率が最も高いディバイスはスマートフォンであ ると考えられる.本稿で提案するシステムは,PC を持 っていない人でも気軽にプログラミングを学習して 欲しいという狙いがあるため,多くの人が利用しや すいスマートフォンを使って学習ができるようにす る.

## 3.3 汎用的プログラミング言語に近い文法

3.1 で説明したように, 日本語を用いた分かりやす い記述を行えるようにすることを目指すが，一方で 2.1 に示したように,本システムは,汎用的なプログラ ミング言語の学習への移行を円滑にすることが目標 であるため, 日本語の文法に片寄りすぎて汎用的な プログラミングの文法と大きく異なってしまうこと は避けたい.そこで,一般的に大学の講義に用いられ る場合が多い C言語に近い文法で学習できるように する.

## 4 設計$\cdot$開発

## 4.1 開発環境

本研究では,Android アプリを開発する.開発ツール は Android Studio で,言語は Java を使用する.レイア ウト画面設計には XML が用いられる。

## 4.2 構成

本アプリケーションの構成は,全 5 章から成る.そ れぞれの章の内容は,表 1 にまとめる.

表 1 章ごとの学習内容

それぞれの章で,学習内容に関する説明を読み,そ れに関する演習問題を解くという流れに沿って学習 を進める。

## 4.3 演習問題の例

記述が正しい場合

図 2 プログラム実行のフローチャート
図 2 は,全体の動作の流れを示した図である.まず，入力画面で,パーツのボタンを正しい順番で押して 記述をする.ボタンを押し終えたら, 実行ボタンを押 す.もし記述内容が正しければ,実行結果が正しく表示される.記述が正しくない場合は,エラーメッセー ジが表示され,また最初から入力をすることになる.

## 図 3 文字列を表示(正解)

図 4 文字列を表示(不正解)

図 3,4 は文字列を表示させる演習問題の例である.「実行すると” ハロー,ワールド! ” と表示される」 という画面の例で, 図 3 は成功した場合, 図 4 はエ ラーが発生する場合の画面である.それぞれ,画面下部に正解または不正解のトーストが表示される.

次に,変数の代入に関する問題について説明する.

「ありがとう」をそれぞれ代入し,変数の中身を出力 するという問題である. 3 つの変数を出力することが 出来ると正解を示すトーストが表示される.

出力

図 5 変数の問題(正解)

図 5 は,変数 $a, b, c$ にそれぞれ数値,文字,文字列を代入し, 3 つの変数を表示させるプログラムの記述と実行結果である.ボタンを押して上図のように記述し，実行ボタンを押すと下図のような結果が表示され，画面下部に正解のトーストが表示される.

入力

数値 $\mathrm{a}=10 ;$
文字 b="や";
文字列 c="ありがとう"
表示(a);
表示(b);
表示(c);

出力

図 6 変数の問題(エラー)

図 6 は図 5 のプログラムの 3 行目「文字列 $\mathrm{c}=$ " ありがとう”;」の文の最後のセミコロンを記述しな かった場合の入力と実行結果である.下図のような 結果が表示され,画面下部に不正解のトーストが表示される。

次に,算術演算子に関する問題について説明する. この問題は," $3 \times 8$ "," $48 \div 3$ ","56を 11 で割った余り" を出力するという問題である. 3 つの演算結果を出力 することが出来ると正解を示すトーストが表示され る.

出力

図 7 算術演算子の問題(正解)

図 7 は,"3×8","56を 11 で割った余り”," $48 \div 3 "$ の 演算結果を表示させるプログラムの記述と実行結果 である.画面上のボタンを押して上図のように記述 し, 実行ボタンを押すと下図のような結果が表示さ れ,画面下部に正解のトーストが表示される.

出力

図 8 算術演算子の問題(不正解)

図 8 は,” $3 \times 8$ ", $48 \div 3$ ” の計算結果を表示させ るプログラムの記述と実行結果である.この場合, 3 つの演算結果を表示させることが出来ていないため，画面下部に不正解のトーストが表示される.

入力

出力

図 9 算術演算子の問題(エラー)

図 9 は,” $3 \times 8$ ”の計算結果を表示させる記述が,末尾の;が抜けているためエラーが引き起こされる例 である.この場合も図 8 と同じく画面下部に不正解 のトーストが表示される.

## 4.4 演習問題の実装

本節では, 4.3 で説明した演習問題について,どのよ うに実装しているか説明する。

まず,図 3,4 の文字列を表示させる問題は,正解の 文字列を用意し, 入力欄に記述された内容が正解の 文字列と等しければハローワールドと表示させ,等 しくなければエラーが発生するようになっている.

次に,図 5,6の変数に関する問題について説明する.最初に入力欄に記述された文字列を改行ごとに split メソッドを用いて分割し，配列にする.そして for ルー プで「表示(変数名);」文が記述されている箇所を探 す.「表示(変数名);」文を見つけたら,それよりも前に 該当する変数を定義する文が記述されている場合は その変数の値を出力させ,定義する文が記述されて いない場合はエラーメッセージを表示させる.

最後に,図 7,8,9 の算術演算子の問題について説明 する.入力が「表示(計算式);」の形式に当てはまって いるかどうかを正規表現で判断する.マッチしてい れば括弧内の計算式を取り出し,数値と演算子に分 け,演算結果を返すようになっている。

## 5 まとめ

本稿では,日本語を用いたプログラミング初学者向けのスマートフォン向けアプリケーションを提案 した.今後は,表 1 に示した内容を学べるように教材 を豊富にし,様々なタイプの演習問題を取り入れる。 また,UI/UX デザインを改良し,使いやすいレイアウ トにする.教材を作成した後は,教材を実際に使用し てもらい評価を受ける実験を行っていく。

## 参考文献

1. 文部科学省. 小学校プログラミング教育の手引 （第二版）, 2018.

2. 久保文乃,久野靖. 小学校教育に適した教育用プ ログラミング言語の提案, 2019.
 大久保遥花・宍戸真 東京電機大学大学院情報環境学研究科 \{20jkm05\}@ms.dendai.ac.jp, \{shishido\}@mail.dendai.ac.jp  