マナティ

大人のためのやさしいプログラミング教室体験記

第2回 実は奥深いパズルゲーム

この連載では、プログラミングの経験が全くない方でもわかるように、プログラミングの学び方を説明していきます。
仕事でプログラミングをどうしても覚える必要がある方、最近流行りのプログラムに興味はあるけど何をするものか全くわからない方、近い将来必須科目になるプログラムを子供に習わせたいけど親である自分がプログラムが何なのかわからなくて不安な方など、そんな方でも気軽に読んでいただける連載です。
みなさんもプログラム初心者のMさんと一緒にプログラミングに触れてみてください。

本連載は、プログラミング初心者のMさんが、ビジュアルプログラミング教材「プログラミングゼミ」を学びながら、プログラミングの思想と技術を習得していくストーリーです。
さて、プログラミング教室に通ってきたMさん、先生に言われて、パズルを始めたようです。
 

●パズルは単なる遊びではない!?

ai_san03-75x85.png
こんにちは、Mさん。今日は顔色いいですね。
OL_01-75x117.png
はいっ、プログラミングへの拒否反応が薄れてきたみたいです。
ai_san05-75x85.png それは良かった!
では、今日も楽しく始めましょうか。
きょうは、この「パズル」に挑戦してもらいますよ。
 

prog2-1-560x340.png

 
ai_san05-75x85.png まずは、レベル1の中の「もんだい1-1」をやってみましょう。
OL_01-75x117.png では、やってみます。
ドラゴンにぶつからないようにケーキを取るのか。簡単簡単!
 

               prog2-2-149x315.png

 
