こんにちは。倉内です。
独学でプログラミングを学ぶにあたって、一番の壁はやはり「分からない問題にぶつかったときの対処法」ですよね。
気軽に質問できるエンジニアの友人がいたり、メンターとしてついてくれている人がいたり…といった環境でもない限り、初心者がひとりで解決するのは難しく、そこで挫折してしまう人もいます。
もちろん自力でインターネットや書籍で調べて「分かった!」となったときの達成感はひとしおですが、いつもうまくいくとも限りません。
プログラミングスキルをレベルアップさせるには、今の実力より少し高い問題にチャレンジして、解法を知りしっかり理解することが大切です。
そこで今回は、テストケースや解答例となるコード、解説がついた「レベルアップ問題集」を活用した学習法について紹介します。
独学でのつまずきポイント
はじめにプログラミング学習において、初心者がつまずく原因となる2つのポイントを整理しておきましょう。
①分からない部分をどう調べていいか分からない
正しいだろうと書いてみたコードが実行してみるとうまく動かない…プログラミングをしているとよくある事象です。
ある程度知識やスキルがついてくると、初めて遭遇するエラーでもどう調べるとよいか、うまく動かないコードのどこに原因がありそうかのあたりがつけられるようになるのですが、初めのうちは「分からないことが分からない」状態だと思います。
これは誰もが通る道なので地道にたくさんコードを書いて、模範となるようなコードを読んで経験を積んでいく必要があります。
②コピペで動くようになったが理解はしていない
ある程度コツをつかむと、インターネット検索でやりたいことにだいぶ近いコードを探すこともできるようになると思います。
しかし、なぜそのような書き方をするのか、なぜこの関数を使っているのか…といったことは理解できないままです。
学習において人のコードをまねてみるのは悪いことではありませんが、「動きそうなものをコピペして、少しだけ修正する」を続けているとスキルアップになりません。
実装したい処理をどう書くとよいかを自分で考えられるようになるためには、ロジックを考える部分を鍛える必要があります。
「レベルアップ問題集」を学習におすすめする理由
前述のつまずきを防ぐには、「自分で考える」を手助けする学習教材を利用しましょう。たとえば、出題されるプログラミング問題をブラウザ上で解いて提出し、リアルタイムで採点ができる「レベルアップ問題集」には以下の特徴があります。
全問題でテストケースの入力値を見ることができる
以下は問題を解いて、コードを提出したあとの画面ですが、「与えられる入力を見る」で各テストケースの入力値を確認することができます。
再度チャレンジするときにこの入力値で想定通りの結果が出るか、テストコードを書いて試すことができるので、もし想定外の結果であればコードの修正が必要であることが分かります。
解答例となるコードが確認できる※
問題に対して、正解となるプログラムはひとつではありません。
そのためあくまで解答例ではありますが、すべてのテストケースをパスするコードを掲載しています。
左側に自分が提出したコード、右側に解答例となるコードが表示されるので見比べることができますし、テストケースを一部通過できなかったのであればミスした箇所も分かります。
もちろん問題によってはまったく異なる考え方をしている場合もあると思いますので、別の解法を知ることもできます。
解説を読むことができる※
簡単な問題であれば、入力値と解答コードを見れば自分で理解できると思いますが、難易度が高い問題の場合「なぜそのようなコードになったのか分からない…」という状態になることもあります。
その場合は、解説(解法のポイント)を読んで理解を深めてみてください。
まずは上部にこの問題を解く方針についての説明があります。
その下に言語ごとのもう少し具体的な実装方法についての説明があり、解答例となるコードも合わせて表示しています。
これらの解くためのヒントを得たあとはすぐにもう一度コードを修正して再チャレンジすることをおすすめします。そうすると確実に理解が深まり、次に近しい問題にあたったとき自分の力で考え、コードを書くことができるようになっているはずです。
※解答例となるコードと解説は順次追加中です。各問題集の言語一覧画面の「★全問解答コード例あり」「☆一部解答コード例あり」の表示をご確認ください。
※無料会員の場合、閲覧には学習チケットの消費が必要です。チケットはその日の初回ログイン時に1枚付与され、6枚まで所持できます。有料会員はその制限はありません。
パターン別「レベルアップ問題集」活用法
レベルアップ問題集では、さまざまな難易度、ジャンルの問題を公開しています。
今回はそれらの問題集をいくつかのパターンに分け、シチュエーション別でおすすめしていきます。ただし、1つの問題集の中にも多様な問題があるため参考情報と考えていただければと思います。
なお、各問題の「paizaランク○相当」という表記はpaizaが提供しているスキルチェックというサービスでの問題の難易度を表すランクと対応しています。問題はS・A・B・C・Dのランクに分かれており、Sランクがもっとも難しい問題です。詳しくはこちら
解答コード例の有無は、2020年10月23日時点の情報となります。「解説あり」と記載のある問題集は、解答コード例のない言語の提出後画面でも参照可能です。最新情報はpaizaラーニングの公式Twitterアカウントもごらんください。
初心者がコードを書くことに慣れる
標準入力サンプル問題セット
プログラミング問題では、外部から与えられる入力値を取得する「標準入力」が必要になることが多いため、この問題セットから始めてみるとよいでしょう。
- 一部解答コード例あり:Java
文字列処理メニュー
文字列処理は基本ですが、分割・連結、検索、大文字から小文字への変換など知っておくと便利な処理がたくさんあります。この問題集では文字列処理に関する問題を30問用意しています。
- 解説あり
- 全問解答コード例あり:C++
- 一部解答コード例あり:JavaScript
中級者を目指すために押さえておく
標準入力メニュー
一行・複数の値、複数行・複数の値、コンマ区切りの値など、さまざまなパターンの標準入力を書けるようになるための問題集です。
- 一部解答コード例あり:Python3
- 全問解答コード例あり:C++
日付セット
実務でも扱うことが多い日付に関する処理。西暦⇔和暦の変換、営業日や連休を求める処理など、この問題集でマスターしましょう。
- 一部解答コード例あり:Java、PHP、C
- 全問解答コード例あり:Python3
ひとつ上にステップアップしたい
さきほど説明をしたスキルチェックで、現在よりも上のランクの問題にチャレンジするときにぜひ取り組んでいただきたいのがこのレベルアップメニューシリーズです。
たとえば、現在DランクでCランクを取得したいと考えている場合、「Cランクレベルアップメニュー」では以下のような順番で取り組むことでCランクの問題を解くための力をつけられるようになっています。このような問題のセットを複数用意しています。
さらに実力アップをはかる
過去にスキルチェックに掲載されていた問題や、イベントもしくはキャンペーンで出題した問題を集めています。特に「リアルイベント問題セット」は、難易度が高めの問題が多いので、ある程度問題をこなしたあとの実力アップによいでしょう。
時間制限あり&ランク取得で腕試し「スキルチェック」
これまで紹介してきた「レベルアップ問題集」は、時間制限がなく何度でも挑戦することができましたが、力がついてきたなと思ったらぜひ「スキルチェック」の問題にも挑戦してみてください。
スキルチェックは問題のランクごとに制限時間が決まっており、また、解答にかかった時間や実行速度などを加味して点数を算出する形式になっています。
まとめ
プログラミング学習初心者がつまずきやすい点と、それを克服するための「レベルアップ問題集」活用方法についてお伝えしてきました。
独学ではある程度のレベルに達すると、なかなか自分の実力を伸ばすことが難しいと感じている方も多いかもしれませんが、問題をたくさん解くことでコードを書く力は鍛えられます。
またpaizaラーニングでは、Webアプリケーション開発を学べる講座やセキュリティ、AI・機械学習を学べる講座も公開しています。目的に合わせてご利用ください。