#桑名# はじめてのプログラミング教室

三重県桑名市在住のITエンジニア、たかあきです。はじめてのプログラミング教室を始めましたー。小学生と中学生の子どもがメインですが大人初心者も大歓迎。教室でのワークの様子やプログラミングに関する記事を掲載します。体験と講座のお申込みは、JEUGIAカルチャーセンター桑名(Tel:0594-27-7211)までお願いします。教室についてのご質問は、ブログにコメントいただければ返信します!

カルチャースクールで1年間プログラミングを教えてみて感じること

カルチャースクールで1年間プログラミングを教えてみて感じること

プログラミングの先生になって1年が経ちましたー

こんばんわ、桑名『はじめてのプログラミング教室』の先生をさせて頂いていますたかあきです。 2016年の夏、「子どもにプログラミングを教えたい!」と目標を掲げまして、鉄は熱いうちに!!の気持ちでJEUGIAカルチャーセンター桑名さんにTelしました。 ちょうど今から1年前の2016/10/15(土)に第一回の体験会を行いました。僕にとってもはじめての先生だったので、大変ドキドキわくわくでした。

あれから1年が経ちましたー。なにをどうやって教えようか悩みと準備に追われる日々ですが、自分で決めた目標を行動に移すことができたのもJEUGIAカルチャーセンター桑名のスタッフ方々と何より、週末に快く送り出してくれた妻と子ども達に感謝です。頭が上がりません。

1年間プログラミングを教えてみて感じること

1年間プログラミングを教えてみて感じること、それはイチバンはプログラミングのスキルや論理的な思考力を身につけることよりも、プログラミングというテーマを通して楽しんで学ぶことだと思っています。 学生時代、苦しんで暗記したテスト対策より、これだけは他の子には負けたくない。好きなことに打ち込んで夢中に取り組んだことは一生消えません。せっかくやるなら、楽しんだもの勝ちです!

読み・書き・そろばん・プログラミング

先生が中高生だった20年前と比べればコンピューターはずっと身近になりました。それでも学校でのIT教育に大きな変化はないと感じています。 しかし、この20年間で世界は大きく変わりました。 世界に15億台のスマートフォンが出荷され、2人に1台がスマフォを持っています。二本足で歩くロボットや人間と会話するロボットが買える時代になりました。近い将来、車は完全に自動運転になるでしょう。SF映画だと思っていた人工知能が現実になりました。ありとあらゆるデバイスがインターネットに接続され、ウィルスやサイバーテロによって交通機関が止まったり工場の生産がストップすることもあります。

こんなに世界の変化が早い中、学校の授業でワープロとペイントだけ教わって社会に出る教育に危機感を感じます。日本の子ども達に世界で戦える力を。 プログラミングが特別な習い事ではなく、『読み・書き・そろばん・プログラミング』と並ぶほど当たり前になればと思っています。

なぜプログラミングを学ぶのか?

僕も小中学生の子を持つ親ですから。パソコンを準備して、決して安くないプログラミングを習いに行く必要があるのか。その疑問に共感できます。 一つ確実に言えることは、この世界を変えるのはあなた自身だということです。 技術の進化によって、今ある職業がコンピューターやロボットに代わられるとの予測があります。しかし、そのコンピューターやロボットを開発するのも人間です。コンピューターがある限り、プログラマーは必要な仕事です。 また、どんな職業であっても学びが必要です。せっかくなら楽しんで学び、夢を獲得しましょう。

言うは易し。先生はいつも悩みの中です。そして毎回の教室が、先生にとっての学びです。 これからも、どうぞよろしくお願いします。

以下は、1年前に作ったチラシです。

f:id:takaaki-niikawa:20171014233533p:plain

アクションゲームのフローチャート(流れ図)からプログラムを作ろう~!!

アクションゲームのフローチャート(流れ図)からプログラムを作ろう~!!

  • こんばんわ、桑名プログラミング教室のたかあきです。先週の教室では、特別テーマ『スクラッチでアクションゲーム作り』を行いました。

