IT業界での少し気分がアップする出来事、心持ち役立つこと、ややイイ話

いろいろあるよ!教育用プログラミング言語

»

わたしが学生の頃(80年代)、授業で学習したプログラミングは、FORTRANとCOBOLで、扱う例題は最大値や探索、ソートといった内容、データの処理が主でした。
また、まだデータベースはありませんでしたが、データファイルとマスタファイルを突き合わせて、集計結果を表示したり、2つのファイルのマージを行ったり、なんてこともやりました。
わたしは理系で、情報系の学科でしたが、そうではない学科でも、プログラミングの授業といえば、同じような内容だったのではないでしょうか。

目的が、データ処理や数値計算そのものや、そのためのプログラミング言語の習得ではなく、コンピュータの仕組み、動作、アルゴリズム、利用方法などを学ぶためであっても、当時はデータ処理のプログラミングくらいしかやることが無かったのかも知れません。

その後、パソコンが企業や一般家庭にも普及し、ワープロソフトや表計算ソフトが広く使われるようになると、文系の学科などでは、プログラミングの授業に変わって、こうしたアプリケーションを学習するところが増えていきました。
プログラミングを教えても、取り扱われる例題が、文系の学生の興味を引くようなものではなく、それで、コンピュータ嫌いになっては意味がありませんから、まあ、当然の流れでしょう。

でも、本来の目的、コンピュータの仕組み、動作、アルゴリズム、利用方法を学ぶために、プログラミングが有効であることには変わりはありません。利用方法にしても、特定のアプリケーションの利用経験だけでは、表面的な変化に囚われてしまいがちですが、プログラミングを体験することで、もっと本質的な概念を理解することが期待できます。

最近、グーグルが小中学生向けのプログラミング教育支援を始めると発表したり、サイバーエージェントの子会社CA Tech Kidsが小学生向けに始めたプログラミング学習講座が話題になったりしています。

この情報化社会では、プログラミングが従来のコンピュータ学習の中での位置付け以上に重要で、より一般的なことになって来ているからでしょう。

また、今は様々なプログラミング言語があり、データ処理だけでなく、文系の学生や中高生はもちろん、小学生でも興味を持って学習できる題材がたくさんあります。

前々回、理系でも、情報系ではない学科の先生から相談を受けたことを基に「コンピュータ初心者が学ぶのに適したプログラミング言語は?」を書きましたが、これは、授業の目的が、

1.コンピュータの仕組み、動作、アルゴリズムを理解する
2.(理系なので)多量のデータをコンピュータで取り扱えるようにする
3.IT企業に就職する人も若干はいるため、企業でも使用している言語を習得する

であったときの場合です。
2.、3.を無視して、文系の学生や中高生が、最初に触れる言語を考えるとすると、まだ他にもいろいろ候補があります。

今回は、そうした教育の現場で用いられている言語をいくつか調べてみました。

Small Basic
わたしの世代であれば、BASIC、もう少し後の世代ではVisual Basic(VB)が最初の言語、という人は多いと思います。
特に、VBは、グラフィカルな機能を持つアプリケーションが比較的簡単に実現できるので、初心者が興味を持ちやすい題材を取り扱うことができます。しかし、前々回にも書いた開発環境のこともそうですが、バージョンアップを重ね、大量の機能やライブラリが追加され、企業の業務システムを開発するための代表的な言語としてより強力になった代償として、これからプログラムを始めようとする人にとっては若干敷居の高くなってしまいました。
そこで、登場したのが、Small Basicです。
Small Basicは非常にシンプルに設計されていて(なので大規模な開発には向きませんが)、初心者に優しい言語になっています。

●Microsoft Small Basic
 http://smallbasic.com/

日本語のマニュアルも下記のサイトからダウンロードできます。

●Small Basic入門
 http://www.microsoft.com/ja-jp/download/details.aspx?id=14246


Processing
Processingは、アートやデザインの分野に特化したプログラミング言語です。
Javaベースの言語で、基本的な文法はJavaと共通ですが、グラフィックス関係の命令が手軽に使えるようになっています。簡単に図形描画やアニメーションなどの視覚的な表現ができるので、教材作成用のプログラミング環境としても良く用いられています。

●Processing.org
 http://processing.org/


Squeak/Squeak Etoys/Scratch
Squeak(スクイーク)は、アラン・ケイらが設計したSmalltalkの処理系で、Squeak Etoysは、その上に構築された非開発者向けの教育用プログラミング環境です。
命令のタイルを組み合わせるだけで、描いた絵を簡単に、そして自由に動かすことができます。
Scratch(スクラッチ)は、Squeak EtoysをベースにMITで開発されたプログラミング環境で、小学生向けにも数多くのワークショップなどが開催されています。前述のグーグルが始めた小中学生向けのプログラミング教育支援でも、Scratch(スクラッチ)を使用するようです。

●ようこそ、スクイークランドへ!
 http://squeakland.jp/

●みんなでたのしくスクイーク(Squeak)
 http://etoys.jp/index.html

書籍もたくさん出てます。絵本のような子供向けのかわいらしい本も出ていて、

これは思わず、買ってしまいました。


VISCUIT
コンピュータを粘土のように、というコンセプトで、プログラミングを学ぶというのではなく、プログラミングで遊ぶことを目的としています。
文字を使わず、絵の書き換えの規則を複数組み合わせることで複雑な絵の動きを表現するプログラムを作成します。
NTTの研究所で開発され、小学生向けに多くのワークショップで利用されています。

●VISCUIT(ビスケット)〜コンピュータを粘土のように〜
 http://www.viscuit.com/

ドリトル/PEN/なでしこ
ひとまとめにしてしまいましたが、これらは、日本で開発された命令が日本語で記述できる言語です。

ドリトルは教育用に設計されたオブジェクト指向言語で、タートル(亀)の分身(オブジェクト)をいくつも作り、それぞれに違った働きをさせることができます。webでも体験できます。
編集画面で、

カメ太=タートル!作る。
カメ太!100 歩く。

こんな感じで入力して、実行画面でタートルの動作を確認します。
でも、小学生に正しく入力させるのは意外とムツカシイかも。中高生なら、このような独特な日本語より、命令文は普通に英語の方が覚えやすいようにも思います。

PENは、グラフィックス機能があり、線や円などの図形を描画できます。
PENを実行するには Java がインストールされている必要があります。

開発環境には、プログラム入力支援ボタンがあり、「入力」ボタンを押すと

≪変数≫ ← input()

こんな感じで、ソースコードに記述されます。これなら、テキストでの入力作業も少し楽かも。
それを編集していき、

整数 x, y, r
x ← input()
y ← input()
gOpenWindow(100, 100)
r を 10 から 30 まで 10 ずつ増やしながら,
 | gDrawCircle(x, y, r)
を繰り返す

円を三重に描くサンプルを作成したら、こんな感じ。
英語と日本語が混在して、かえって分かり難い気もしますが・・・。

なでしこは、ファイルのコピーやバックアップ、Excel/Wordと連携などもできます。

マイドキュメントのファイル列挙
それを反復
  ファイル名はそれ。
マイドキュメント&ファイル名のファイルサイズを、
Fサイズへ代入。
「○{ファイル名}{タブ}{Fサイズ}B」を表示。

これは、とても小学生に理解できる日本語とは思えませんので、低学年のために日本語を用いている教育用プログラミング言語とはちょっと違うかも知れません。

●プログラミング言語「ドリトル」
 http://dolittle.eplang.jp/

●初学者向けプログラミング学習環境 PEN
 http://www.media.osaka-cu.ac.jp/PEN/

●日本語プログラム言語「なでしこ」公式ページ
 http://nadesi.com/


アルゴロジック/プログラミン
アルゴロジックは電子情報技術産業協会(JEITA)が公開しているWebアプリケーションで、「↑(前進)」「→(右進)」などのコマンドブロックを並べてロボットに動きを命令しロボットに旗を取らせる迷路のゲームです。バージョンによって、順次処理、繰り返し処理、分岐処理などの制御構造も利用できます。
ちょっとしたアルゴリズムの学習なら、これでも十分かもしれません。

プログラミンは、文部科学省が公開しているプログラミングが行えるWebアプリケーションです。
絵を配置して、右に進めたり、色を変えたり、ボタンで動きを与えていきます。
自分で絵を描いて、それを配置することもできます。
とてもかわいらしくて、子供も興味を持ちそうです。ボタンの形状やネーミングもかわいらしいのですが、そこから動きが想像しにくいのが難点です。

●アルゴリズム体験ゲーム・アルゴロジック
 http://home.jeita.or.jp/is/highschool/algo/index.html

●プログラミン | 文部科学省
 http://www.mext.go.jp/programin/


Blocky
Blocky!は、Webブラウザーで動くビジュアルなプログラミング環境です。
前述のScratchの影響を受けていて、ブロックを組み合わせてプログラミングを行います。
「if」とか「while」といった構文や変数操作のブロックが用意されていて、このブログでも何度か取り上げているApp Inventorにとても似ています。
BlockyはGoogleが始めたオープンソースプロジェクトで、App Inventorも、もともとGoogleが開発したものですから、影響を受けているのでしょう。

デモサイトがいくつかあり、
「Code」では、ブロックで組み合わせて作成したプログラムをJavaScript、Python、XMLのソースコードでそれぞれ出力することができます。
「Maze」では、前述のアルゴロジックと同様に、迷路を進ませることで、アルゴリズムを体験できます。

まだ日本では、実際に教育で使用されている例はあまりないようですが、今後、日本語にも対応してくれると、一気に広がるかも知れません。

● blockly - A visual programming editor - Google Project Hosting
 https://code.google.com/p/blockly/

●Blockly : Code
 http://blockly-demo.appspot.com/static/apps/code/index.html

●Blockly : Maze
 http://blockly-demo.appspot.com/static/apps/maze/index.html


App Inventor
最後は、App Inventorです。
プログラミング未経験者でも、パズル感覚でAndroidアプリが作れる開発環境です。
小学生でもできるAndroidアプリ開発講座」という名称で、わたしも何度か研修を開催しています。
これは、とくに子供に限定した研修ではないのですが、参加者の中には、小学生もいて、今年の夏は、中学校のパソコンクラブの団体申し込みにより、特別開催を実施しました。
そのときの様子を、このブログでも書いています。

「小学生でもできるAndroidアプリ開発講座」は、本当に小学生でもできるのか!?

中学生でもできたAndroidアプリ開発講座

App Inventorは、部品をレイアウトする「Designer」と、その部品に動きを与える「Blocks Editor」を使って開発します。

「Designer」はWebアプリケーションなのですが、「Blocks Editor」には、Javaのインストールが必要でした。研修では、テキストにはインストール手順も書きましたが、予めこちらで準備した環境を使ってもらっていました。

これが、年末に出る新しいバージョンでは、完全にWebブラウザだけで動作するようになり、JavaもBlocks Editorのダウンロードも不要になります。
今までのApp Inventorは、App Inventor Classicとなり、新しいApp Inventor(App Inventor2?)とはプロジェクトの互換性は無いのがちょっと残念ですが、今までのアプリくらいなら、きっと、すぐに作成できるでしょう。
今まで以上に、手軽に始められるようになると思います。

●MIT App Inventor | Explore MIT App Inventor
 http://appinventor.mit.edu/explore/

Comment(4)

コメント

ちいさいおおかみ

Scratchと云うMITで開発されたBlocker様の簡易プログラミング言語があります。現在はGoogle App Inventerと一部統合された様な感がありますが。恐らく、Scratchのコンシュマ版がGAIなのでは?

ちいさいおおかみ

そう云えば、"なでしこ"の前身は"ひまわり"と云います。このシリーズの最大の特徴は、"母艦"システムにあります。昨今は、これに結構ネタが絡みそうですね。

アニ

情報系は理系ではないと思いマス。

情報系というと範囲が広いので、確かに「理系」とは限りませんね。
情報工学科などは工学部、理工学部、情報科学科などは理学部に属している場合が多いので、情報系が「理系ではない」と言い切ることは出来ないと思います。コンピュータを使って何をするかによるのではないでしょうか。

コメントを投稿する