OL_01-75x117.png じゃあ、実際に動かしてみよう。
 

 

 

 
OL_08-75x117.png
あれっ!?
☆が2つしかない(´;ω;`)
先生、このプログラム間違ってませんよね。
ai_san03-75x85.png よくできてますよ。ちゃんとケーキをとれたので、成功ですね。
OL_11-75x117.png でも、☆は2つしかないんです。
ai_san03-75x85.png では、このヒントを見てもらいましょうか。
 

prog2-3-560x342.png

 
OL_10-75x117.png 2手で?
いったいどうすればいいんですか?
私には思いつきませんが。
ai_san05-75x85.png 「あるく」以外のブロックを使ってみてください。
OL_03-75x117.png 「ジャンプ」というブロックがありますね。
でも、ジャンプでどう動くのか分からないんですけど。
ai_san03-75x85.png そんなときは、実際に「ジャンプ」ブロックだけを使って
プログラムを組んでみればいいんです。
PCが壊れるわけじゃないから、いろいろ試してみてください。
OL_03-75x117.png はい。やってみますね。
 

 

 

 
OL_03-75x117.png ああっ。ドラゴンに食べられた!
失敗しちゃった。
ai_san05-75x85.png 大丈夫ですよ。
ほら、ドラゴンに食べられたということは、
「ジャンプ」で、何コマ動いたことになりますか?
OL_02-75x117.png あ、「2コマ」ですね。
それなら、こうすればいいのかな?
 

 

 

 
OL_02-75x117.png やったー、できた!
ai_san01-75x85.png 素晴らしいですね。
これで、プログラミングで大切な2つの点を学びましたね。
OL_03-75x117.png どういうことですか?

●実際にプログラムを動かしてみる ― 「動作確認」

ai_san03-75x85.png 「ジャンプ」が「2手」で動くということを、実際に動かして確認しましたね。
それを、「動作確認」といいます。

実は、プロのプログラマーでも、プログラミング言語のコマンド
(プロゼミのブロックにあたる)をすべて熟知しているわけではないんですよ。
OL_03-75x117.png へぇー、以外ですね。
ai_san03-75x85.png 英語の講師も、辞書に載っているすべての単語を
知っているわけではないのと同じです。
そして、英語も日々新語が生まれてますよね。
OL_03-75x117.png そういえばそうですよね。
ai_san03-75x85.png プログラミング言語も、日々バージョンアップしていますので、
新しいコマンドが追加されることもあるんです。
コマンドの意味がよく分からないときは、「動作確認」をして、
どう動くかを確かめてから使用するようにします。
OL_01-75x117.png 辞書を引くのと同じ感覚ですね。
ai_san01-75x85.png そう!その通り。
プログラミングでも、分からなければ、辞書を引き、
実際に動作確認すればいいんです。
OL_01-75x117.png 分かりました。
なんか、少し肩の荷が下りた気がします。

●できるだけ少ない手で打つ - 「最適化」

OL_03-75x117.png
2つ目の点って何ですか?
ai_san03-75x85.png
それは、Mさんが「5手」から「2手」でプログラミングできたことです。
これを「最適化」といいます。
OL_05-75x117.png
「最適化」、なるほど、確かに2手は、最も良い手ですね!  
ai_san01-75x85.png
そうです。それが、「☆3つ」の意義です。
OL_03-75x117.png
これは、実際のプログラミングでどのように役立つんですか?
ai_san03-75x85.png
いい質問ですね。
実は、プログラミングの最適化は、2つの意味があります。

1つは、「時間短縮」。
5手で解くより、2手の方が、時間がかかりませんでしたよね。
Mさんは、スマホのアプリなどを使っていて、アプリがサクサク動かず、
イライラしたことはありませんか?
OL_11-75x117.png しょっちゅうです!
でも、あれは、通信が遅いんですよね。
ai_san03-75x85.png そうです。
でも、通信内容を極力抑えて、時間を短縮できないか、
プログラマーは地道な努力をしているんですよ。
もちろん、通信内容だけではなくて、
様々なプログラミングの工夫に気を配ってます。
OL_11-75x117.png そうなんですか。難しそうですね。
では、もう1つの意味は?
ai_san01-75x85.png それは、「容量節約」。
安いスマホだと、すぐに容量が一杯になって、
アプリがダウンロードできなかったり、動画が見れなかったりしますよね。
OL_11-75x117.png そうですね。
私の友人も、安いスマホを買ったことを後悔してますよ。
ai_san03-75x85.png それはつらいですね。
次の買い替えの時期には、記憶容量をチェックした方がいいですね。
それで、プログラマーとしては、ダウンロードするプログラムが
できるだけメモリを消費しないように工夫することで頑張ってるんですよ。
OL_11-75x117.png それが最適化か。
そういわれると、必要性が分かりますね。
ai_san03-75x85.png 今は、メモリの大容量化が進んでますので、
いい機種さえ買えば、メモリの心配はいらないんですが、
昔は、少ないメモリを如何に効率よく使えるかが、
プログラマーの腕の見せ所だった時代もありましたね。
OL_03-75x117.png そうなんですか。
私には、まだまだむりですね。
ai_san03-75x85.png 心配しなくてもいいですよ。 今は、「できるだけ少ない手で」をモットーに考えるだけでいいです。
OL_05-75x117.png 分かりました!

●最適化にチャレンジ!

ai_san03-75x85.png
では、最適化ついでに、レベル2の「もんだい2-4」をやってみてください。
OL_05-75x117.png
分かりました!やってみます。
 

prog2-4-560x343.png

 
OL_05-75x117.png
まず、最初のケーキを取った後に…下に行ってみようか。
 

 

 

 
OL_05-75x117.png
できました!
ai_san01-75x85.png
うまくいきましたね。
でも、ヒントを見ると、後1手減らせそうですね
OL_05-75x117.png
あっ、そうですね。
では、逆回りでやってみようかな。
 

 

 

 
OL_05-75x117.png
やったー!
ai_san01-75x85.png
素晴らしいですね。
今回は「回る方向」が最適化のカギでしたね。
でも、実は、もっと短い方法があるんですよ!
OL_06-75x117.png
えーっ?
ヒントを見ると、これが最適だと思いますが。
ai_san01-75x85.png それは、こうするんです。
 

 

 

 
OL_05-75x117.png
すごい!!!!!!!
数字に小数を使うなんて全然発想にありませんでした!
ai_san01-75x85.png ですよね。
わたしたち大人の講師たちも最初は気づきませんでしたが、
ある子どもの生徒さんがやっているのを見てビックリしたものです。
なんせ、プログラマーには「データ型」という固定概念がありますからね。
OL_04-75x117.png
???
データ型って何ですか?
ai_san01-75x85.png おっと、口が滑りましたね。
それは、数字には、整数とか小数
とかいろいろ種類があるように、
PC内でも数字に種類があることなんですが
難しいので、また後日説明しましょう。
OL_01-75x117.png
了解でーす。


パズルで学んだ「最適化」、「動作確認」が、スマホがサクサク動くために役立っていたんですね。
これからもMさんと一緒に、プログラミングを楽しんでください。
次回は、パズルゲームのさらに奥深いことを極めましょう!

著者プロフィール

特定非営利活動法人 ロジカ・アカデミー 理事長 関 愛(著者)
中学生の頃からプログラミングを独学し,18歳の時に北海道の田舎町でシステムエンジニアとして起業。19歳で情報処理推進機構(IPA)から「天才プログラマー/スーパークリエータ」の認定を受ける。23歳の時に新入社員研修講師として活動を開始し,Yahoo! JAPAN,UFJ銀行,日本生命をはじめとする大手企業で1,000名以上の現役プログラマーを育成してきた。33歳で特定非営利活動法人ロジカ・アカデミーを設立し,理事長に就任。
現在は「すべての人に生きる力を授けるプログラミング教育」をコンセプトとした「ロジカ式」教材の開発を指揮する傍ら,プログラミング教育の普及と講師育成を中心とした活動に携わっている。
著者ホームページ:https://logica.academy