takaaki.hatenablog.jp

  • 今日はその教室での未公開資料(極秘!?)をお見せします!! 以前ご紹介したマリオ風アクションゲームのフローチャートです。

takaaki.hatenablog.jp

フローチャートって何?

  • フローチャートプログラムの設計図 の様なものです。プログラムの処理の順序を箱や矢印で表したものです。流れ図とも言います。
  • フローチャートはプログラムを作成する前に作ります。複雑な処理を視覚化して間違いを発見したり、他の人が理解しやすくするために使います。
  • 本当は子ども達がノーアイディアだったらこの資料を見ながら作ってもらおうかと思いましたが、全員アイディア持参でしたので結果未公開資料になっちゃいました!!

アクションゲームのフローチャート

f:id:takaaki-niikawa:20171012220055p:plain

フローチャートからプログラムを作ろう

  • いつもなんとなくからプログラムを作り始める人や誰かが作ったプログラムを改良している人はいませんか?(それはスゴイんです。頭で仕組みを考えることは素晴らしい能力ですよ。)
  • だからこそ、今日は一度アイディアを設計図(フローチャート)に起こしてから、作ってみませんか?アイディアを形にして整理することで見えてくる発見もあると思うよ。

生徒みんなでスクラッチを使ったアクションゲーム作りに挑戦!

特別テーマ『スクラッチでアクションゲーム作り』

  • おはようございます。プログラミング教室の先生をしております、たかあきです。 プログラミング教室をスタートさせ、今月で1年を迎えようとしています! 今週の教室は、特別テーマ『スクラッチでアクションゲーム作り』を行いました。

  • 先ず宿題としてアイディアを考えてきてもらいました。 いつもの様に、ホワイトボードにみんなのアイディアを書きだしています。 先生は、以前ブログでもご紹介したマリオ風横スクロールのアクションゲームと先週作ったシューティングゲームをサンプルとして見せていました。

takaaki.hatenablog.jp

takaaki.hatenablog.jp

  • やっぱり子どものアイディアはすごい! 先生と同じ種類のプログラムはなく、どれもオリジナルのゲームが出てきました。 アイディアをご紹介します。(実際のゲーム画像がなくてすみません…) 色々なアイディアがありますね!!

f:id:takaaki-niikawa:20171009081952j:plain

  1. shiちゃん)
    • スプライトが動き回りポイントを獲得するゲームです。ベルやハートはポイントが増え、コウモリはポイントが減るみたいです。
  2. syu君)
    • 画面の上下左右から順に現れる敵を矢印で倒して行くゲームです。もぐら叩き風あっち向いてほい、といった感じでしょうか。
  3. syun君)
    • スプライトのねこと自分で描いたクマ(ラスボス風)が対戦するゲーム。
  4. yu君)
    • 飛行機対戦ゲームで、飛行機から玉を発射し、敵飛行機を倒す。3回ライフがあり、制限時間は60秒以内。

制作風景です

  • ベテランの小学生組は、あっという間に完成ー。syu君は二つ目のゲームも作ってくれました。思い付いたプログラムを形にすることができます。
  • syun君はゲーム作りのプロ。アイディアマンで、自分で描いたり工夫ができます。 f:id:takaaki-niikawa:20171009082153j:plain

  • shiちゃんは丁寧な作業ができます。とても根気強いです。

  • yu君は最年少だけど今回はちょっと難しい課題に挑戦。チャレンジする心とユーモアあり。家でもスクラッチを開いて、続きを作ろう。完璧にできなくてもいいから、たくさん考え悩んで下さい。 f:id:takaaki-niikawa:20171009082231j:plain

結果よりプロセス

  • 算数で、すらすらと解けた問題より、よく分からず時間をかけて挑戦した問題の方がずっと頭に残ります。
  • 大人が手を貸すとあっという間かもしれませんが、苦手な家庭科の裁縫や技術で作った工作は苦労もあり、忘れられない記憶です。

  • 人間は悩んで脳みそを使っただけ考える力が育ち、苦労した分成長します。根気よく取り組めば、必ず完成します。プログラミングを通して、未来を育てて行きましょう。

