Skip to content

Instantly share code, notes, and snippets.

@Kanasansoft
Created June 27, 2012 16:54
Show Gist options
  • Save Kanasansoft/3005370 to your computer and use it in GitHub Desktop.
Save Kanasansoft/3005370 to your computer and use it in GitHub Desktop.
おとうさんはプログラマ その1 〜アイちゃん、プログラムのせかいを知る〜
アイちゃんは好奇心旺盛(こうきしんおうせい)な女の子。
ある日、アイちゃんはおとうさんのおしごとにきょうみをもちました。
「おとうさん、おとうさん」
「ン? アイちゃん、なに?」
「おとうさんのおしごとって、プログラマなんでしょ?」
「うん、そうだよ」
「プログラマってどういうことするの?」
「そうだね。たとえば、パソコンやスマートフォンでうごくアプリケーションを作ってるんだ」
「へぇ。どうやって作るの?」
「むずかしいこと聞くね。プログラムというのを書くんだけど・・・。う〜ん、どうやってお話したらわかりやすいかなぁ」
その時、おとうさんはゆかにころがるオモチャのロボットに気づきました。
「よし、おてつだいロボットを作ることを考えてみようか」
「おてつだいロボット?」
「うん。おてつだいロボットにやってほしいことをつたえるプログラムを考えてみよう」
「何をしてもらおうかなぁ」
「じゃあ、カレーを作ってもらう方法(ほうほう)にしよう」
「あれ? 『カレーを作って!』じゃだめなの?」
「おてつだいロボットはカレーを知らないよ。それに、料理(りょうり)のやり方も知らないよ」
「え〜」
「何にも知らないあかちゃんみたいなものなんだ。だからやることをぜんぶ教えてあげないといけないよ」
「じゃあ、カレーの作り方をじゅんばんに教えてあげるといいの?」
「そうだね。やってみようか」
そう言って、おとうさんはかみをつくえの上に広げ、その上にえんぴつをおきました。
「ここに、ロボットにやってほしいことを書いてみよう」
「うん」
アイちゃんはちょっと考えて、紙にやってほしいことを書きだしました。
「できた!」
「見せて見せて」
ざいりょうを切る
にる
カレーのルーを入れる
おさらにごはんを入れる
ごはんにカレーをかける
「おてつだいロボットの気もちになって考えてみようか。『ざいりょうってなんだろう』っと思わないかな」
「え? それも教えてあげないといけないの?」
「そうだよ。おてつだいロボットは何も知らないから」
「う〜ん。じゃあこんなかんじかな?」
にんじんを切る
じゃがいもを切る
タマネギを切る
おにくを切る
にる
カレーのルーを入れる
おさらにごはんを入れる
ごはんにカレーをかける
「どうやってにるのかな?」
「あ〜、『にる』じゃロボットさんはわからないのかぁ。じゃあこれならどうかな」
にんじんを切る
じゃがいもを切る
タマネギを切る
おにくを切る
ナベにざいりょうを入れる
ナベに水を入れる
火をつける
カレーのルーを入れる
おさらにごはんを入れる
ごはんにカレーをかける
「そうだね。もっとおいしいカレーを作るために、ちょっと書きかえていいかな?」
「うん。いいよ!」
にんじんを切る
じゃがいもを切る
タマネギを切る
おにくを切る
火をつける
ナベにざいりょうを入れる
いためる(やく)
ナベに水を入れる
カレーのルーを入れる
おさらにごはんを入れる
ごはんにカレーをかける
「なんか、おかあさんのお料理(りょうり)の本みたいになってきたね」
「そうだね。でも、おてつだいロボットは、おかあさんみたいに料理(りょうり)のことを知らないから、もっとやり方をおしえてあげないといけないんだ」
「え〜、もっとなの?」
「うん。たとえばこんなかんじ」
おとうさんがつぎつぎを書いていくのをアイちゃんは目を丸くして見ています。
かわむききをじゅんびする
ほうちょうをじゅんびする
まないたをじゅんびする
ボウルをじゅんびする
ナベをじゅんびする
オタマをじゅんびする
にんじんを切る
じゃがいもを切る
タマネギを切る
おにくを切る
コンロにナベをのせる
火をつける
あぶらを入れる
ナベにざいりょうを入れる
いためる(やく)
ナベに水を入れる
まつ
カレーのルーを入れる
こげないようにかきまぜる
おさらをじゅんびする
すいはんきをひらく
おさらにごはんを入れる
すいはんきをとじる
ごはんにカレーをかける
「うわぁ、たくさんあるねぇ」
「もっとくわしく書けるけどとりあえずこのぐらいにしておこうか」
「えっ!まだ足りないの?」
「うん。ぜんぜん足りないよ」
「ええっ!」
「たとえば、ほうちょうがどこにあるのか教えてあげないといけないし、ほうちょうが引き出しに入っているなら引き出しのあけ方も教えてあげないといけないんだよ」
「ロボットって頭がいいって思ってたんだけどちがうんだね・・・」
「うん。頭がいいようにみえるのは、そういうふうにプログラムされているからなんだ」
「そのプログラムを作るのがプログラマのおしごとなんだね!おとうさん、すごい!」
おとうさんは、心の中で大よろこびしているのをアイちゃんに気づかれないように言いました。
「プログラムでは、こうやっておてつだいロボットにおねがいをしていくんだけど、このひとつひとつを『命令(めいれい)』っていうんだ」
「『命令(めいれい)』ってなんかえらい人みたいだね」
「たしかに、人にいうとこわいことばにきこえるね。こういう『命令(めいれい)』をたくさんあつめてプログラムを作るんだよ。せっかくだから、プログラムがどういうものかつづきをやってみる?」
「うん!」
「よし!その前にちょっときゅうけい!」
(つづく)
おとうさんはプログラマ その2 〜アイちゃん、プログラムの『くりかえし』を知る〜
おとうさんにプログラマがどういうものなのか教えてもらったアイちゃん。
こんどは、もうすこしくわしくプログラムを教えてもらうことになりました。
「じゃあつづきをはじめるよ〜」
「は〜い!」
「さっきの紙を見せて」
かわむききをじゅんびする
ほうちょうをじゅんびする
まないたをじゅんびする
ボウルをじゅんびする
ナベをじゅんびする
オタマをじゅんびする
にんじんを切る
じゃがいもを切る
タマネギを切る
おにくを切る
コンロにナベをのせる
火をつける
あぶらを入れる
ナベにざいりょうを入れる
いためる(やく)
ナベに水を入れる
まつ
カレーのルーを入れる
こげないようにかきまぜる
おさらをじゅんびする
すいはんきをひらく
おさらにごはんを入れる
すいはんきをとじる
ごはんにカレーをかける
「こんどはこの『にんじんを切る』って『命令(めいれい)』をもっとくわしく書いてみようか」
そう言いながら、おとうさんは新しい紙をつくえの上におきました。
「は〜い」
にんじんのかわをむく
にんじんを小さく切る
「う〜ん。これぐらいしか思いつかないなぁ」
「じゃあ、おとうさんが書いてみよう」
れいぞうこからにんじんをとり出す
にんじんのかわをむく
にんじんをまないたの上におく
にんじんを小さく切る
にんじんをボウルに入れる
「こんどは『にんじんを小さく切る』をもっともっとくわしく書いてみよう」
「そうか!おてつだいロボットは、にんじんの切り方や、どれくらい小さく切るのかわからないんだね!」
「そうだね。じゃあ、書いてみようか」
にんじんをたてにおく
にんじんを半分に切る
にんじんをよこにおく
にんじんを2cmずつ切る
「おっ、アイちゃん、だんだんわかってきたね」
「すごいでしょ!」
「でも、おてつだいロボットは『ずつ』ってことばもわからないんだよ」
「えー!『ずつ』は『ずつ』だよぉ〜」
「『にんじんを2cmずつ切る』をもっとくわしく書けるかな?ほうちょうのうごきをていねいに書いてごらん」
「う〜ん・・・」
にんじんの右のはしっこにほうちょうを合わせる
ほうちょうを上にあげる
ほうちょうを2cm左にうごかす
ほうちょうを下にさげる
書きつづけているアイちゃんのうしろでおとうさんはニコニコしています。
にんじんの右のはしっこにほうちょうを合わせる
ほうちょうを上にあげる
ほうちょうを2cm左にうごかす
ほうちょうを下にさげる
ほうちょうを上にあげる
ほうちょうを2cm左にうごかす
ほうちょうを下にさげる
ほうちょうを上にあげる
ほうちょうを2cm左にうごかす
ほうちょうを下にさげる
「ストップ!」
おとうさんがとつぜん大きな声で言いました。
「びっくりした!おとうさん、大きな声出さないでよ〜」
「ごめんごめん。でも、今アイちゃんが書いていた『命令(めいれい)』を見てどう思う?」
「何回も同じこと書いていてつかれた」
「そうだよね。ちょっとムダだよね。こういう時にはロボットに『反復(はんぷく)』をおねがいするんだ」
「『反復(はんぷく)』?」
「うん。かんたんに言うと『くりかえす』ことだね。ちょっとおとうさんが書きかえてみるね」
にんじんの右のはしっこにほうちょうを合わせる
ここからくりかえす
  ほうちょうを上にあげる
  ほうちょうを2cm左にうごかす
  ほうちょうを下にさげる
