子ども向け競技プログラミング(の練習)サイトを作った/node.jsとかherokuとか

先日、小学生でもできる競技プログラミング(の練習)サイトを作りました。

「(の練習)」というのは、時間を計測したりコンペをしたりする機能が無くて、ただただ「クリア」か「不正解」が表示されるだけだからです。

https://www.algoQ.jp/

特徴としては、

  • 全部フリガナふってあること
  • Blocklyで組める(キーボード打てなくてもOK)

の2点です。

なぜ作ったのか

プログラミングとか好きだけど、漢字は苦手っていうお子さんが結構多いって知ってましたか? それは勿体ないですよね。

タイピングも手が小さいうちは頑張る意味も無いんで、考える力さえ伸ばせれば、別にマウスで良いでしょうってことで、Blocklyにしました。

Scratchが何となく分かる小学生が、アルゴリズム研究が趣味になるレベルまでステップアップ出来たら良いなぁと思っています。

課題など

まだ小学生2人くらいでベータテストをしている段階なのですが、問題を作るのが結構難しいということが分かりました。

問題1個を作る事はそれほどでもないのですが、段階を踏んで問題を難しくしていくっていうのをデザインするのが難しい。

僕にはもう見えなくなっている段差で、子どもたちは躓いてしまいます。

そういうギャップをユーザテストで一個ずつ拾いながら、それを乗り越える理解を促す問題を作るというのが、難しいのです。

まぁでもせっかく作ったし、CoderDojoにでも無料で開放するというのも良いかなと思っています。

技術的(?)な学び(?)

今回のアプリは、node.jsで初めて作ったアプリケーションでした。

Blocklyはちょっと調べたことがあったのと、似たような(Java, SQLの)演習システムをJavaで作ったことがあったので、設計はさくっと終わって、ほぼコード書くのだけで24時間くらいかかったと思います。

node.jsは公開されてから10年近く経ちますが、良い感じに枯れつつ、エコシステムも充実していて、素晴らしいなと思いました。

後で知ったのですが、わりと最近までasync, awaitを使えなくてバックエンド処理を書くのが煩雑だったようですね。そういう意味でも良いタイミングで触れて良かった。

それから、このアプリはherokuでホスティングしていますが、herokuも今回はじめて使いました。こちらは公開から10年以上たってますね。Ruby専用だと思ってましたがnode.jsも簡単にホスティングできて、PaaSだから誰も使わないときは勝手に止まってくれて安くて良いです。Ruby業界の人達がherokuheroku言ってた意味が良く分かりました。

今回は記事の最初にはった紹介ムービーも自分で作りました。実際に触らなくても雰囲気が分かってもらえるので便利ですね。

BGMは、音楽素材を売っているサイト(名前忘れました)から数百円とかで購入しました。ストック写真は使った事あったけど音楽も良いですね。動画作るには必須な感じです。

どんどん便利になるなー。