「『なでしこ』によるプログラミング言語の導入」

「『なでしこ』によるプログラミング言語の導入」
野村ゼミ
井後 宏康
原 佑輔
松江 信太郎
吉末 千紘
山口大学 教育学部 情報科学教育課程 数理情報コース
1.はじめに
現在、高等学校で教科「情報」が必修になるほど、情報を扱うことや、コンピュータを
用いた作業ができるようになることは、情報化社会を生きていくうえで重要なスキルにな
りつつある。そのような社会の変化の中で、ソフトウェアエンジニアリング関連の学科や
コースなどを設置する大学も増え、それ以外の大学等でも情報関連の講義がさまざまな学
部で受講できるようになってきている。特に、情報処理学会が委員として参加している
CCSE※の活動の中では、前者のような大学の参照モデルになることを願って「大学学部等
におけるソフトウェアエンジニアリング教育・訓練カリキュラムモデル例」が作成され、
web 上でも公開されている。私たちは、これらの情報教育の中で、プログラミング学習に
着目した。プログラミングは、
「大学学部等におけるソフトウェアエンジニアリング教育・
訓練カリキュラムモデル例」で1年前期から「プログラミング及び演習(1)」として学習す
るようになっており、このことからもわかるように、情報科の学習をする上で基礎的なこ
とだと考えられる。
私たち数理情報コースの学生は、「計算機言語」つまりプログラミングについての講義を
必修の科目として、2年生で8単位もとることになっている。その講義で学ぶ言語はC言
語であり、プログラミングが情報科の学習をする上で基礎的なことだといっても、ほとん
どの学生がプログラミングをすること自体が初めてで、C言語でのプログラミングに悪戦
苦闘し、苦手意識を持ったように感じられた。
なぜ、学生の多くがC言語でのプログラミングに苦手意識を持ってしまうのか。初めて
のプログラミングでも、もっと抵抗なくスムーズにプログラミング学習を始めることがで
きるようにするためにはどうしたらよいか。私たちは話し合いをもとに、苦手意識を持つ
理由を考え、いくつかの仮説を立てた。そして、本研究では、その仮説が正しいかを確か
めるため、学生の協力のもとアンケートを行い、プログラミングに苦手意識を持つ原因を
可能な限り減らし、多くの学生がスムーズにプログラミング学習を行い、プログラミング
が楽しいと感じられるように学習を支援する教材を作成することを目標とした。
本論文は以下のように構成される。2章では、アンケートの結果とそれをもとにどのよ
うな支援が必要かを導き出す。3章では、研究のタイトルにある「なでしこ」についての
説明と、学習支援のための教材の作成について記す。4章では、実際に作成した教材の紹
介を行う。最後に、5章で本論文の結論と将来的な課題を提示する。
※
IEEE/ACM Computing Curricula/Software Engineering Steering Committee
2.仮説とアンケート結果
私たちは、計算機言語の講義を受けていたとき、講義中の様子や学生同士の会話の中で、
C言語でのプログラミングが嫌いだという学生が多いような印象を受けていた。そして、
その理由を考えたときに、ほとんどの学生にとって初めて習うプログラミング言語である
「C言語」のプログラミングが、日本人にとって日ごろから使い慣れていない英単語での
表記であることに抵抗を感じてしまうのではないか、そのせいもあって、実際にプログラ
ムを見ても何が行われているのかがわかりにくいのではないか、さらに、単にプログラミ
ング言語としての難易度が高いということも問題なのではないかという仮説を立てた。
そこで、以下のようなアンケートを作成し、実施した。
① C言語でのプログラミングが、好きですか?
□どちらかといえば好き。
□どちらかといえば嫌い。
② ①と答えた理由を書いてください。
[
]
③ C言語の命令文が、英単語であることに抵抗はありましたか?
例 do, switch, int など
□抵抗があった。
□抵抗はなかった。
まず質問①で、実際にC言語でのプログラミングが嫌いな学生はどの程度いるのかを確
かめ、質問③で、日ごろ使い慣れていない英単語での表記に対する抵抗があるためではな
いかという私たちの仮説が正しいかどうかを確かめる。そして質問②は、私たちが立てた
仮説以外の、C言語を嫌いになる、あるいは好きになる理由を探るためにつくった項目で
ある。
このアンケートは数理情報コースの2,3年生を中心とする、計算機言語の講義を受講し
ている、あるいは計算機言語の講義を受講し終えた学生、計39人を対象に行った。その
結果を以下の円グラフに示す。
質問①
質問③
好き
31%
抵抗あり
46%
抵抗なし
54%
嫌い
69%
好き
嫌い
グラフ1:質問①の結果
抵抗あり
抵抗なし
グラフ2:質問②の結果
C言語が嫌いな人の
英単語表記に対する抵抗
抵抗がある人の
C言語に対する感触
好き
22%
抵抗なし
48%
抵抗あり
52%
嫌い
78%
好き
嫌い
抵抗あり
抵抗なし
グラフ3:質問①と質問③の組み合わせ結果
まず、質問①の結果は、
「どちらかといえば好き・12 人」
「どちらかといえば嫌い・27 人」
で、予想通り3分の2以上の学生が「どちらかといえば嫌い」と感じているということが
わかった。また、質問③の結果は、
「抵抗があった・18 人」
「抵抗はなかった・21 人」とな
り、一見英単語での表記であることは大きな問題ではないようにも感じられる。しかし、
質問①と質問③を組み合わせてみると、質問③で「抵抗があった」と答えた学生のうち、
4分の3以上が質問①で「どちらかといえば嫌い」と答えている。さらに、質問①で「ど
ちらかといえば嫌い」と答えた学生のうち半数以上が質問③で「抵抗があった」と答えて
いる。つまり、
「英単語での表記に抵抗を感じた学生の大半がC言語を嫌いになる」、ある
いは、
「C言語が嫌いな学生の多くは英単語での表記に抵抗を感じている」と考えることが
できる。この結果私たちは、初めて学ぶプログラミング言語が英単語での表記でなければ、
もっとスムーズにプログラミングについて学ぶことができるのではないか、そうすること
で、プログラミングが嫌いだと感じる学生を減らすことができるのではないかと考えた。
さらに、質問②では下のような意見を聞くことができた。
∼どちらかといえば嫌い∼
・ 全くわからない。難しい。どうすれば良いか分からない。
・ 難しくてなかなか理解・マスターできない。
・ 将来的な必要性・利便性を知らないから。
・ 数学以外で、日常生活において利用する機会がない。
・ どの命令文を使うのかの判断が難しい。
・ 命令文の中に命令文があると、複雑になり分からなくなる。
・ 命令文の意味が複雑。
・ 英語で書かないといけないから難しい。
・ 覚えることが多すぎる。
・ ポインタや配列が面倒。ポインタがうまく使えない。
∼どちらかといえば好き∼
・ プログラムを作成して、実行できたときうれしい。達成感。
・ 難しい計算が解ける。
・ 自分で考えて作る(プログラム作成)のが楽しい。おもしろい。
・ パソコンが好きだから。
・ どうすれば良いのか、なぜそうするのか考えることが面白い。
・ エラーになっても修正することに面白さを感じる。
「英単語で書く」ということ以外の嫌いな理由としては、やはり、「難しい」という意見
も多く挙げられ、「利用する機会がない」や「利便性・必要性が感じられない」ということ
などもあげられた。これらを解決するために、まず、「C言語よりも簡単な言語で導入を行
うことで、『プログラミングは難しい』という意識を軽減すること。」「プログラミングがど
のように役立つかを、プログラミングを学習する前に、ある程度伝えること。
」「実際に役
立つプログラムや簡単なゲームなどを学生に提示することで、プログラミングに興味・関
心を持たせること。」といった支援も重要であることがわかった。
以上のアンケート結果から、プログラミング学習の導入として、日本語でのプログラミ
ングを経験させることや、もっとプログラミングの面白さや利便性が感じられるような教
材による学習支援をすることが必要であるということが考えられる。そして私たちは、こ
れらを実現できるようなプログラミング言語を探し、それを用いて必要な学習支援ができ
る教材を作成することにした。
3.「なでしこ」とは
3.1 日本語プログラミング言語の歴史
これまで言ってきたように、まずはプログラミング言語の命令が、英単語であることを
解決するために、私たちは日本語で記述できるプログラミング言語を探した。すると、意
外なことに日本語プログラミング言語は、複数存在していることがわかった。
日本語プログラミング言語は 20 年以上前から開発されており、想像以上に長い歴史を持
っていた。第一世代は、1980 年代後半に生まれた「和漢」「日本語ベーシック」
「MIND」
などといった言語である。しかしその後、1990 年代は日本語プログラミング言語の暗黒期
となり、新たな日本語プログラミング言語もほとんど生まれず、実用に対しても否定的な
考えが多かった。この暗黒期を生き延びたのが「MIND」で、これは現在も市場で上位のシ
ェアを築いている。そして、2000 年前後には暗黒期を抜け、第二世代の日本語プログラミ
ング言語が開発されていった。そのひとつが、
「なでしこ」で、これが現在市場で No1の
シェアを築いている。
「なでしこ」以外には、
「言霊」や「TTsneo」などといった言語もこ
の時期に登場した。その後、日本語プログラミングサミットや同コンテストも開催され、
日本語プログラミング言語の新しい時代の幕開けとなった。それ以降も新たな日本語プロ
グラミング言語は生まれている。
3.2 「なでしこ」の特徴と選択理由
これら多くの日本語プログラミング言語の中で、私たちは本研究において「なでしこ」
を選んだ。その理由は、現在市場で No1 シェアの地位を築いているという点から、英語プ
ログラミング言語への導入だけにとどまらず、将来的にも役に立つ学習にしたいというこ
とや、
「なでしこ」が最初からビジネスユースを目的にして Delphi※の処理速度と豊富な機
能を生かして作られているという点から、実用性や利便性がより感じられるのではないか
と考えたからである。また、「なでしこ」は、『なでしこで誰でも簡単プログラマー』をキ
ャッチフレーズに開発されたプログラミング言語であり、ネットから無料でダウンロード
できる。さらに、「なでしこ」の特徴として、以下の三つが挙げられていた。
① 自然な日本語を使ってプログラムが作れる。
② 文法が単純で敷居が低くプログラミング入門に最適。
③ ほんの数行のプログラムでメール送信やファイルの圧縮など、
基本的な仕事がこなせる。
これは、私たちがプログラミング学習において必要だと考えた支援とほぼ一致している。
このプログラミング言語に興味を持った私たちは、
「なでしこ」についてもっと詳しく知る
ために、調べたり実際にダウンロードして使ってみたりすることにした。そこで、まずわ
かったことは、
「なでしこ」には公式マニュアル本が存在するのだが、現在それが入手困難
な状態にあるということである。そのため、私たちは「なでしこ」のホームページ上にあ
る公式マニュアルを利用して、
「なでしこ」の基本的なプログラミング方法を学ぶことにし
た。ただ、実際に公式マニュアルに取り組みながら、やはりこのままでは、教材として学
習支援に用いるのは難しいという考えに至った。確かに、基本的な内容から始まり、きち
んと最後まで取り組むことができれば、ある程度は「なでしこ」を使いこなすことができ
るようになる。しかし、中には、多少わかりにくい表現があったり、学習支援として重要
な、学習を続けさせるための工夫まではされていなかったりする。そこで、私たちはこの
「なでしこ」公式マニュアルを改良して、プログラミング学習の導入として利用できる web
教材を作成することにした。
3.3 「なでしこ」と「C 言語」の関係
「C 言語」の導入として「なでしこ」を用いるからには、「C 言語」と「なでしこ」のプ
ログラミングの形式が類似しており、「C 言語」より「なでしこ」のほうが簡単でなければ
ならない。そこで、ここでは前述した二つのことを中心に、「なでしこ」と「C 言語」の関
係を見ていく。
まず、簡単なプログラミングの例を用いて、
「なでしこ」で使う命令と「C 言語」で使う
命令を比較する。例えば、「なでしこ」の『言う』は「C 言語」の『puts』を用いて記述す
※
Borland(ボーランド)が提供する統合開発環境。コンパイラに要する時間が非常に短い。
ることができる。以下、左が「なでしこ」による記述、右が「C 言語」による記述である。
「こんにちは!」と言う。
puts(“こんにちは!”);
また、
「なでしこ」で『尋ねる』を用いて変数に値を代入するプログラムは「C 言語」の
『printf』と『scanf』を組み合わせた記述で実現できる。
「数字は何ですか?」と尋ねる。
printf(“数字は何ですか?”);
数字はそれ。
scanf(“%d”, &no);
さらに、
「なでしこ」の『もし∼違えば∼』という命令は「C 言語」で『if∼else∼』とほ
ぼ同様の記述ができる。
「数字は何ですか?」と尋ねる。
printf(“数字は何ですか?”);
数字はそれ。
scanf(“%d”, &no);
もし、数字>0 ならば
if(no>0)
「それは正数です。
」と言う。
違えば
「それは正数ではありません。
」と言う。
puts(“それは正数です。”);
else
puts(“それは正数ではありません。”);
これらのプログラムから、「なでしこ」で学ぶ記述形式は「C 言語」と類似していること
がわかる。このほかに、
「C 言語」の『while 文』なども「なでしこ」での類似した記述が
可能である。しかし、上記のプログラムだけでは「なでしこ」のほうは実行できるが、「C
言語」のほうはエラーになってしまう。これが次に説明する「なでしこ」が「C 言語」より
簡単だと考えられる理由のひとつであり、
「C 言語」のテキストのはじめから「おまじない」
と表現され、常に記述しなければならないものである、ヘッダのインクルードが「なでし
こ」では必要ないのである。また、「C 言語」では学習を始めた早いうちから「型」につい
ての認識ができなければならないが、
「なでしこ」では変数を利用する際など、型を指定す
る必要もなく、基本的なプログラミングを学んでいる間はほとんど型を意識する必要もな
い。そして、もちろん日本語で記述できることからも「なでしこ」が「C 言語」より簡単で
あると言える。
上記のような「なでしこ」と「C 言語」の関係から、この二つは類似した部分も多く、
「な
でしこ」のほうが難易度は低いと考えられるため、
「C 言語」の導入として「なでしこ」を
用いている。
4.教材紹介
4.1 ホームページ・ビルダー
今回 web 教材の作成にあたって、ホームページ・ビルダーを用いることにした。その理
由は、本研究の中心が「なでしこ」にあり、私たちはホームページ作成に関しては初心者
であるため、HTML を新たに学ぶのではなく、ビルダーを用いることで「なでしこ」につ
いて学ぶ時間を多く確保することにある。さらに、ホームページ・ビルダーは他のホーム
ページ作成ソフトと比べて安価であり、使いやすさと価格のバランスが極めて取れている
ということもホームページ・ビルダーを用いることに決定した理由である。
4.2 教材の概要
これからは、実際に私たちが作成した web 教材を紹介する。教材の構成は、第1章「な
でしこを使ってみよう!」、第2章「分岐」、第3章「繰り返し」
、第4章「配列を利用しよ
う」
、第5章「便利な反復構文」
、第6章「簡単なゲームを作ろう」という流れになってい
る。これは、大学の講義で用いた「C 言語」のテキストと「なでしこ」の公式マニュアルを
もとに作成しており、そうすることで、大学で C 言語を学ぶ際に、よりスムーズに取り組
めるように考慮した。
下の図は、web 教材の一部である。この教材は下記の URL で実際に見ることができる。
<http://mis.edu.yamaguchi-u.ac.jp/kaisetu/sotsuron2007/nadeshiko/ENTER.html>
図1.マニュアル
図2.命令一覧
図3.穴埋め式の選択問題
図4.おまけのページ
マニュアルは図1のような様式で統一し、実際にユーザーが目にする操作画面や、実行
結果を載せることで、自分の操作や、結果の表示が正しいかを確かめながら独学での学習
もしやすいようにした。また、マニュアル内のさまざまな用語や命令についての解説を一
覧の形式で作成し(図2)
、各章にリンクを作成することで、学習を進めやすく、さらに、
一通り学習した後にも利用しやすいようにしている。そして、達成感や学ぶ意欲を持たせ
るために、各章ごとに小テストも作成した。小テストの形式は、穴埋め式の選択問題(図
3)と、ユーザーが「なでしこ」を実際に起動させてプログラムを作成する形式で、後者
には解答例を作成し解説も加えた。また、プログラミングに興味・関心を持たせるために、
私たち製作者が実際に「なでしこ」で作成したゲームなどをのせ、さらに、アンケートの
中で嫌いな理由にあげられていた、「利便性や数学以外での使い道がわからない」という部
分をカバーするために、実用的な、ファイルの「圧縮」や「バックアップ」なども可能で
あることを紹介するページも作成した(図4)
。
5.おわりに
本研究では、私たち自身初めてとなる日本語でのプログラミングを経験した。実際のと
ころ、C 言語をすでに学習して、ある程度理解できるようになっている人にとっては、その
後「なでしこ」のようなシンプルな日本語プログラミング言語に取り組むと、多少抵抗を
感じてしまうところがある。たとえば、C 言語では変数を定義する際、型を指定したり、初
期値を指定しなければならなかったりする場合がほとんどである。それに対して、
「なでし
こ」では多くの場合、型はプログラムに応じて任意で決められる。私たちは「C 言語→なで
しこ」という順で経験したため、そういった部分で違和感を持つことがあったが、
「なでし
こ→C 言語」という順で学習ができたら、プログラミング初心者の間は型指定などの細かい
ことを難しく考えることなく、プログラミングの流れを理解していける。それから、C 言語
に移行していくことで、より、C 言語をスムーズに使いこなせるようになるだろう。
今後の課題としては、小テストの問題数がまだまだ少ないので、もっと多くすることや、
各命令などにおいて、C 言語との関連を説明するページを作成することで、さらに C 言語
の導入としての効果を高めることなどが考えられる。そして最終的には、実際にプログラ
ミングを経験したことのない学生にこの教材に取り組んでもらい、効果を実証する必要が
あると考えられる。
参考文献
[1]『日本語プログラミング言語「なでしこ」
』
:<http://www.nadesi.com/>
[2]柴田望洋:新版 明解 C 言語 入門編,2005
[3]『大学学部等におけるソフトウェアエンジニアリング教育・訓練カリキュラムモデル例』
:
< http://www.ipsj.or.jp/12kyoiku/J07/J0731/397-SEmodel_jpn1.pdf#search=' 大 学 学 部
におけるソフトウェアエンジニアリング教育・訓練カリキュラム' >,情報処理学会,
2007.12.28 アクセス
[4]『日本語プログラミング言語、およそ 20 年の歴史と今後』
:
<http://www.sciencehouse.jp/etc/research/20050604jpphistory2.pdf>
2007.12.28 アクセス
[5]『ホームページの作成方法』
:<http://www.ube-c.ac.jp/~egi/homepage18.html>
2007.12.28 アクセス
[6]『ホームページビルダーとは?』
:
<http://seo.kawahara-office.com/builder/builder.html>2008.01.17 アクセス