ここまでをくりかえす
「あっ!すごい!かんたんになった!」
「『命令(めいれい)』を何回も書くのはつかれるけど、おてつだいロボットはつかれないからね。こういう時には『くりかえす』『命令(めいれい)』を教えてあげれば、アイちゃんはらくちんだよね」
「うん。らくちんにはなったけど...。『にる』はわからないのに『くりかえす』ことはわかるのね」
「あ〜、いいところに気づいたね。おてついロボットが『くりかえす』ことを知らなくても『にる』ことは教えられるよね。でも『にる』ことを知っていても『くりかえす』ことは教えられないんだ」
「えっ?どういうこと?」
「ロボットに歩く『命令(めいれい)』を考えてみようか」
「う〜ん、一回歩くことは教えられそう」
「それで一歩だね」
「もう一歩すすもうとするとまた『命令(めいれい)』しないと・・・」
「それで二歩だよね」
「それを何回も『命令(めいれい)』する」
「じゃあ、『くりかえす』ことを『命令(めいれい)』できるかな?」
「『今言ったことをくりかして!』って言いたくなっちゃう」
「そう。どれだけアイちゃんがくふうしても、『くりかえす』ことは『命令(めいれい)』できないんだ。だから、おてつだいロボットは本当に大切な『命令(めいれい)』だけはわかるようになってるんだ」
「何も知らないあかちゃんだって言ってたのに・・・」
「ごめんごめん。でも、ロボットが知っている『命令(めいれい)』は本当に少ししかないんだよ」
「もしかして、ほかにもあるの?」
「うん。みっつあるんだけど、じゅんばんに教えてあげるからお楽しみ!」
(つづく)
おとうさんはプログラマ その3 〜アイちゃん、プログラムの『分かれ道』を知る〜
「じゃあ、さっきの話にもどってにんじんを切る『命令(めいれい)』のつづきを見てみよう」
にんじんの右のはしっこにほうちょうを合わせる
ここからくりかえす
  ほうちょうを上にあげる
  ほうちょうを2cm左にうごかす
  ほうちょうを下にさげる
