CheckiO (https://checkio.org/) というプログラマ向けの学習サイトがあります。対応言語は Python と JavaScript です。私は5年前くらいに登録して細々と遊んでいますが、最初はただひたすら問題を解くだけの学習サイトだったのが、ここしばらくでアウトプットを促進する仕組みが導入され、アウトプットを通して学習する背中を押してくれるすばらしいサイトになってきたので改めて紹介します。
遊び方の基本
マップ上から課題を選択し、問題文を読んで "Solve it" をクリックするとブラウザ上のコードエディタが起動し、未実装の関数とそのテストコードが入ったソースが与えられます。 "Run" をクリックするとソース中のテストコードの成否が見れるので、まずはそれらを通るように関数を実装していき、通ったら "Check" をクリックすると追加のテストが実行されてそれもパスすると課題クリアとなり、ポイントを得られます。
ポイントが貯まるとプロフィールのところに表示されているレベルが上がるのと、課題を解けば解くほどロックされていた課題がオープンされ、それまで挑戦できなかったさらなる課題に挑戦していける、というのが基本的な遊び方です。
Publish your solution
課題を解いたときに、上のような表示になり、ここで "Publish your solution" をクリックすると CheckiO 上でその課題を解いた他のユーザー向けに自分の解答が公開され、自身のポイントが加算されます。
自分の解答を公開する動機としては
- 素晴らしい解き方を見付けたので他の人に見てもらいたい
- 単にポイント稼ぎのため
などあると思いますが、公開した解答にいいねがつくと解答一覧で上の方に出るので、いい解答を参考にしようとするさらに多くの人に見てもらえる機会が増えるのが1のユーザー層へのさらなるインセンティブ、いいねに対してポイントがもらえるのが2のユーザー層へのさらなるインセンティブとして働くようになっています。
そんな中、自分の書いた解答なんかつまらないものだからと、公開をスキップしてる人もたくさん居るのではないかと思います。でもつまらなくてもいいんです!ぜひ公開しましょう。理由は次に述べます。
Quests and Random Review
クエストという機能があります。週替わりでメタ課題的なもの、例えば一週間のうちにポイントを特定数貯めるとか、他の人が公開した解答にいいねを付ける等が与えらます。それをクリアすることでクエストポイントが得られ、そのポイントを使ってロックされている課題をオープンできたりします。
クエストの中で素晴らしいと僕が思うのは、ランダムレビューでコメントを書けというクエストです。ランダムレビューというのは、解答一覧のランキングされた中から選ぶのではなく、無作為に選ばれた他の人の解答が順に表示されそれをレビューするというもので、必ずしもランキング上位の素晴らしい解答ではなく、いろんな解答を目にしてコメントすることになります。
ランダムレビュー自体は上で貼り付けた課題クリア時の画像にあるように通常でも使える機能(むしろ課題解いてすぐには解答一覧は見れなくて、ランダムレビューしかできないようになっている)ですが、クエストポイントという人参が目の前にぶら下がっているので、よりしっかり見てコメントしようという気になります。実際私もクエストクリアのためにコメント書きました。
逆に解答を公開する側の立場では、自分がつまらないと思っている解答でも、すごい人が見てくれていいコメントしてくれたり、いいねを付けてもらえたりといったことが稀によく発生していて、誰かが自分のコードを見てくれたと認知することでやる気が増してさらに学ぶ後押しになっています。
アウトプットして学ぼう
CheckiOではただ問題を解くだけではなく
- 自分の解答を公開する
- 他の人の解答にいいねする
- 他の人の解答にコメントする
というアウトプットの仕組みがありそれらを活用すると学びの効果を高めてくれます。一緒にコーディングを学びましょう!