ビスケットのあれこれ

ビジュアル言語ビスケット(Viscuit)に関するあれこれを書いてゆきます.

コンピュータ入門

2010-10-06 02:32:01 | 1
コンピュータ入門

これはコンピュータの操作法を教えるためではない.コンピュータというのがいったいどんなものなのかを教えるもの.

たとえば,猫入門.猫とはどういう動物で,飼うにはどうしたらよいか.猫も哺乳類なので,体温があるし,ご飯を食べないと死んじゃうし,踏んだりしても,水に沈めても死んじゃう.そういう哺乳類として基本的なことは,猫入門では(たぶん)教えなくてよい.逆に,うちの猫はこういう仕草をする.ご飯はこれが好きだ.こういう個別のことももちろん猫入門では教える必要はない.一般的な猫のことについて,哺乳類で常識なことは省略して説明する.これが猫入門.

では,コンピュータ入門.コンピュータとはどういうものか.便利.使いにくい.使いやすい.難しい.いろんな感想があると思うが,それらは全部,コンピュータの上で動いているソフトウェアの性質について言っていることである.ソフトウェアを入れ替えるとどんなものにでもなるから,ソフトウェア個別の性質を知っても仕方が無い.ソフトウェア全体について共通したことを知るということが大事である.ソフトウェアは使いやすいものから使いにくいものまでなんでもあるから,ソフトウェアに共通したことを知るためには,どうやってソフトウェアが作られて,どうやって動いているか,ということを知るしかない.しかも,コンピュータというのは人類史上はじまって以来の特殊な装置だから,それに類似したものはない.なので非常に基本的なところから丁寧に教えないとダメなのである.

コンピュータは2進数で動いている.こういったことを教えるのがコンピュータ入門か.専門家になるならどこかでは理解しなければならないことだ.でも入門では早過ぎる.第一,2進数はコンピュータの作り方の基礎ではあるけれど,普遍的ではない.3進数で動くコンピュータだって作れる.シリコンの上ではたまたま2進数のコンピュータが作りやすかっただけだ.だから,もっと基礎的なことを教えるべきだ.

では,アルゴリズムを教えるのか.それは一つの考え方だが,アルゴリズムは個別のことなので,アルゴリズムそのものというより,どうしてアルゴリズムとして考えなければならないのかを教えるべきだ.

ずばり言うと,コンピュータとは,小さな変化を積み重ねて動く機械である.その小さな変化がすごく高速に起きるから,複雑な動きになる.変化の組み合わせ方を簡単に変えることができて,ちょっと変えただけでも,最終的な動きが大きく変わる.これがコンピュータ入門で理解して欲しいことである.

大人になってから獲得する知識のほとんどは,文字として,概念が抽象化されてから,頭に入ってくる.しかし,コンピュータの「小さな変化の積み重ねで複雑な動きを作る」という性質は,これまでに世の中には無かった装置なので,何かにたとえて理解することは難しい.抽象化された知識として獲得するよりも,コンピュータを直接触って,体験して理解するのが近道だと思う.コンピュータの上で動くソフトウェアをいくつか触ってみたところで,「小さな変化...」ということが理解できるはずはない.ソフトウェアの作り方,つまりプログラミングをやるしかない.

ここから先は,プログラミングを,たとえばビスケットのワークショップなどで,体験した人を前提に書いている.作り方を体で覚えると,どういうご利益があるか.

まず,コンピュータとはどういうものかをはっきりと理解できる.過剰な期待をしなくていいし,どういうことが苦手で,どういうことが得意かもわかる.この先のコンピュータとの付き合い方に大きく影響するだろう.

コンピュータは万能ではないということ.万能に見えるように人間が作っているだけだ.よくある誤解に,コンピュータが人間の言葉を理解できれば,コンピュータは使いやすくなる,というのがあるが,「人間の言葉を理解する」ということを「小さな変化を積み重ねて」作らなければならない.これを作るのは人間である.理解するってどういうこと?こんな難しい問題に挑戦するよりも,直接,使いやすいコンピュータを作った方が近道である.

ほとんどのソフトウェアには,バグというのが入っている.プログラムの間違いのことだ.人間が作るものに間違いが入ってしまうのは仕方が無い.そしてそのバグは非常に見つけにくい.バグを見つける方法,バグが出ても致命的にならない方法,バグが入りにくくする方法などなど,ソフトウェアの研究は日々進められてしているけれど,人間が絡んでいる以上,なくすのは難しい.ちなみに,OSやソフトウェアが自動的にアップデートすることがあるが,それはそのバグを修正しているのである.