ここまでをくりかえす
「何回も何回も『くりかえす』とどうなるか考えてみて」
「にんじんがぜんぶちいさくなる!」
「じゃあ、100回『くりかえす』とどうなるかな?」
「え〜、100回やらなくてもだいじょうぶだよぉ〜」
「でも、このままだとおてついロボットはずっと『くりかえす』よ。さいごまで切りおわったことを、おてつだいロボットに教えてあげないといけないね」
「う〜ん、むずかしいよぉ」
「よし!じゃあヒント!ロボットさんにしつもんしてごらん」
「しつもん?」
「そうだよ。しつもん!」
「うん」
にんじんの右のはしっこにほうちょうを合わせる
ここからくりかえす
  ほうちょうを上にあげる
  ほうちょうを2cm左にうごかす
  ほうちょうを下にさげる
  さいごまで切りおわった?
ここまでをくりかえす
「これでいいの?」
「そうだね。よくできました。ここからはおとうさんが書くね」
にんじんの右のはしっこにほうちょうを合わせる
ここからくりかえす
  ほうちょうを上にあげる
  ほうちょうを2cm左にうごかす
  ほうちょうを下にさげる
  さいごまで切りおわった?
    →『はい』のとき
       くりかえしをおわる
    →『いいえ』のとき
       つづける
