個人的意見」カテゴリーアーカイブ

円の面積の話題に学習指導要領解説からアプローチしてみる

今回の話は一応私なりの回答は持っています今回は示しません。で、皆さんに考えさせる資料として学習指導要領解説からこの問題にアプローチしてみたいと思います。

 

元々の問題は

togetterの算数の問題「円周率を3.14とするとき、半径11の円の面積を求めよ」の解を379.94とするのは誤り? より。今までの論議を見ていると理科的な考えと数学的な考えとが入り交じって大変なことになっているように見えます。個人的に間違いとする人たちは理科的な視点が強めのように見えますし・・・。

で、この話に学習指導要領からアプローチして学校教育上でどのように考えられているか見ていきます。これは教育的な見方なので数学的な見方や理科的な見方はかなり少なくなっていることに注意しましょう。

 

まず有効数字の考え方について

有効数字の考え方は科学を考える上ではデータの信頼性などの問題もあり重要です。それはいいのですが、その有効数字が小学校の算数でどこまで扱われているのか、というのを先に見ておかないと議論がおかしくなります。

一部には「4年生で概数の概念を学習しているのでわかるはず」ということなのですが、ここでは有効数字という言葉はなく、概数により状態を見積もることができるようになる、その場合にどのくらいの桁まで概数とするのかを考えさせる、が主題になっています。一応算数的活動の中で「目的に応じて計算の結果の見積もりをし、計算の仕方や結果について適切に判断する活動」はありますが、これは(四捨五入ではなく)値をわざと大きく見積もって計算をすると範囲内に収まっているから実際の計算でも収まるだろう、という活動なので円周率の有効数字に関する考えには用いることは難しいと思います。もし用いることができたとしてもそれは「円周率を3.14とすると真の値より小さくして計算しているので計算結果は少し大きくなることを頭に入れておく必要があるよ」くらいでしょうか。

 

円周率について

つぎはこちら。円周率については5年生で学習します。円に関して直径の長さと円周の長さの関係として求める物で、その関係を推測させて、という話です。この中では「円周の長さは直径の3倍より大きく、4倍より小さい」ということを学習します。ここまでは解説されていましたが、円周率がどんな値になるかはどうも指導対象になっていないようです。学習指導要領には「円周率は3.14を用いるものとする」なので、おそらくいきなり「円周率=3.14となる」と学習することになるのでは、と思います。教科書によっては具体的には3.14というきっちりした数字ではなく・・・という書き方をするのでしょうが。

ということは、「円周率を3.14とするのは概数ではなく算数として計算する上での定義値である」ととらえるのが自然ではないでしょうか。もちろん、これは(上級の)数学や理科ではそれぞれの領域で考え方があるので直してください、となるわけですが、小学校の算数の上ではこれでもよい、となっているようですね。この考え方はこの後の円の面積の解説にも表れます。

 

円の面積について

円の面積については6年生で学習します。学習指導要領で要求していることは「円の面積の求め方を考えること」なので、円の面積の公式についてどう扱うかは教科書次第になる可能性もあります。実際、学習指導要領解説では円の面積の考え方として

  1. 方眼紙の上に円を描いて正方形の数を数えさせることで円の面積を考えてみる
  2. 円を2n等分して組み合わせると平行四辺形もどきができあがるのでそれから円の面積の公式「らしい」ものを考えてみる

があげられています。それをやった後でどうも円の面積は「直径×円周率÷2×半径=半径×半径×円周率」の公式ができあがるね、とつながっているらしいです。

ここからが重要で、学習指導要領解説にある円の面積と円周率を3.14とすることについての見解については

「円周率は3.14を用いるものとする」と示している。これは、生活や学習では一般に3.14を用いれば、多くの場合十分だからである。

となっています。つまり生活を送る上で必要となる算数において有効数字がどうのこうのではなく、「計算できること」と「真の値に対しての差が(生活上)問題ないこと」が満たされることが重要である、ということでこの話を閉じているのだと思われます。まあ、算数はどちらかというと計算能力や数学的な物の見方の基礎を学習するものなので、それができることを優先するのが当たり前といえば当たり前なのですが。

 

流れを通して学習指導要領(解説)のスタンスを考えてみると

おそらく「算数を学習する上では上記の問題に対して379.94とするのは、ここまで計算できていれば計算能力的には問題ないことと、実生活でこの値を用いても十分だ」ということではないでしょうか。もし概数の考え方を用いたとしても結局は「半径11の円の面積は379.94より少し大きくなる」が解答となる、といったところではないでしょうか。無理矢理数学的に問題を解釈するなら

