見出し画像

【第2話】お笑いと育児とプログラミング/連載『プログラマ夫と算数嫌いの妻が、プログラミングについて話してみたら』

はじめての方へ:本連載は、プログラミングについての知識がゼロで漠然と苦手意識しかない妻(筆者)が、プログラマ夫にインタビューしながら、なんとかプログラミングと少しでも仲良くなろうとがんばる雑談シリーズです。どうぞ肩の力を抜いて、夫婦の雑談をお楽しみください。

<全5話予定>
序章・目次
第1話:そもそもプログラミングってなんなのさ
第2話:お笑いと育児とプログラミング(←今回はここ!)

■「プログラミング的思考」ってなんなのさ。

私:ところで、前からちょくちょく『プログラミング的思考』っていう言葉が出てきているけど、これってそもそも何? たとえばどんなこと?

夫:えーっと。何か解決したい問題があったときに、それを、小さな問題に分割して、解くこと。……かなあ?

私:小さな問題に分割して解く、か。

夫:虫食い算の話だと、どん!と、「3桁×3桁=6桁」、みたいな問題が与えられて、 いくつか数字が入っているとするじゃない。それをぼうっと眺めていてもなんにも出てこないんだけど、「1の桁に注目してみよう」とかっていうと、1個決まったりするじゃん。

私:ふむ。分割して考えると、道筋が見えてくる的な。……わかるんだけど、なんか虫食い算の話だと、算数が頭にちらついてやる気出ないので、他のたとえない?

夫:うーん……。あ、料理とかいいかもねえ。

私:料理! それいいね!

夫:たとえば、「夕飯をつくる」っていうぼやっとした問題があって。それって実際は、「献立を考える」とか「食材を買う」とか、いろんな小さい問題に分割できるじゃない?

私:そのまえに「冷蔵庫の中身を把握する」っていうのがあるんだよ?

夫:わかってる、わかってる(笑)。まあとにかく、ぼんやり「夕飯をつくる」っていう問題に向かっているときより、「献立を考えよう」「食材をそろえよう」っていう小さな問題に分割して、その工程をひとつひとつクリアしていけば、いつのまにか夕飯ができているっていうことでしょ。

私:いつのまにか? ……そんな夢のような話があるかあ!

夫:いや、でもそうでしょ実際。いつのまにか、っていう感覚には個人差があるけどさ(笑)。小さな問題をひとつひとつ解いていると、最終的には「夕飯をつくる」という大きな問題が解けているっていう。「課題解決能力」とも言いかえられると思うよ。

私:課題解決能力……。なんか、毎日すごいことしてる気分になってきた。

夫:すごいことだと思うよ!

私:わはは! ハイパーえらいからね(笑)。


■ 小さな問題に分割するのは「迷いを減らす」ため

夫:ちなみに、前回「プログラムの最適化」っていう話をしたけど、あれって人間だと「慣れ」とか「知識の増加」って言いかえることができるのかもしれない。それまでは問題を小さく分割しないと解けなかったのが、ある程度大きな問題のままで解けるようになるってことだから。

私:うーん。たとえば?

夫:たとえば、ほうれん草のおひたし作ろうってときに、さあ、鍋に水を入れて、それを火にかけて、塩を入れて……ってわざわざ考えなくても、もう動ける。「おひたし作ろう」だけで鍋に手が伸びて動けるでしょ。それが、おひたし問題に対してプログラムが最適化された状態。

私:つまり、わたしは料理という課題に対して最適化されつつあると。いやぁ、ますます、すごいことしてる気分になってきたね。

夫:(笑)。ちなみにいま話してて気づいたけど、小さな問題に分割するのは「迷いを減らす」のが目的なのかもね。機械的に解決できるようにする。

私:なるほどー。たしかに、普段まったく料理しないひとに「おひたし作って」って言っても、「えっと……」って迷うよね。

でも小さな問題に分割して、「鍋に水を入れて」なら、何をしたらいいか、ブレなく瞬時にわかる。「小さな問題に分割して」「迷いを減らす」はプログラミング的思考のキーワードなのかも。


■「牛乳を買ってきて。卵があったら、6つお願いします」

私:そういやなんか夫さん、前、プログラミング的思考のジョークがあるって言ってたような。牛乳と卵の。あれ、なんだっけ?

夫:あ、あれはね、プログラミング的思考というより、プログラムされた機械側の動きをあらわしたジョークなんだけど。

プログラミング的思考っていうと、「プログラムするときにプログラマが考える思考」なんだけど。あのジョークは「記述されたプログラムを実行するときに機械がとる行動」をプログラマがやっちゃった、というジョークなんです。

私:ややこしいな。とりあえず、もう一回教えてよ。

夫:はいはい、えっと。

“プログラマが、買い物を頼まれた。
『牛乳を買ってきて。卵があったら、6つお願いします』
プログラマは、スーパーに行ったら卵があったので、牛乳を6本買って帰った”

っていう。

私:なるほどー。一般的にそうやって頼まれたら、スーパーに卵があったら、「牛乳1本と、卵6つ」を買って帰るよね。でも指示のことばだけをそのまま捉えると、「牛乳6本」になっちゃうっていうことか。

夫:そうそう。プログラミングによる機械動作だと、その指示だとその結果になるよっていう。だからあらためていうと、このジョークは、プログラマが慣れ過ぎちゃって、機械的に動いちゃったっていうジョークね。

実際、さっきの依頼文はさ、日本語だとちょっとぼやけてるんだけど、英語にすると……原文あると思うからちょっと探しといて。

※探しました↓
 “buy a carton of milk and if they have eggs, get six."