ここまでをくりかえす
アイちゃんの目がまた丸くなりました。
「わぁ!」
「こうやって『命令(めいれい)』が分かれることを、むずかしいことばで『分岐(ぶんき)』っていうんだ」
「『分岐(ぶんき)』?」
「わかりやすく言うと『分かれ道』かなぁ」
「『命令(めいれい)』の『分かれ道』!おもしろ〜い!」
「でもね、これだとちょっとこまったことになるんだ。おてつだいロボットに、とっても小さいにんじんがわたされたらどうなるかな?」
「そんなに小さなにんじんってあるかなぁ」
おとうさんはなるほどと思い、少し考えてこう言いました。
「おかあさんが切ったにんじんが、れいぞうこに入っていたら?」
「小さいにんじんがわたされちゃうね・・・。何も切らないのにほうちょうが一回うごいちゃう・・・。どうしよう・・・」
「『分かれ道』を『くりかえし』のはじめにしてごらん」
にんじんの右のはしっこにほうちょうを合わせる
ここからくりかえす
  さいごまで切りおわった?
    →『はい』のとき
       くりかえしをおわる
    →『いいえ』のとき
       つづける
  ほうちょうを上にあげる
  ほうちょうを2cm左にうごかす
  ほうちょうを下にさげる
ここまでをくりかえす
「こうかな?でも、まだ切っていないのに『さいごまで切りおわった?』って聞くってなんかへんなかんじ・・・」
「じゃあ、『分かれ道』を少しかえてみよう。ここはおとうさんが書くね」
にんじんの右のはしっこにほうちょうを合わせる
ここからくりかえす
  のこりのにんじんは2cmよりも大きい?
    →『はい』のとき
       ほうちょうを上にあげる
       ほうちょうを2cm左にうごかす
       ほうちょうを下にさげる
       さいごまで切りおわった?
    →『いいえ』のとき
       くりかえしをおわる
ここまでをくりかえす
「わぁ。『分かれ道』っておもしろいねぇ」
「この『分かれ道』も大切な『命令(めいれい)』なひとつなんだよ」
「あっ。ふたつ目だ」
「そうだね。『くりかえし』と『分かれ道』で大切な『命令(めいれい)』がふたつだね」
「あとひとつだ」
「さっきは『くりかえし』の中で『分かれ道』をつかったけど、『分かれ道』だけでもつかえるんだよ」
「どうやってつかうの?」
「おとうさんが書いてみるね」
「うん」
『今は朝ですか?』としゃべる
 →『はい』のとき
   『おはようございます』としゃべる
 →『いいえ』のとき
   『今は昼ですか?』としゃべる
    →『はい』のとき
      『こんにちは』としゃべる
    →『いいえ』のとき
      『こんばんは』としゃべる
