はじめに

今回は、プログラミングを学ぶのに良いWebアプリケーションをご紹介します。
その名も、Codewars。

Codewars
Codewars
https://www.codewars.com/a
Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

英語サイトなのに「Kata(型)」とか「Kumite(組手)」とか
なんだかほんのり日本推しの不思議なサイトです。

まったくのプログラミング初心者向けというよりは、
プログラミング学びたての新卒向けかなと思います。
(まだ入ったばかりだと思いますが)今年の新入社員のエンジニアの方におすすめです。

始め方

https://www.codewars.comにアクセスすると、
まずは最初にプログラミング言語の選択を求められます。
私はSwiftを選択しましたが、
JavaでもPythonでもJavascriptでも、なんでも「ちょっとはかじったことある言語」を選んでみるといいと思います。

するとこんな感じで、1問簡単な問題が出てきます。

この場合は、 a * b の前に return と入力すればOKです。

そしてSubmitを押下すると、正解の場合は緑色の文字でSuccess的な表示が一瞬出て、
ユーザー登録の画面に遷移します。
Githubのアカウントを持っている人は、それを利用することも可能です。

登録後、プログラム経験レベルとプログラム言語を選択します。
プログラム言語はあとからでも追加できます。

ユーザ登録が完了すると、Codewarsのダッシュボードに遷移します。



Kata(型)

下は8kyu(8級)から上は1kyu(1級)までのランクに分かれた問題を解くことができます。
解けた問題数に応じて自分自身の級も上がっていきます。
私もまだ7kyuで全然やり込めていないので、上がっていくとどうなるのかはわかっていません><
基本的にはこのKataというのをやりこんでいくと、
より効率的で美しいコーディングができるようになるのではと思います。

問題

たとえばある7kyuの問題はこんな感じです。
数字を逆から並び替えられればOKです。

回答を入力して結果を確かめたい場合は、RUN SAMPLE TESTSを押下します。
間違えた答えを入力した場合はこのように、Passed: 0 Failed: 2と出てきます。
実行されているのは右下のコードで、期待値と実際の結果がどのように違うかが左側に表示されます。

正しく回答できるとこのように表示されます。
(コーディングがあれでお恥ずかしい限りなのですが…)

そして、SubmitFinalというボタンを押すと…(上の写真では隠れてしまっていますが;)

クリア!
下の方に、他の人の回答が表示されています。

私の回答

func descendingOrder(of number: Int) -> Int {
  var numList = "\(number)".characters.flatMap { Int("\($0)") }
  numList.sort(by: {$0 > $1})  
  var returnStr = ""
  for num in numList {
    returnStr += String(num)
  }
  return Int(returnStr)!
}

Best Practiceの方の回答

func descendingOrder(of number: Int) -> Int {
  return Int(String("\(number)".characters.sorted(by: >)))!
}

レベルの差が歴然…。
こんなに簡単に回答できたんだなあ…というか1行…と驚くばかりです;;
他の方の回答を見て、より良いソリューションを考えられるのがこのCodewarの一番良いところかなと思います。

Kumite(組手)

こちらは私はまだやったことがないのであまり良くわかっていません…
問題(つまりKata)を作るのでしょうか…?

終わりに

プログラミング初学者にとっては難しい問題もあるかもしれませんが、
少なくとも8kyuだったら解ける問題はあるはずです!
また1〜2年目の人、またそれ以上の歴のある人にとってもなかなかおもしろいと思います。
是非一度お試しください♪

スポンサーリンク