円の面積は(暗黙的に)半径×半径×円周率で計算できるものとする。ここで円周率は3.14という値であると定義されているものとする。以上の仮定に基づくとき、半径11の円の面積はどのように計算され、その結果はどうなるか、解答せよ。

といったところでしょうか。

 

小学校の足し算、かけ算の可換に関する考察(学習指導要領解説から読み取る)

しかしながら毎度のことですがこの手の話題は話題になるときは話題になるので今回も話に一石を投じてみたいと思います。前回は数学から離れた場所から数学を使っている人間として考えてみましたが、今回は教師に近い目線で学習指導要領を通してこの問題を見たときに何が見えるか?ということで読み解いていきたいと思います。

結論を先に言うと「足し算やかけ算の可換性について式の作り方を教えた直後であれば逆に書いたときに間違いとすることは学習指導要領から見ると間違いとはいえない」ということになるかと思います。これについてちょっと説明をしたいと思います。

 

足し算やかけ算の式を教えるときにどのように教える、という指針なのか

これを見ていきます。学習指導要領をみてみると順序を逆にしたときにどうするのか?については触れられていません。なので判定する材料がないわけです。

ここで問題になるのは「学習指導要領解説」のほうになります。これは学習指導要領に書かれている内容を大学の教授や小学校の先生などが解釈を加えて説明したもので、ほとんどの学校や教科書会社ではこちらを参考にしてどのように指導するかを決定することになると思います。こちらに書いてある内容を参照してみると逆に書くと間違いとできる根拠が少し見えてきます。まずは学習指導要領解説の算数編を見ながら(私なりにですが)解釈すると

  • どの児童も与えられた場面について同じ式を立てられる必要がある(つまり式を逆に立ててしまうと国語としてみたとき場面を構成できなくなるため、間違いとできる)
  • 式に直した段階では一般化していないため、数学としては可換な演算だが、一般化について教えるまでは非可換な演算として扱ってもかまわない(計算順序についても同様)
  • この段階での「式」とは具体的な場面を想定させるためのものなので場面との不一致が起こった時点で間違いと見なせる

ということで、やはり逆にしたときに間違いとすることを認めているようにも読み取れるのではないか?と考えてしまいます。ちなみに上記の説明の後ですが、ちゃんと足し算の式を構築する例があり、国語的な連動があるため、国語から算数の加法の式を与えようとするなら非可換演算と読み取れても仕方が無いと考えられます。

 

初めて加法や乗法を学習する段階では国語の意味を算数の式に連動させることを学習指導要領の解説が要求している

つまり初めて学習した段階では数学としての加法や乗法の式ではなく「国語を数式表現にしました」という教え方から入る、ということなのでこのような結論が得られるのではないでしょうか。現場の教師や教科書はこれに従っているとするなら「そう考える人も出てくるだろうしそうなるしかないのかな」という感想となりました。もちろん式の一般化、つまりは場面を表しているのではなくただの計算を行うという段階まで来れば可換性を習うのでその場合においては可換として良い、ということになるのでしょうが・・・。面倒なことですね。

ということは(数学的に見ている場合の)可換性が小学校の算数で保たれないという問題はそれぞれの表し方を行う場合の初めの入り方が言葉などとの関連性を保つ形である以上学習指導要領解説がこの形であればずっと残ってしまうと考えられますね。なかなか奥が深いです。

 

(注) 本来なら文面を引用するところなのですが引用の記述をするのが面倒だったため省略しました。どう書いてあるか見てみたい人は文部科学省のページから検索して文面を読んでみるといいと思います。

数学的に考えた並列世界論(個人的考察)

というわけでTwitterでも少し書きましたが数学的に考えた並列世界がどのようになるか、という物です。ちなみに半分哲学的になっていますし、あくまで「私が考えた」数学的に考えた並列世界ですので遊びの要素が混じっていますし、間違いは多々あると思います。後で意見などあれば修正していきます。まあ個人的意見程度にとらえてもらえれば良いのでは、と思います。これがきっかけで研究が進んだらおもしろそうだな、とは思いますが。

 

書くきっかけは?

一応書くことは決めていたのですが、実際に書こう、と決めたのは「時間」の謎について解明しようと試みた8つの仮説や理論 – カラパイアを読んだからでした。時間に関しての考え方を紹介していたからと、もう一つは上の考え方がこのページの2.で示されている「位相幾何学的時間論」の一部なのかな、と考えたからです。数学がある程度わかり、並列世界論に関して興味があるひとはこの意見を読んでみるとおもしろいと思います。

 

まず状態の設定から

これ、状態を決めるのがとても難しいですね。一応私はこの意見を書くときに以下の様に状態を設定しました。

  1. 今現在、私たちの住んでいる世界をWとする。このWは以下の様な形の元を持つ。

    ただし、はW上の位置ベクトル(。仮定では3次元としているが、実際は3次元より大きいかもしれない)は時間を表す。
  2. このとき、Wにはある位相を設定することができる。これを用いてを構成し、位相空間と見なす。
    この位相は最低でもおよびとなる写像を考えると、には通常の距離位相を入れることができるので、これにより誘導された位相を定めることができる。
  3. この状態を設定するとWの元としてこの世界でおこる全ての位置における事象を考えることができる。

という状態になります。これが第一段階です。

 

このままだと並列世界を考えることができないので

この世界Wがまた別の世界からの写像である、という考え方を取ります。具体的には以下の様に設定します。

  1. (いわゆる「神の視点」から見た)上位世界をVとする。このVは以下の様な形の元を持つ。

    ただし、はV上の位置ベクトル、はV上の時間ベクトルであり、とする。
  2. このVに対しても位相を設定して位相空間を構成する。(ちなみに、このときどうやって構成すれば良いかが出てこなかったりする。構成はできるはずなのだが…)
  3. このように設定すればVからWへの全射である写像fを考えることができる。これは

    の形となる。

となります。ちなみに、この中で出てきたVがいわゆる「事象空間」と呼ばれる物だと思っていただければOKです。

なお、4.でそれぞれをベクトルと書きかましたが、ベクトルでなくてもよいかもしれません。何らかの集合の元で、その集合の濃度が実数の集合の濃度以上でその集合に位相が入っているのであればV上で位相空間を構築することはできるはずですし。

 

で、これを設定するとなぜ並列世界が説明できるのか

まず初めにこの状態を設定したときの写像fを見てもらえれば良いですが、写像fは全射である、という仮定はありますが単射である、とは言っていません。つまり写像fによる逆像を考えてみれば分かりますが、これが複数に対応していてもかまわない、つまり同じ時間の同じ場所に対応する事象は複数ある、という状況を考えることができます。

もっと簡単に言うならV上での時間は時間ベクトルの形でなので、例として(名称としては時間平面でしょうか)を考えると、となる写像をとることができます。こうすると事象空間側ではの部分だけ時間に対して自由度があるのでこれが時間に対しての並列を表している、ととらえれば並列世界が説明できることになります。(ADVゲームの攻略チャートがこの形ですね)これは例ですので事象空間において時間が平面かどうかは不明です。空間かもしれないですし、それ以上かもしれませんし。

ちなみに、それぞれの空間に位相を入れたのは、「それぞれの事象がどのくらい近いかを判別できる材料を与えるため」だったりします。位置における近さは判別可能ですが、事象における近さをどう考えるかが難しいため、それを位相によってあらわそうというわけです。W上で時間的にループしていたとしてもV上で事象として近い(つまり状態が似ている)ということを考えるためですね。位相の本質をうまく使った表現の一つのような気がします。

一応時間の進み方が今現在の世界に対して事象空間側でどう見えるのか、やタイムスリップ・タイムリープ・事象のループなどもこのモデルを使って考えることはできると思います。また時間の次元を考えるときにはベクトル的な次元だけではなくフラクタル的な次元を考えてもいいと思います。フラクタルを考えることで事象のループを考えやすくなるかも…。

 

個人的には「この世の果てで恋を唄う少女YU-NO」からの続きのようなもの

この中で出てきた「時間は可逆だが歴史は不可逆」という言葉の本質をとらえようとしていろいろとモデルを考えていましたが、数学的な考え方を入れるとどうなるか、をやってみましたがいかがだったでしょうか。この言葉の意味は数学的には「事象空間Vにおいて、写像fによって今現在の世界の流れに対応する関数gを考えると、現在の世界Wでは時間がまき戻るという状態があったしても事象空間V上では一本の連続した線の関数を考えることができ、これを考えるとこの関数はあるパラメータをつかって書くことができる。このため可逆ではない。このことを指して「歴史は不可逆である」となる」といったところでしょうか。

