こんにちは。サーバサイドエンジニアの藤原です。
2020年度から小学校でプログラミングが必修科目になるそうです。もう来年なんですね。
お子さんのプログラミング教育に力を入れていきたい!というお父さんお母さんも多いのではないでしょうか。
ただ、いきなりプログラミングをやってもらおうと思っても「型とは・・・」「変数とは・・・」「関数とは・・・」みたいなところから入ると、子供達は「難しい。。」「楽しくない。。」と感じてしまうかもしれません。
そこで、「まずはプログラミングの楽しさを知ってもらいたい!」そんな思いを叶えてくれるサービスを見つけましたので今回ご紹介したいと思います。
そのサービスでは、Go言語のマスコットGopherくんが活躍します。
go gophers by Renee French | CC BY 3.0
このビジュアルで子供達のハートを掴んでくれること間違いなしです。
Gopherくんがお絵描き
今回ご紹介するのは、go.playspace というサービスです。
コマンドを記述するとGopherくんがその通りに動いてお絵描きしてくれます。
実際にサイトへ行って動かしてみましょう!
goplay.space
Runボタンをクリックすると始まります。
いかかでしょうか。子供達食いつきそうですよね?
大人が見ても楽しいです☺️
Gopherくんのコマンド
コマンドは非常に簡単です。使うのは主に以下の6種類のコマンドです。
# | コマンド | 内容 |
---|---|---|
1 | draw mode | 開始のおまじない |
2 | color <色> | 色指定(例:black、red、blue)、offで透明 |
3 | forward <距離> | まっすぐ進む |
4 | right <角度> | 右回りに回る |
5 | left <角度> | 左回りに回る |
6 | say <メッセージ> | Gopherくんがメッセージを表示する |
Gopherくんがお絵描き中に
Shift
でGopherくんの動きが早くなります。
Tab
でGopherくんが次の場所まで瞬間移動します。
シンプルな実装例
fmt.Println
の中にコマンドを順次記述していくだけです。
これなら小学生の低学年でもできそうです。
func main() { fmt.Println(` draw mode color blue forward 5 right 30 color red forward 5 left 150 color green forward 5 say Hello `) }
関数やループを使う実装例
シンプルな例に慣れてきたら関数やループを使ってより複雑な描画をすることも可能です。
func main() { fmt.Println("draw mode") colors := []string{"black", "blue", "red", "green", "yellow"} colorNum := len(colors) for i := 0; i < 100; i++ { turn() color := colors[i%colorNum] drawLine(color) } } func turn() { fmt.Println("right 15") } func drawLine(color string) { fmt.Printf("color %s\n", color) fmt.Println("forward 2") }
プログラミングっぽくなってきましたね。
幾何学模様を描く
アンモナイト風な幾何学模様も描けちゃいます。 幾何学模様-スパイラルの実装サンプル
歴史
この分野のプログラミングの仕組みは古くからあり、1960年代のLOGO言語のタートルグラフィックスというのが元にあるようです。 ja.wikipedia.org まだ表現できる性能のディスプレイが存在しない時代からこのような研究がされていたのは驚きです。
Gopherくん文字を描く
さて、せっかくなので私もこの仕組みを使い何か作りたいと思います!
思いついたのは、Gopherくんに文字を描いてもらうことです。
ということで文字列をGopherくんへのコマンドへ翻訳してくれるツールを作ってみました。 github.com
早速このツールで生成したコマンドを Gopherくんへ渡してみたいと思います。
まずはアルファベット
漢字もいけます!
こんな複雑な漢字も
こんな漢字見たことない
こんな漢字見たことない 2回目
まとめ
Go言語は2018年プログラミング別年収ランキングで1位だったそうです😮 codezine.jp
早くからお子さんにGo言語の英才教育をするのも、お子さんの幸せに繋がるかもしれません。
(お金=幸せ という訳でもないでしょうが、幸せを構成する要素の一つではあるかと思います🍀)
HRBrainではそんなGo言語などを使って一緒にサービスを作っていく仲間を募集しています。
パパママ世代も活躍していますので、是非ご連絡ください。