CheckiOというプログラミング学習サービス
こんにちは、akippaの山下です。今回は、CheckiO という海外のプログラミング学習サービスをご紹介したいと思います。
数あるプログラミング学習サービスの中でも非常に良いサービスだと思うのですが、あまり知られていないようなので、プログラミングの学習教材や方法を探している方の参考になれば幸いです。
CheckiOとは?
よくあるプログラミング学習サービスで、概要は以下のとおりです。
対象言語はPythonとTypeScript
登録・利用ともに無料
海外のサービスなので問題は原則英語です
一部は日本語にも翻訳されています
かつてはPython一択で、アカウント登録時に簡単なコード問題を解く必要がある、というなかなかハードコアなサービスでした。今はカジュアルにアカウント登録できるようになっており、ハードルは下がっています。
お勧めできるポイント
プログラミング学習サービスは、時代や情勢も相俟って数多くありますが、その中でもCheckiOがお勧めできる点を挙げていきます。
時間制限が無い
個人的にはこれが一番嬉しい点です。
お題をクリアしていくタイプのサービスは他にもありますが、多くは「制限時間内の解答」が求められます。(サービスによっては解答が一度きり、もありますね)
限られた時間内に条件を満たすロジックを考える、というのは良い訓練になるものの、もうちょっとゆるふわ感覚で学習したいというケースではなかなかにハードルが高いです。
CheckiOの問題は、制限時間が無く解答も何度でも出来るため、納得いくまでトライ&エラーを繰り返すことができ、「学習」にはピッタリだと思います。
正解すると他の人の解答を閲覧できる
これも嬉しいポイントです。
問題をクリアするには解答コードを書き、そのコードが問題ごとに用意されている大量のテストケースをすべてパスする必要があります。エッジケースもしっかりカバーできていれば無事クリアですが、クリアすると「同じ問題を他の人はどんなコードで解いたか?」が閲覧できるようになります。
自分のコードと第三者のコードを比較することで、問題に対する異なるアプローチ方法や知らなかった記法など、勉強になる点がとても多いです。後述しますがCheckiOには「レベル」の概念もあるので、高レベルな人の解答はやはりエレガントなコードになっているケースが多いと思っています。
ただ、いわゆる コードゴルフ を狙っている解答もあったりするので、そこは注意が必要です。そういった意味では「エレガントとは?」という審美眼を養う場にもなりそうですね。
心が折れにくい工夫がある
先述したとおり、CheckiOには「レベル」という概念があります。
CheckiO内には様々なフィールド(?)があり、フィールド内の各問題をクリアしていくとレベルが上がるシステムです。最初は当然レベル1なのですが、この時点ではアクセスできるフィールドが限られています。
問題を次々にクリアしてレベルアップ、アクセスできるフィールドが増えるのでさらに新たな問題にチャレンジしていく、というクエスト感満載のサービスなので、学習に一番大切な「やる気」が削がれにくいという工夫を感じられます。
自分の得手不得手を把握しやすい
CheckiOの問題は、プログラミングで必要とされる基礎的なアルゴリズムを活用するものがほとんどで、これらが各フィールドへ良い感じに散りばめられています。
スコアや解答状況を見れば、自分自身がどういった分野に強くてどういった分野は苦手なのか?がハッキリ分かるので、苦手分野を補強する・得意分野をさらに伸ばすといった学習アプローチを考える参考になります。
また、各問題はジャンルでカテゴライズされているだけでなく「難易度」も設定されています。得意分野だと思っていても難易度が高いと手も足も出なかったり、苦手分野でも難易度が低いと何とかクリアできたりと、これも継続して続けやすい工夫だなと感心してしまいます。
何はともあれやってみよう
さも自分がバンバン問題を解いて高レベルに達しているかのように書いてきましたが、文系出身・Web系でウェイウェイやってきた身ですので、数学系の問題は難易度が低くても悪戦苦闘です。(経路最適化とか、ウッ頭痛が痛い…レベル)
テキスト処理系の問題は、Webだと頻出なので比較的解きやすいのですが、それでも難易度が上がるとエッジケースで引っかかたりして、まだまだ精進が足りないと思い知らされます。
また、これも非常にうまく設計してあるなと思うのですが、難易度の高い問題ほどクリア時の得点が高く、一定のレベルに達すると低難易度の問題をいくら解いても次のレベルへなかなか上がれない(=新しいフィールドが開放されない)ようになっています。
一時期やりこんでしばらく放置していたのを最近再開したのですが、現時点では「レベル16」で止まってしまっています。。。出題者にはレベル30〜40overがゴロゴロしているので、そういう人たちに少しでも近づきたいですね。
これからプログラミングを学ぶ、という方には正直ハードルが高めのサービスですが、以下のような方にはお勧めできるサービスですので、興味があれば是非利用してみてください。
プログラミングの基本は学んだので、次のステップとして何かチャレンジしてみたい
他言語の経験があるので、Python/TypeScriptも学んでみたい
文字ばかりの記事になってしまったので、最後に実際のCheckiO画面のキャプチャを貼っておきます。
この記事が気に入ったらサポートをしてみませんか?