ちなみにADVゲームで考えるともっとわかりやすいです。この言葉の意味は「ゲーム内の時間はセーブおよびロードにより移動可能であるが、それをプレイしているプレーヤー自身の「経験」は元に戻すことはできない。これを歴史と考えると歴史は不可逆である。またゲームによっては別ルートのシナリオの結果を用いて進めるものもあるが、これも同様にして不可逆性をもつ」というところでしょうか。(これをゲーム的に表すとどうなるか、をゲームシステムとして組み込んだ作品だったわけですが、だからこそ、というところですね)

いろいろと難しい説明をしてきましたがいかがだったでしょうか。ADVゲームの中でも時間の要素が関わるものは大好きで、それぞれのシナリオライターがどのような発想のもとでこういうことを考えるのか、またそれをどうやってゲームシステムとして起こすのか、を考察していたらこんな状態になってしまいました。少々行き過ぎのような気がしないでもないですが。

 

そういえば、この作品リメイクされるらしいですね。様々な事情があることは知っているのでリメイクはあきらめていたのですが…。個人的には期待しています。

敬語表現変換プログラムがあれば・・・

というわけでちょっと思ったこと。技術的な内容も少し含むのでこちらで。

 

敬語表現を使ったメールを書くのが苦手

実は私はメールを書くのがとっても遅いです。というのも、メールの内容をかくことに苦労しているわけではなく、「メールの中で使用している(敬語)表現は本当に正しいのか」をメール本文を書き上げた後から考えるのでその校正作業で時間を使っているからです。ちなみにメール本文を書き上げるのに5分ほど使った後でこの表現って尊敬語や謙譲語として正しいのか?としばらく考え続けること30分・・・ということもあったりして。blogのテキストは敬語表現などはほとんど考えていないので内容さえあればそれほど苦労はせずにかけてるのですが・・・。それなら「ビジネススクールにでも行って勉強してこいよ」といわれそうですが。それはさておき。

そうなってくると文章作成ツールなんかに乗っかっている「校正」機能があるのですが、それを拡張して「ビジネス敬語変換ツール」のような物って作れないのかな・・・?ということを考えたりしてみたのでちょっとかいてみました。あるならそれはそれでOKなのですが。

 

論文としては多少は出ている

私の得意分野とはあまりかぶらないので探し方が悪いだけかも知れませんが・・・。

基本は自然言語処理などを組み合わせた物でこれを考えるときは言語学と情報処理の分野なんですよね。学生時代には情報処理側で言語解析をやっている様子を見たことはあるので知らないわけではないのですが、言語解析後の「前後の文脈とその文章が書かれた状態を推察して尊敬語、謙譲語(、丁寧語)に変換して再度文章を構築する」という作業が思った以上にやっかいなのではないか、とは思います。特に対象の単語の目的語が尊敬語の対象なのか、謙譲語の対象なのか、を言語処理後に解析するのがやっかいそうですね。

また、敬語表現も「完全に一通り」というわけでもないのが痛いところ。ちょっと論文をかじった程度ですが、尊敬語の対象の階級によっても変換が違うのがさらに面倒ですしね。自分の会社の上司に出すのと取引先の会社の人間に出すのとでは表現に差があるのは当たり前のことですが、それを機械的にやるとなると難しそうです。そうなると言語学か情報処理の卒業研究としてはおもしろそうな題材だと思うのですが。

 

どちらにしても、社会に出る前に正しく学んでおくべきだったか

さすがに先方に失礼にならないくらいには敬語表現変換をしているつもりですが、気になって調べ直してみると尊敬語と謙譲語が逆になっていて「ぎゃー」と叫びたくなる場面もありますし。中学校や高校の国語の授業で今現在この題材って扱っていないのでしょうかね。知っているのと知らないのとではかなり違いますし。

あとは就職戦線に出て行ったときにこの壁に当たって跳ね返される人間も少なからずいると思います。これも文章を一度書いてプロに校正してもらって初めて分かる様なことだと思いますのでこういう講座があるのであれば受けた方がいいですし、今の私でも受けたいところだったりします。

「プログラマ」という仕事は文系・理系で分けられるのか?

プログラマーは文系の仕事か、理系の仕事か – 愛と勇気と缶ビール

というわけでちょうどいい話題を見つけましたのでこれに関して私も考えてみたいと思います。まがいなりにも「プログラマ」を名乗っているのでこれに関しては自分の体感として何となく思っていた項目ですが、この頃「文系・理系」について考えさせられる出来事もあるのでそれも交えて書いてみたいと思います。私も確固たる結論があるわけではなく考えるのレベルです。なお、「文系・理系」についてどのように分かれているか?についてがこの問題で重要になるのですが、この部分を勘違いしていたら済みません、とだけ。

 

「コードを書く」のは文系の、「コードを読む」のは理系の能力が強く出るような気がする

なんかこう思わないでもないような気がする、というのが私の意見です。もちろん、どちらも逆の能力を使って処理することはできるのですが、私の場合は特にこの傾向が強いのと、理数系ができる人が「コードを書く」という作業に向いていないのでは?と思うところがありこれを考えてみます。

まずは「コードを書く」のが文系である、というところから

ちょっと思っているのは「コードを書く」という作業が数学における「ある物事を証明する作業」にかなり似ているのでは?と思ったところからきています。実際、数学をやっている人でも証明が苦手、という人は一定数いるように見受けられますし、そうでなくても数学における「証明」というのは理数分野においても重要でありながら私には異質なものに感じられています。それは「証明で使用される言葉や数式は確かに数学なのだが、証明の手順そのものは論理学の要素を持ち、この手順の組み立てにおいて国語的な要素をかなり多く持つ」ことにあります。事実上小規模な物語の組み立てに等しいですよね。これって。物語の構築を間違えるとさっぱりと意味が分からない証明ができあがってしまうという部分がこの要素に当たると思います。証明を読む時には式の正しさを読んでいくのが主になるのに対して、です。

で、この「数学の証明を書く」という作業と「プログラムコードを書く」という作業を比べてみると分かると思いますが、

  1. はじめにやりたいことが何かを国語的要素で与えられる(数学の証明であれば「偶数と偶数の和は偶数であることの説明」を考えるのようなもの)
  2. これを必要な動作に「国語的に」分解する
  3. 分解された要素を数学的あるいはプログラムコードととして意味が通るように再構築する

と言う感じで妙に似ている流れをくんでいるのが分かると思います。まあ、これは極端な例かもしれませんが、特に初めの問題解決のための手順を考える部分は文学の力をかなり必要とするのではないか、というところが私の意見です。まあ、こう書いてみると確かに理学要素が強いように見えなくもないですが。

で、「コードを読む」のが理系である、というのは上記の例から

きています。いったんコードとして構築されたものを見る分にはすでに機械的な手順として書かれているものがほとんどなので物語としてとらえて解読していくこともできると思いますが、どちらかというと数学の定理を追いかけていって数式のイコールを出す作業に似ているのでは、というところです。特に処理がいろいろな場所に飛んでいくと混乱をきたす人はそれなりの数がいると思いますが、それをちゃんと追いかける、もしくは途中でブラックボックスとしてあきらめるという必要性がある、というところです。

 

文系だろうが理系だろうがプログラムを書ける人は書けると思う

ただ、考え方の差というのはプログラムの手順構築とそのコメントに現れやすいのでは?と思います。物語を作るのが強い人であれば依頼された新規処理を作成する時に先に流れを作ってから必要な部分を埋めていく(コーディングしていく)のではないか、と思っています。大規模になればある程度設計として書かないと処理が破綻してしまうのでちゃんと必要な処理の流れを設計しますが、小規模になっていくと必要と思われる処理をとりあえず(使う、使わないを無視して)書いておいて目的の処理となるようにパーツを組み合わせる、ようなプログラム方法をとることが多々あります。自分が思うに、これは理学側からプログラムをやっていった時に出やすいのではないか、と思います。

なお、今までの意見は一応自分およびその周りにいる理系プログラマに関して言ったものなので文系卒のプログラマの人の数を見たわけではないので考察に近いと思います。

でも思いますが、よほどな職業でも無い限り「文系」や「理系」を分けて見る、なんてことは意味が無いと思います。各学問間でいろいろな要素が行ったり来たりしている(経済学で現象をモデル化する時に数学が必要、とか)ということから考えても系統立てする意味はありますが、なんかこういう分け方をすると「理系」には文系の要素がない、ように見えてしまう(あるいは思い込んでしまう)のは問題だと思うのですが・・・。

 

ちなみに、私は修正案件の方が得意

だったりします。すでに組み上がったところから何が悪いのか、何を直せばいいのかを見つける能力に関してはそれなりに高いと思います。でないとWindowModePatchなんていう「他のプログラムの動作を変更する」というものはかなり作りづらいですからね。プログラマと言うよりはデバッガ的な役目の方が強いですか。もちろん、新規にプログラムを構築することは普通にやりますが、そちらの方が得意である、という意味です。