iPX社員によるブログ

iPX社員が"社の動向"から"自身の知見や趣味"、"セミナーなどのおすすめ情報"に至るまで幅広い話題を投下していくブログ。社の雰囲気を感じ取っていただけたら幸いです。

Codewarsのススメ

こんにちは、wadaです。

最近、社内でもプログラミング初学者の人も増えているし、熟練者も引き出しを増やす意味も兼ねて社内でCodewarsやってみない? などと、声掛けなどして社内への布教に努めてみました。

今回はCodewarsを紹介していこうと思います。

そもそもCodewarsとはなんぞや?

一言で言うとWeb上でプログラミングを勉強する場です。

トップページに「Improve your skills by training with others on real code challenges」とあるように、 他の人と実際のコードを用いて学習をする事でスキルを磨こうと言うコンセプトで行われています。

現在Codewarsには4000題以上の問題が用意されています。 また、多数の言語に対応しており、PythonC++などだけではなく、HaskellやRustなど様々な言語を学ぶことが出来ます。

所謂、競技プログラミングの問題を解いていくのですが、用意された問題をただ解いていくのではなく、 他のユーザが出題した問題を答える事が出来、他の人の回答の中からユーザ投票で選ばれたベストプラクティスなども見る事が出来るのが特徴です。

f:id:ipx-writer:20200309174908p:plain
とある問題の回答例

自分が書いたコードは、他の人はどんな風に書くかと言う事を知るのは、プログラミングの上達の上で非常に有用な事です。

Codewars のはじめかた

ざっくりとCodewarsのはじめかたを紹介していこうと思います。

  1. 以下のURLにアクセスします。
    https://www.codewars.com/

  2. SIGN UPボタンを押します。
    f:id:ipx-writer:20200309180531p:plain

  3. 言語選択画面になるので、好きな言語を選びます。 (今回は例としてPython)
    f:id:ipx-writer:20200309180729p:plain

  4. 『このコードなんか動かないんだけど!』と、言われるんで表示されているコードを修正しSUBMITボタンを押します。
    f:id:ipx-writer:20200309180846p:plain

  5. あとは必要事項を入力すれば登録完了です。
    f:id:ipx-writer:20200309181215p:plain

登録前に手始めに1問解かせるのはオシャレな感じですね。

Kataを解こう

Codewarsでは、プログラミングの問題の事を『Kata』と表現しています。 その他、他の人と競い合う『Kumite』なども存在しています。

  1. ログインすると表示されるダッシュボード画面の左端にマウスのカーソルを持っていくと、図のようなメニューが出てくるので「Kata」を選択します。
    f:id:ipx-writer:20200309181757p:plain

  2. Kataの一覧が表示されるので、左側の検索条件を入力します。
    f:id:ipx-writer:20200309181917p:plain

  3. 難易度は『Kyu』で表現されているので、手始めに一番簡単な『8Kyu』を選択すると、一覧に8Kyuの問題ばかりが表示されます。
    f:id:ipx-writer:20200309182055p:plain

  4. 右側のアイコンリストから、自分の学習したい言語のアイコンを選択する事で問題を解くことが出来ます。
    f:id:ipx-writer:20200309182320p:plain

  5. 問題を解く画面は大まかに分けて、左側にある問題文を、右下のテストコードが通るように、右上にソースコードを入力する流れになります。 問題を解き終わったら、右下のTESTボタンを押してチェックしてから、書いたコードを提出します。
    f:id:ipx-writer:20200309182739p:plain

  6. 解き終わったら、他の人の回答を見る事が出来ます。 自分とは違う書き方を見つけたら、チェックしておくといい勉強になります。
    f:id:ipx-writer:20200309183334p:plain

まとめ

プログラミング上達の上で、他人とのコードの比較は非常に役に立つトレーニング法です。 毎日1~2題でも良いので、継続的にKataを解いていく事で、プログラミングの地力を向上させる事が出来るでしょう。

特に初学者に関しては、1にも2にも手を動かした方が勝ちです。 積極的に問題を解いていきましょう。

皆さん、良いプログラミングライフを!