蛍光ペンの交差点

"科学と技術に支えられ、夢を語る人になる"

思考の歯磨き

内田樹は批判されることも多いが、彼の『日本辺境論』を読んだ時にとても腑に落ちて、そのまま今でも覚えている一つの主張がある。それは、本書の主張はこれまで別のところでも散々言われてきたことで何の目新しさもないが、歯磨きのように定期的に見直すことで価値が高まるものであるだろう、というものだ。

 

なるほど、確かに思想はただ一回の目新しさ以外にも評価軸がある。むしろ微視的には、内容ですらなく頻度が最重要だとすら受け止められる。思考について研究開発をする人たちは、よし俺は私は先行研究を踏まえて新規性と有効性を出しきったゾと満を持して次回作に移っていいのかもしれないが、読者は違う。私たちは本当に大切なことでも忘れてしまう。頻度の多い思考にダメなものが混ざっていると、その波に押し流されてしまう。歯磨きを、しなくなってしまう。

 

脳内思考は、書き手と読み手が全く同一という点で、極めて特徴的な情報である。日記も同様ではあるが、1日や1時間といったように規模が荒い。ミニ日記ことツイッターの玄人は5分単位で感情を記録するのかもしれないが広範囲に見られる現象ではない。よって、私には、脳内思考をメンテナンスすることはとても重要なことであるように思える。いわば思考の歯磨きである。

 

単語が集まって文を作り、文が集まって文章を作るように、とまでは行かないが、一日を終えた感想は(その日に)書き込んだ(「磨いた」)脳内思考(の列)に大きく左右される(ような印象を受ける)。たとえ同じできごとがあった日であってもだ。私たちは書き手として大きな責任を、また読み手として大きな影響を受けている。歯磨きについては標準化された歯科衛生士の指導を受けるのに、思考習慣については指導を受けないでよいのはなぜだろう?

 

いや、実際には教育(家庭も含むだろう)の中で指導を嫌というほど受けている。ものを見たときに、まずは覚えろと言われて育つ。常用漢字も九九も覚えていない段階では当たり前だ。だから私たちはいくつかの思考習慣を自動化させている。その次に理解しろと言われる。更には批判しろ、改善しろと言われる。社会に出ると、定期的な思考習慣のどれかが腐っていて、それを個別に治療されることもある。

 

歴史は、歯磨きのようには語られない。
ただ重要な事実が初出時を優先して要約されるのみである。
しかし生活は要約ではない。

 

歴史からは学べないここの空白で、ひとりひとりはどんな歯磨きをしているのだろうか。

命令で済むということ

仕事の遂行が命令で済むというのは面白い。プログラミングの話である。プログラムは事細かに指定された命令の並びであり、予期通りの結果を一度正しく生じさせたプログラムは疲れ知らずの有能な働き手となる。

同じ結果を再現といえど無論、実際は占有やら老朽化やらで、再現性あるはずの操作が前回と異なる結果をはじき出したりと、そこまであっさりと話は片付かないのだが、学び始めだとそう思い込んでしまいそうなぐらいにこの道具は強力で、使い手はややもすると夢を抱いてしまう。

過去の活用という文脈で考えてみると、例えば勉強をしていてノートをとるときに、たまに紙面構成をじっくり考えてみたくなることがある。覚えやすい記憶のかたちを選んでいるとも言えるし、未来の自分が特定の順に目を通すように「仕向け」ていると言えるかもしれない。その点でプログラミングは筆写や清書と共通の側面を持つと思う。一方で冒頭に述べた「勤勉な無給労働者を生み出す」ことはプログラミングの特殊な側面である。自分より優秀で勤勉な働き手に、自分がやりたいことを無償で委託できる。こう書くと、近代はとてつもないものを生み出したのだなとふとしみじみする。

やりたいことはありますか

人生でやりたいことが明確に決まっている、というと大なり小なり驚かれることが多い。僕の世代の人々は学生であれ社会人であれ自分のやりたいことを持っていない人が多いからだろう。

 

ただ残念ながら僕は子どものときから一つの夢を追いかけているようなビリーバーではないし、今やりたいことだって今後も変わらないとは限らない。僕のやりたいことが決まっている理由はどちらかというと今後の決断に安定感を持たせる意味合いが強く、その意味でとても冷めている。情熱のなかで夢中になれる人はそれはそれで羨ましいと思う。ただし、全く熱意がないかと言うと、そうでもない。

 

僕にとって「やりたいこと」とは集合名詞であり、構造としては優先度付きキューにとても近い。

 

もうすこし具体的にたとえて言えば、「やりたいこと」という言葉を聞いたとき、病院の待合室のような風景が思い浮かぶ。その待合室にはいくつかの「目的さん」たちが座っていて、彼らにはそれぞれ背番号のような数字が割り振られている。待合室の管理者は、もっとも数字が高いものを最優先して診察室に向かわせる。呼びだされた「目的さん」は向かった診察室で、はたして実現可能なのか、何年ぐらいかかりそうなのか、初手として何をすべきかをいろいろと調べられる。

 

優先度付きキューなので、最後に待合室に入ってきた「目的さん」であっても、その数字が高ければ最優先で診察室に向かう。

 

僕にとって今の夢は、その数字がいま自分の中で最も高いものにすぎない。

 

数えたことは無いが、おそらく待合室には20から30程度の患者が座っている。僕は怠惰なのでほんとのことを言うとずっと部屋で寝ていたいのだが、そいつを診察室に入れると一生何もしないままなので8時間以外は静かにしている。

 

この待合室は僕が息を引き取るまで空になることはないだろうし、その意味でやりたいことは生涯なくならないだろうと思っている。数カ月後からはまた生活環境が変わる。診察が必要な数はまた増えるだろう。

書くということ

僕にとって文章を書くことは、僕のなかでの重要な意味を持っている。高校のときからブログへの投稿数で数えれば1000以上の文章を書いてきた。

 

アウトプット(生成物)であることは間違いない。外に対して自分が感じた何かを表現したり、あるいは「こいつは貴重だ」と感じた文言や主張を反芻したりするために使ってきた(ような気がする)。数十時間かけて何度も推敲して書いた文章のことは何年経っても結構覚えているし、一度文章にすると人と話していてその話題になったときに結晶を差し出すように安心して話せる。自分の出せるなかでは最上のものなのだ、と自分で納得できている。話していて、自分のことばが辿り着く先がクリアに予測できて、きちんと狙い通りにそこに落とせる。人と話していると考えがまとまる、という経験があるが、それに加えて僕は書いていると考えがまとまる、ということを自然と経験して育ってきた。

 

僕にとって文章は売るものではない。あくまで自分の活動の中間生産物であって、上記のように普段の活動を明確化したり、重要なことを再確認したりするための手段に過ぎない。生計を立てる手段として考えたことは一度もないし、たまに友人から褒められて嬉しくなる、その程度の素人の手遊びにすぎない。

 

高校1年生のときから比べると、書く頻度は驚くほど減った。数十分の1程度になった。無駄な情報を書くことは嫌いだし、こういう文章を書いていてもあれこれ表現を消したくなる衝動に駆られる。筆が走るのに任せて書く、という友人の指針には一理あると思う一方で、一方で骨以外何も残さないぐらい質朴な文章にしたい嗜好もある。どちらが良いのかは今でもあまりよく分からない。こういう自分語りを読むのが好きな人は暇な人が多いから、少しぐらい助動詞が余分でも気にしないのかな、と最近は思ったりする。

 

誰に対して書いているのか、というのも実際あいまいなままである。高校時代は、僕を知らない人たちが読んでくれると一番正のフィードバックが生じていた。いまはネットが大衆化したせいもあって、半数ぐらいは知人だ。それが嫌だというわけではなく、高校生の僕はその開放性にどこか期待していたということなのだ。少なくとも僕にとってはそういうものだった。

 

英語で書けたら世界はどう映るだろう、と思うこともある。それにあと何年かかるだろうか。英語は現在は文法ミスで躓くレベルで、とてもじゃないが気持よく書けるレベルに達していない。人工知能機械翻訳で人間の翻訳作業は不要になって、はいはいそういう話はどうでも良くて、僕が単にそうしたいのだ。僕の個人的な感情や、感想や、記憶を、タイプという行為を通してタテモノみたいに構築し、できあがりの悪い作品のことは都合よく忘れて、そこそこよく書けた作品についてはどーよこれと鼻高々で得意気になる、そういうことをしたいのだ。

 

ここまで書いていて、ああそうか、文章を書くことは、

僕にとって趣味だったのだと初めて気がついた。

プログラミング学習の論点が変わるとき

昔はいろんな言語に手を出していた。C++から始まって、JavaRubyPython、C、HTML、CSSJavaScriptPHPなどのポピュラーなものから、LISPHaskellOCamlR言語などの比較的マイナーなものまで。

 

しかし最近はめっきりC++R言語以外は使わなくなった。研究とバイトで使うのがその2つしかない(上に他に道楽的に手を出す時間がない)ことも理由の一つだが、それ以上に自分のプログラミング学習における論点がシフトしたことが大きな要因だと思う。

 

プログラミングを始めた当初は、とにかくプログラミングの一ステートメントを書くこと自体が課題だった。やりたい作業を実行するためにはどの関数が必要なのか、なぜ予想したかたちでデータが返ってこないのか、この配列/リスト/データフレームというデータ構造はどう操作できるのか、それが「学習」の中心事項だった。だから、他の言語で似たような構造をたくさん見ることが、結果的に学習に貢献していた。X語を勉強したことがY語の勉強にもなっていた。

 

いまは、プログラミングの100ステートメントの配置について課題がある。何十通りも書き方がある中で、どれが最も効率的に(書くのにかかる時間や、特にその後のメンテナンスにかかる時間の面で)書けるのか、そこに関心がある。

たとえば次のような関心だ。

  • 研究用に使うスクリプトは、少しだけ処理を変更して(たとえば10行の処理で5行目だけAではなくBというデータに注目して)同じ処理をしたいことがある。これは関数として抽象化して、引数でAかBを与えるべきだろうか?

できるんだからすればいいじゃん、と昔の僕は思っていた。しかし事態はもう少しゆっくり考えてみる必要がある。

 

「最初は1つの処理で済むと思っていたものが、実はAかBかを可変にしたい」というニーズが生じたことで、

someProcedure()

someProcedure(selected="A")

someProcedure(selected="B")

と渡す、と作成すると実はあとあと大変なことになる。というのも、研究が進むと「じゃあ5行目だけじゃなくて7行目も変えたらいい結果が返ってくるんじゃないだろうか?」とか、「8行目はどうだろうか?」と無数に可変にしたくなってくる。結果として、

someProcedure(selected="A")

someProcedure(selected="A", selected2="C")

someProcedure(selected="A", selected2="C", selected3="D")

someProcedure(selected="A", selected2="C", selected3="D", selected4="E")

someProcedure(selected="A", selected2="C", selected3="D", selected4="E", selected5="F", ... selectedN="XYZ")

と、際限が付かないくらいに長くなる。

これで、関数が

someProcedure

someProcedure2

someProcedure3

...

someProcedureN

 

と無数にあった場合はもっと最悪なことになる。コピペ・コンテストだ。

 

そうなると、次はデフォルト引数(selected2を与えなかった場合に、既定として使われるselected2の値)が問題になるし、一度書いた関数の呼び出しが。

someProcedure(selected="A", selected2="C")

 

だった場合、

someProcedure(selected="A", selected2="C", selected3="D", selected4="E")

 

にしたあとでも同じ動作をするように保証するべきか、という話も生じてくる。つまり、保存しなければいけない状態はどれか?という複雑性が生じてくる。

 

これに対して、現状僕がR言語で(現在はR言語スクリプトを書いている)取っているベストプラクティスは、処理の分岐に関わるフラグを集約した list型の変数 procedureOptionList を宣言することだ。こうすると、

 

getProcedureOptionList <- function( ){
list(a = '/Users/update/160421/result.html',
     b = c("a", "b")[1],
     c = c("c") )
}

procedureOptionList <- getProcedureOptionList()

someProcedure(procedureOptionList){       # 引数の数を書き換える必要がない

  procedureOptionList$a       # どの処理フラグについても自由にアクセスできる

  procedureOptionList$b

 

}

 

のように、処理フラグが追加されても、関数の引数は procedureOptionList の1つだけで一定なので、書き換えなければいけないデフォルト引数の箇所はおおよそゼロになる。この一工夫を導入してから、「あっ、さっき追加した変数、関数Aのデフォルト引数には設定したけれど、関数Bには設定していなかった」と言ったような、ケアレスミスによるエラー遭遇率が格段に減った。新しい処理フラグを追加するときも、「getProcedureOptionList関数のなかに追加すればいいんだ」と意思決定と行動もグンと早くなり、認知負担は激減した。深夜2時に寝ぼけて書いていてもミスる可能性が減っただろう。プログラミングで「メンテナンスを容易にする」というと、それは「理由の分からないバグが出ていて何時間で直せそうかわからなくて怖いのに、締切は5時間後に迫っていて、しかも2日寝てなくて頭は朦朧としてる」みたいな最悪の状態でもギリギリ間違えないくらいの簡単なタスクにできる工夫を事前に随所に散りばめてある、という意味合いのことである。

 

 

このような話題は、入門書では扱われない。list 型の変数は、たんに「可変長の要素を持てる」や「 vector 型と異なり、要素それぞれの変数の型は同一でなくてもよい」などと文法的な説明がなされるだけだ。実際にどこで使うと破壊的にミスが減るのか、未来のバッドコンディションなあなたを助けてくれるのか、というのは範疇外である。

 

そしてこのような一工夫は、どちらかというと言語依存だ。もちろんRの list でできることを 別言語のデータ構造で実現することは容易だろうが、依存とはそういう意味ではなくて、プログラムの書き手がその言語の文法を前提として考えるという意味だ。「listは可変長の要素を持てる。では引数に指定したら、引数がn個に増えたとしても一生書き換えなくて済むんじゃないか?」という判断を、言語非依存に「可変長の要素を持てるデータ構造を、引数として使うことで拡張性を維持したまま複雑性を減らす」と学べるとは信じがたい。そのような知見はむしろ、Rで一度そういうことを経験したから他の言語でもできないか、というときにそうやって抽象化されるものではないか。

 

 

 

だから、自分がよく使う言語の、よく使う文法の、まだ気づいていない活躍の場に対して論点が集中している。Pythonではどうだとか、OCamlだとこう書けるとか、そういう話はどうでもよくなった。そんなことの比較に認知資源を割けるほど、目の前のプログラムは浅くない。自分が入門書やネットの記事で見てきた、浅い検討しか成されていないプログラムで「学んでしまった」書き方を、批判的に見て別案(繰り返すが、別案は1つではなく、数十通り存在する)を出し、それが実際に動くか試すのは、それだけで作業時間が潰れる。しかしそうしないと、新しく追加した引数を100個の関数にコピペし続けて、一つでも抜かしたらエラー、みたいな知的でも何でもない、無駄に集中力だけ必要な作業になってしまう。(ちなみに、たまに「研究用に使うプログラムなんて大したことないから、別にすぐ書けるようになるよ」みたいなことを言う人がいるが、そういう人が書いたプログラムを見るとこのような検討がなされていないことが多い。きっとものすごい時間を投下して修正しているか、それともバグがあるまま研究して間違った結果を出力しているかのどちらかだと思う。こういう間違いは公開したらすぐに他人には気づかれるので、ソースコードを公開する文化が根付かない遠因の一つにもなっていると思う)

 

言ってみれば、自分が普段使う言語のよく使う関数や型をほぼ暗記したあとでも、いやむしろその後こそ、より一層プログラミングは学ぶことが増える。日本的な暗記学習の弊害なのかもしれない。ググらなくても思い出せることと、目の前の複雑性を軽減させるために適切な場所に使えることは、けっこう違う。

 

 

 

 

 

受験と学問と研究は本当に違うゲームなのか?(かきかけ)

―― 本日は、東大を卒業されている先生に東大新入生に向けてのアドバイスをお話しいただきたいです。

瀧本 まず受験と大学生活、就活は非連続であるという前提を知る必要があります。大学入試というのは採点しやすいように答えが一意に決まっていて、時間をかければ誰だってできるようになるものです。だから時間の制限がある中で及第点に達することを目指すゲームです。

しかし、これからは違います。大学では自分で問いを立てて答えを探していかなければなりません。 みんながやっていることにとりあえず合わせるなんてしていてもダメです。もちろん、それで何とか凌ぐことも可能ですが、今度は就活、社会に出て、あるいは研究をしようとしたところで、より苦労することになります。

ここで、東大生にとって不幸なのは”進振り”があること。これは受験と全く同じゲームなので、こちらに最適化してしまうと、間違った方向で癖がついてしてしまうわけです。

 ( 受験と大学生活は別のゲームであると理解せよ 瀧本哲史さんインタビュー - 東大新聞オンライン )

 

多くの人は、大学受験と「大学入学後の学部4年間における勉強」(異論もあるだろうが「学問」と表記する)は全く異質なルールに基づいたものだと認識している。更には主に講義を受けたり議論するだけの学問と新しい知識を創りだす研究も非連続なものだと認識している。

 

しかしその認識自体が実はまだ再考の余地があるのではないか、とふと疑問に思った。

 

まず、「最終提出物(deliverables)」を比べてみる。

 

大学受験の最終提出物はなんだろう?これは分かりやすい。第1志望のXYZ大学における本番試験の答案だ。併願大学もあるだろうが第1志望に合格すれば全落ちしても何の問題もない。すなわち最終提出物の質は「第1志望の合格点を超えているか・いないか」という2値で評価される。それに比べたら残りの提出物は瑣末なものであり、何ならすべて白紙でも構わない。現に私の予備校時代の英語講師は私立の受験費でパフェを食べに行っていた(その人は第1志望である東大の文科3類に合格した)。

 

学問の最終提出物はなんだろう?これは一意に定めるのが難しい。卒業単位の確保は重要だが、誰もそれが大学での学問の最終提出物だとは同意しない。

 

なので、先に研究の最終提出物を考えてみよう。これも受験と同じく明確だ。人類がまだ知らない知識の有効性を述べた論文だ。化合物やマイクロ波、あるいはアルゴリズム市場メカニズム、法制度や政治体制など、知識の対象は何でもいい。研究者は論文という文字を書いているだけで給料が払われる特殊な物書きであり、対象が何かよりもそれが人類の未来にとってどれほど重要なのか、のほうが本質である。

 

さて、日本では多くの大学生が学部4年生で「卒業研究」という形で初めて研究を経験するように、学問は大学受験と研究の間に位置する。その配置を踏まえると、

  • 大学入試の本番試験で書いた合格点以上の文章
  • 人類がまだ知らない知識の有効性を述べた文章

学問の最終提出物は、この間にあるのではないかという気もする。

 

だが、一方で大学合格者の全員が研究者になるわけではない。卒業研究を課さずに学部課程を修了することもあり、その意味では

研究者にならない人にとって、
研究の最終提出物ぐらいの時期にあたるところには、
何が最終提出物として求められるのだろうか?


という疑問が沸く。図式にすると、以下のような感じだ。

 

f:id:koshka-j:20160422112837p:plain

 

ここは意見が分かれる気もするので、あくまで私見を述べる。

 

僕の意見は、研究者以外の最終提出物は、「プロジェクトごとの最終成果物 x プロジェクト数」というものだ。ここで「プロジェクト」の定義は、プロジェクトマネジメントという業務を遂行している人たちが参考にしている、以下の書籍の定義に基づく。

 

A project is a temporary endeavor undertaken to create a unique product, service, or result. The temporary nature of projects indicates a definite beginning and end. The end is reached when the project's objectives have been achieved or when the project is terminated because its objectives will not or cannot be met, or when the need for the projet no longer exists. Temporary does not necessarily mean short in duration. Temporary does not generally apply to the product, service, or result created by the project; most projects are undertaken to create a lasting outcome. For example, a project to build a national monument will create a result expected to last centuries.

(拙訳:プロジェクトは、今までにない成果物を作るためになされる一時的な試行錯誤のことだ。「一時的な」というのは、明確な始まりと終わりがあるという意味を指す。目的とする最終成果物が提出されたときや、その成果物が作成不可能だと分かったとき、あるいは成果物が必要でなくなったときにプロジェクトは終わりとなる。「一時的な」は必ずしも期間が短いということは意味しない。「一時的な」は試行錯誤の期間を指すのであって、試行錯誤によって生み出された最終成果物には適用されない。むしろ、大半のプロジェクトは長くあるいは永続的に残る成果物を生み出すために遂行される。たとえば国家の記念碑を建てるプロジェクトでは数世紀のあいだ残るような記念碑を作るだろう)

 

(Project Management Body of Knowledge 4th Edition, p.5, 2008)

 

この意見は、かなり極論側である気もしている。というのもこの最終提出物の定義では、日常業務はプロジェクトの成果物に過ぎないと言い切っているに等しいからだ。たとえば新規事業の起ち上げというプロジェクトの成果物は新規事業のマネジメントになるだろう。

 

さて、以上の定義は、どことなく形容詞が研究者の最終成果物に似ている気がする。「今までにない(unique)」や「長く残る(lasting)」、あるいは始める瞬間に作成不可能だと分かるかが不明なことなどだ(ちなみに、受験もそうではないか、という気がする。誰も受験前に合格答案が作成不可能かは分からない)。

 

論文の成果は真理ではなく「より良い説明」程度であることの方が多いし、後続の論文によって知見が修正されるのは競合会社の優れた製品にシェアを奪われることに似ている気もする。引用数は取引先の数のように見えるし、自己引用(自分の論文を自分で引用すること)だけで構成されている論文は在庫の宇宙遊泳のような感覚を受けなくもない。

 

さて、こうして「今までにないプロジェクトを遂行する社会人」という観点で見てみると、実は研究者と社会人は大差がないようにも見える。

 

f:id:koshka-j:20160422115937p:plain



先で交わる?と書いたが、むしろ「前段階は分かれているのか?」と言ったほうがよいくらいだ。研究者がやっていることはプロジェクトではないと言えるのか?と問いを立ててみてもいいくらいだ。どの研究テーマも、研究者が集まって、最終成果物の大体のイメージを決めて、調査をしたり実験系を組んだりして、と、別に何ら作業としては社会人と比べて別段新しいことをしている訳ではない。単に成果物が新しいというだけだ。

 

そしてもしこのような意欲的なモデル化をするのであれば、実は学部4年間の最終提出物は研究者にとっても研究者以外にとっても役立つ何かではないか、という話が出てくる。そしてその思考を推し進めると、実際のところプロジェクトマネジメントという観点(いままでにないものを、確実につくるための方策)からは、受験と学問と研究は大して違いのない行為なのではないか?という論点も出てくる。

 

(つかれたので続きはまたこんどきがむいたときにかく)

原理、分類、思考

原理に基いて思考するとはどういうことかを試してみたくなった。

 

「消費者は最安の商品を買う」という原理があったとする。
まず第一に大事なのは、この原理に限らず多くの原理は集合名(集合setの名前)であって、中身がいくつ入っているかが大事だ、ということだ。

 

消費者は最安の商品を買う =
 {消費者は最安のペットボトルお茶を買う、
  消費者は最安の区間で定期券を買う、
  消費者は同一商品なら最安で提示されたものを買う、… }

 

勘の良い人なら気づいたかもしれない。
上で集合に入れてみた中身は、実は一つ残らず誤っている。

集合とは、ものについて「入っているか」「入っていないか」という2値の情報だけを付与する数学的構造だ。だから適切ではないものが入っていることは、深刻な誤りだと言える。

 

何が誤っているのか?

 

たとえば、僕はペットボトルのお茶だと普段は最安のものを買うが、綾鷹があった場合はこの限りでない。味が好きなのだ。ランダムに選んでお茶を買うことを繰り返していたら、いつの間にか綾鷹とそれ以外にだけは優劣が付いた。だから僕を「消費者」とした場合、正しい言語表現は「消費者は綾鷹が存在しなければ、最安のペットボトルお茶を買う」となる。

 

定期券区間も、例えば少し割高な区間によく使うターミナル駅(池袋など)が入っていたら、そちらを選ぶ消費者は一定数居るだろう。だからこちらの言語表現は「消費者は途中駅に興味がなければ、最安の区間で定期券を買う」のほうが適切だ。

 

仮に商品が完全に同質であったとしても気を緩めてはならない。例えば価格コムで最安の商品を見つけたとしても、それが充電器など発火の恐れのある商品で、出品者の身元が不確かならばあえて2番目、あるいは正規代理店から注文するという注意深い消費者も居るだろう。そうなると修正案は「消費者は同一商品かつ同質の出品者なら最安で提示されたものを買う」となる。

 

以上の思考プロセスを経ると、

消費者は最安の商品を買う =
 {消費者は最安のペットボトルお茶を買う、
  消費者は最安の区間で定期券を買う、
  消費者は同一商品なら最安で提示されたものを買う、… }

 

という理解は、

消費者は最安の商品を買う =
 {消費者は綾鷹が存在しなければ、最安のペットボトルお茶を買う
  消費者は途中駅に興味がなければ、最安の区間で定期券を買う
  消費者は同一商品かつ同質の出品者なら最安で提示されたものを買う、… }

 

 

とより詳細に出来る。実際にはペットボトルお茶の「消費者」だけが一般の消費者ではなくて僕だけを指しており、同一の名詞が指すものが違うという問題もある。綾鷹をより抽象化すれば直せるだろう。

 

何なら要素ひとつひとつに留保を付けるのは冗長だ。もっと一般化して集合名自体を改善してしまったほうが得策ではないか。

 

消費者は価格以外に差異を感じられないならば、最安の商品を買う =
 {消費者は最安のペットボトルお茶を買う、
  消費者は最安の区間で定期券を買う、
  消費者は同一商品なら最安で提示されたものを買う、… }

 

つまるところ「コモディティ」の話をしていたのだと明確になる。

 

 

さて、そうなると

  • 消費者は価格以外に差異を感じられないならば、最安の商品を買う
  • 消費者は価格以外に差異を感じられるならば、最安以外の商品でも買う


この2つの集合を用意すれば、すべての購買活動は分類できるのだろうか?

いや、「購入しない」が分類が抜けている。そして購入しない以外にも可能性があることを恐れて、その集合に「その他」と名付けることにする。

 

  • 消費者は価格以外に差異を感じられないならば、最安の商品を買う
    = {食料品、定期券、家電、…}
  • 消費者は価格以外に差異を感じられるならば、最安以外の商品でも買う
    = {高級車、ブランドバッグ、椅子、ベッド、スマートフォン、スーツ…}
  • その他 = { そもそも購入しない、 ... }

しかし、買う/買わない以外に選択肢があるとは思えないので、もう少し形式を整える。

  • 消費者は価格以外に差異を感じられないならば、最安の商品を買う
    = {食料品、定期券、家電、…}
  • 消費者は価格以外に差異を感じられるならば、最安以外の商品でも買う
    = {高級車、ブランドバッグ、椅子、ベッド、スマートフォン、スーツ…}
  • そもそも購入しない = {既に所有している、そもそも消費者がいない、…}
  • その他 = {  }

その他を空集合にして、購入見送りを独立させた。上記の4つの集合に共通部分がなければ、MECEと呼ばれるものの成立だろう。共通部分があれば、多クラス分類問題を機械なしで解いていることになるだろう。

 

 では、本当に解きたい問題を下に書いて終わろう。

 

演習問題1.
次の集合に正しく所属すると考えられるものを1つ挙げよ。
その際、関連する別の集合から考えていっても構わない。
その場合は部分点を付与することがあるため、答案用紙にメモを書きつけておくこと。

賛成する人がほとんどいない、大切な真実 = { ? }