「よし、できた」
「わぁ!すごい!ロボットさんとお話しているみたい!」
「頭のいいおてつだいロボットに見えるよね」
「うん」
(つづく)
おとうさんはプログラマ その4 〜アイちゃん、プログラムの『じゅんばんにする』を知る〜
「じゃあ、大切な『命令(めいれい)』のさいごのひとつ、もしかしたら一番大切な『命令(めいれい)』かもしれないよ」
「なんだろう?楽しみ」
「じつはね、もうやってるんだよ」
「えっ?ふたつしか教えてもらってないよ?」
「うん。じゃあ、これを見てみようか」
おとうさんはそう言いながら、さっき書いた紙をつくえの上に広げました。
かわむききをじゅんびする
ほうちょうをじゅんびする
まないたをじゅんびする
ボウルをじゅんびする
ナベをじゅんびする
オタマをじゅんびする
にんじんを切る
じゃがいもを切る
タマネギを切る
おにくを切る
コンロにナベをのせる
火をつける
あぶらを入れる
ナベにざいりょうを入れる
いためる(やく)
ナベに水を入れる
まつ
カレーのルーを入れる
こげないようにかきまぜる
おさらをじゅんびする
すいはんきをひらく
おさらにごはんを入れる
すいはんきをとじる
ごはんにカレーをかける
「おとうさん、これがどうしたの?」
「ロボットさんは『命令(めいれい)』をどうするんだったっけ?」
「えっと・・・。じゅんばんにやってくれるんだよね」
「でも、アイちゃんは『じゅんばんにする』ってことをおてつだいロボットに教えたかな?」
「教えていないけど・・・」
「そうだよね」
「もしかして『じゅんばんにする』ことも、ロボットさんは知らないの?」
「あかちゃんは『じゅんばんにする』って知らないよね」
「え〜っ!?」
アイちゃんは、これまでで一番目を丸くしておどろきました。
「『じゅんばんにする』をむずかしいことばでいうと『順次(じゅんじ)』と言うんだよ」
「『じゅんばんにする』ことも知らないなんて・・・」
「『くりかえす』と『分かれ道』、そして『じゅんばんにする』がとても大切な『命令(めいれい)』だってことがわかった?」
「うん!」
「よし。もう少しだけつづけようか。その前にちょっときゅうけいしよう」
「は〜い!」
(つづく)
おとうさんはプログラマ その5 〜アイちゃん、『命令(めいれい)のかたまり』に名前をつける〜
「さてさて、アイちゃん。さっき書いた『命令(めいれい)』を見てみようか」
にんじんの右のはしっこにほうちょうを合わせる
ここからくりかえす
  のこりのにんじんは2cmよりも大きい?
    →『はい』のとき
       ほうちょうを上にあげる
       ほうちょうを2cm左にうごかす
       ほうちょうを下にさげる
       さいごまで切りおわった?
    →『いいえ』のとき
       くりかえしをおわる
ここまでをくりかえす
「よく見ると『にんじんを切る』ための『命令(めいれい)』があつまっているってわかるけど、パッと見てわかりにくいよね」
「うん。ちょっとわかりにくい・・・」
「こういう時にはわかりやすくなるように、『命令(めいれい)のかたまり』に名前をつけることができるんだ。こんなふうに書きかえて・・・」
●めいれいのかたまりの名前『にんじんを2cmずつ切る』
   にんじんの右のはしっこにほうちょうを合わせる
   ここからくりかえす
     のこりのにんじんは2cmよりも大きい?
       →『はい』のとき
          ほうちょうを上にあげる
          ほうちょうを2cm左にうごかす
          ほうちょうを下にさげる
          さいごまで切りおわった?
       →『いいえ』のとき
          くりかえしをおわる
   ここまでをくりかえす
