積み木遊びとしてのプログラミング||ブログ|Computerworld

header_cwr_head_mid_fl_logo

CW_ウルトラバナー_Topics08

CW_ウルトラバナー_Topics04

CW_ウルトラバナー_Topics02

CW_ウルトラバナー_Topics05

CW_ウルトラバナー_Topics06

CW_ウルトラバナー_Topics07

積み木遊びとしてのプログラミング

Posted by 横山哲也 ( 2012年01月10日 )

■コンピュータの特異性

情報処理学会の学会誌「情報処理」に「ペタ語義」という連載がある。2012年1月号では、NTTコミュニケーション科学基礎研究所の原田康徳氏が「生徒・児童によるプログラミング―ビスケットの挑戦―」という解説記事を書いていた。PDFファイルが無償公開されているのでぜひ読んで欲しい。

教育コーナー「ぺた語義」

コンピュータは普通ではない性質を持っている。我々が普通に使っている鍋とかハサミといった道具とも違うし、人間の助手や幼児やチンパンジーとも違う。この性質は、一般人が普通に生活して成長してゆく過程のさまざまな経験から自然に理解できるようなものではない。他の経験から一切類推できない。だから普通ではないのである。

全くその通りだと思う。人間が行なっている手順を厳密に定義し、正確に再現する必要性は、ふつうに生きている限りまずない。しかし、コンピュータには絶対に必要なことである。SEは、ふつうの人はやらない「手順を厳密に定義し、正確に再現する」作業を行なう専門職である。医者や建築士と同じくらい専門的な領域で仕事をする。

最近は、利用者の行動を予測したり、自動的に誤りを修正したりする機能が増えてきた。しかし、それも「予測パターン」や「誤りパターン」を厳密に定義していることには違いない。結果のあいまいさはコンピュータとは無縁である。

■積み木としてのコンピュータ

原田氏は、続けて「子供の頃の積み木遊びは、立体をどれくらい積むと崩れるか、どうやったら安定するか、という力学的直感を身につけることに役立っている」とも書いている。理屈は分からなくても直感が身につくということだ。

もし、積み木の類の経験が全くなければ、「荷物は4段までしか積んではいけません」「ずらして置くと2段までしか積めません」「平らなところに積まないといけません」といったルールを大量に定義する必要がある。まるでSEが顧客に対して要件をインタビューしているようである。

日常生活において、力学の専門知識はもちろん必要ない。しかし倉庫担当者は、運送業者が運び込んだ荷物の山を見て、崩れそうかどうかが直感的に分からないようではちょっと困る。もちろん運送業者もプロだから滅多なことはないだろう。それでも「これ崩れそうですよ」「大丈夫です、こういう仕組みですから」というチェックができた方が良いはずだ。

▲力学も運動学も勉強していないが、経験と直感で思ったところにジャンプができる

■積み木レベルのプログラミング

IT管理者は、システム開発者が作成したプログラムを正しく運用する義務がある。プログラムの仕様の細かいところまで知らなくても、全体がどういうモジュールで構成されていて、どこからどこにデータが流れているかは知っておいた方がいい。

そのためにはコンピュータの動作がだいたい分かっていることが望ましい。ところが、コンピュータに似た道具は世の中に存在しない。だから、当然知っておくべき経験を自然に積むことはできない。

コンピュータの特異な性質は「プログラム可能」という点にある。だから、コンピュータの「常識」を身につけるための一番の近道はプログラミングを学ぶことである。

では、具体的にどのようなことが必要か。

まず、基本的な制御概念は必要だろう。伝統的にはフローチャートの習得である。モジュール化の知識も必要だが、オブジェクト指向まで進む必要はないかもしれない。もっとも、オブジェクト指向の基礎概念はそれほど難しいものではないので、あまり詳細に立ち入らなければ学習するのも悪くない。

フローチャートをプログラミングの現場で使うことは減っているので、新人研修に組み込まない企業も多い。しかし、「素養」と考えれば一通りのことは学習しておくべきだろう。

データ構造についても学び、構造化プログラミングへ進めたいのだが、ポインタ概念や構造体は理解しにくいのでリストやキューについて学ぶのは難しいかもしれない。基本データ型と配列だけで十分だろう。

「プログラミングの基礎といえばBasic言語」という時期があった。BasicはFortranを簡略化した言語で、現在のVisual Basicの原型になった。

オリジナルのBasicの文法は非常にシンプルで覚えやすい。サブルーチンはあるがローカル変数がない、配列はあるが構造体はない、といった機能制限も多いがプログラミング学習に必要な機能は一通り備わっている。モジュール化機能が手薄なのは残念だが、初心者が最初に学ぶ言語としては悪くない選択肢だと思う。

現在、Basicの処理系はそれほど一般的ではないので、筆者のおすすめはVBスクリプトだ。VBスクリプトはWindowsの標準機能だし、基本的な部分は昔のBasicの流れを汲んでいる。

Windowsの場合は、VBスクリプトから利用できるシステム管理機能も非常に多い。システム管理者が学ぶには手軽で実用的な言語ではないだろうか。

ページの先頭へ戻る