ウェブ技術が好きjavascriptやcssやHTML5とかサーバーサイド等のウェブ技術全般を好きに書くブログこの広告は、90日以上更新していないブログに表示しています。ruby転職サイトのpaizaはお題に合わせてコードを書けるから楽しいですよね。下のランク(D)から上のランク(S)までなるほどと頭を使う問題がバランスよく揃っていて、採用側の機能は使った事ないですが書いたコードも見れるようなので即興のコードを見てもらうにはぴったりなサービスかなと思います。前にRubyを使ってSランクを取ったので、そこで気づいた"コツ"を紹介していきます。入出力を揃えるDランクからC、Bと進む中で入出力ルールがほぼ同じ事に気が付くと思います。そのため標準入力から読み取る部分、コードの最後で出力する部分を揃えます。ストリーミングで処理が必要な問題は少なかった気がするので、ドカンとデータを読み込んで配列やマップに格納。処理した結果データが格納されている配列やマップをドカンと出力する形に統一されて行きました。ローカル環境で単体テストは必須paizaの環境内(ブラウザ内)で簡単なテストができます。最初はこれだけで十分かな?と思うのですが、いざ実行結果を見るとボロボロだったりします。制限時間30分、60分の中でもpaizaが準備してくれているテストケースをパスする単体テスト、またそこから5~10パターンぐらいの単体テストデータと期待値を準備してローカル環境で単体テストを実行するのが大切でした。最小最大の境界値テスト、何も行われない場合のテスト、null/nilが発生しそうなテスト、などお約束のパターンに対応するだけで点数が格段に上がると思います。イレギュラーな入力値でテスト自分だけかも知れませんが、大丈夫だろうと思っていたコードでもRuntimeエラーが意外と多く発生しました。ローカル環境で単体テストは必須」に合わせて不正な値の入力、また不正な値が出力を検出できるようにテストするとRuntimeエラーの発生を抑えられます。手っ取り早く言うとポストコンディション、プレコンディションのアサーションですね。下のランクから初めて問題の意味に慣れていく上のランクの問題数が少ないからという事もあるのですが、問題の形式に慣れて時間を短縮するのが重要だと感じます。最初の3問目ぐらいまでは「んんんん?」と問題の意図をどう解釈すれば良いのか悩む事になると思いますので、間違いながら慣れましょう。数問を解いていく中で次第に分かってきます。焦って/慌てて解答しない解答までの時間によって点数が異なってくるのと、また問題の平均スコアに平均解答時間が書いているため、この時間を超えたらダメなんじゃないかと焦ったり、十分なテストを行っていないと分かっているのに「まあ大丈夫でしょ」と解答を投稿してしまいたくなります。時間の制約があるので残り10分とかになると焦るんですよね。テストが足りてないなと思うコードは、やっぱりエラーが起こります。時間をかけて、自分で納得できるだけのテストコードをパスした状態のコードを提出した方が良い点数になります。まとめ、コーディングとテストpaizaはテストコードをパスする事で点数が加算されます。そのためテストコードを書かない人や、事前にテストをする習慣のなくエラーがあれば直せば良いと考えるタイプは点数が高くなりづらそうです。問題を解けるだけのプログラミングスキルがある前提という話ではありますが、そこから先はどこまで問題を理解して単体テストを出来るかで高い点数が取れると思います。