
みなさんは「コーディングテスト」について知っていますか。
コーディングテストとは、簡単に言うとITエンジニアの採用選考で実施されるプログラミング問題を解く形式のテストです。ITエンジニアを目指す就活生や未経験者はもちろん、転職を目指すエンジニア経験者にも面接前のコーディングテスト対策は欠かせません。
コーディングテストはとくに指定がなければ、ふだんから使い慣れた言語で受けるのが一番です。ただ「これから勉強を始める」「どの言語を使えばよいのかわからない」という方には、Pythonがオススメです。Pythonは構文が比較的短くてわかりやすく書きやすいため、初心者でもプログラミング問題を解く際に使いやすい言語だと言えます。
この記事では、コーディングテストで企業が重視している点や、初心者がPythonを使ってコーディングテスト対策をする際に使える4つのサイトをご紹介します。
【目次】
- コーディングテストとは
- コーディングテストでPythonを使うメリット
- Pythonのコーディングテストで評価されるポイント
- 今から始められるPythonのコーディングテスト対策
- Pythonで出題されるコーディングテストの例題
- Pythonのコーディング対策ができるサイト
- 面接を受ける前にコーディングテスト対策をしておこう
コーディングテストとは
一般に、エンジニアの採用選考で実施されるプログラミング問題のテストが「コーディングテスト」(もしくは技術面接、コーディング試験など)と呼ばれています。コーディングテストには
- オンラインテスト
- ペーパーテスト
- ホワイトボードにコードを書く
などといった実施形式がありますが、最近はオンラインテストが中心となっています。
なおコーディングテストは、問題を解いたらそれで終わりではありません。その後の面接では「なぜこのような書き方をしたのか」「問題をどのような手順で解決していったか」などの質問をされ、自分のコードに関する説明を求められます。
コーディングテストでPythonを使うメリット
すでに使い慣れた言語や勉強している言語があればそれを使うのが一番ですが、前述の通りPythonはコーディングテストに適した言語です。Pythonはプログラミング言語の中でも比較的構文が短く、初心者でも直感的にわかりやすく書きやすい言語です。コーディングテストには制限時間があり、素早くコードを書く必要があるため、コードが書きやすい上に短くて済むPythonは適していると言えるでしょう。
Pythonのコーディングテストで評価されるポイント
採用企業は、コーディングテストを通じて応募者の以下のスキルを見ています。コードの書き方や考え方
たとえばコードが読みやすいか、適切な書き方ができているか、必要な箇所にはコメントがついているかなどが見られます。エンジニアの仕事のメインはコードを書くことですから、そのコードの品質はとくに重視されるでしょう。
問題解決能力・アルゴリズムの知識
コーディングテストでは、問題を解いたあとに(もしくは解きながら)コードの意図やロジックの説明を求められます。その際は与えられた問題をどのように分解して解決策を考えたか、アルゴリズムの知識を持った上で最適なアルゴリズムを選択できているかなどが見られます。
コミュニケーション力・説明力
説明の際には、コミュニケーション力も見られています。エンジニアの仕事では、自分が書いたコードの説明や情報共有、議論などが頻繁に発生します。そのため書いたコードの内容だけでなく、建設的なコミュニケーションや論理的な説明ができるかどうかも重視されるのです。
今から始められるPythonのコーディングテスト対策
コードを書くときに課題感や解決の手順を意識する
ふだんからなにも考えずになんとなくコードを書いていると、コーディングテストでもうまく説明できなくなってしまいます。たとえば勉強や業務でコードを書くときに、「問題をどのように分解して考えられるか」「どこから着手すれば効率よく解決できるか」「可読性の高いコードになっているか」といったことを意識してみましょう。
アルゴリズムについて学ぶ
プログラミング問題を解くには、アルゴリズムの知識が必要不可欠です。コーディングテストでよく出題されるアルゴリズムに関しては後ほどご紹介しますので、知らないものや苦手なものがあれば勉強しておくとよいでしょう。
プログラミング問題を解く練習をしておく
ふだんから限られた時間でプログラミング問題を解く練習ができていれば、コーディングテストにも落ち着いて対応できるでしょう。こちらも問題の練習に適したサイトを後ほどご紹介しますので、ぜひ挑戦してみてください。
Pythonで出題されるコーディングテストの例題

