プログラミング教育

日本語でプログラムを書こう

~大学生からでは遅すぎるプログラミング教育

大岩元先生 元慶應義塾大学 環境情報学部

第6回 母語によるプログラミングに熱い期待

文法通りのプログラムを書くのは簡単ではない

前回までで、日本語でプログラムを書くということが、どういうことであるかがわかったと思います。実は、プログラムを書こうとすると、プログラムテキストに間違いが全くないことが要求されます。これが実はなかなか面倒な要求です。1字の打ちまちがいも許されません。

 

しかし、英字には、l(小文字エル)のように数字の1とよく似た文字があって、見分けるには、注意深く見る必要があります。

 

 

文法間違いが起こらない入門用プログラミング言語

 

こうしたことまで気を配らなければならないのは大変なので、入門用のプログラミング言語には、プログラムで使う単語を書いたタイルを紙面上に貼り付けて、そこに必要な数字等を書き込むことでプログラムを作る、タイルスクリプティングと呼ばれる手法が使われることがあります。現在広く使われている Scratch はそうした言語の代表的なものです。

 

英語から派生した言語は読み書きに翻訳が必要

 

しかし、元々英語を前提で作られた言語であるため、語順が日本語と同じになりません。このため、学習者は、「変な日本語」を読まされることになってしまいます。こうしたことがおこらないように、「言霊」を開発した岡田 健氏が、Scratch の前に広く使われていた Squeak の上で、自分が書いたプログラムが日本語として読める環境を実現していました。このシステムは「ことだま on Squeak」と呼ばれ、このプログラムのお陰で、SFCの学生がクラス全員、自分が作りたいプログラムを完成することができるようになりました。打ち間違いが全く生じなかった上に、自分が望んだ動作をしないプログラムに対して、なぜそうなってしまったかをプログラムを日本語として読むことで可能になったからです。

 

既存のプログラミング言語は英語をもとに、それを簡略化したものです。最初に紹介したタートルグラフィックスの FD(Forward) RT(Right Turn)はそうしたものの一例です。こうした命令文を読み解くには、略語の意味を考え、英語の語順を日本語の語順に直すという作業をしないと、意味を理解することができません。

 

このような翻訳作業は、慣れてしまえば簡単なことですが、初心者には易しいことではありません。命令文をきちんと読んで理解せず、だいたいの理解でわかったことにしてしまうのですが、思い通りに動かない時には正確な理解をしないと、解決には到達できません。

 

Scratch も早く日本語として読めるようになると良いのですが、日本人のユーザーが少ないこともあって、米国人はこの問題を理解してくれません。

 

決定版入門用日本語プログラミング言語「ことだま on Squeak」

 

「ことだま on Squeak」については、下記のサイトで、SFCの授業で行った教材が全て公開されています。

http://crew-lab.sfc.keio.ac.jp/lectures/2011s_ronpro/pukiwiki/index.php

 

ここには、教科書『ことだま on Squeak で学ぶ論理思考とプログラミング』をはじめ、学習環境全体がダウンロードできるようになっています。(「学生用ページ」をクリックしてください。)

 

『ことだま on Squeak で学ぶ論理思考とプログラミング』が発売された当時、直ぐに次の書評が(アマゾンに)投稿されました。漢字が読めれば小学生でも使えるようです。

 

--------------------------------

5つ星 小学生にも理解できる基礎からのオブジェクト指向

投稿者 Kats Oba 投稿日 2008/6/11

 

小学3年生の息子がプログラミングに興味をもちはじめたので、Squeakで一緒に遊び始めました。より簡単な「すくいーくであそぼう」をひととおり体験した後で、本書を渡したところ、オブジェクト、メッセージといった概念を、まだこれらの言葉は知りませんが、理解し始めたように感じます。

練習問題をひとつずつこなすうちに、少しずつSqueak環境にも慣れ、徐々に自分の思ったスクリプトをかけるようになるようです。

本書の主要なターゲットは高校生、大学生ですが、好奇心さえあれば小学校中学年以上であれば、楽しみながら独力で取り組んでいけます。

--------------------------------

 

これからのプログラミング

 

プログラミングは、書いたプログラムの意味を正確に読み解く必要があります。教師が簡単にできる読み解きも、入門者には難しい作業となります。一方、AIがもてはやされる時代にプログラミング言語のように意味の確定した言語を自然言語で表わすことは、比較的容易に実現できます。

 

初心者は間違いなく母語でプログラムを書くことが良いのですが、一部の組込み技術者からは、母語によるプログラミングに熱い期待が寄せられています。近い将来、母語でプログラムを書くことは世界中で広く行なわれるようになると思います。

 

日本人しか読めないではないかという批判もありますが、プログラミング言語なら、言語間の翻訳も可能です。書き易い言語で書き、読み易い言語に翻訳して読む、という時代が来ると私は期待しています。

 

おわり

プログラミングを学ぶのに役立つ本

『世界が変わるプログラム入門』

山本貴光(ちくまプリマー新書)

この本は、ゲーム作家で「哲学の劇場」も主催する山本貴光氏の著作であり、過去には馬場保二氏の共著で『ゲームの教科書』(ちくまプリマー新書)を出版しています。著者は本書の「はじめに」の中で既存の「プログラム言語の文法や使い方は教えません」と明言しており、「プログラムが作れるようになるためには、プログラム言語の文法を知っているだけでは足りません。むしろ、見通しの立て方や進め方、ものの見方が重要です」と書いています。これこそが、プログラミングをマスターする上で最も重要なことです。

 

第1章「プログラムを身につけるコツを少々」では「目標を設定しよう」がテーマで、第2章は「設計しよう-プログラムをプログラムする」が表題です。プログラムを作るための設計を、プログラムと呼んでいますが、このようなプログラムを専門的にはメタ・プログラムと呼びます。このような「メタ」な考え方は、2020年から日本で始まる次世代の教育の重要な概念です。

 

第4章「プログラムしよう」では、「まず日本語でOK」との表題が現われ、具体的にプログラムを作る作業が説明されています。そして付録にはプログラム言語ガイドとともに、この先に進むための本の紹介があり、山本氏による『デバッグではじめるCプログラミング』も含まれています。「入門」を終ったら、この本で具体的に一番標準的なプログラミング言語であるC言語でプログラムを書くことを学ぶのもよいでしょう。

 

日本語でまずプログラムを書くという開発方法は、大手の金融機関でも行なわれています。実際にコンピュータ上で動くプログラムの言語はCOBOLと呼ばれる言語ですが、その命令をまず銀行員が日本語で書き、それを「プログラマー」がCOBOLに翻訳する、という開発方式が、半世紀にわたって続けられてきているのです。

[出版社のサイトへ]

『ライト、ついてますか -問題発見の人間学』

ドナルド・C・ゴース、ジェラルド・M・ワインバーグ 木村泉:訳(共立出版)

プログラムの作成が「目標設定」から始まるが、これは言い換えれば、問題発見の過程とも言ってよいでしょう。本書の内容は、第1部「何が問題か?」、第2部「問題は何なのか?」、第3部「問題は本当のところ何か?」、第4部「それは誰の問題か?」、第5部「それはどこからきたか?」、第6部「われわれはそれをほんとうに解きたいのか?」と進みます。目標設定だけで、十分1冊の本を書く必要があるのが、プログラミングなのです。

[出版社のサイトへ]

『すべての人のためのJavaプログラミング 第2版』

立木秀樹、有賀妙子(共立出版)

現在最も広く使われているプログラミング言語のJavaを使いながら、プログラミングを深く学べる本です。私が本文で紹介したタートルグラフィックスを使って「オブジェクト指向」と呼ばれる現在の標準的なプログラミング方法を学ぶことができます。

[出版社のサイトへ]

『ソフトウェア社会のゆくえ』

玉井哲雄(岩波書店)

プログラミングの本ではありませんが、ソフトウェアと現代社会の関わりを、プログラムを産業として成り立たせる方法を研究するソフトウェア工学の立場から解説し、ソフトウェアに依存する現代社会の問題点を論じています。

[出版社のサイトへ]