(出所:https://www.reddit.com/r/Jokes/comments/15n8ek/a_carton_of_milk_and_eggs/

夫:その英文を、できるだけ崩さずにプログラミング言語にすると、実際、「牛乳を6つ買ってくる」動作になると思う、たぶん。

私:なんでそうなるんだろう。なんというか、まあことばだけを捉えるとたしかにそうか、って理解もできるんだけど。まったく初めてこの話を聞くとさ、素直な感情としてはやっぱり「なんでやねん!卵6つ買ってこいや!」ってなるやん?

夫:えーっと。なんでそうなるんだろう、を、どうすればよかったのか?に置き換えると。「卵を6つ、買ってこい」というべきだったと思うんだよね。実際、言われたお願いのセリフの中には、卵を買う動作が入ってないじゃない。だから、卵を買えないんですよ。

私:そうか。“get six eggs” って言わなきゃいけないと。なるほど、曖昧なのがいけないのか。

夫:曖昧というか、含みがあるのがいけない。

私:あー。じゃあ日本語は、プログラミング的じゃないっていうこと?

夫:主語を省略するっていうのは、まあ、あまりできないかな。

私:あとは“察しろ”的なさ……。

夫:それはできないし、「前言ったことを、5行後に、書かなくとも覚えておけ」みたいなことはできない(笑)。

私:そっか。いちいち何がどうするっていうのを明確に、含みなく書かなきゃいけないということだね。やっぱり「英語的」ってとらえるとわたしの文系脳には入りやすいかも。


■ プログラマは、怒りにくい?

私:プログラマさんって、職業柄、考えるときの癖?みたいなのってあったりするのかな? なんでも小さな問題に分割して考えるくせがあるとか。

夫:仕事上で?

私:いや、普段の生活で。何かトラブルがあったときに、問題を分割して考えるとか。

夫:うーん。

私:あ、でも、結婚した当初、この人怒らないなあ、寛容だなあってよく思ってたし、直接言っていた気がするんだけど。

さっきの卵と牛乳のジョークの話を聞いたりとか、Eテレの『Why!? プログラミング』とかを見たりしていたら、「ああ、だから夫さん怒らないんだなあ」って納得したんだよね、そういえば。

夫:ああ、なんかそんなこと言ってたね。

● 紹介したいテレビ番組:Eテレ『Why!?プログラミング』
http://www.nhk.or.jp/sougou/programming/
※リンク先で過去の放送が動画配信されています(2019年1月現在)。小学生向けだけあって、初心者がイメージをつかむのにとてもわかりやすいので、時間のあるときにぜひ!見ることをおすすめします。特に「ジェイソンはここにいる」っていうコーナーとか、日常の中でどんなところにプログラミングが潜んでいるのかわかって、身近度あがって楽しいです。

私:さっきのジョークの話でも、Eテレの『Why!? プログラミング』の中のコーナーでも、「こっちがこういうつもりで言っているのに、それをそのまま言葉どおりに受け取ると、動作としてはちがうものが返ってくる」っていうのがあってさ。

でも、それって、その間違ったアウトプットを見てみると、指示を出した側も「ああ、そうだよなあ!」ってなる。言葉通りに捉えたら、そういう動きになるよなあ、って。

● ぽこねん落書き劇場:「しょうゆ入れて!」の巻

“鍋にしょうゆを入れてと頼んだら……ボトルごと入れられてしまった!”
でもたしかに、「しょうゆ入れて」のことばだけでは「そうともとれる」。

→じゃあどう言えば、望む結果が得られたの……?!(例)
①しょうゆの瓶をとって
②しょうゆの瓶のフタをあけて
③その中身を15mlはかって
④鍋に入れる
と分割して指示をだせば、ブレなく、望む結果が得られただろう。

……だからね、「背景や文脈を理解したうえで動くのが人間」なんだけど、プログラマさんはそういうのを排除して、「今言われたセリフを、指示通りにあらわすとそうなる」って理解することに慣れている気がする。そのことに対する耐性があるから、怒りにくいんだよね。

っていうのもさ、たぶんわたしとか、世の中の多くの一般女性……ってくくるとよくないかもしれないんだけど。夫婦喧嘩ってだいたい、「なんでそんなこともわからないの?!」とか、「なんでわかってくれないの?」っていうのが元凶だと思うわけですよ。そこにたぶんイラッとしちゃうんだけど、夫さんにはその耐性がすごくあると思った。結婚した当初はとくに。

夫:そうだねー。

私:なんていうか、相手に言ったことがうまく伝わらなくてトラブルになったときに、「自分の言い方を顧みる癖」がついているよね?

夫:あー、それはたしかに、あるかも。

私:あるよね。「そっか、さっきの言い方じゃ確かに、伝わりづらかったか」と。「どう言い換えれば相手にちゃんと伝わるのか」っていうのを考える癖がついているんだなと思った。だから、怒りづらいんだよね。「なんでわかってくれないの?!」って、思いづらいというか。

そこの耐性が、たぶん、わたしの勝手な分析ではプログラマさんはすごくある気がする。慣れているなって。

だからあくまで雑談ネタではあるけど、プログラマ的思考が世の中に広まると、そういう夫婦喧嘩とか対人関係の衝突はもしかしたら減るかもしれないよね。そういう癖が、わたしも身についていたらよかったな、って思うから(笑)

夫:うん(苦笑)。


■育児における「パパメンタル」の強さもプログラミングのおかげ?

私:あ、そういえば前に、夫さんってパパメンタル強くて助かるわあ、って話したことがあったじゃん?

夫:あー、あったかも。

私:けっこう周りではさ、こどもに“ママじゃないと嫌!”って泣かれてパパが凹んだりすねたりするという『パパメンタル問題』を耳にするんだけど。夫さんはそれがないなあと。

夫:変えられないことはしょうがないしね。

私:そうそう。なんか前も、世の中のパパに参考になることはないのかと思ってその理由聞いたけど、いまいち『考え方』レベルの話で難しいな〜って感じてて。それっていま思えば、プログラミングの考え方が背景にあるからなのかもね。

夫:あー、ね。まあベースとして、『自分以外のものは、思い通りに動かないのが当たり前』ってのはあるからね。

私:『自分以外のものは、思い通りに動かないのが当たり前』。それだ!

夫:自分が凹んだりすねたりしてアウトプット(結果)が変わるならいくらでも凹むけど。そうじゃないじゃん。

私:でもプログラマ的にはさ、自分のコードの書き方を変えたら攻略できるというか、「あやし方を変えたら、結果も変わるはず」みたいに思って空回り、みたいなケースも想像できる気がするんだけど、そうならないのはなんで?

夫:まあ、こどもの場合は何しても泣くからね。そもそも自分が正解を持ってない場合もあるじゃない? たとえば“母親”を入力(INPUT)して与えないと泣き止まないというシステムだと思えば、凹む意味がない。

私:ほー!なるほどねえ。そのわりきり方で楽になるパパさん、いるかも。

夫:へえ。みんな大変なんだねえ。

私:とりあえずあれだね、「自分以外のものは、思い通りに動かないのが当たり前」は夫婦喧嘩の防止にも役立ちそうだから、紙に書いて壁にでもはっておこうか(笑)。


■ラーメンズのあのネタは、プログラミングのデバッグ作業?〜お笑いとプログラミング

私:いま話しながら思ったけどさ、あの、ラーメンズのネタも、いま考えたらプログラミングの機械的思考だよね。「それをとる!」って言って、相手に意図したのと違う動きをされて、「そうだよなあ〜!」ってなるやつ。

↑ラーメンズ公式が公開している動画です。この動画の広告収入は寄付にもなるので、一石二鳥。ぜひ観てみてください。単純におもしろすぎますので。大好きです、ラーメンズ。(今回話題にしているのは、04:10くらいからのところです。ぜひ通しで観ていただきたいですが、お時間のない方はその箇所だけでも!)

夫:そうだね。あれはまさに、デバッグ作業

私:デバッグ作業って?

夫:意図しない動作が起きたときに、それを意図する動作に修正していくことかな。

私:なるほど、たしかに。この作品でも、どうやったらこっちの意図がちゃんと伝わるのか、もどかしさを感じながらもどんどん表現を変えていってるよね。ああ、大好きなラーメンズと結びつくとなったら、俄然やる気出てきたよ、プログラミング。

夫:ははは(苦笑)。でも、そうだね。ラーメンズ……というかお笑い全般、そうなんだけど。予想されたとおりに動かないっていうことに、人っておもしろみを感じるじゃない。そこたぶんね、プログラマに限らず、みんな持ってる感覚だと思うんだよね。それをおもしろがれる、っていうことが、プログラミングが楽しいひとつの理由かもしれない。

私:ふうん……。ああでも確かに、お笑いもそうだけど、いま子育てしていても、思うもんね。自分が意図したのと違う動きされて、“ちがうちがうちがうちがう!(笑)”ってなるもん。でも、一歩止まって言葉どおりにとらえたら、「そうだよなあ!」って。

夫:それがおもしろいのって、なんとなく、やっぱり「そうだよなあ!」っていう感覚がだれにでもあるからだよね。

私:この前もさ、娘ちゃんと座ってて、食べ終わったお菓子の袋をゴミ箱に捨てようと思って「ゴミ捨てに行かなきゃ」ってつぶやいたのね。

そしたら娘ちゃんがそれを聞いてすっくと立ち上がって。何するのかと思ったら、キッチンに行って、大きなゴミ箱のフタを開けて、中のゴミ袋自体を取り出そうとしてて。

ゴミ回収の日に、外にゴミを捨てにいくことだと思ったんだよね、きっと。いや、ちがうちがう(笑)!ってなったけど、よく考えたら「そうだよなあ!」って。どこに何を捨てる、って言わなかったから、「そうだよなあ!」って。

夫:うんうん。

私:お笑いとか、子育てとか、そういうところと話がつながると、一気に親しみがわくわ。

(つづく)


■ 次回予告:【3】日常生活にひそむプログラミング
・プログラミングはいたるところに
・たとえば、センサー付き水栓の動作なら?
・信号機や、自動販売機にも
・プログラマとひとくちにいっても◯◯系がある?
※更新日は来週あたりを予定しています(不定期更新)。

-----
“Please pay as you wish !”
〜ぽこねんインタビュー企画の背中を押す応援、お待ちしています!

なにかのご縁でこのnoteを見つけてくださり、しかもこんなすみずみまでお読みいただきありがとうございます。この連載では、めずらしく積極的にサポートをおねがいしています。その意気込みは【序章】にて!

もし、読んでよかったな、おもしろいじゃんと思えたら、シェアやサポートなどで応援いただけるとたいへんうれしいです。

もしサポートが貯まったら、それを福岡からの交通費にしてもっといろいろな方にお話を伺い、それをぽこねん視点でかみくだいた記事にしてみたいです。常にびびりながら歩いている小心ぽこねんの背中をやさしく押してくださる方、お待ちしております。
【序章や第1回にサポートやシェアをいただいたみなさんへ】
走り出しから本企画へのあたたかい応援をありがとうございます。サポート&シェアしてまで楽しみに待っていてくださる方がいる、応援してくださる方がいるというのは、本当に励みになります。心折れそうなとき、みなさんのアイコンが頭にぽんっと浮かんで、はっ、がんばらねばと気持ちを奮い立たせてくれます。引き続き編集がんばりますね!

※本シリーズはこちらのマガジンにまとめています↓


自作の本づくりなど、これからの創作活動の資金にさせていただきます。ありがとうございます。