a21_edu01
の編集
https://essen.osask.jp/?a21_edu01
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
BracketName
EssenRev4
FormattingRules
FrontPage
Help
InterWiki
InterWikiName
InterWikiSandBox
K
MenuBar
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SDL2_01
SandBox
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
a21
a21_acl01
a21_bbs01
a21_challengers
a21_count
a21_edu01
a21_edu02
a21_edu03
a21_edu04
a21_edu05
a21_edu06
a21_edu07
a21_edu08
a21_edu09
a21_edu10
a21_edu11
a21_hlx000
a21_hlx001
a21_hlx001_1
a21_hlx001_2
a21_hlx001_3
a21_hlx002
a21_hlx002_1
a21_hlx003
a21_hlx003_1
a21_hlx004_1
a21_memo01
a21_opt
a21_opt02
a21_opt03
a21_p01
a21_special
a21_tl9a
a21_todo
a21_txt01
a21_txt01_10
a21_txt01_1a
a21_txt01_2
a21_txt01_2a
a21_txt01_2b
a21_txt01_3
a21_txt01_4
a21_txt01_5
a21_txt01_6
a21_txt01_6a
a21_txt01_7
a21_txt01_8
a21_txt01_8a
a21_txt01_9
a21_txt01_9a
a21_txt02
a21_txt02_10
a21_txt02_10a
a21_txt02_10b
a21_txt02_11
a21_txt02_11a
a21_txt02_12
a21_txt02_12a
a21_txt02_12b
a21_txt02_1a
a21_txt02_1b
a21_txt02_2
a21_txt02_2a
a21_txt02_3
a21_txt02_3a
a21_txt02_4
a21_txt02_4a
a21_txt02_5
a21_txt02_5a
a21_txt02_6
a21_txt02_6a
a21_txt02_6b
a21_txt02_6b_rev0
a21_txt02_6x
a21_txt02_7
a21_txt02_7a
a21_txt02_8
a21_txt02_8a
a21_txt02_9
a21_txt02_9a
a22_acl2_01
a22_acl2_02
a22_edu12
a22_intro01
a22_intro02
a22_intro03
a22_memman01
a22_memman02
a22_memman03
a22_memman04
a22_memman05
a22_memman06
a22_memman07
a22_memo01
a22_mingw_debug
a22_txt03
a22_txt03_1a
a22_txt03_1b
a22_txt03_2
a22_txt03_2a
a22_ufcs01
a23_bbs
a23_ec001
a23_ec002
a23_intro00
a23_intro000
a23_intro01
a23_intro02
a23_intro03
a23_intro04
a23_intro05
a23_intro06
a23_intro07
a23_intro08
a23_intro09
a23_intro10
a23_intro10wk1
a23_intro10wk2
a23_intro10wk3
a23_intro11
a23_intro12
a23_intro13
a23_intro13wk1
a23_intro14
a23_intro15
a23_intro16
a23_intro90
a23_intro91
a23_neopixel1
a23_os01
a23_useSelfMade
a23_usm001
a23_usm002
a23_usm003
a23_usm004
a23_usm005
a23_usm006
a23_usm007
a23_usm008
a23_usm009
aclib00
aclib01
aclib02
aclib03
aclib04
aclib05
aclib06
aclib07
aclib08
aclib09
aclib10
aclib11
aclib12
aclib13
aclib14
aclib15
aclib16
aclib17
aclib18
aclib19
aclib20
aclib21
aclib22
aclib23
aclib24
aclib25
aclib_bbs
arm64_01
avm0001
edu0001
edu0002
edu0003
esb02b_hrb
esb_dbg
esbasic0001
esbasic0002
esbasic0003
esbasic0004
esbasic0005
esbasic0006
esbasic0007
esbasic0008
esbasic0009
esbasic0010
esbasic0011
esbasic0012
esbasic0013
esbasic0014
esbasic0015
esbasic0016
esbasic0017
esbasic02a
esc0001
escm0001
essen_hist
esvm0001
esvm0002
esvm0003
esvm0004
esvm0005
esvm0006
esvm_i0
hh4a
idea0001
idea0002
idea0003
impressions
jck_0000
jck_0001
kawai
kbcl0_0000
kbcl0_0001
kbcl0_0002
kbcl0_0003
kbcl0_0004
kbcl0_0005
kbcl0_0006
kbcl0_0007
kclib1_0000
kclib1_0001
kclib1_0002
kclib1_0003
kclib1_0004
kclib1_0005
kclib1_0006
kclib1_0007
kclib1_0008
kclib1_0009
kclib1_0010
kpap0001
members
memo0001
osask4g
osask4g_r2
p20200311a
p20200610a
p20200610b
p20200624a
p20200711a
p20200716a
page0001
page0002
page0003
page0004
page0005
page0006
page0007
page0008
page0009
page0010
page0011
page0012
page0013
page0014
page0015
page0016
page0017
page0018
page0019
page0020
page0021
page0022
page0023
populars
seccamp
seccamp2019
sechack
sechack2019
seclang01
sh3_2020
sh3_2020_kw
sh3_2020_nk
sh3_2021_kw
sh3_2021_nk
sh3_2022_kw
sh3_2023_kw
sh3_kw_hist
termux001
termux002
text0001
text0001a
text0002
text0002a
text0003
text0004
text0005
text0006
text0006a
text0007
text0008
text0010
text0011
text0012
text0013
text0014
text0015
text0016
text0017
text0018
text0019
text0020
text0021
tl1c
tl2c
tl3c
tl3d
* 初心者向けプログラミング体験ワークショップ#1 -(by [[K]], 2021.11.14) ** (0) -2021年12月18日(土)-19日(日)に「SECCON 2021 電脳会議」というオンラインイベントが開催予定になっています。 //--https://www.seccon.jp/2021/seccon/schedule.html --https://www.seccon.jp/2021/ep211218.html -その中で私(川合秀実)は、2021年12月19日(日) 15:50-17:20 の枠でワークショップをする予定です。 -このページは、私がそこでどんな内容のワークショップをやりたいと思っているのか、それを説明するためのものです。また参考になりそうな資料もすべてここからたどれるようにします。 -なお、このワークショップに参加するためには、12/14(火)17:00までに事前登録の必要があります。 -https://www.seccon.jp/2021/ep211218.html のずっと下のほうにある「D2-4」の説明の「こちらからご登録ください」をクリックして登録をお願いします。 ** (1) 目的・対象者 -このワークショップの目的は、小学生にプログラミングを体験してもらって楽しい気分を味わって、今後の学習のためのきっかけにしてもらうことです。 -しかし以下で説明する通り、(条件さえ合えば)中学生でも高校生でも大人でも楽しめる内容だと思います。だから対象は小学生限定ではありません。 -このワークショップでは、初心者に手取り足取りで教えるようなことはできないので、(特にPCの操作に自信のない方は)大人の支援者が必要です。・・・つまりは、小学生が保護者の方と一緒に参加するような形式を想定しています。 -なお、自分自身は初心者ではなく、またワークショップ中に初心者の支援をするわけではないけれど、しかしここを読んでいて、このワークショップの見学をしてみたいと思われましたら、その方の参加も可能です(見学参加)。 --私自身にとって、今回のやり方は初めての試みなので、うまくいくかどうかは正直未知数です。お見苦しいところがあったり、見学に耐えうるものにならない可能性もあります。どうかそれはご了承ください。 ** (2) 具体的には何をするワークショップなのか? -ワークショップの時間では、作品発表会を最後に行います。これは参加者が作ったものを発表する場です。基本的には、「今日のワークショップの時間で私は〇〇を作りました。こんな感じで動いています。ここのところが工夫したところです。ここが難しかったです。ここは自分ではできなかったので手伝ってもらいました。・・・面白かったので、続きをお父さんと一緒にやってみたいと思っています。」みたいな話を画面共有しながら話してもらいたいのです。1人当たり3~5分くらいでしょうか。 --そしてこの発表以外の時間は、私の冒頭の3分程度の導入部以外は、フリータイムです。その間に何か作っていただくことを想定していますが、休んでいただいてもかまいません。発表開始時間までに戻ってきてください。 -もちろん、「じゃあ発表会をするので何か作ってきてください」って丸投げするつもりはありませんのでご安心ください(笑)。 -こちらではとりあえず、10個くらいの小規模なサンプルプログラムを提供します。その中から面白いなと思えるものを1つ選んでいただいて、それを入力してみてください。もし作ったものがゲームであれば、是非それで遊んでみてください。もし時間があれば改造を試みてもいいです。たとえば点数をもっと多くするにはどこを改造したらいいでしょうか。きっと自分で入力したのなら、あたりを付けられるはずです。・・・これだけでもいろいろなプログラミングの要素を体験できていると私は考えます。初心者にとっては十分なはずです。 -もちろん参加者の中には、たどたどしいながらも自分でプログラムが組める人がいるかもしれません。それは素晴らしいことです。そういう人は、私の提供したサンプルなど気にせずに自分で作ったものを発表してかまいません。私としては、このワークショップでは参加者のレベルをそろえて共通のゴールを目指すのではなく、各自が各自なりに前進できる機会を提供することを目指しています。だからレベル感が不統一なのは問題ないと考えます。 -そもそも、ワークショップ時間まで待たなければいけない理由があるでしょうか。もしこの説明を読んで面白そうだと思えたら、今すぐにでも自分のペースで始めてしまっていいのです。ワークショップの時間までには、相当にたくさんのことができるでしょう。このワークショップの目的を考えたら、それは極めて素晴らしい成果です。その場合は、ワークショップ時間内にやったことに縛られることなく、「今日はこのワークショップが始まる前からやっていた〇〇について発表します。・・・」と切り出してください。 -またこのワークショップを知る前から自分はすでにいろいろ作っていたという人もいるかもしれません。それはさらに素晴らしいです。その成果を発表したければそれも歓迎します。その時は自分は今何歳で、プログラミング歴がどのくらいなのかも教えてください。そういう発表なら初心者の人も参考になります。そうか、〇〇歳の人が〇〇ヶ月くらいがんばるとあんなにすごいものができるのかーと。 -でも、「もう自分一人であれもこれもできる、もういろんなところで発表して活躍しているぜ!」みたいな人は、さすがに浮いてしまうかもしれないので、このワークショップでは発表はしないほうがいいかもしれません。私としては、まだ発表機会が少ないレベルの人に発表機会を提供して、それで楽しい気持ちになってもらうことを主目的にしているので、それをご理解いただいた上で判断いただけると幸いです。 -このような趣旨ですので、発表内容がどんなものであれ私はポジティブなコメントしか出しません。というかやったことがないことに挑戦してくれた時点で、たとえ少ししかできなくても、それは十分に称賛に価すると考えます。 --「成果が伴わなければ称賛されない」だと、やる前から「きっと大した成果は出せそうにないからやめておこう、失敗したら恥ずかしい」になってしまいます。成果の有無にかかわらず、努力が無条件に肯定される環境なら、「うまくできるかどうかは分からないけど、とりあえず一度やってみよう、たとえ失敗してもやった分だけほめられるしね」と思いやすいでしょう。自分にプログラミングの適性があるかどうかなんて、やってみなければ分からないですし、やってみるコストはかなり小さいのです。それならあれこれ考えるよりも、気軽にやってみるほうがいいに決まっています。 ** (3) サンプルプログラム //-(ここは11月末までに何度も更新して準備します・・・すみません、あと数日延長して頑張ります。) // //~ -''なでしこ編''(ブラウザだけで動くのでインストール不要でとてもお手軽!) --(プログラムが日本語で書かれると、あまり知識がなくても結構読める感じがします。・・・「ああ英語圏の人は一般的なプログラミング言語を使っても、こんな気分なのかー。それはすごく有利だろうなあ」と感じる体験ができます。) |http://k.osask.jp/files/20211219a_nade.pdf | 2018年に書いたテキストをとりあえず提供します。| |[[a21_edu08]]|坂道を走ってきれいな石を拾い集めるゲーム([[a21_edu02]])をなでしこ3に移植しました!| |[[a21_edu09]]|ハンバーガーキャッチ・ゲーム([[a21_edu03]])をなでしこ3に移植しました!| |[[a21_edu10]]|ジャンプ・ゲーム([[a21_edu04]])をなでしこ3に移植しました!| |https://news.mynavi.jp/techplus/series/nadeshiko/|(参考)なでしこの連載記事[外部リンク]| |https://n3s.nadesi.com/|(参考)なでしこ3貯蔵庫[外部リンク]| ~ -''C言語編''(私が自作したグラフィックライブラリを使ってミニゲームを作ります) |[[a21_edu02]]|坂道を走ってきれいな石を拾い集めるゲーム(25行)| |[[a21_edu03]]|ハンバーガーキャッチ・ゲーム(34行)| |[[a21_edu04]]|ジャンプ・ゲーム(33行)| |[[a21_edu05]]|タイピングゲーム(35行)| |[[a21_edu06]]|ロケット操縦ゲーム(39行)| |[[a21_edu07]]|ブロックくずし(49行)| ~ -''HLX編''(私が自作したBASIC風の言語を使ってミニゲームを作ります、Windows向け) --(本当はこれを一番にお勧めしたいところなのですが、しかしまだ言語が開発途上でエラー処理などが甘く、手放しではお勧めしかねる状況です。) --(既存言語はやっぱりさすがだよなと思います・・・。)(しかしとにかくうちの子供たちにはHLX編で挑戦させています。) |[[a21_edu02]]|坂道を走ってきれいな石を拾い集めるゲーム(20行)| |[[a21_edu03]]|ハンバーガーキャッチ・ゲーム(30行)| |[[a21_edu04]]|ジャンプ・ゲーム(29行)| |[[a21_edu05]]|タイピングゲーム(31行)| |[[a21_edu06]]|ロケット操縦ゲーム(34行)| |[[a21_edu07]]|ブロックくずし(44行)| ** (4) あえてプログラミングに限定しません -これはプログラミングのワークショップなのですが、しかし発表する作品がプログラミングによって作られたものではなくてもいいことにしたいと思っています。たとえばペイントソフトで描いた絵でもいいと思います。音楽ソフトで譜面を入力してみて演奏させた―でもいいと思います。・・・どうしてそう思うのかを説明します。 -私も10歳以下の小学生2人にプログラミングを教えてやろうと思っていろいろやってみているのですが、最初は良くても長続きさせることができません。結局、最初はできることが少なくて楽しめないからだと思います。ゲームでもなんでも無料の既成品がとてもよくできていて、それと比べたらつまらなくなるのは当然です。子供の視線を、それらから引き離す必要があると私は考えました。 -最近の私は子供たちがMSペイントの使い方を教えてみました。それまでの私はこんなのを教えたら座標を計算してプログラムで絵を描くのが面倒になって、もうプログラミングをしなくなるかもしれないと恐れて、あえて教えないできたのです。・・・教えてみたら、ものすごい食いつきでした。座標計算なんてしなくてよくなるし、コピー&ペーストもできちゃうし、undoもredoも完備されているのです。それはもう目を輝かせていろんな絵を描いていました。そして私は「これはよく描けているな」と感じたものをいくつか指さして、それをコピーさせてくれと頼みました。私は自分の基準で子供たちの作品を選んで、作品集を作ることにしたのです。 -子供たちは今まで「なぜ作らなければいけないのか?」という疑問をきっとなんとなく感じていただろうと思います。そう感じてしまったら、きっと一気につまらなくなったことでしょう。しかし私が傑作を集めて作品集を作ろうとしているのだと知れば、それは作る理由になりうるのです。どこかからダウンロードしたゲームは作品集には選ばれません。でもそれよりはるかに劣る自作のゲームは作品集に選ばれます。・・・こうして比較対象は見知らぬ誰かが作ったすごいものではなく、自分の過去の作品だけになりました。それなら「そんなのやるだけ無駄、どうせ勝ち目なんてない」とは思わなくなったのです。 -私はプログラムやCGだけではなく、小学校の図工の授業で作った作品(の写真)や、家で作った積み木やブロックの傑作(の写真)、自由帳に描いた絵(の写真)など、そういうものも作品集に加えることにしています。こうすることで、創作活動が全般的に評価されているとわかってもらえています。そういういろんな表現方法の中での比較なら、プログラミングは決して分の悪い表現手段ではないはずです。きっとちょくちょくやってみようという気を起こしてくれるでしょう。視野も広がるはずです。 -とまあそういうわけなので、プログラミングに限定せずに、何か良い作品があってそれを評価してほしいということであれば、ぜひそれを発表してください。あまりかけ離れているとさすがに理解されずに浮いてしまうかもしれないので、まあソフトウェアに関係がある範囲くらいで・・・。 ** (5) 私がプログラミング教育において最も大切だと感じていること -これは私の感覚ですが、世間で「プログラミング教育」というと「プログラミング的思考」ができるようにすることで、そのプログラミング的思考というのが何を指すのかというと、「何か複雑な処理をさせたいときに、それを小さくて簡単な処理の組み合わせに分解すること」みたいな説明がされているように思います。・・・これはもちろん重要なスキルですが、しかし私がプログラミングで習得してほしい最大のスキルはこれじゃない気がします。これは私にとっては(プログラミングを通じて学んでほしいことの中では)2番目か3番目くらいに習得してほしいスキルです。 -私が自分がプログラミングを通じて学んだことのうちで、一番有益だと思っていることは(=自分の子供にもまず第一に習得させたいと思っていることは)、何度失敗してもいい・むしろ失敗するほうが普通・最後に成功すればいい・調べる前に試していいんだ、ということです。これだけだと何を言っているのかよくわからないかもしれません。 -私たちがプログラムを書く時、一度もエラーが出なくて、バグも出ないことなんて、年に一度もありません。たいていはどこか間違うものです。でもそんなのはすぐに直せます。そして誰もこれを問題だと思っていません。・・・もし仮に「オレは今まで一度もコンパイルエラーを出したことがないんだぜ、どうだすごいだろう」みたいな人がいたとしても、その人の作品が面白くなければ、それにいったいどんな価値があるでしょう。別に何回エラーを出してもいいんです。直せばいいんです。コンパイルエラーを何万回出しても、最終的にそれを全部直せるのなら、それで1点だって減点されるようなことはありません。プログラミングとはそういう世界なのです。最後に一度だけ成功すればそれでいいんです。それまでに何回失敗していてもいいんです。 -失敗しないように慎重にやる必要はありません。undoやredoを繰り返して、うまくできたやつだけを残せばいいんです。気軽にやればいいんです。そういう世界なんです。そういう世界もあるんです。・・・今はインターネットで検索するのがとても簡単になりました。だから調べるコストはかなり小さいです。それでも、調べる前にちょっとプログラムを書いて試してみることはできます。そのほうが簡単な時は、ぜひそうするべきです(特にいい検索キーワードを思いつけない場合とか)。正解を調べて探さなければいけないということはないのです。実験すればいいんです。そしてもし調べた内容と実験した内容で食い違いがあれば、正しいのは実験のほうなのです。論より証拠なのです。 -この価値観・考え方は、普通の小学生にはかなり驚きをあたえるはずです。大人たちからは間違えちゃいけないとか失敗しないためにああしろこうしろと言われているはずです。もちろん一度の失敗ですべてが台無しになる世界もあります。そういうところでは、失敗しないように注意を払うべきです。でもそれがすべてではないのです。自由に試行錯誤できて、何度失敗しても咎(とが)められない気楽な世界もあるのです。・・・これを理解できて、今は失敗してもいい時なのかどうかがわかるようになって、失敗してもいい時にたくさん挑戦して学べるようになってくれたら、成長速度はどれほど速くなるでしょう。私はこれこそが最も学ばせたいスキルだと思っています。 ** (6) Q&A -[Q]実際にやらせてみた時の様子がわかるような情報はありますか? --[A][[a21_edu11]]に我が家での例を書いてみました。 ** (7) 講師について -川合秀実(かわいひでみ)。 -1975年生まれ。サイボウズ・ラボ株式会社勤務。 -2002年度IPA未踏ユース。 -OSASK計画代表。 -「30日でできる!OS自作入門」著者。 -NICT SecHack365 講師(コースマスター・トレーナー)。
タイムスタンプを変更しない
* 初心者向けプログラミング体験ワークショップ#1 -(by [[K]], 2021.11.14) ** (0) -2021年12月18日(土)-19日(日)に「SECCON 2021 電脳会議」というオンラインイベントが開催予定になっています。 //--https://www.seccon.jp/2021/seccon/schedule.html --https://www.seccon.jp/2021/ep211218.html -その中で私(川合秀実)は、2021年12月19日(日) 15:50-17:20 の枠でワークショップをする予定です。 -このページは、私がそこでどんな内容のワークショップをやりたいと思っているのか、それを説明するためのものです。また参考になりそうな資料もすべてここからたどれるようにします。 -なお、このワークショップに参加するためには、12/14(火)17:00までに事前登録の必要があります。 -https://www.seccon.jp/2021/ep211218.html のずっと下のほうにある「D2-4」の説明の「こちらからご登録ください」をクリックして登録をお願いします。 ** (1) 目的・対象者 -このワークショップの目的は、小学生にプログラミングを体験してもらって楽しい気分を味わって、今後の学習のためのきっかけにしてもらうことです。 -しかし以下で説明する通り、(条件さえ合えば)中学生でも高校生でも大人でも楽しめる内容だと思います。だから対象は小学生限定ではありません。 -このワークショップでは、初心者に手取り足取りで教えるようなことはできないので、(特にPCの操作に自信のない方は)大人の支援者が必要です。・・・つまりは、小学生が保護者の方と一緒に参加するような形式を想定しています。 -なお、自分自身は初心者ではなく、またワークショップ中に初心者の支援をするわけではないけれど、しかしここを読んでいて、このワークショップの見学をしてみたいと思われましたら、その方の参加も可能です(見学参加)。 --私自身にとって、今回のやり方は初めての試みなので、うまくいくかどうかは正直未知数です。お見苦しいところがあったり、見学に耐えうるものにならない可能性もあります。どうかそれはご了承ください。 ** (2) 具体的には何をするワークショップなのか? -ワークショップの時間では、作品発表会を最後に行います。これは参加者が作ったものを発表する場です。基本的には、「今日のワークショップの時間で私は〇〇を作りました。こんな感じで動いています。ここのところが工夫したところです。ここが難しかったです。ここは自分ではできなかったので手伝ってもらいました。・・・面白かったので、続きをお父さんと一緒にやってみたいと思っています。」みたいな話を画面共有しながら話してもらいたいのです。1人当たり3~5分くらいでしょうか。 --そしてこの発表以外の時間は、私の冒頭の3分程度の導入部以外は、フリータイムです。その間に何か作っていただくことを想定していますが、休んでいただいてもかまいません。発表開始時間までに戻ってきてください。 -もちろん、「じゃあ発表会をするので何か作ってきてください」って丸投げするつもりはありませんのでご安心ください(笑)。 -こちらではとりあえず、10個くらいの小規模なサンプルプログラムを提供します。その中から面白いなと思えるものを1つ選んでいただいて、それを入力してみてください。もし作ったものがゲームであれば、是非それで遊んでみてください。もし時間があれば改造を試みてもいいです。たとえば点数をもっと多くするにはどこを改造したらいいでしょうか。きっと自分で入力したのなら、あたりを付けられるはずです。・・・これだけでもいろいろなプログラミングの要素を体験できていると私は考えます。初心者にとっては十分なはずです。 -もちろん参加者の中には、たどたどしいながらも自分でプログラムが組める人がいるかもしれません。それは素晴らしいことです。そういう人は、私の提供したサンプルなど気にせずに自分で作ったものを発表してかまいません。私としては、このワークショップでは参加者のレベルをそろえて共通のゴールを目指すのではなく、各自が各自なりに前進できる機会を提供することを目指しています。だからレベル感が不統一なのは問題ないと考えます。 -そもそも、ワークショップ時間まで待たなければいけない理由があるでしょうか。もしこの説明を読んで面白そうだと思えたら、今すぐにでも自分のペースで始めてしまっていいのです。ワークショップの時間までには、相当にたくさんのことができるでしょう。このワークショップの目的を考えたら、それは極めて素晴らしい成果です。その場合は、ワークショップ時間内にやったことに縛られることなく、「今日はこのワークショップが始まる前からやっていた〇〇について発表します。・・・」と切り出してください。 -またこのワークショップを知る前から自分はすでにいろいろ作っていたという人もいるかもしれません。それはさらに素晴らしいです。その成果を発表したければそれも歓迎します。その時は自分は今何歳で、プログラミング歴がどのくらいなのかも教えてください。そういう発表なら初心者の人も参考になります。そうか、〇〇歳の人が〇〇ヶ月くらいがんばるとあんなにすごいものができるのかーと。 -でも、「もう自分一人であれもこれもできる、もういろんなところで発表して活躍しているぜ!」みたいな人は、さすがに浮いてしまうかもしれないので、このワークショップでは発表はしないほうがいいかもしれません。私としては、まだ発表機会が少ないレベルの人に発表機会を提供して、それで楽しい気持ちになってもらうことを主目的にしているので、それをご理解いただいた上で判断いただけると幸いです。 -このような趣旨ですので、発表内容がどんなものであれ私はポジティブなコメントしか出しません。というかやったことがないことに挑戦してくれた時点で、たとえ少ししかできなくても、それは十分に称賛に価すると考えます。 --「成果が伴わなければ称賛されない」だと、やる前から「きっと大した成果は出せそうにないからやめておこう、失敗したら恥ずかしい」になってしまいます。成果の有無にかかわらず、努力が無条件に肯定される環境なら、「うまくできるかどうかは分からないけど、とりあえず一度やってみよう、たとえ失敗してもやった分だけほめられるしね」と思いやすいでしょう。自分にプログラミングの適性があるかどうかなんて、やってみなければ分からないですし、やってみるコストはかなり小さいのです。それならあれこれ考えるよりも、気軽にやってみるほうがいいに決まっています。 ** (3) サンプルプログラム //-(ここは11月末までに何度も更新して準備します・・・すみません、あと数日延長して頑張ります。) // //~ -''なでしこ編''(ブラウザだけで動くのでインストール不要でとてもお手軽!) --(プログラムが日本語で書かれると、あまり知識がなくても結構読める感じがします。・・・「ああ英語圏の人は一般的なプログラミング言語を使っても、こんな気分なのかー。それはすごく有利だろうなあ」と感じる体験ができます。) |http://k.osask.jp/files/20211219a_nade.pdf | 2018年に書いたテキストをとりあえず提供します。| |[[a21_edu08]]|坂道を走ってきれいな石を拾い集めるゲーム([[a21_edu02]])をなでしこ3に移植しました!| |[[a21_edu09]]|ハンバーガーキャッチ・ゲーム([[a21_edu03]])をなでしこ3に移植しました!| |[[a21_edu10]]|ジャンプ・ゲーム([[a21_edu04]])をなでしこ3に移植しました!| |https://news.mynavi.jp/techplus/series/nadeshiko/|(参考)なでしこの連載記事[外部リンク]| |https://n3s.nadesi.com/|(参考)なでしこ3貯蔵庫[外部リンク]| ~ -''C言語編''(私が自作したグラフィックライブラリを使ってミニゲームを作ります) |[[a21_edu02]]|坂道を走ってきれいな石を拾い集めるゲーム(25行)| |[[a21_edu03]]|ハンバーガーキャッチ・ゲーム(34行)| |[[a21_edu04]]|ジャンプ・ゲーム(33行)| |[[a21_edu05]]|タイピングゲーム(35行)| |[[a21_edu06]]|ロケット操縦ゲーム(39行)| |[[a21_edu07]]|ブロックくずし(49行)| ~ -''HLX編''(私が自作したBASIC風の言語を使ってミニゲームを作ります、Windows向け) --(本当はこれを一番にお勧めしたいところなのですが、しかしまだ言語が開発途上でエラー処理などが甘く、手放しではお勧めしかねる状況です。) --(既存言語はやっぱりさすがだよなと思います・・・。)(しかしとにかくうちの子供たちにはHLX編で挑戦させています。) |[[a21_edu02]]|坂道を走ってきれいな石を拾い集めるゲーム(20行)| |[[a21_edu03]]|ハンバーガーキャッチ・ゲーム(30行)| |[[a21_edu04]]|ジャンプ・ゲーム(29行)| |[[a21_edu05]]|タイピングゲーム(31行)| |[[a21_edu06]]|ロケット操縦ゲーム(34行)| |[[a21_edu07]]|ブロックくずし(44行)| ** (4) あえてプログラミングに限定しません -これはプログラミングのワークショップなのですが、しかし発表する作品がプログラミングによって作られたものではなくてもいいことにしたいと思っています。たとえばペイントソフトで描いた絵でもいいと思います。音楽ソフトで譜面を入力してみて演奏させた―でもいいと思います。・・・どうしてそう思うのかを説明します。 -私も10歳以下の小学生2人にプログラミングを教えてやろうと思っていろいろやってみているのですが、最初は良くても長続きさせることができません。結局、最初はできることが少なくて楽しめないからだと思います。ゲームでもなんでも無料の既成品がとてもよくできていて、それと比べたらつまらなくなるのは当然です。子供の視線を、それらから引き離す必要があると私は考えました。 -最近の私は子供たちがMSペイントの使い方を教えてみました。それまでの私はこんなのを教えたら座標を計算してプログラムで絵を描くのが面倒になって、もうプログラミングをしなくなるかもしれないと恐れて、あえて教えないできたのです。・・・教えてみたら、ものすごい食いつきでした。座標計算なんてしなくてよくなるし、コピー&ペーストもできちゃうし、undoもredoも完備されているのです。それはもう目を輝かせていろんな絵を描いていました。そして私は「これはよく描けているな」と感じたものをいくつか指さして、それをコピーさせてくれと頼みました。私は自分の基準で子供たちの作品を選んで、作品集を作ることにしたのです。 -子供たちは今まで「なぜ作らなければいけないのか?」という疑問をきっとなんとなく感じていただろうと思います。そう感じてしまったら、きっと一気につまらなくなったことでしょう。しかし私が傑作を集めて作品集を作ろうとしているのだと知れば、それは作る理由になりうるのです。どこかからダウンロードしたゲームは作品集には選ばれません。でもそれよりはるかに劣る自作のゲームは作品集に選ばれます。・・・こうして比較対象は見知らぬ誰かが作ったすごいものではなく、自分の過去の作品だけになりました。それなら「そんなのやるだけ無駄、どうせ勝ち目なんてない」とは思わなくなったのです。 -私はプログラムやCGだけではなく、小学校の図工の授業で作った作品(の写真)や、家で作った積み木やブロックの傑作(の写真)、自由帳に描いた絵(の写真)など、そういうものも作品集に加えることにしています。こうすることで、創作活動が全般的に評価されているとわかってもらえています。そういういろんな表現方法の中での比較なら、プログラミングは決して分の悪い表現手段ではないはずです。きっとちょくちょくやってみようという気を起こしてくれるでしょう。視野も広がるはずです。 -とまあそういうわけなので、プログラミングに限定せずに、何か良い作品があってそれを評価してほしいということであれば、ぜひそれを発表してください。あまりかけ離れているとさすがに理解されずに浮いてしまうかもしれないので、まあソフトウェアに関係がある範囲くらいで・・・。 ** (5) 私がプログラミング教育において最も大切だと感じていること -これは私の感覚ですが、世間で「プログラミング教育」というと「プログラミング的思考」ができるようにすることで、そのプログラミング的思考というのが何を指すのかというと、「何か複雑な処理をさせたいときに、それを小さくて簡単な処理の組み合わせに分解すること」みたいな説明がされているように思います。・・・これはもちろん重要なスキルですが、しかし私がプログラミングで習得してほしい最大のスキルはこれじゃない気がします。これは私にとっては(プログラミングを通じて学んでほしいことの中では)2番目か3番目くらいに習得してほしいスキルです。 -私が自分がプログラミングを通じて学んだことのうちで、一番有益だと思っていることは(=自分の子供にもまず第一に習得させたいと思っていることは)、何度失敗してもいい・むしろ失敗するほうが普通・最後に成功すればいい・調べる前に試していいんだ、ということです。これだけだと何を言っているのかよくわからないかもしれません。 -私たちがプログラムを書く時、一度もエラーが出なくて、バグも出ないことなんて、年に一度もありません。たいていはどこか間違うものです。でもそんなのはすぐに直せます。そして誰もこれを問題だと思っていません。・・・もし仮に「オレは今まで一度もコンパイルエラーを出したことがないんだぜ、どうだすごいだろう」みたいな人がいたとしても、その人の作品が面白くなければ、それにいったいどんな価値があるでしょう。別に何回エラーを出してもいいんです。直せばいいんです。コンパイルエラーを何万回出しても、最終的にそれを全部直せるのなら、それで1点だって減点されるようなことはありません。プログラミングとはそういう世界なのです。最後に一度だけ成功すればそれでいいんです。それまでに何回失敗していてもいいんです。 -失敗しないように慎重にやる必要はありません。undoやredoを繰り返して、うまくできたやつだけを残せばいいんです。気軽にやればいいんです。そういう世界なんです。そういう世界もあるんです。・・・今はインターネットで検索するのがとても簡単になりました。だから調べるコストはかなり小さいです。それでも、調べる前にちょっとプログラムを書いて試してみることはできます。そのほうが簡単な時は、ぜひそうするべきです(特にいい検索キーワードを思いつけない場合とか)。正解を調べて探さなければいけないということはないのです。実験すればいいんです。そしてもし調べた内容と実験した内容で食い違いがあれば、正しいのは実験のほうなのです。論より証拠なのです。 -この価値観・考え方は、普通の小学生にはかなり驚きをあたえるはずです。大人たちからは間違えちゃいけないとか失敗しないためにああしろこうしろと言われているはずです。もちろん一度の失敗ですべてが台無しになる世界もあります。そういうところでは、失敗しないように注意を払うべきです。でもそれがすべてではないのです。自由に試行錯誤できて、何度失敗しても咎(とが)められない気楽な世界もあるのです。・・・これを理解できて、今は失敗してもいい時なのかどうかがわかるようになって、失敗してもいい時にたくさん挑戦して学べるようになってくれたら、成長速度はどれほど速くなるでしょう。私はこれこそが最も学ばせたいスキルだと思っています。 ** (6) Q&A -[Q]実際にやらせてみた時の様子がわかるような情報はありますか? --[A][[a21_edu11]]に我が家での例を書いてみました。 ** (7) 講師について -川合秀実(かわいひでみ)。 -1975年生まれ。サイボウズ・ラボ株式会社勤務。 -2002年度IPA未踏ユース。 -OSASK計画代表。 -「30日でできる!OS自作入門」著者。 -NICT SecHack365 講師(コースマスター・トレーナー)。
テキスト整形のルールを表示する