プロジェクトの本文や、活動報告についての感想、ご意見、ご質問を、ぜひコメントでお寄せいただければと思います。現在は支援募集期間中であり、本企画の実施期間ではないため、お寄せいただいた感想などについてはリターンとしてではなく、お返事や回答をさせていただきます。
また、私個人についてはこちらをご覧ください。
では本題です。
「科目でのプログラミング」では、「表計算でいろいろできる」ということを書きました。そのあたりを、もうすこし考えてみたいと思います。とは言っても、あまり目新しいものではないとは思いますが。
まず、こちらをご覧ください:
この場合、画面左側を、データと計算結果の表として使うとします。対して、カラムJ, K, Lには、計算のツールが用意されているとします。この画像の場合、K4は、「上のセルに足す」ということで、「=K3+1」という内容が入っています。
これでどういうことができるかというと、2行目の「データB2」などには初期データが入っているとします。そこで、セルB3にセルK4をコピーすると、この場合であればセルB2に1を加えた値がセルB3に表示されます。
同じような感じで、必要な要素を画面右側に用意しておいてやれば、コピー&ペーストと、セルの内容のすこしの書き換えで表計算でのプログラミングがやりやすくなります。
なお、ここで重要なのは、この場合であれば「時刻1」などという書き方です。ここは、通常のプログラムであれば「外側のループ」になるかもしれません。ですがこの例の場合だと、「外側のループ」が展開され、「時刻1」、「時刻2」のように縦に並ぶと読みます。
これであらゆる問題が解決とはいきませんが、すくなくとも手軽な解決方法ではあるでしょう。
解決できない問題の大きなものとしては、センサーからの入力や、外部機器の制御といったことが挙げられます。それらを重視する人もいるかと思いますが、私はそれらはどうでもいいと考えています。どうでもいいというのは正確ではないかも知れません。
というのも、それらを扱った場合、どれほどの児童・生徒が制御などの仕組を理解できるのかという疑問があるからです。「命令を書けば制御できる」という理解はあまりに拙いものであり、ドライバ、ハードウェアなどを無視した姿勢に思えます。
おそらくはという条件が付きますが、パパートの初期のLOGOにおけるタートルなどの影響が、そのような制御を含めようという発想の原点にあり、そこで足踏みをしているにすぎないのではないかと思います。あるいは、「課題においてデータ構造やアルゴリズムを指定するか」に書いたように:
>「動いたことで確認とする」というのは、実は極めて甘い基準
であり、かつ外部機器の制御などなどを含めて「動けばいい」という態度を採用することはありえない選択にしか思えません。ここで、「きちんと動くことを証明する」のであれば、制御などの前にやることがいくらでもあるかと思います。
もちろん、パパートなどは外部機器を使ってはいても、それは「動けばいい」という態度ではなかったことは、はっきりしています(『マインドストーム』など)。「動いたこと」から逆向きに、「なぜきちんと動いたのか」という問題に戻っていました。ですが、現在においては、そこまで意識して教育が行なわれているのかについては、すくなからず疑問があります。
あるいは、外部機器を用いても、「きちんと動くことを証明する」ことは可能でしょう。ですが、外部機器との通信という重要な部分は、おそらくブラック・ボックスとして扱かわなければならないだろうと思います(時代的に、採用されている通信技術の違いもあります)。そこをブラック・ボックスにするのであれば、やはりそれらを使う前にやることがいくらでもあるかと思います。
対して、この画像の場合だと “import なんとか” というようなマジック・ワードはありませんが、普通にプログラミングをするのであれば、そのようなマジック・ワードは隠さないほうがいいと考えています。それは、モジュールやライブラリという概念は、プログラミングにおいて重要であろうと考えているからです。
つまるところ、児童・生徒に、「コンピュータは魔法の箱」とは思って欲しくはありません。それは外部機器も含めての話です。もっとも、ここはある程度の妥協が必要で、児童・生徒に対してコンピュータ・アーキテクチャをきっちりやるのは、現実的とは言い難いでしょう。
なお、上の画像で示したものは、以前から思ってはいた程度のものであり、どれほど実用的なのかはわかりません。私自身が表計算をこのような目的で使う場合、関数などを直書きしますので。もし興味を持たれた方がいらっしゃいましたら、ぜひご支援と、そしてコメントをお寄せください。本企画の期間中、あるいは第二版に向けて検討したいと思います。実際、表計算ではありませんが同じような感じのものは存在するので、表計算でもすでに存在していてもおかしくはないと思いますが。