Pywapi APIを使って、Pythonで天気予報を作ろう!(後半)

pywapi APIが使いたい

  • 先日、Pythonで天気予報を作ろう!(前半)を投稿しました。32bit Windows環境のPythonにpywapi APIをインストールするまでの流れは前半を参照ください。

takaaki.hatenablog.jp

  • pywapi APIをインストールすることができましたが、なぜかpywapiモジュールを使用することができません。
    • numpyモジュールを参考にモジュールの配置先を調べてみました。
    • どうやらPython配下のLib\site-packagesにpywapiモジュールを配置する必要がありそうです。site-packagesは3rd party製のモジュールを配置するディレクトリの様です。
    • インストール後にbuildされたpywapi.pyLib\site-packagesに配置することで、無事にモジュールが使用できました。

f:id:takaaki-niikawa:20171006113342p:plain

Pywapi APIを使って天気データを取得するプログラムを作ろう!

  • pywapiに添付のexamples等を参考に、Pywapi APIを使ったプログラムを作ってみました。
    • 今回のプログラムは、weather.comからデータを取得するプログラムになります。
    • 東京はコードJAXX0085, 四日市はコードJAXX0098になります。
    • 具体的には、下記URLからのデータ取得になります。

東京, 日本の天気予報と天候状況 - The Weather Channel | Weather.com

四日市, 日本の天気予報と天候状況 - The Weather Channel | Weather.com

import pywapi
from datetime import datetime

result1 = pywapi.get_weather_from_weather_com('JAXX0085')
location1 = result1['location']['name']
condition1 = result1['current_conditions']['text']
print("##### 東京 #####")
print("location: ", location1)
print("condition: ", condition1)
result2 = pywapi.get_weather_from_weather_com('JAXX0098')
location2 = result2['location']['name']
condition2 = result2['current_conditions']['text']
print("##### 桑名 #####")
print("location: ", location2)
print("condition: ", condition2)
  • Pythonの実行結果です。 f:id:takaaki-niikawa:20171006113620p:plain

天気予報の表示プログラムは?

  • current_conditions変数は現在の天気になりますが、取得したデータのforecasts変数を使用することで明日以降の天気予報も表示できます。
  • 下記Qiitaの記事がとても参考になります。私も自分オリジナルの天気予報プログラムを作ろうと思います。

qiita.com

Pythonでnumpy を使ってみよー!

Pythonにnumpyは入っているか?

  • Python Shellを使い、numpyが入っているかを確認します。 ImportError: No module named 'numpy' と表示されました。どうやらnumpyは入っていないようです…。

f:id:takaaki-niikawa:20171005003810p:plain

numpyをインストールしよう

C:\>pip install numpy
Collecting numpy
  Downloading numpy-1.13.3-2-cp35-none-win32.whl (6.8MB)
    100% |################################| 6.8MB 31kB/s
Installing collected packages: numpy
Successfully installed numpy-1.13.3

f:id:takaaki-niikawa:20171005003924p:plain

numpyをimportして使ってみよー!

  • numpyのmathモジュールをimportします。Python Shellを使用します。
>>> from numpy import math
>>> math.sqrt(16)
4.0

f:id:takaaki-niikawa:20171005005117p:plain

参考

  • numpyを使って、中学・高校で習った数学の問題に再挑戦してはいかがでしょうか。
  • numpyにどんな関数があるのか下記の記事が参考になります。

NumPy で数学系の関数を使ってみよう – Python でデータサイエンス

Pywapi APIを使って、Pythonで天気予報を作ろう!(前半)

pywapi APIが使いたい

  • Pythonでインターネットから天気予報を取得するプログラムを勉強中。 f:id:takaaki-niikawa:20171003005257p:plain

  • Windows環境だと準備が難しいのか手間取っています。

    • pipを使ってインストールできるみたいですが、pipのversionが古く先ずアップデート。
    • pipのアップデートには成功。へー、こんな風に表示されるんですね。Linuxみたいで嬉しー。
    • だけど、pipアップデートしても環境に合わないらしく、自動でインストールはできません。
  • インストールログ(コマンドプロンプトより)

    • WindowsのPATHにPythonを設定しているため、pythonやpipコマンドが直接実行できます。
C:\>pip search pywapi
pywapi (0.3.8)  - Python wrapper around different weather APIs
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

C:\>python -m pip install
 --upgrade pip
Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |################################| 1.3MB 150kB/s
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Uninstalling pip-8.1.1:
      Successfully uninstalled pip-8.1.1
Successfully installed pip-9.0.1

C:\>pip search pywapi
pywapi (0.3.8)  - Python wrapper around different weather APIs

C:\>pip install pywapi
Collecting pywapi
  Could not find a version that satisfies the requirement pywapi (from versions: )
No matching distribution found for pywapi
  • 自動がだめなら力技だー。
    • Code Archiveからダウンロードしました。

Google Code Archive - Long-term storage for Google Code Project Hosting.

C:\>python setup.py build
running build
running build_py
creating build
creating build\lib
copying pywapi.py -> build\lib

C:\>python setup.py install
running install
running build
running build_py
running install_lib
creating C:\python-3.5.2-embed-win32\Lib
creating C:\python-3.5.2-embed-win32\Lib\site-packages
copying build\lib\pywapi.py -> C:\python-3.5.2-embed-win32\Lib\site-packages
byte-compiling C:\python-3.5.2-embed-win32\Lib\site-packages\pywapi.py to pywapi.cpython-35.pyc
running install_egg_info
Writing C:\python-3.5.2-embed-win32\Lib\site-packages\pywapi-0.3.8-py3.5.egg-info

週末に続く…

  • 本日はAPIの入手とインストールまでで力尽きてしまいましたので、importは週末に続くと言う事で!

スクラッチでシューティングゲームを作ってみよー!!

こんばんわ、JEUGIAカルチャーセンター桑名でプログラミング教室先生しています、たかあきです。
次回のプログラミング教室は、特別テーマ「アクションゲーム作り」を予定しています。
想像力とこんなの作ってみたいというアイディアを持って来て下さいね。

さて、スクラッチではどんなアクションゲームが作れるのでしょうか??
先生よりゲーム世代の子ども達の方がピンとくるかもしれません。

6月に横にスクロールするマリオ風アクションゲーム作りを紹介しました。

takaaki.hatenablog.jp

今日は、シューティングゲームを紹介します!
先ずシナリオとしては、スペースシャトルと宇宙人の対決にします。

f:id:takaaki-niikawa:20171003003237p:plain

スペースシャトルはビームを発射できます(実は単なるボールのスプライトですけど…)。60秒間にスコアを競うゲームにします。ピンクの宇宙人に命中すると宇宙人は消えスコアが1つ加算されます。

f:id:takaaki-niikawa:20171003003553j:plain

次にゲームっぽくステージ2を準備しました。

宇宙人は、開始から45秒は1体ですが、ラスト15秒は2体に増え(2体目は緑の小さい奴)、2体目は倒すとスコアが2つ獲得できます。

ちなみに宇宙を飛行している雰囲気を出すため、スターを流して縦にスクロールしている様に見せています。

f:id:takaaki-niikawa:20171003003822j:plain

60秒のタイマーとステージ2の突入は、下記のようにプログラムしています。残り15秒でステージ2のメッセージを送り、60秒をカウントダウンするループが終了するとタイムオーバーのメッセージを送る仕掛けをしています。

 

f:id:takaaki-niikawa:20171003003928p:plain

 

工夫したところは、ビームの扱いです。発射するまではスペースシャトルにくっつけておき、スペースキーが押されるとループを抜け、上方に飛んでいく様に作っています。

 

f:id:takaaki-niikawa:20171003004326p:plain

 

じゃあ、残りは想像力を働かせて完成させてください!

生徒のみなさんは、どんなゲームを作るかな? 今から楽しみです!!