2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【教育】「最強」のプログラミング教育ソフトとは?

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 ★