Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

プログラミング学習とScratch raspi python

3,219 views

Published on

2016/8/10開催 みんなのPython勉強会資料です。

Published in: Education
  • Be the first to comment

プログラミング学習とScratch raspi python

  1. 1. プログラミング学習と Scratch, Raspberry Pi, Python @みんなのPython勉強会#15 2016/8/10 プログラミングサークルOtOMO 塩野 禎隆
  2. 2. 本日お話しすること 昨今、日本国内においても小学校でのプログラミン グ教育の必修化が検討され、ネット上でも多くの議 論を見かけるようになりました。 今回は、 ・Scratch ・Raspberry Pi ・Raspi上でのPython、Scratch、Mincraft Pi、GPIO に関しての話題を元に、Pythonとプログラミング 学習の可能性を皆様と考えたく思います。
  3. 3. 自己紹介 • 塩野 禎隆(しおの よしたか) • もともとは、建築計画学という分野の研究者 • Python歴は4年ほど。(プログラマではなくSI) • 子ども向けプログラミングは、5年前ほど。 • OtOMOというサークルに父兄として参加し、そのうちに 毎月数回、小学生を対象にScratchや簡単な電子工作な どを教えるようになる。 • 活動の中心である阿部和広先生の下で、子ども向けの Raspberry Piの書籍、Studuinoの書籍をお手伝い。
  4. 4. ちなみに、こちらはブロック玩具とArduino互換機であるStduinoというデバイスを利用 して、自動ドアなどを作りながら「計測」と「制御」を学んでいくセットです。 今日は主に「Raspberry Piで始めるどきどきプログラミング」という本に書かれているこ とが主になります。
  5. 5. プログラミング言語 Scratch(スクラッチ) Scratchの画面(バージョン2)
  6. 6. 2016年8月に発表 HTML5で動きます。 Scratchとは • キーボードを極力利用しない、ビジュアルプログラミング 言語のひとつです。(http://scratch.mit.edu/) • 2006年に最初のバージョンがMITメディアラボのミッチェ ル・レズニックさん率いる「ライフロング・キンダーガー テン・グループ」によって開発されました。 • グループ名が表すように、子どもだけでなく、「子どもか ら老人まで」を対象とした初学者向けのプログラミング環 境です。 Version1.4 Version2.0 Version3.0 FlashベースのWebアプリ Squeak VM上のアプリ (Win、Mac、Linux, Raspi、iPad….
  7. 7. Scratchとは - プログラミング言語以外の特徴 Scratchは、ブロック言語として有名になってしまいましたが、 • SNS機能:作品を世界中に公開、共有できます。ユーザーが他者の作 品を評価したり「Studio」というキュレーション機能があったりしま す。 • 版管理機能:Scratchは他者の作品を改造し、公開することを推奨し ているため、(Remix機能)、非常に多くの派生作品が生まれます。 といった、言語だけでなく、SNS+コード共有といった、近代的なプロ グラミング環境に近い環境も特徴です。 リミックスツリー (作品の改良を樹形図として表示) 質問、雑談BBS
  8. 8. Scratchとは ….大人の世界同様、 SNS機能があるがゆえに作品のコ メント欄も掲示欄も荒れます。 …しかも他国語で煽られることもあります。 …でも、時間を置くと、ユーザーが自ら自浄していく ケースもあります。コメント欄に書かれた英語や、返答 の日本語の文を、Google先生で翻訳する子もいます。ま た、複数のユーザーによる作品の改良(Remix)によっ てより良い作品が生まれたり、コメントを素直に受け止 めて、次作につなげる子もいます。 …これも大人の世界同様です。
  9. 9. Raspberry Pi Raspberry Pi Model B
  10. 10. Raspberry Piとは • エベン・アプトンさんが創設したRaspberry Pi財団が開発 しているワンボードマイコンです。 • エベンさんが英国のケンブリッジ大学で教えていた時、学 生がソフトウエア(おそらく上層の)の知識に偏りすぎて いたため、もう少し下層やハードよりに興味を持ってもら いたい、というのが、開発のきっかけとのことです。
  11. 11. Raspberry Piとは • 25ドルにすれば、多くの学生、子どもが自由に触れるこ とができるコンピュータになる、というコンセプトから、 多くのサプライヤーが支援する形で製造しています。(知 人の組み込み屋によると、普通に作れば100ドルは下らな いそうです) • 日本において、PC8001などの8bit機が流行っていたころ、 英国にはMicroBBCというPCが普及していたそうです。ま た、欧州が米国にコンピュータ産業で負けている昨今、 ARM自体が英国の企業であることが、Raspberry Piが生ま れた背景にあるのかな、と思います。
  12. 12. Raspberry Piとは – 個人的に考える特徴 個人的に、コンピュータ教育における、Raspberry Piの特徴 は、安いことよりも、 • OSをはじめとするソフトウエアリソースが潤沢 • GPIO(汎用入出力端子)がある ->Lチカが出来る • SoCにGPUが内蔵されている ->Minecraft Piが動く の3点であると思います。 現在は、ハードウエアとしては、より高性能なワンボード マイコンも登場しておりますが、この3点の強みを合わせた ものは、現時点でも存在していないと思います。
  13. 13. Raspberry Piとは 現在、Rapberry Piで主に利用されるOSであるRaspbian (2016/5版)には、デフォルトで • Pythonおよびゲーム向けライブラリ • Scratch(バージョン1.4) • MathematicaおよびWolfram Engine(数式処理) • Minecraft Pi(クリエイティブモードのみ、API公開) • Sonic Pi(Ruby由来の音声、音楽、音響プログラミング 環境) • Node-Red(Node.jsをベースとした、Webブラウザ上で ビジュアルコーディングできる環境) • その他Java開発環境などなど ….といった環境がごっそりプリインストールされます。
  14. 14. Raspberry Piとは …子どもたちにRaspberry Pi渡して放置したら、基本 Minecraftしかしません… …子どもたちはMinecraft大好きです。 …ただ、ネットワークで複数のMinecraft Piで連携させて、 バーチャル鬼ごっこする、といったことも起こるので、そ れはそれでよいのかな、と思ったりもします。
  15. 15. Scratch <-> Python on Raspberry Pi Scratch2MCPI  Minecraft Graphics Turtle
  16. 16. Scratch <-> Python on Raspberry Pi 出典は見つけ出せませんでしたが 「Raspberry PiのPiは、PythonのPy」 と、当初、生みの親のエベンさんが言っていたそうです。 実際に、海外ではよく利用されていて、初期のRaspbianでは、 Raspberry Piの特徴ともいえる、GPIOやMincraft PiのAPIを操 作するためのライブラリ、サンプルコードが、主にPython で提供されておりました。 GPIOライブラリ名 :RPi.GPIO Mincraft Pi APIライブラリ名 :minecraft
  17. 17. Scratch <-> Python on Raspberry Pi • RaspbianにインストールされているScratch1.4は「遠隔セ ンサー」という、ソケット通信で他のプログラムやホスト とデータを送受信する機能があります。 • Pythonには、「py-scratch(ライブラリ名scratch)」という、 Scratchと遠隔センサーで通信するためのライブラリが早 期から公開されていました。(こちらはRaspberry Pi以外 の環境でも使えます) • その流れで、RaspbianにおけるScratchのGPIO、Minecraft機 能拡張は、Pythonが利用されています。 Scratch (遠隔セン サーOn) Python Minecraft  Pi GPIO Scratch GPIO7(or4) scratch 2mcpi py‐ scratch py‐ scratch Rpi‐ GPIO Minecr aft API
  18. 18. Scratch <-> Python on Raspberry Pi …残念なことに、知る範囲では、Raspberry PiでScratchを楽 しんだ小学生が、その後Python環境を利用するようになる のは、なかなか難しい様子です。 高校生以上になると、自力でWiiリモコンをRaspi上のScratch で利用できる環境をPythonで作る子もいたりしますが、や はり少数です。 ScratchでWiiリモコンを使う
  19. 19. プログラミング「を」学ぶ プログラミング「で」学ぶ
  20. 20. プログラミングを学ぶ プログラミングで学ぶ 子ども向けのRaspberry Piのワークショップで、一度親御さ んの依頼で、小学生にPythonを教えたことがあります。 テキストエディタの使い方までは、親御さんが教えていた こと、また、アルファベットが読めるとのことだったので、 Minecraft PiをPythonから動かすプログラムの作り方を教え ました。 しかし、教えた以上のことはできませんでした。 ….この状況は、大人にプログラミングを教える際にも、よくあることかと思い ます。
  21. 21. プログラミングを学ぶ プログラミングで学ぶ • キーボードの壁 • アルファベットの壁 (言葉、文字の壁ともいえます) • 親、大人の壁 (いわゆる先入観。インタネット危険 この子ならで出来る/出来ない) 子ども向けプログラミング学習における「3つの壁」(経験則的なもの) キーボードに慣れていて、英語もアルファベットも抵抗がなく、インタネットも きちんと使える子でも、意外と大人の壁が厚く、うまくプログラミングを学ぶと ころまでいけない子はたまに見かけます。
  22. 22. プログラミングを学ぶ プログラミングで学ぶ 段階 年齢 特徴 1 感覚運動段階 0~2 感覚と運動が表象を介さずに直接結 び付いている時期 2 前操作段階 2~7 他者の視点に立って理解することが できず、自己中心性の特徴を持つ。 3 具体的操作段階 7~12 数や量の保存概念が成立し、可逆的 操作も行える。 4 形式的操作段階 12歳以降 形式的、抽象的操作が可能になり仮 説演繹的思考ができるようになる。 子どもによっては、より若い年齢で次の段階に行くこともあるが、段階はかならず1‐ >2‐>3‐>4となっていく。感覚的に、反抗期になる小3 が一つのラインと考える。 また、未就学児でも利用しやすい環境が良い効果を生んでいるケースもある。 ジャン・ピアジェによる「思考発達段階説」(wikiより)
  23. 23. プログラミングを学ぶ プログラミングで学ぶ 「デバッグこそ重要な思考法」(シーモア・パパートさん) 何かがうまくいかないときに、自分の操作を一歩引いた別の視点で眺める経験とい うのは、他の教育、学習法だけでなく、日常かでもではなかなか体験しにくいです。 デバッグを一度でも体験することは、継続的に自らの手でものを作り、学ぶことに つながる、と考えています。 「概念を、頭の中に入りやすい(理解しやすい)大きさにかみ砕いてあげる」 良い概念、理念であっても、一気に理解することは難しいため、はじめは、子ども たちの理解の速度に合わせて表現や情報量、タイミングを考えながら伝えます。 「子どもたちが知的に活動しているのは、彼らにとって個人的に意味のあるも のを組み立てているときだけだ」(ミッチェル・レズニックさん) 意味や興味の持ち方のバリエーションを伝えるのは大事です。 状況によっては、作っているものの別の価値を見出してあげることもありますし、 逆説的に、ただ仲間内でMinecraftで騒ぎたい子たちを、別のものに興味を持たせて 解散させたりします。 子どもたちにプログラミングを教えるときに気をつけていること
  24. 24. プログラミングを学ぶ プログラミングで学ぶ プログラミングに適性を持つ方々ではない人々に、プログラミングを学んでも らう、もしくはプログラミングで学んでもらうためにも、 1. 上手くいかないときに、どうすればよいかを考えて 自分で解決させる 2. 概念や理念を正しく、しかし理解しやすく伝える 3. 何より興味を持ってもらう、個人的な意味を感じて もらう の3点は、子ども同様に重要であると思います。 Pythonの場合、2.に関しては、良書が多いのですが、1.に関してはチュートリ アル的に説明を行うことが多い書籍では伝わりにくい部分があります。3.の興 味においては、Pythonの適応分野の広さが強みになる、と考えます。 大人や学生さんにプログラミングを教える場合に転用すると
  25. 25. プログラミングを学ぶ プログラミングで学ぶ …ですが、今まで、Pythonをやってみたい、という子ども、 もしくや大人に出会ったことがありません。 …プログラミングに興味がある人の多くは、ゲーム、Web アプリ、スマホアプリなどの適応分野から入ってきます。 そのため、Javascript、Java、Swift、C#(というかUnity)、 国内特有とは思いますがRubyが人気かな、と思います。 …潤沢なライブラリ、適応範囲の広さが、逆に特徴をなく しているのかな、と思っています。
  26. 26. プログラミングを学ぶ プログラミングで学ぶ Sugar OS Autodesk社さんの建築CADであるRevit、 VasariはPythonShellや、DynamoPythonScriptで プログラムから建築の3Dデータを生成する ことができます。 柱、梁、天井といった、なじみのある要素を プログラミングから操作できるため、コン ピュータにも建築にも興味のある人に受けが 良いです。 建築CAD+Pythonもしくは Dynamo OLPCプロジェクト(One Lap Per Child)で開 発されたノートPCの、GUI部分が独立して Suger OSとして公開されており、Raspi3で 動きます。Python、PyGTK、 GTK+で構築 されてます。 OLPCは、筐体の良さだけでなく、GUIもよ くできているため、展示をしている使って みたくなる人が多い様です。 興味を持ってもらえるかな、と最近検証しているもの
  27. 27. まとめに変えて Pythonの適応分野で、子どもたちが食いつきそうなことを、教えていた だければ幸いです。 よろしくお願いいたします。
  28. 28. 参考文献等 「Dynabook」の背景にあった、知られざる物語 http://www.atmarkit.co.jp/ait/articles/1306/06/news111.html 2013年5月19日に行われた、Scratch Dayにおける阿部先生の基調講演の記事です。LOGOの シーモアパパートさん、SmalltalkやDynabookのアランケイさんが、プログラミングと教育を考 えていたか、その流れがSqueak EtoyやScratchにどうつながっているかがよくまとまっており ます。 マインドストーム — 子供、コンピューター、そして強力なアイデア LOGOを開発したシーモアパパートさんの著書です。子どもたちがコンピュータやプログラミ ングを通して学ぶことに関して、「構成主義」という言葉をもとに、多くの事例、提案があり ます。 作ることで学ぶ ―Makerを育てる新しい教育のメソッド シーモアパパートさんの構成主義を、現在のパーソナルファブリケーションが発達した世界に 適応、発展させるべく作成された書籍です。学習環境の形成の仕方など、多免停な視点から、 あたらしい学びを考えています。
  29. 29. 参考文献等 小学生からはじめるわくわくプログラミング 阿部和広先生の書籍です。巻末に、Personal Comupterの定義をしたと言われているアランケイ さんのDynabookに関する当時と今のエッセイが収録されています。
  30. 30. 最後に 世界初の子ども向けプログラミング言語LOGOを開発し、子どもたちが コンピュータで学ぶことの可能性を示した、シーモアパパートさんが 2016/7/31にお亡くなりになりました。 この場を借りて、ご冥福をお祈りします。 > python >>> import turtle >>> t = turtle.Turtle() >>> for i in range(0,4): >>>    t.forward(50) >>>    t.right(90)

×