わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

かけ算の順序不要論を,研究会で!?

「かくかくしかじかの問題意識のもと,『かけ算の順序不要論』を示し,解答してもらいました.
 『次の意見について賛成か反対か,理由を付けて答案を提出しなさい.』としまして,意見というのはこのようになります.

(意見)「6人のこどもに,1人4こずつみかんをあたえたい.みかんはいくつあればよいでしょうか」という文章題に対し,式に「6×4=24」を書くと不正解になる事例が報告されている.
 しかし乗法は交換法則を満たすので,どの順序で書いても不正解にすべきでない.小学校2年生の算数教科書では,「1つぶんの数×いくつ分=ぜんぶの数」として,かけ算の導入がなされるというが,1つぶんの数を決めつけるのはよくない.かけ算の式の順序では,文章題の意味を理解しているかを判別できない.
 これを不正解とすることは,多面的にものを見る力や論理的に考える力を育てることに悪影響を及ぼす.以上より,かけ算の順序は不要である.

 出題そのものは,昨年10月に実施し,その日のうちに答案を回収しました.
 今年に入って,『古典は本当に必要なのか、否定論者と議論して本気で考えてみた。』という本のことを思い出し,ツイッターのタイムラインで流れていたのですが,あわてて購入して読みました.

 『高校に古典は本当に必要なのか』のほうも,合わせて購入しました. 『古典は本当に必要なのか…』の本は,2019年に行われたシンポジウムに基づいています.Amazonのレビューやネットの評判も見ましたが,個人的な所感は次のようになります.
 まず,この本で否定派とされている意見で,特徴的なのは,はじめに対象を定めた上で,立論している点です.否定派の方の一人目は『何において不要か』を明確にしています.あらゆることに古典が不要,というのではなく,高校の国語で古典を必修して学ばせることを,不要としています.二番目の方は,『古典』と『古文』の違いが,印象的でした.
 それに対し,肯定派の典型的な主張の仕方は,こうです.聞き手に関心を持ってもらえる『知識』,言い換えると『古典を学ぶとこういうときに納得がいくんだよ,というもの』を,それぞれの発表者の経験から,取り出して紹介しているのです.
 これらは,自分の課題設定や分析に先立って読んでおけばよかったと思いました.
 ともあれ,『かけ算の順序不要論』の課題を締め切って,集計しましたところ…」

実際には何を話したか

 2月12日開催の「第11回 知識・芸術・文化情報学研究会」に,発表を申し込んで口頭発表しました.発表題目は「for文は必要か」で,「プログラミング授業における設問と分析」という副題を設けました.
 ですので上記のうち「かけ算の順序不要論」は,研究会では一切しゃべっていません.
 なお,引用した(意見)は,以下の記事からコピーしました.for文不要論の(意見)は,今回も,差し控えたいと思います.

 『古典は本当に必要なのか…』の本や否定派・肯定派の所感については,1枚のスライドにし,ほぼ上記の通りにしゃべりました.
 目安の講演時間20分を40秒ほど超過してトークを終え,質疑応答に移りました.2番目の方が,「強制」という言葉を入れて,質問をされていました.質問・回答は記録できなかったのですが,プログラミングの教育において,「for文を学ぶ」や「繰り返しの処理をfor文で記述する」が,「for文の使用を強制させる」ことにつながる,と捉えると,「かけ算の順序」と重ねて検討することもできそうです.
 例えば,(解説のつかないほうの)小学校学習指導要領の算数では,第2学年の目標や内容に,次の事項があります.

  • 数量や図形に進んで関わり,数学的に表現・処理したことを振り返り,数理的な処理のよさに気付き生活や学習に活用しようとする態度を養う。
  • 乗法の意味について理解し,それが用いられる場合について知ること。
  • 乗法が用いられる場面を式に表したり,式を読み取ったりすること。

 これらを「プログラミング」「for文」に置き換えると,次のように表せます.

  • プログラミングに進んで関わり,ソースコードとして表現・実行したことを振り返り,プログラミングの処理のよさに気付き生活や学習に活用しようとする態度を養う。
  • for文の意味について理解し,それが用いられる場合について知ること。
  • for文が用いられる場面をプログラムコードに表したり,プログラムコードを読み取ったりすること。

 とはいえこの置き換えが,ある状況でうまくいかないことも,認識しています.かけ算の順序論争でよく言われる「4×6=24だけが正解というのはおかしい,6×4=24も正解にすべきだ」について,これに対応する説明を,for文だけで行うのが難しいのです.
 これについては,for文が期待される状況で,while文で記述したり,同一または類似のコードを何行も並べたりすることを考えることになります.
 実際のところ,昨年度も今年度も,第3クォーターのプログラミング授業の最終回で,「wakayama」(と改行)を10回出力するプログラムを課した際に,正解の答案を,for文,それ以外の繰り返し文,printfを10回,などに分けて集計していました.


 「プログラミング授業における設問と分析」について,分析の流れを簡単に紹介しておきます.1人につき1つのファイルとして用意した解答のテキストファイルを,形態素解析し,賛成・反対・賛否不明のそれぞれで,文字数や語数の平均と標準偏差などを求めました.形態素解析にはMeCabを,辞書にはmecab-ipadic-NEologdを使用しました.WSL2の環境で何個かのコマンドを実行すればインストールでき,200弱の入力それぞれに対してmecabコマンドを起動しても,すべての処理は1秒もかかりませんでした.mecabの起動と実行結果の獲得,そして集計などを行うための,Rubyスクリプトを書きました.
 文字数も語数も,平均は,反対>賛成>賛否不明という関係になりました.ただし統計的検定は行っていませんし,長文の解答を良い解答とみなすわけにもいきません.