[ 上へ ] [ VBの歴史 ] [ VBの選択理由 ] [ 他の言語との比較 ]
| なぜVBを数ある開発ツールの中から選択するのでしょう? |
そこをはっきり持っておかないと,とくにVBを触ったことのない人に薦めることができません。
この壁をクリアしないかぎり,VBを習得してVBで
どんなすばらしい授業が展開できるとしても導入すらできないわけです。
| VBを導入するわけを考えるための考え方からはじめよう
|
VBはいい開発ツールだから・・・では通りません。単なる自分の感情でモノを言っているか,もっと勘繰られて「我田引水」ととられるかもしれません。したがってどんな考え方をしたからVBという結論に着陸したか・・・を第3者にわかるように考えましょう。
もしあなたが車を買いに販売会社に行ったとして「いいことづくめ」のことばかり連射されたらどうします?
その人がいやになって買わないか,「ほんまかいな」と不信感を募らせるだけでしょう?
では,どこにその考え方の切り口を見つけるか。私は次の視点が必要なことをまず理解していただく必要があると考えます。
- プログラミングの教育成果を教師が判断するだけにするのか,生徒にもその成果を達成感のある形で確認させるのか?
- プログラミングすることの意味は予約語とアルゴリズムを覚えることなのか?
- カリキュラム上ではどの程度の時間数を割り当てられるかということを考えた上での目標はなにか?
- 市場でのシェアやソフトウェアの現状を学校としてどう考えるのか?
- VBでの開発の特徴をどう考えるのか?
- そのほかの疑問・質問
| 上記1.から5.についての見解
|
- について
プログラミングの基礎というものには開発ツールの操作やその言語の基本文法という独自のものはありますが,共通することとして「変数」と「アルゴリズム」,「システム設計」があげられます。
プログラミング教育においてこの3点のないものは存在しないといってよいでしょう。
まず「基礎」として変数と基本的なアルゴリズムをその言語の文法を使い,徹底的に叩き込むわけです。私はこの叩き込む部分は徹底的にすべきと思います。
ただ現在までのプログラミング教育を振り返ると,基礎を叩き込む過程が長く,すなわち長いトレースができ,多くのアルゴリズムを暗記させるところで3年間の学習が終了し,結果的にだれもプログラマなど目指さない,目指したくない・・・ということになってしまっていませんか?今までのやり方は,プログラマを減らすことにしかなっていないのです。
これはプログラミング教育をアルゴリズム関連に注ぎすぎてきたことが理由だと思います。アルゴリズムは重要です。しかし1つのトピックに対して複数の手法(例えばソートのアルゴリズムのパターンなど)に触れすぎるあまり,時間がかかりすぎ,プログラミング教育の全体的な目的の一部に授業内容が偏ってしまっています。
基本的には順次,選択,繰り返しでかなりのプログラミングができるのです。
現実を見ても次のように手法が変化しているでしょう。
「ファイル処理」・・・>データベースとの連携
「ソート」 ・・・>データベースにおけるSQL文
(また1つの言語ではなく2つ以上の言語の連携でシステムが成り立っていることも多い)
このほかにも実際には2次元配列などもあまり使用しないでしょう。
(書店に並んでいるVBやVBA関連の書籍で2次元配列を使わないと作れない業務処理を調べてみてください。)
われわれはプログラミング教育で,アルゴリズムの歴史を学びたいのではありませんよね?
このことを受け入れ,しっかりと精選するべきです。「学校におけるプログラミング教育の目的とは何か?」からその他の要素にも目を向けるべきと思います。
その他の要素とは・・・
「その生徒は何かを創造しようと自分自身で考えて,工夫してプログラムを作成するように育っているのか」
この1点です。
これを達成することをプログラミング教育の目的の1つと認識して行うことが,新しい学習指導要領とも合致すると考えるのです。
当然,従来より知識の量はマイナスになります。しかし,その一方で興味と関心と充実感をもち,将来的に生徒が1人でも多くプログラマとなってくれることでプラスになるのです。
- について
VBを否定する材料のひとつには,JIS−BASICの文法規格と違う,マイクロソフト独自規格があるという点です。
この世界は,そもそも規格化されたものは既に陳腐化されているような世界です。それに今後どんな言語が創出されるかわかりません。プログラマの世界では1つの言語で食っていけるような汎用機時代はとっくに終わっています。SEならなおさらです。
プログラム「言語」を覚えることはプログラミングの目的なのでしょうか?違います。ほとんどの言語は変数,ループなどのステートメントなどがあります。あとはその言語が得意とする分野についてそれを「手段」として使用するわけです。したがって予約語が書けること自体は卒業後あまり役立たないかもしれません。しかし手順を論理的に考えていくという思考方法,思考態度は残っていくと思います。
もちろんVBはBASICを元にしており,かつ変数のスコープなどC言語に近いことも学習できるのです。
私たちはこの進歩の早い時代にあってこれらを大切にしてゆけばよいのではないでしょうか?
- について
2003年からは学校は週5日となります。その学習指導要領の中でどの程度のことをプログラミング教育の目標とするかを考えるべきだと思います。
そこでは「知識と態度を育てる」です。そして知識の身につけ方として「実習をとおして自ら考える」ことが重要視されていると思います。
1.と2.で説明したように,VBという開発ツールを使えばコントロールを使用して簡単なアプリケーションを作成できます。これにより「できる」という意欲と「作れた」という達成感を得させながら,実習をとおしてプログラミングの基本についても学ぶことができるのではないでしょうか?
よくある誤解に「VBはコントロールがあって簡単に作れるから勉強にならない」という意見があります。しかしコントロールがプログラミングの基礎部分の学習を浸蝕するわけではないのです。例えばファイル処理のコードはBASIC同様ですし,そのほか変数や配列についても同様です。いやそれ以上の部分もあります。
確かにコントロールを使うことで不要となるコードはあります。それは入力,出力のインタフェースに関する部分です。しかし,それらは新課程では時間的に触れられない部分なので,それは達成感のあるプログラミングを助ける手段というポジティブな捉え方ができるのです。
開発現場でもコントロールなどソフトウェア部品を使って迅速な開発がされているわけで,もし細かいインタフェースにこだわるなら,初心者用でない「C++」などを使用しないと無理でしょう。しかし,初心者のプログラミング言語としてC++をしますか?
- について
実はRADツールはVBだけではありません。Macintoshでは「Realbasic」がありますし,Windows対応のBASIC文法を基本としたVisual開発ツールには富士通ミドルエンジニアリングの「F−Basic
For Win」,NECの「N88BASIC For
Win」などがあります。
このうち「F−Basic For Win」と「N88BASIC
For
Win」についてDOS資産の継承が特徴です。しかしそのままというわけではありません。ちょっと労力をともないます。またビジュアルな開発をしようとすればやはりそれなりの宣言文をして,部品ファイルを呼び出さないといけません。難しくいうとプロジェクトに使えるリソースを追加しないといけないのです。
VBのコントロールを使用したようなプログラミングをするには純粋なBASICを逸脱して,WindowsというOSの作法に従うほかはないのです。(OSを制する者が全てを制す?)
シェアは圧倒的にVBでしょう。150万人のプログラマがいるといわれています。そのため書籍,Webサイトとも多くがあります。(指導者も含め)初心者が学習する上でこれは大変心強いものです。
「これからはLinuxの時代だ。VBは減少する。」と思われる方もあるかもしれませんが,まだLinux上でのビジュアル開発ツールは十分でないのと,もしVBに匹敵するものが出たとしても,BASICを元に「基礎学習」させるなら今のVBで十分です。
VB6.0も5.0と比較すると文法が更新されたのではなく,5.0にインターネット関連とデータベース関連の機能が追加されただけです。
- について
VBの開発対象は現在のところWindowsOS上のみです。また開発はイベントドリブンという手法によります。これはWindowsOSがイベントドリブンを採用していることから当然男ことといえます。コントロールでのWindows標準インタフェースの迅速な作成ではアドバンテージがあります。
こういった事柄は長所でもあるが,否定する材料でもあります。その点をどう考えるかです。
例えば,今後も永続性を求めるならCやJavaの方がいいかもしれないし,イベントドリブンは汎用的かという疑問もあります。またWindows時代が終われば終わるではないかという意見もあります。しかし,新学習指導要領の目指す考え方で初心者がプログラミングを学ぶことを考えると,COBOLをするかというと疑問ですし,Cは難しいでしょう。そして前にも言ったようにもしLinux上のビジュアル開発ツールがあるとしても,それも部品を使うオブジェクト指向型になるでしょうから,その点ではVBで学んだことは永続的かもしれません。
私たちが目指すものはその言語自体ではありません。言語という手段を通して,論理的な思考力と創造力を育てることです。
「そのほかの疑問・質問に対して」
「基本情報処理技術者試験などの上位資格に結びつかない」
2003年からの新しい学習指導要領ではエンドユーザ側でコンピュータを活用するという方向性に教科「商業」は切り換わっています。しかし,情報専門学科をもつ商業高校にはには技術者をめざす生徒も入学してきます。
やはり1つの目標として基本情報処理技術者試験を目指すべきです。そうするとVBは選択言語にはなり得ません。Javaがも出題されるようになれば(検討中)そうすべきでしょう。指導者の問題はありますが。その場合,商業科で取り入れるか,3年時の進路決定後に触れるかすればよいのではないでしょうか?アプリケーション+αの意味で。
一方で,専門教科「情報」をとる場合もあるでしょう。これは開発者向けの内容のようです。したがって2種取得は目標となるでしょう。したがってVBは適切な言語ではありません。しかしCOBOLをするのも考えてしまいます。プログラマの求人等を見てもC言語が多いからです。またC言語がわかっていると,Javaもよくわかりますし,Linuxもわかるでしょう。
ただ,2種を授業で取り組む場合ですが,学校の実態や生徒の能力などを考えてやらなければ,一握りの生徒は合格したが,大半の生徒は興味関心を失い,3年間引っ張るどころか崩壊するかもしれません。授業は,実習が少なく。試験問題を机上で解くばかりの日々だったというような状況を作り出すでしょう。合格はうれしいですが,上位の学校(専門学校や大学等)で取得しても遅くないのではないかと思うのです。高校で学ぶべきことはその他にも多くあると思うからです。「バランス」を言うとスペシャリストは育たないかもしれませんが,2種には合格したがまともな国語力や一般常識もなく,レポートも書けないような人はSEに到底なれないでしょう。
言語≠プログラマであり,プログラマ≠SEなのです。
「VBには汎用性がない」
たしかにWindows(R)用に限定されます。しかし作成したプログラムが学習上他のLinuxやMacのOS上で走らなくては学習にならないのでしょうか?
私たちがもとめているのはプログラム言語を通した学習であって,プログラム言語の予約語そのものではないはずです。また開発者側へ進むとしても言語自体は大きなウェイトはなく,設計と仕様書の作成が重要なのですから。
汎用性にこだわれば300万人という最大のプログラマ人口を誇り,機種依存の少ないCOBOLでしょう。しかし,初心者があの4つのDIVISIONとレコード形式などの長い予約語を入力して実習することに疑問を感じます。COBOL学習のあとで,ほとんどの生徒はプログラミングと関連のない進路をとっている現状と,プログラマを目指しても即戦力でCOBOLプログラマとして受け入れてくれる企業が少ない(いやほぼない)現在ではなおさらです。
私は現在プログラムの初心者が触れるには,その言葉どおりBASICだと思います。
「こんなに簡単にできて勉強になるのか?」
たしかにMS−DOS上でソフトを作ってきた方は,最初は思います。グラフィックなどを使用し,画面を作成するのは大変でした。それを覚えている方は,「こんなに簡単でいいのか?」と思うはずです。とくに入力画面やボタンなど,労力を要したインタフェース部分のコーディングがササッとできてしまいます。
しかし,時代は進んでのです。オートマ車が出てから,わざわざミッションの車を求めることもないではないですか?そしてGUIからCUIに戻ることはないでしょう。こうした部品で作成するのが今なのです。頑張ってDOS−BASICで作ってもWindows(R)では走りません。時代が進むと「プログラミング(コーディング)は消滅していく」運命にあるのです。
こんなに簡単なのにプログラミングの基本的な学習ができるのか?という疑問も出てきます。
私が確認したところ,DOSのBASICで作っていたコードより,コード数が少なくなるわけではないのです。むしろGUI部分が付け加わり,なおかつGUIならではの制御が必要というふうに考えられます。
VBでプログラミングの基礎であるコードは余すところなく学習できます。また,実習問題などは従来できなかった部品の組み合わせで,興味関心を引く教材が可能となるでしょう。
|