HackerRankを利用してpythonの勉強をしています。
全115問中半分問題を解いたところです。
HackerRankでの勉強がためになると感じているので紹介しようと思います。
HackerRankとは?
HackerRank(ハッカーランク)とは、プログラミングの問題を解くことができるサイトです。
全て無料です。
https://www.hackerrank.com/
高ランクになると企業からオファーが来るらしいです。
用意されている問題は下記の通りです。私はPythonを受けています。
HackerRankで認定試験もやっています。以下の種類があります。腕試しに良さそうです。
HackerRankの特徴
特徴についてまとまっている記事があったので引用します。
・サイトは全て英語
・質問ができる
・全世界のエンジニアに利用されている
・コーディングテスト対策ができる
・HackerRank上で転職活動ができる
・他人のコードをみて勉強ができる
・コードに関して解答方法を勉強できる
・プログラミングコンテストに参加できる
HackerRankとは?使い方や評判、コーディング面接対策での使い方をまとめました。より引用
HackerRankの利用方法
こんな感じで英語で問題文が提示されます。
プログラムを書く場所は以下な感じです。「Run Code」を押すとテストが「Submit Code」を押すとコードの提出がされます。
コードを書くエディタはこのようにメソッドなどの説明機能もあるので普通の統合開発環境でコーディングしている感覚で書けます。
「Run Code」のテストですが、あらかじめ決まった入力に対してテストされます。しかし、自分でテスト文字列を設定したいときもありますよね。下記のチェックボックスにチェックを付けるとテスト文字列を設定することができるようになります。
「Submit Code」を押してコードを提出すると複数のテストケースが走り全てOKだとこのように表示され、スコアを取得できます。一つでもテストケースでエラーになると低いスコアしか貰えません。
私は解き終わった後に見ているのですが、「Discussions」という議論する場があります。
ここでは私はこう解いた、俺はこう解いたと、世界中のエンジニアが素晴らしいコードを紹介しています。画像のように自分もコメントを打てるようなのですが、私は打ったことはないのでその機能はよく分かりません。
HackerRankを利用した感想
HackerRankは、「採用」+「プログラミングの学習」+「プログラミングコンテスト」の要素で構成されていると思います。
「採用」はトップランカーのみお声がかかるという話で、加えてかかっても海外企業だと思うので私は余り重視していません。極めて海外企業からのオファーが欲しいという方は挑戦してみてもいいのではないでしょうか?
「プログラミングコンテスト」は「Discussions」が「プログラミングコンテスト」の部分なのかなと思います。サービスのリリースが2012年で各問題がリリースされたのが何年かはわかりませんが私が解いているpythonは「Discussions」を見るとほぼ全ての解法が出揃っている感じがします。なので、プログラミングコンテストを期待して利用すると少しガッカリするかもしれません。
「プログラミング学習」。プログラミング学習のみを目的としたサイトは数多くあります。そういったサイトの方が解説が多かったりして分かりやすく学習しやすいと思います。一つのサイトで学習を完結させたいと考える場合はHackerRankは向かないと思います。
ですが、HackerRankの良いところは「プログラミングコンテスト」の側面があり「Discussions」を見ると世界レベルのトップ解答が見れることです。
この1点のみで私はHackerRankでの学習に意味があると感じています。
私はプログラミングの経験はあるがpythonは勉強したてという状態でHackerRankをやり始めました。pythonでは1行でコードを書くための色々な仕組みがあると思うのですが、私はいまいち分からず他言語で書くように書いていました。
HackerRankで学習しトップレベルの解答で勉強する内に、あーそうやって使えばいいんだ。とかその関数使うとスッキリ書けるのかとか色々な気づきがあり、学んでいる内に自然と自分も短い行数でコードが書けるようになってきました。自分が書いたコードがトップレベルの解答と同じだったときは達成感があります。
他にもHackerRankでは学習レベルを表したバッチや順位を表したRankなどがあり、バッチを獲得する、Rankを上げるというのもモチベーションを上げるのに役立ちます。
逆に私が感じたHackerRankが辛い点ですが3点あります。
1点目は英語です。HackerRankは全て英語です。私は英語が大の苦手なので辛いです。問題文を読むときブラウザの翻訳機能で翻訳しても一部翻訳されない部分があり辛いです。ただ、問題文には例題として入力と出力が例示されるので、それを見ればなんとかなるといった感じです。
2点目は数学です。HackerRankのpythonの問題では極稀に数学の問題が出されることがあります。数学はもうかなり忘れているので辛いです。やらなければいい話なのですが、私は全問解くのを目標にしているので避けれないといった感じです。
3点目はコードを提出したときにエラーが出た場合です。HackerRankではコード提出すると複数のテストケースで合っているか確認されるのですが、そこでエラーが出た場合、「結果が間違っている」 or 「実行時間がかかり過ぎ」のどちらかが表示されるのみで、エラーの詳細はわかりません。どの入力に対してエラーが出たのかも分からないので、修正するためには問題文を読み返しなぜ間違えているのか推測しなければならないというのが辛いです。特に「実行時間がかかり過ぎ」というエラーはアルゴリズムの修正をしなければならなかったりするので修正が大変で結構辛いです。
ただし、追い詰められたら「Discussions」を見ればいいので精神的には楽です。できるだけ自力で解きたいので大変といった感じです。
まとめ
HackerRankでの学習は、世界レベルのコードを見て勉強したいという方に向いていると思います。
気になったらHackerRankやってみませんか?