■ このスレッドは過去ログ倉庫に格納されています
【教育】「最強」のプログラミング教育ソフトとは?
- 1 :ノチラ ★:2017/07/19(水) 09:25:09.53 ID:CAP_USER.net
- 地方自治体の中でも積極的なIoT化の取り組みを見せる石川県加賀市。同市が設けたスマート加賀IoT推進協議会のアドバイザーを私は務めています。その関係で、加賀市内において小学生向けのIoT (Internet of Things)教育を実施しています。実は、小学生に限らず「プログラミングを知らない人にIoTを教えてほしい」という依頼が多く、困っていました。
実習を行わずに座学だけの授業にするのは簡単です。しかし、IoT、すなわち「もののインターネット」に関する授業で、「もの」を見ずに授業を受けても、その場では分かったような気になるかもしれませんが、実際にはほとんどの人が理解できません。そこで、弊社の最高技術責任者(CTO)に相談したところ、「小学生に教育するなら『Minecraft(マインクラフト)』がいいですよ」と言われました。私とMinecraftの付き合いはここから始まりました。
多くの大人にとって謎のゲーム
Minecraftはゲームです。マルクス・ペルソン(ペンネームはNotch)というゲームクリエイターが、同人(アマチュア)ゲームとして開発しました。世界中で爆発的な人気となり、現在はスウェーデンMojang社という、彼が創業した会社が開発しています。子供にも大人気のゲームで、パソコンの他、スマートフォンやゲーム機向けにもソフトウエアが販売されています。シリーズの累計販売本数は、なんと1億2200万本を超えています。
加賀市で私の授業を受ける小学生や高校生に「Minecraftをやったことがありますか?」と質問すると、ほとんどの子供が手を挙げます。実は、私も数年前にMinecraftをスマートフォンのアプリ(アプリケーションソフトウエア)を購入してプレイしてみたのですが、最初の感想は「なんだこれは? 全然面白くないぞ!」というものでした。Minecraftは立方体のブロック(サンドボックス)だけで構成された世界で、プレーヤーは好きなブロックを積み上げて家を建てたり街を造ったりします。
Minecraftは基本的に2つのモードで楽しむゲームです。1つは「クリエイティブモード」で、ブロックを積み上げたり壊したりしながら建物や街を造るものです。しかし、これだけだと単なる「積み木」で、全く面白くありません(実はこれを楽しむプレーヤーも世界中に存在するのですが…)。もう1つのモードは「サバイバルモード」です。自分で造った建物や街にゾンビなどの敵が現れます。アイテムを拾い、複数のアイテムを道具で加工することで新たなアイテムを手に入れる。そして、その新たなアイテムで敵をやっつけて生き残っていきます。これが、やってみると結構面白いのです(あくまで個人の感想ですが)。
拡張機能とプログラミング
Minecraftには、第三者が作成した拡張プログラム(MOD)を導入できる機能があります。さまざまなMODがインターネット上に公開されている中で、特に盛んなのがプログラミングを学習するためのMODです。これを導入すると、例えば「Lua」や「Python」などのプログラム言語でMinecraftの世界を操作することができます。また、MODの中には、プログラムコードを埋め込めるブロックを作ることができるものがあり、そのブロックを並べて連動させることで、プレーヤーが近づくと開く自動扉などの“ロジカル”な仕組みを有する構造物を造ることができます。
Minecraftの説明が続いてしまいましたが、これがIoTとどう関係しているのでしょうか。その鍵となるのが、IoTの世界でよく利用されている「Raspberry Pi(ラズベリーパイ)」というシングルボードコンピューターです。この標準OSである「Raspbian(ラズビアン)」をインストールすると、デフォルトで「Minecraft Pi(MinecraftのRaspberry Pi版)」がインストールされます。Minecraft Piは現時点ではクリエイティブモードでしか遊べませんが、これを使うと先ほど触れたPythonなどで記述したプログラムとMinecraftを連携させることが可能です。
例えば、プログラムでRaspberry Piが備えるGPIO(汎用入出力)端子を制御してMinecraftの仮想世界を発光ダイオード(LED)などの現実世界と連動させることができます。例えば、Minecraftの世界でダイヤモンドの鉱石を発見したら、GPIOとつながったLEDを光らせるのです。IoTに興味を持ってもらうには、ゲームを使ってプログラミングを学ぶことが最適だと私は考えています。しかも、子供にだけではなく、大人にも有効だと感じています。
以下ソース
http://techon.nikkeibp.co.jp/atcl/column/15/070800054/071900031/
- 40 :名刺は切らしておりまして:2017/07/19(水) 12:53:31.63 ID:oyK8lWvV.net
- >>16
この言語考えたやつはアホやw
普通のプログラミング言語に、GUIのカバー被せただけだろw
工夫の跡すら見られねえw
- 41 :名刺は切らしておりまして:2017/07/19(水) 12:54:33.59 ID:pGTyfRW7.net
- >>38
おれは40台でリタイヤしたよ。デスマーチ徹夜体力の限界を知った
- 42 :名刺は切らしておりまして:2017/07/19(水) 12:57:28.80 ID:Ny0mprk7.net
- 今はPythonがいいのかな
- 43 :名刺は切らしておりまして:2017/07/19(水) 13:02:56.11 ID:pGTyfRW7.net
- >>42
Pythonもいいね。アメリカで教育に使われてるね。ほとんどC言語なんだけど
タブ送りで誰が書いても同じになる
- 44 :名刺は切らしておりまして:2017/07/19(水) 13:09:04.55 ID:MLrWScaS.net
- 日本語の教育用プログラミング言語とかないの?
- 45 :名刺は切らしておりまして:2017/07/19(水) 14:11:22.87 ID:pr5l2wV9.net
- マイクラでワープロなり電卓なりを作ってる人いるけど、
あれレッドストーンでフリップフロップ図で回路組んでるからね。
ああいうのを見ると、たしかに勉強にはもってこいかもしれん。
FF図のレッドストーン回路の実装例:
https://www26.atwiki.jp/minecraft/pages/26.html
- 46 :名刺は切らしておりまして:2017/07/19(水) 14:14:55.13 ID:StleNxep.net
- >>40
シンタックスエラーが出ないのは良いよ。
;と:を書き間違えてるような簡単なタイプミスでも
なれてないと見つけるまで1時間とかかかることあるから。
- 47 :名刺は切らしておりまして:2017/07/19(水) 14:18:42.67 ID:Ql8H5SLh.net
- import time
startTime = time.time()
n = 0
for i in range(1000000, 1005001):
for j in range(2, i):
if i % j == 0:
break
if j == i - 1:
n = n + 1
endTime = time.time()
elapsedTime = endTime - startTime
print("elapsedTime:{0} 秒".format(elapsedTime))
print("{0}個".format(n))
Python
- 48 :名刺は切らしておりまして:2017/07/19(水) 15:42:54.50 ID:Hm6VR6xQ.net
- RedStone回路を使ってバーチャル世界にマイコン(論理回路)を作る話かと思ったのに。
- 49 :名刺は切らしておりまして:2017/07/19(水) 17:11:00.58 ID:QT1EWkHp.net
- 教えてください、などというひとはだめな人
自身で考えられる人
要件を取集できるなど
「IoTを教えて」www
くそだな
- 50 :名刺は切らしておりまして:2017/07/19(水) 18:51:17.58 ID:3923qqlK.net
- >>16
これ子供とサイエンススクールでやったわ。
こんなもんでプログラム出来るようにならねーから。
- 51 :名刺は切らしておりまして:2017/07/19(水) 18:54:25.01 ID:M1Y8hbKL.net
- これもIoTというのか.....?
- 52 :名刺は切らしておりまして:2017/07/19(水) 19:00:01.96 ID:pZt4PSlP.net
- ファミリーベーシックだろ
- 53 :名刺は切らしておりまして:2017/07/19(水) 19:42:09.65 ID:2rc3KFbg.net
- >>31
WindowsでもほとんどのエディタがUTF-8に対応しているから大丈夫
コマンドでテキスト処理したい場合はCygwinとか入れればいい
入門者にはTerapadはどうかな?
Terapadならメモ帳感覚で使えるから気楽に使えるぞ
- 54 :名刺は切らしておりまして:2017/07/19(水) 20:41:34.08 ID:oCNylS+p.net
- >>1
http://mevius.2ch.net/test/read.cgi/tech/1312625035/
- 55 :名刺は切らしておりまして:2017/07/19(水) 21:36:13.16 ID:lxUShrX2.net
- 確かにプログラミング、ではないが
デジタルなモノづくり哲学の基本、としてマイクラは大いにアリだ
俺も最初ただの積み木ゲーだし、グラしょぼくね?と小馬鹿にしてたが
資材の生産設備を作り、さらにその効率化をした辺りから脳内評価が一変した
- 56 :名刺は切らしておりまして:2017/07/19(水) 21:37:06.28 ID:r/Im8Irt.net
- はっきり言って、そろそろ日本語のプログラミング言語が現れても良いんじゃないのか。
いつまで英語でやってんだよ。
- 57 :名刺は切らしておりまして:2017/07/19(水) 21:53:43.66 ID:IBoLCCeA.net
- Forthとか簡単に日本語化できそうなものだ
- 58 :名刺は切らしておりまして:2017/07/19(水) 22:19:45.08 ID:Y1ToWmNp.net
- Mindとかひまわりとかなでしことか
昔からあるだろ。
- 59 :名刺は切らしておりまして:2017/07/20(木) 00:24:54.27 ID:myWp2mEZ.net
- ヒューマンリソースマシーンとかやらせればいいよ
それで大体適正わかる
適正ないのは苦痛でしかないし興味も持てないしで酷いことになるからやらせない方がいい
- 60 :名刺は切らしておりまして:2017/07/20(木) 00:50:21.87 ID:8mstkVxqa
- LOGOに決まってるだろ
- 61 :名刺は切らしておりまして:2017/07/20(木) 00:44:05.10 ID:7vIt61n6.net
- プログラマを増やすんじゃなくて
論理性を育むんだろ。
抽象的なことやらせないで身の回りの家事や学習の手順をフローチャートで書けるようになるだけで充分でないの。
- 62 :名刺は切らしておりまして:2017/07/20(木) 00:46:41.25 ID:lHfDwkg8.net
- 普通に頭良くてプログラム出来る奴は、勝手に独立していく、
社畜ちゃんが欲しいならばそれなりの待遇が必要だブーw
- 63 :名刺は切らしておりまして:2017/07/20(木) 00:50:00.66 ID:6kzkmtdj.net
- >>61
お前はセンスないから黙っとけ
- 64 :名刺は切らしておりまして:2017/07/20(木) 01:24:21.87 ID:W5m8lhUQ.net
- C/C++を覚えときゃ潰しが効く
- 65 :名刺は切らしておりまして:2017/07/20(木) 01:28:54.85 ID:3ibMZt2S.net
- >>64
それは機械語覚えときゃなんでもできる、と同レベルの話だぞ
登山入門者にいきなりロッククライミングから教えるレベル
- 66 :名刺は切らしておりまして:2017/07/20(木) 01:45:37.73 ID:whazF8z6.net
- 文科省が用意した無料のプログラミング教材のプログラミンは、scratchに似てるけど
処理が下から行われるので個人的に嫌悪感が凄い
こんなのは、理論だけでも教えたくねぇ
- 67 :名刺は切らしておりまして:2017/07/20(木) 01:48:41.29 ID:YwkMYfr7.net
- 構造を学ぶならレゴとかでもいいと思うんだが
もちろん厳密な構造化手法だとかオブジェクト指向だとかは無視してると思うが、入り口でいいんだろ?
- 68 :名刺は切らしておりまして:2017/07/20(木) 01:54:54.66 ID:QL5P5xJF.net
- >>2
そんなあなたに、日本語プログラミング言語「なでしこ」
- 69 :名刺は切らしておりまして:2017/07/20(木) 02:00:15.63 ID:8OcN8fE/.net
- マインクラフトってことはつまりJavaってことかい?
- 70 :名刺は切らしておりまして:2017/07/20(木) 02:04:39.62 ID:9enoDMCI.net
- 教育目的ならcpmがいいだろ
- 71 :名刺は切らしておりまして:2017/07/20(木) 02:15:27.36 ID:xakzIKA6.net
- マインスウィーパーと勘違いして読んでた...
- 72 :名刺は切らしておりまして:2017/07/20(木) 02:28:15.56 ID:c1EG0MOm.net
- エクセルVBAじゃないの?
- 73 :名刺は切らしておりまして:2017/07/20(木) 04:19:12.56 ID:XBeutu+R.net
- なんとかならないの!
- 74 :名刺は切らしておりまして:2017/07/20(木) 09:29:13.50 ID:3ibMZt2S.net
- >>69
むしろ >>55 みたいに、まずプログラミング以前の「モノづくりとは何か」から始めるんだろ
例えばMOD無しのバニラ状態で、火薬というアイテムを毎時64個以上全自動生産できる設備を作る、とか
次に工業系MODを導入して、新しい仕組みを入れた際の便利さを体感してもらう
それでもなお不便なところを挙げてもらい、ここで初めてJavaだろう
- 75 :名刺は切らしておりまして:2017/07/20(木) 11:00:52.99 ID:rfpilk86.net
- >>56
すでにあるよ。
- 76 :名刺は切らしておりまして:2017/07/20(木) 18:30:32.75.net
- プログラムの様に1から10まで細かく指示しないと何も出来ない奴なら量産されとる。
- 77 :名刺は切らしておりまして:2017/07/20(木) 19:13:56.07.net
- >>6を見て相談したくなりました。
買った設備の不具合が多くて、業者に直すようにいってるのですが、のらりくらりと引き伸ばされています。
で、それを動かすソフトがVBで
当初、たくさんある不具合のひとつを
業者は一分もしないで直して、「あとは後日改めて」と言われましたが、時間が過ぎるばかりです。
そんな簡単に直せるのだったら、もう少し時間かければもっと直るだろうにと考える一方、
これって自分で覚えたら自分でカスタマイズや、手をくださなくても言いくるめられなくて済むのでは?と思いました。
でもVBってどうなの?
覚えて他に使いみちあるの?とも考えてます。
業者への対応もそうですが、なにかアドバイスいただけたら助かります。
- 78 :名刺は切らしておりまして:2017/07/20(木) 19:27:45.33.net
- >>77
少なくともVBはプログラミング勉強する上で最悪の選択肢の一つ
VB覚えてもこの一件が解決出来るだけで、それ以上にはならない
あと>>6は基本要件みたいなもんで、契約書の条項の方が優先になるよ
- 79 :名刺は切らしておりまして:2017/07/20(木) 23:09:50.27.net
- 小学生にはスクリプト言語でええやろ
- 80 :名刺は切らしておりまして:2017/07/20(木) 23:11:26.20.net
- そもそも、言語である必要性は無い。
図形を組み合わせてロジックを作るツールが良いんじゃないか。
- 81 :名刺は切らしておりまして:2017/07/21(金) 02:38:10.09.net
- 本屋に言ったら子供のプログラミング本山ほど置いてあった
scratchとpythonが主だったな
- 82 :名刺は切らしておりまして:2017/07/21(金) 09:30:48.21.net
- >>78
ありがとうございます。
プログラミングに興味あったのですが
今回のためにやるにしても、本格的に勉強するなら別の言語がいいですね。
まともな契約書はないので
業者には瑕疵担保責任のもとに強めに言うようにします。
- 83 :名刺は切らしておりまして:2017/07/21(金) 10:23:43.34.net
- >>82
今からプログラミング勉強するなら、
取っ付きやすさで選ぶならJavascript(JAVAとは別言語なので注意!)、
美しい言語で選ぶならPython3辺りが良さげかな
- 84 :名刺は切らしておりまして:2017/07/21(金) 10:59:49.49.net
- 小学生が成長する頃には、また別の言語が登場して
- 85 :名刺は切らしておりまして:2017/07/21(金) 17:49:15.43 ID:o9pTYPnf.net
- 要するにプログラムとは何かを学ぶにはマインクラフトのMODいじらせるのがありってはなしだろ
- 86 :名刺は切らしておりまして:2017/07/23(日) 07:25:54.15 ID:EwfC804j.net
- Pythonは対話モードがあるので初心者にとってとっつきやすい
また、対話モードを利用することで電卓代わりに使える
import math
と入力してやれば対話モードでも数学関数が使えるからプログラム関数電卓としても使える
import math
for i in range(360 + 1):
print("sin({0:d}) = {1:0.15f}".format(i, math.sin(i * math.pi / 180.0)))
みたいなことが簡単にできる
- 87 :名刺は切らしておりまして:2017/07/23(日) 07:39:21.73 ID:EwfC804j.net
- 整数に関しては多倍長演算なので2の1乗から2の128乗まで表示するようなプログラムも簡単
for i in range(1,128 + 1):
print("2**{0:d} = {1:d}".format(i, 2**i))
ただし、python3では整数の割り算は//を使うこと
/を使うと浮動小数点数になってしまう
- 88 :名刺は切らしておりまして:2017/07/23(日) 07:59:52.51 ID:EwfC804j.net
- >>82
VBって今だとVB.NETのことだと思うけど
VB.NETとC#両方やってみれば?
どちらも.NET Framework使うので言語が違うだけだしね
C#は別に今から覚えるのに悪い言語でもないよ
Windowsのアプリを開発するのには一番簡単だし
他の言語を勉強する時にも応用が利く
- 89 :名刺は切らしておりまして:2017/07/23(日) 19:58:30.44 ID:EwfC804j.net
- 2ちゃんねるにPythonのプログラムを書き込んでも
インデントの空白が消えてしまうので適宜つけてね
総レス数 89
27 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★