悪意のあるソフトウェアは本当にひどい.ソフトウェアそのものには善も悪もないけれど,コンピュータの能力としては極悪なソフトウェアであっても,実に簡単に作ることができる.というより,コンピュータそのものの性質として,いつでも戻せるように作るのと,絶対に元には戻せないように作るのでは,後者の方が圧倒的に簡単だ.取り返しの付かないことは簡単にできてしまう.適当にソフトウェアを作ったら,大部分は毒にも薬にもならない意味のないものだろうが,次に多いのは悪いことが起きるソフトウェアになるだろう.役に立つのはほんの少数である.

こういったことを,ビスケットのワークショップに参加すれば,言葉ではなくて体で理解できるようになる.

しかし,僕が一番知って欲しいのは,作っている最中が一番面白いと感じることだ.ビスケットでテレビゲームを作るワークショップがある.子どもたちはちょっと改良しては遊び,を繰り返している.一応制限時間がある中での制作だから終了するが,それがなければいつまでも作り続けているかもしれない.「小さな変化の積み重ね」のどの変化を修正すれば全体の動きがどう変わるのか.自分で作ったものなら全体を完璧に理解できているから,自由自在に修正できる.この面白さはやめられない.

世の中に出回っているソフトウェアはそういう意味では死んでいる.一番面白い部分が開放されていない.それだけでなく,アプリケーションを設計する人,それをプログラムする人が分業していて,両者が仕様書で責任分担をはっきり分けられているから,作っている側もその一番面白い部分を捨てて
しまっている.そんなんで使う側が面白いわけがない.