「もしかして、一回名前をつけたら、『にんじんを2cmずつ切る』っておねがいするだけでいいの?」
「うん。この『命令(めいれい)のかたまり』だけだとにんじんが丸くなるけど、こうおねがいしたら小さくできるよ」
にんじんをたてにおく
めいれいのかたまり『にんじんを2cmずつ切る』
にんじんをよこにおく
めいれいのかたまり『にんじんを2cmずつ切る』
「小さくなった!」
「よし。つぎは『じゃがいもを切る』『命令(めいれい)』をくわしく書いてみよう」
「うん!」
アイちゃんは『命令(めいれい)』を書こうとしましたが、そのまま考えこんでしまいました。
そんなアイちゃんを、おとうさんはまたニコニコして見ています。
「おとうさん、これって『にんじんを切る』ににてる・・・」
「そうだね。『にんじんを切る』時とほとんど同じだよね。さっき名前をつけたにんじんの『命令(めいれい)のかたまり』を書きかえて、じゃがいもでもつかえるようにしよう。こんなふうに・・・」
●めいれいのかたまりの名前『(  ア  )を2cmずつ切る』
   (  ア  )の右のはしっこにほうちょうを合わせる
   ここからくりかえす
     のこりの(  ア  )は2cmよりも大きい?
       →『はい』のとき
          ほうちょうを上にあげる
          ほうちょうを2cm左にうごかす
          ほうちょうを下にさげる
          さいごまで切りおわった?
       →『いいえ』のとき
          くりかえしをおわる
   ここまでをくりかえす
「あなうめもんだいみたい!」
「そうだね。これで『じゃがいもを切る』はこんなふうに『命令(めいれい)』できるようになるよ」
めいれいのかたまり『( じゃがいも )を2cmずつ切る』
「じゃがいももかんたんに切れたね」
「にんじんをぜんぶ切るときはこんなかんじに・・・」
にんじんをたてにおく
めいれいのかたまり『( にんじん )を2cmずつ切る』
にんじんをよこにおく
めいれいのかたまり『( にんじん )を2cmずつ切る』
「今作っているのはカレーだから2cmでいいけど、チャーハンを作る時はもっと小さく切りたいよね。だから、『命令(めいれい)のかたまり』をまた書きかえて・・・」
●めいれいの名前『(  ア  )を(  イ  )ずつ切る』
   (  ア  )の右のはしっこにほうちょうを合わせる
   ここからくりかえす
     のこりの(  ア  )は(  イ  )よりも大きい?
       →『はい』のとき
          ほうちょうを上にあげる
          ほうちょうを(  イ  )左にうごかす
          ほうちょうを下にさげる
          さいごまで切りおわった?
       →『いいえ』のとき
          くりかえしをおわる
   ここまでをくりかえす
「チャーハンにつかうにんじんは、この『命令(めいれい)のかたまり』をつかって、こうやっておねがいできるよ」
にんじんをたてにおく
めいれいのかたまり『( にんじん )を( 5mm )ずつ切る』
にんじんをたおす
めいれいのかたまり『( にんじん )を( 5mm )ずつ切る』
にんじんをよこにおく
めいれいのかたまり『( にんじん )を( 5mm )ずつ切る』
「すごい!これで、色んなざいりょうを色んな大きさに切ることをロボットさんにおねがいできるね!」
「こうやって『命令(めいれい)のかたまり』を作りながら、おてつだいロボットに色んなおねがいをできるようにしていくんだ」
「ざいりょうをやいたりごはんをたいたりするのも、たくさんの『命令(めいれい)』をあつめておねがいするんだね」
「おりょうりだけじゃなくて、おそうじやおせんたくも同じだよ。さて、これでおとうさんのプログラムのお話はおわり!」
「おとうさん!ありがとう!プログラムがんばってね!」
おとうさんのおしごとのお話をたくさん聞けて、アイちゃんはとてもまんぞくそうです。
(おわり)
@Kanasansoft
Copy link
Author

読者の年齢の下限に小学校低学年を想定。
使用している漢字は基本的に2年生で習う漢字まで。
それ以上の漢字はふりがなをつけている。
漢字チェックは
http://orange-factory.com/tool/kanjicheck.html
で行っている。

@ujihisa
Copy link

ujihisa commented Jul 2, 2012

感動の映画化の展開に期待

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment