プログラミング問題の定番サイトと言えば、どこでしょう?
当ページでは、初心者用や言語別におすすめのプログラミング問題集サイトを紹介しています。
- プログラム習得には、手を動かしてコードを書くのが一番
- 初心者向けのゲーム感覚でコードを書く練習ができるサイト
- 通勤中でも勉強できる、ウェブで解けるプログラミングの問題集サイトの紹介
- プログラミングコンテストで、優秀なプログラマーのコードを読む
「 目標は自力でプログラミングしてサービスを公開すること」そう思っているのならプログラミングの数をこなしましょう。プログラミングは、インターネット上にコードや練習問題がたくさん公開されています。
実際にコードを読んで写経するもよし、実際に問題を解いて感覚を磨いていくのもよし、本記事では「実際に手を動かす」をコンセプトに自力でコードを書いて練習できるサイトを11個ピックアップしています。
目次
プログラミング習得には実践が一番
プログラミングができるようになるには、実際に手を動かしてプログラムを組むのが一番です。プログラミングに要する知識は膨大なので、すべての知識を頭に入れる必要はありません。それよりも「プログラミングの考え方」を知っておく方が大切です。
まずはその1歩としてプログラミングの問題を実際に解いてプログラミングを書く感覚に慣れましょう。たくさんコードを書いて、解答と見比べていくうちに書いているプログラミング言語の全体像がだんだんはっきりしてきます。そうなればもうしめたもの。より効率的にヒントにたどり着けるようになり、ヒントに対する理解力も上がります。
プログラミングの勉強は何から入る?
多くの人が、分厚い本を買ってインプットしてから手を動かそうとしますが、実際はインプットしながら同時に手も動かした方が、圧倒的に早く上達します。
まずはゲーム感覚でコードを書こう! 初心者におすすめのサイト
入り口が楽しければ続けるのもより簡単です。巷にはゲーム感覚で楽しめるサイトが多数用意されています。かわいい女の子が出てくるものや本格冒険RPGのようなものまで。。。初めはとっつきやすさで選んでそれから難易度を少しずつ上げていきましょう。まずはよくわかっていなくてもよいので、ヒントが出されるまま書いて身体にしみこませると、理論的な理解がしやすくなります。
1. コードガールこれくしょん
対応言語はPHP, Ruby, Java, Python, C, C#, C++, JavaScriptです。ゲームをしながらプログラミング言語が学べる、初心者にはうってつけの学習方法です。「文字出力」など基礎的なテーマから入るため、楽しみながらスキルアップできます。このゲームの提供元はプログラマやエンジニアの就活・転職・学習サービスを運営するpaizaです。ゲームの見た目から敬遠するにはもったいないくらい作り込まれています。
ステージごとに動画学習が付いているので、内容がわからないときはステージに入る前にその横の「動画学習」をクリックして視聴してからステージに挑戦しましょう。
惜しむらくは、プレイヤーの一人称は「男」固定なので、ユーザー名が「Yuriko」でも「じゃあYurikoくん」とくん付けで呼ばれ、Yurikoの台詞も男言葉になります。そこを気にしなければ、ゲームと学習が一体になった本当にすばらしい実践ゲーム型のサイトです。
2. CheckiO
対応言語はPythonとJavaScriptです。PythonとJavaScriptのどちらかが選べますが、どちらにせよ、知識ゼロの状態では非常に難しいです。先に紹介したコードガールこれくしょんのような「最初に教材で学習して、それから実践問題」を期待すると問題文の意味すらわからず挫折します。基礎の基礎をコードガールこれくしょんやProgateなどで学んでから挑戦するのがよいでしょう。
PythonやJavaScriptの基礎を学んだ入門者向けです。見た目は冒険RPGです。
プログラミング言語別 問題が載っているオススメサイト
プログラミングに慣れてきたので、いま学んでいる言語の文法を一通り最後までやってみたい、と思っている方は、テーマ毎に整理された問題集が掲載されているサイトに挑戦されてはいかがでしょうか。
こういった問題集なら、全体の中で自分がどこまでやれたかが解り易く、学習計画が立てやすいのが特徴です。また、プログラミング言語の文法を解説したWebページを見ながら、手を動かして問題を解いていくことで、その言語の理解がより深まるので、ぜひ、試してみてください。
python
3.pythonのお勉強 問題集
「pythonのお勉強 問題集」はpythonに関する基礎的な情報を集めたまとめサイトであり、pythonを使ってプログラミングを学ぶ際に参考にしたい問題がまとめられています。
なお、このサイトに掲載された問題は、2chの「pythonのお勉強」に投稿されたものです。そのため、プログラミングの初歩的な内容から、よく質問される内容などが取り上げられているので、特にpythonを使ってプログラミングを学び始めたばかりの方におすすめしたいサイトです。
4.pythonで学ぶ 基礎からのプログラミング
就職支援サイトとして有名なマイナビでは、ITエンジニアに就職される方を対象に、ITに関する学習支援を行っています。その中には、プログラミングが学べるサイトがあるので、ぜひ、利用してください。
この「pythonで学ぶ 基礎からのプログラミング」は、pythonを利用してプログラミングの基礎を学ぶ連載企画です。詳しい解説の最後に演習問題が出題されているので、学んだことをその問題で確認してから次に進みましょう。
C#
5.++C++;//未確認飛行C C#演習問題集
マイクロソフトが開発したC#は、それまでのJavaやC++をベースに開発されているので、経験者にとっては使い安い言語ですが、初心者にとっては難しい言語でした。そこで++C++;//未確認飛行Cでは、C#を学び始めた初心者が、その考え方を十分に理解できるようなサイトとして作られました。
C#の使い方や機能を解説したページとともに、演習問題も充実しているので、どれだけ学習できたかを演習問題で確認しながらプログラミングを学べるサイトです。
Javascript
6.Elevator Saga
「Elevator Saga」は、JavaScriptでアルゴリズムを書いてステージをクリアしていく、エレベータのシミュレーションゲームです。ゲームと言いながら、要求されるのはプログラミングの問題を解くことであり、しかも、かなり難しいと問題が出題されます。
なお、英語のサイトなので苦手な方もいるでしょうが、要求されるアルゴリズムをJavaScriptでプログラミングするスキルを身に付けるの使えるサイトです。
Java
7.エンジニアの入り口 【初心者向け】勉強になるJavaの演習問題まとめ
「エンジニアの入り口」は、老舗のプログラミングスクールとして有名なリナックスアカデミーが、ITエンジニアが学習するために公開しているサイトです。
このサイトでは、Linux入門とJava入門の問題集を公開しています。プログラミングを学ぶ方はJava入門の演習問題に挑戦してください。なお、Javaは、オブジェクト指向が特徴のプログラム言語です。このサイトの問題を繰り返し解いて、ぜひ、オブジェクト指向をマスターしてましょう。
C言語
8.C言語 練習問題集
C言語は、1972年に開発された古いプログラム言語ですが、マイコンなどの組み込み用途ではまだまだ現役に使われており、また、C++などの派生言語が多いことから、プログラミングの専門学校では必須の言語です。
古い言語だけにC言語の学習サイトはたくさんありますが、問題を解いて学ぶ方におすすめなのは「C言語 練習問題集」です。C言語の文法の基礎をたくさんの問題を解いて学習したい方は、ぜひ、このサイトに挑戦してください。
Ruby
9.Array・Hashの練習問題
Rubyは、日本人が開発したオブジェクト指向のプログラム言語であり、習得しやすいのが特徴の一つです。しかし、習得しやすいとはいえ、初心者がつまずきやすいのが、ArrayとHashの扱い方です。
この「Array・Hashの練習問題」は、株式会社アトラシエのブログ記事ですが、初心者が難しいと感じるArrayとHashを使う問題を掲載しています。Rubyでプログラミングを学ぶ方はもちろん、開発に関わる方にも参照してほしいサイトです。
プログラミングコンテストにも挑戦して他の人と腕を競ってみませんか?
「自分の力はどこまで通用するのか」そんな疑問を解決してくれるのがプログラミングコンテストです。問題が提示され、何人もの人がそれを解き、その美しさや速さを競います。他の人が書いたコードも見られるので、「他の人はどんな考え方でコードを書いているのか」という視点が得られます。プログラミングコンテストの問題は公開され、誰でもいつでも解くことができます。
「プログラミングに自信が出てきた」そんなときに以下で紹介するサイトで腕試ししてみましょう。ただし、できなくても落ち込むことはありません。何度でも挑戦できますし、他の人が書いたコードを見て学ぶこともできます。
10. AIZU ONLINE JUDGE
このサイトで会員登録をすると、様々なカテゴリの問題が解けるようになります。あなたが得意なカテゴリから問題を探してみましょう。完成したら提出ボタンをクリックし使用した言語とソースコードを貼り付けて提出します。提示された条件をすべて満たしていれば「Accepted」、満たせていなければ「Wrong answer」と表示されます。
再チャレンジは何度でも可能なので間違った場合は粘り強く挑戦してみましょう。他の人のコードも見ることができるので、自分のコードと比較したりよりよいコードを書くためのヒントとすることができます。
11. AtCoder
日本発のプログラミングコンテストです。一月に6回程度と、かなり頻繁に開催されています。説明が日本語のため、英語が苦手な方でも参加しやすくなっています。
非公式ですが過去の問題に挑戦できるサイトもあり、問題の解説などを見ることができます。「どうしてこの解答になるのかわからない」となっても解説を見れば解決できるので、プログラミング力向上にはもってこいです。
過去の問題はこちら (非公式)
プログラミングの練習問題の進め方
プログラミングのスキルを習得するには、手を動かしてプログラムを書くことが大事です。練習問題を読んで、その回答を書けば終わりではありません。次に、おすすめのプログラミングの練習問題の進め方についてご紹介します。
練習問題は一度解いて終わりにしない
練習問題は、一度解いたら終わりではありません。プログラミングの基本は、人がやる作業を、どうやってプログラムコードに落とし込むかです。作業の内容を理解できたら、それをプログラムに変換できるのがプロのスキルです。一度できたからと安心せず、同じ問題でも何度も解いて、プログラミングの考え方を自分のものにしましょう。
問題は短期集中するのではなく、ずっと解き続ける
人の記憶力は、時間が経つにつれて忘れていきますが、時間をかけて何度も復習すると忘れない知識として身につきます。一度、練習問題で正解したら、1週間くらい時間を空けてもう一度やってみてください。さらに、問題を読んだら、そのプログラムコードをイメージできるくらい繰り返し解いて、プログラミングスキルを身に付けましょう。
解くことだけにこだわらない
練習問題のプログラムが作れるようになったら、それまでに学んだ他の機能を利用してプログラミングの幅を広げてみましょう。
例えば、練習問題でコマンドラインからデータを手入力したり、結果を表示するプログラムを作ったのなら、それをファイルから読み込んでリ、ファイルに書き出す機能を追加してみてください。このようにいろいろ試してみることで、プログラミングのスキルが身についていきます。
- 練習問題は一度解いて終わりにしない
- 問題は短期集中するのではなく、ずっと解き続ける
- 解くことだけにこだわらない
プログラミングの問題は転職にも役立ちます
最近ではエンジニアの転職面談でもプログラミングの問題を解くケースがあります。
問題のパターンとしては、有名なfizzbuzzテストや紹介したサイトに出てくるような問題が出たりします。
実際に現場で活躍している方でも解けない場合もありますが、問題に慣れることで解けるようになります。
問題に慣れておくことで転職も有利になるので時間がある時にどんどん調整していきましょう。
そこで、プログラミングスクールなどを利用すると、プログラミングのスキルをカリキュラムに沿って学ぶこともできます。
例えば、ポテパンキャンプでは、カリキュラムを1,000回以上も改良しており、各課題は現役のエンジニアからコードレビューをもらうことができます。
ただ単に問題を解くことは簡単ですが、転職の際に見られるような”キレイなコード”を書くとなった場合は、独学だとなかなか取得しにくいのが現状です。
実践的な課題と現役エンジニアからレビューがもらえるスクールはこちら
実力をつけたいならまず問題を解こう!
プログラミングのスキル向上には、実際に手を動かしてプログラムを組む課程は外せません。今回紹介したサイトでプログラムをたくさん組んで優秀なプログラマを目指しましょう。プログラミングコンテストで賞を取ることで就職に結びつくこともありますので、実力が付いてきたらぜひプログラミングコンテストにも参加してくださいね。
まとめ
プログラミングを学んだら次は早速実践です。受け身だけではない、インプット&アウトプットを両立する勉強方法はあなたの力をしっかり伸ばします。「プログラミングの時間の8割がバグ潰し」とはよく言われますが、アウトプットをどんどんすることで壁にぶつかったときの解決方法が洗練され、バグに割く時間も減っていくでしょう。
最初は疑問解決に多大な時間を割くかもしれませんが、それを積み重ねることで問題解決のノウハウが蓄積され、いつの間にかバグ潰しにあまりストレスをかけずに済むようになります。これであなたもプログラマとしての基礎体力が身につけてさらなる高みを目指しましょう!