ムービーカード(moviecards.org) というワークショップを開発している福山大の杉本さんは,この修正可能な遊びの部分を「ハッカブル」と呼んでいる( http://www.scribd.com/doc/38740695 ).このハッカブルの重要さを理解するにはプログラミングで遊んでみるしかない.

そしてなにより,自分で全部制御できる感覚.成功しても失敗しても,それはコンピュータのせいではなくて,全部自分が原因だということ.この手のひらの上にコンピュータを乗せている感じを理解して欲しい.

コンピュータには近づきたくないという人にはぜひ.コンピュータは猫くらいかわいいものです.

デジタル化で教育は変わるべきか

2010-10-05 07:06:24 | 1
変わるべきではない理由.

個々の人間の本質的な性質は何千年も前からほとんど変わっていない.日本人の食生活が変化したので,子どもの体格は変わってきたらしいが,その程度.脳に関しては何にも変わっていない.ギリシャ時代のお話や落語とか,現代でも通じる.少なくとも,生まれたての子どもへの接し方は何にも変わらない.暖かく抱きしめてあげるという,人間の遺伝子に組み込まれたやりかたをやればいい.

科学技術の進歩は,基本的なものを変化させるというよりは,むしろ基本から外れざるを得ないケースでもうまく行くために使われているし,そうすべき.昔だとあきらめていたような子どももあきらめずにすむ.死産が減ったとか,障害がある子どもの教育とか.そういうのは変わる.

変わるべき理由.

こっちは言うまでもなく,社会が変わるから,それに対応すべき,という話.確実なのは,専門学校の教育.社会のニーズに常に対応しなければならない.大学は議論の分かれるところ.大学が出口であると考えるなら,やはり社会の変化に追従すべきだけど,専門的な学問の入り口であると考えるなら,学問の大きな流れなんてそんなに激しくは変化するわけないんだから(量子力学や相対性理論が見つかったとしても,ニュートン力学が否定されたわけではないのだから),入り口としては変わらない.でも,学問は発展しているので,それにどうやって対応しているかというと,4年では終わらなくって,修士課程とか博士課程とか,勉強する期間が長くするのが一番まっとうな方法.間違っているのは,4年間というのに無理やり詰め込んで,学問の入り方をはしょってしまうこと.

たとえば,僕の経験から言うと,僕がコンピュータを触ってた頃はオブジェクト指向は無かった.自分の勉強が進むのと同時くらいに日本にも入ってきてブームになった.だから勉強と,学会発表がまったく同時だった.学会もちゃんと機能してて,学生でも教授と対等に議論できた.でも,今はそうじゃないから,それこそオブジェクト指向が教科書で教えるようになってきて.そこで何が違うかというと,オブジェクト指向にも普遍的な部分とそうじゃない部分があるのに,それが知識として固定化されると,そうじゃない部分を変化させる力が出てこないということ.それから勉強してても面白くないよね.

でも,学問として間違った発展をしたこともあるから,そういうのは(本当はそういう間違えもちゃんと体で覚えた方がいいから丁寧に教えたいけど)軽くやれるとして,20年かけて発展したことを20年かけなきゃ教えられないと言うわけではないだろうけど.でも6年くらいはかかるかも.理想は歴史のとおりに,成功も失敗も丁寧に教える.

なので,大学の教育でさえも,無条件で変わるべきだとは言えないということ.でもまあ,大学は変わるんでしょう.

22歳でここまでというのが時代とともに変化して,生まれたての子どもは変わらない.となると,全体的にストレスを最小にするには,ちょっとずつ前倒しすることになるのだと思う.これは無理な話ではなく,立命館小学校で聞いたところ,小中高で一貫でやると高校最後は1年分くらい余るのだそうだ.この年齢での1年の余裕は非常に大きいと思う.

現実的には大学入試が変わらないから,高校までは変えようがなくって,大学の4年間であわてて詰め込む.そうしちゃうと学問は面白くなくなるし,世の中を変化させる力にならない.なぜ勉強するかとかそういったことを自分で理解できないまま大学をすごして,世に出てしまって,後悔する.

立命館小学校の作戦は,大学の4年間を最大限活用できるすばらしいものだと思う.余った1年で何を勉強すべきか自分の頭を整理できる.一貫校じゃない高校生でも少しは工夫できる.ちょっとでもいい大学に入りたいということで,受験科目だけを集中して勉強したいだろうけれど,その先の大学4年間を無駄にしないための,無駄な時間も大切にしよう.

同じ事が小学生にも言えて,たとえば,今の小学生は塾ばかりで遊ぶ暇がない,と言われているけど,学校と塾とで同じことを勉強しているのは無駄で,強いて塾に行く必要があるとしたら学校ではやらないこと,世の中にどういう風に関わってゆくのかを小学生なりに考えるきっかけになるようなことをやるべき.そうするとその先の教科の勉強が急に生き生きとしてくる.学校で習う前に,その必要性を感じられるのが理想的.本当はそれも学校の先生がやるべきだと思うけど,この部分は能力差が激しいので,先生全員は無理.だからお金を出して別にやる意味がある.そこは競争にさらされる.(ビスケットのワークショップに参加した小2の親から,「うちの子が初めて将来なりたい職業を言ったんですよ」といううれしい感想をもらった.ワークショップの効果の一つだと思う)


デジタル教科書議論

大学はすぐにでも変えるべき.あたりまえ.大学生に一人1台のPCを義務付けていないなんて,いまどきの大学としては恥ずかしい.こんな大学は行くだけ無駄.

次に,受験を変えるべき.受験が変わらないと,そこから下が全部かわらない.大学は学問の入門だとするなら,コンピュータ操作は必須なんだから,それを入試に入れるのは当然.英語と同じくらい重要.

僕はコンピュータの操作法を教えるだけじゃなくて,基本原理についてもちゃんと教えるべきだと思う.それがプログラミング教育を必須にすべきという理由だけど.基本原理を知ってから操作法を覚えた方が覚えやすいしやる気が出る.この話はまた別に書く.

受験が変わったら,高校も必然的に変わる.僕は高校生くらいからPCは必須だと思っているけど.PCには誘惑も多いので,理想的な使い方を学校で教えた方がいい.高校生のいる家庭ではブロードバンドも必須.これを入学の条件にしてもいい.高校授業無償化の流れで,高校生のいる全家庭にネットとPCを国が用意する.

中学は一人1台というのは早過ぎると思う.子どもから大人に変化する大事な時期だから,高校生になってPCでひとり立ちできるようにするために,その準備を中学でやる.家族で共有くらいのPC.一人部屋がもらえるけど,鍵はかけられないぐらい.万一のときは親が介入できるけど,普段は子どもを尊重する.子どものメール
はみないけど,見ようと思えば見れる.この距離感が大事.こういう距離感を調整できないツールは不完全で危険なので中学生には触らせない.

小学生は,家族でテレビを見るような感じで,家族でPCを触る.メールを一緒に打ったりとか.

こういうのは,子どもの成長や家庭の環境で変わるので,親が責任をもって調整する.

デジタル教科書で,一方通行の授業ではなくて,体験型の双方向の授業に変わるというけど,これはデジタル機器がもっともやりにくいこと.机を向かい合わせに配置して,模造紙でグループ学習をする方がずっといい.マルチメディアというけれど,プロジェクターや教室にあるTVで十分.個人の画面で見る必要があるのは,目の悪い子とか,学習障害で気が散りやすいとか.

小学生には,百科事典の分厚さを体感して欲しい.デジタル化すると検索に便利だけど,知識の量に対する直感が身につかない.量の直感が身についた後で,デジタル検索に触れさせる.

僕は小学校にデジタル教科書導入は議論が必要だと思う.確実に必要な大学高校あたりはすぐにやる.