ここからは、コーディングテストでよく出題されるアルゴリズムとその例題についてご紹介します。paizaラーニングの「レベルアップ問題集」では、各アルゴリズムを使った問題に挑戦できます。「プログラミング初心者なので基本的なアルゴリズムから学びたい」「苦手なアルゴリズムがあるので対策したい」という方はぜひ挑戦してみてください。
探索アルゴリズム
探索はコーディングテストでよく出題される基本的なアルゴリズムで、複数のデータの中から特定の条件に一致した値を探すときに使用します。
探索にはデータの先頭から順に条件を照らし合わせていく線形探索や、整列したデータを2つのグループに分け、該当する値がどちらのグループにあるかの検索を繰り返す二部探索などの種類があります。
さらに理解を深めたい方は、ぜひ以下のレベルアップ問題集に挑戦してみてください。
【例題】
n 人の生徒が受けた、10^9 点満点のテストの採点結果 A_1, A_2, ..., A_n があります。合格点が k 点のとき、k 点以上を取った生徒が合格、k 点未満を取った生徒が不合格となります。
q 個の整数 k_1, k_2, ..., k_q が与えられますので、各 k_i について、合格点が k_i のときに合格する生徒の人数を答えてください。
ソートアルゴリズム
ソートも探索とあわせてコーディングテストでよく出題される基本的なアルゴリズムで、データを昇順または降順に並び替えるときに使います。
ソートには、たとえばデータの中から最小値を検索して先頭の値との交換を繰り返していく選択ソートや、隣接する値を比較して入れ替えを繰り返すバブルソートなどの種類があります。
ソートの理解を深めたい方は、ぜひ以下のレベルアップ問題集に挑戦してみてください。
【例題】
文字列が n 個与えられます。以下の条件を満たすように並び替えてください。
・各文字列の文字数が昇順にする。
・文字数が等しい複数の文字列は辞書順にする。
配列・リスト・スタック・キューなどのデータ構造
配列などのデータ構造に関する問題もコーディングテストでよく出題されます。
たとえば配列は複数のデータを並べたデータ構造で、キューは先入れ先出しのリスト構造、スタックは後入れ先出しのリスト構造でデータを保存するものです。
苦手な方も多いかと思いますので、ふだんから練習をしておくとよいでしょう。
【例題】
n 個の要素からなる数列 A が与えられます。 A のすべての要素を順に双方向リストの末尾へ追加した上で、双方向リストのデータをすべて出力してください。
Pythonのコーディング対策ができるサイト
paizaラーニングのコーディングテスト対策ストーリー
paizaラーニングのコーディングテスト対策ストーリーには、コーディングテストで確実に合格できるスキルを身につけるためのレベルアップ問題集が集められています。プログラミングの基礎的な文法や、アルゴリズムの能力が問われるタイプのコーディングテストの対策に効果的です。ステップにしたがって問題集に挑戦していけば、基礎的な文法や定番のアルゴリズムへの理解が深まっていきます。
かなり多くの問題集が集められているので、「基礎的な文法は理解できているから定番アルゴリズムから始めよう」などとご自身の状況にあわせて挑戦するのがオススメです。
こんな人にオススメ!:とにかくたくさん問題を解きたい・苦手な分野だけ強化したい
paizaのスキルチェック問題
paizaのスキルチェック問題では、S・A・B・C・Dのランクごとに多くのプログラミング問題を公開しています。
自分のランクにあわせた難易度の問題から挑戦できますので、「初心者なので簡単な問題から始めたい」という方にも「ふだんから勉強しているので難しい問題を解きたい」という方にも挑戦していただけます。また同じ問題に何度でも挑戦できるため、アルゴリズムの復習をしたあとで一度間違えた問題に挑戦することも可能です。
問題にはそれぞれ制限時間も設定されているため、コーディングテストと同じ形式で時間を意識しながら解く練習をしたい方にも最適です。
こんな人にオススメ!:簡単な問題から始めたい・難しい問題に挑戦したい・制限時間がある中で問題を解く練習がしたい
Codility
Codilityは実際の企業の選考に使われているコーディングテストのサービスですが、練習問題は誰でも無料で挑戦できます。
難易度はEasy、Medium、Hardの3段階があり、Lessonsタブのメニューを見ると、ソートなどのコーディングテストでよく出題される内容の問題が並んでいます。解説もあるため、英語がOKな方には参考になるかと思います。

なお公式の解答コードにPythonはありませんが、Pythonで解いたコードを公開している方もいらっしゃるため参考にすることができます。
(参考)Python3でCodilityのLessonを解いてみた #競技プログラミング - Qiita
こんな人にオススメ!:英語OK・実際のコーディングテストで使われているような問題に挑戦したい・問題の分野を選びたい
LeetCode
LeetCodeでは、外資系IT企業で実施されるコーディングテストと類似した問題に挑戦できます。
カテゴリはアルゴリズムやデータベースなどが選択でき、問題にはArrayやSortingといったタグづけがされているので、とくに練習したい分野の問題を選べます。初めての方は難易度「Easy」から取り組んでみるのがよいでしょう。

公式の解答コードはC++とJavaですが、「Discuss」のページを見るとPythonでの解答コード例を載せてくれている方がたくさんいらっしゃるため参考にすることができます。
こんな人にオススメ!:英語OK・外資系企業への転職を目指している・Python以外の解答コードも見たい
面接を受ける前にコーディングテスト対策をしておこう
Pythonはシンプルで書きやすい構文のプログラミング言語ですから、時間制限のあるコーディングテストの問題に挑戦する際にも適した言語です。ただ準備もせずに採用選考の場でいきなりテストを受けると、緊張して力を発揮しきれないこともあります。本当の実力を発揮するためにも、事前に問題を解く練習をしたりして対策をしておけるとよいでしょう。
なおPythonの基礎的な学習から始めたいという初心者の方には、paizaラーニングのPython入門講座がオススメです。

「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら







