フリーランスになるべくプログラミングを学びたい、案件で必要になるからという理由で、
これから新しい言語や技術をキャッチアップすることになったものの、
どうやってキャッチアップすれば良いのかわからないという方は多いのではないでしょうか。
Webフリーランスとして仕事をしていく以上、
これまで使ったことのない言語を使用することになったり、初めての機能を実装する場面に常に遭遇します。

僕自身も数々の案件をこなしていく中で、新しい言語や技術のキャッチアップを繰り返していますよ。
ただ、キャッチアップの方法がわからないと学習が進まず、
言語や技術の習得ができずにただ時間だけが過ぎてしまうことに……。
案件の場合だったら成果物の納期が間に合わなくなるだけでなく、そもそも納品できません。普通にまずいですよね。
いや、まずいでは済まずに取り返しのつかない事態に発展してしまうかもしれません。
でも大丈夫です!
今回はそんな状況にならないよう、どんな要件・案件にでも使えるキャッチアップ方法を詳しく紹介していきます。
さらに、お客さんから頼られるフリーランスを目指す方へ向けて、
キャッチアップのその先、言語や技術を極めるロードマップもお伝えしていきます。
なぜ多くの人はキャッチアップできず挫折するのか


そもそも、新しい言語や技術をキャッチアップしようとしても、多くの人は習得できずに挫折をしています。
「とりあえずProgateでちょっと触ったけど続かない」
「ネット上のサイトやUdemyで学習したけど理解できなかったり、習得に繋がらない」
といった感じですね。だいたいこのパターンです。
実は僕自身も最初のころ、このパターンで言語のキャッチアップに失敗した経験が何度も何度もあります(笑)。
なぜこういった感じに多くの人は挫折していってしまうのか?
それは結論、言語や技術の学習で立ちはだかる「コーディングの壁」を突破できないから。
突破に必要なマインドや方法を知らずに挫折していくんですよね。



まずはこの「コーディングの壁」についてとその突破に必要なマインドや方法を説明し、そこから僕流のキャッチアップ方法を解説していきます。
コーディングの壁をステップごとに紹介
立ちはだかる「コーディングの壁」には以下の5つがあります。



たくさん壁がありますが、1つ1つ着実に向き合っていけば問題なくクリアできますよ!
これから詳しく説明していきますね。
壁①:学ぶ言語がはっきりしない


キャッチアップで一番最初の壁となるのが、学ぶ言語がはっきりしていないことです。いわゆる目的が定まっていない状態ですね。
ここで立ち止まってしまう方は、以下のどれかに当てはまっていることが多いです。
- とりあえず学習したいけど、どの言語を学べば良いのかわからない
- 需要や流行りがあるけど、いろいろあって選べない
- 知人や先輩におすすめされたものの、何を学習するのかがわからない
今この記事を読んでいる方でもグサっと来た方は多いんじゃないでしょうか。なにせ僕自身も最初はここで立ち止まっていますからね、わかりますよ(笑)。
「この機能を作りたいからこの言語を学ぶ!」みたいに、開始時点で壁を突破している初心者もいますが、
そんなことはまれです。だいたいの方は学習する理由が決まってなくて悩みますね。
だからといって曖昧のまま勉強を始めようとしても、何を勉強すれば良いのかが結局わからないままなので、
最終的に挫折してしまいます。
モチベーションも維持できないので、「とりあえず触ってみよ!」で勉強へ進んでも、すぐにやめることにもなりますし。



ここは後の②〜⑤の壁にも響きますので、絶対に突破しておかなければいけない壁になります。
壁②:勉強方法がわからない


壁①を突破したところで、言語の学習に入っていく段階になりますが、
どう勉強していけば良いのかがわからなかったりします。まさにこれが壁②にぶち当たっている状態。
この壁②にぶち当たるの場合は、以下のケースで悩んでいることが多いです。
- 勉強の進め方にピンとこない
- どこまで勉強すれば良いかイメージがつかない
- どのサイトやツールで勉強すれば良いのかわからない
特に「どうやって勉強していけば良いの?」と思い、学習に入っていけない方が大半でしょう。
「勉強の進め方とかも自分で調べろ」とか「調べれば勉強方法なんてわかるでしょ」とかいわれたりもしますが、
それができれば苦労はしません。



だって、調べたところで何十通りの進め方がヒットして、結局どれが正しいのかがわからないですからね。
そんな感じに悩み続けて勉強へ進めず、もし無理やり勉強を始めたとしても効率がめっちゃ悪く、後で学び直しも発生することになります。
ここを突破しないと学習に入れないのがプログラミングの難しいところですね。
壁③:コードの意味や内容を理解できない


いざ勉強をしようとサイトや教材のコードを見ても、
何が書かれていて、どんな意味や何をしているのかがわからない状態。これがコーディングの壁③です。
そもそもプログラミングでは以下のようなことが当たり前に出てきます。
- その言語特有の記述方法
- 独自で持っている言語の機能
- 特定の処理を書くために必要なお作法
勉強ではこれらを急に突きつけられ、理解しなくてはなりません。
サイトや教材によっては「知っててあたりまえだよね?」というノリで説明もなしに進んでいく場合もあります。
実生活に例えると、
いきなりアラビアの学校に飛ばされて、あたりまえにアラビア語で授業が進んでいく感じです。
要するに、置いてけぼりですね……。
このままコードの意味や内容がわからないまま、サイトや教材の方で話を進められていけば、戦意喪失して挫折します。



壁③は一番といっても過言ではないくらいに挫折の原因となります。
それくらい大きな壁なんですよね。
壁②までは正直突破できなくても無理やり次のステップへ進めること自体は可能でした。
ただ、壁③に限っては突破しないと自身でコードを書く段階である次のステップへは絶対に進めないので、
この点も挫折が多い理由になっていますね。
壁④:書いたコードのエラーが解決できない


コーディングの壁④は、学習中の言語のコードを自分自身で書いてはみたものの、エラーになってしまって自分で解決できない状態のことです。
サイトや教材で言語について一通り学び、自分自身でコードを書く!ってなったものの、
いざ書いてみると動作してくれないというパターンが多いですね。
- スペルミスや文法の書き方が違うことによるもの
- メソッドや関数の引数が誤ったことによるもの
- 変数内の値の型が違うことによるもの
基本的に、学習で使うサイトや教材は合っているコードが提供されているので、
自分でコードを書いてみるこの段階で、初めて「エラーが表示される」という経験をします。
なので、初めてエラーを見た時は怖いです!
いきなり英文がずら〜っと表示されるわけですから、危ないサイトに入ってしまったかのように感じてしまいます。
そのままエラーが表示されたまま対処方法がわからず、ただどうしようもできないままの方は挫折することに……。



けっこう理不尽な世界ですね。
壁⑤:機能の実装方法がわからない


基本的なコードが書けるようになり、処理と処理を組み合わせて機能を作ってみようとしたものの、
そもそもの実装方法がわからないというのがコーディングの壁⑤です。
if文とかちょっとしたメソッドとかで簡単な処理はかけるものの、
検索機能やメール送信など、1つの機能までは作り方をイメージできないといった感じですね。
そもそも機能というのは「いくつもの処理がまとまったもの」なのです。
- システム:複数の機能のかたまり
- 機能:複数の処理が組み合わさったもの
- 処理:いくつものコードが集まったもの
※複雑なものもありますが、だいたいのイメージです。
しかし、壁⑤にぶち当たってしまう方は、このことを理解できていないケースが多いですね。
点と点では理解できているものの、どうやって線として結び付けられるかがわかっていない状態。
なので、処理1つ1つまではコードを書けるものの、
これらを組み合わせる術を知らないがゆえ、機能の実装まで辿り着けない感じです。



とはいえ、正直ここまでこれている方はほとんど挫折しないです。
ただ、ちょっとコードを書けることに満足して辞めてしまう方も一定数はいますね。
コーディングの壁を突破するために必要なマインド
コーディングの壁について説明したところで、その突破方法を解説!っとその前に……。
壁を突破する際に持っておくべきマインドが3つあります。それが以下のとおり。
ここでは3つのマインドそれぞれについて紹介します。
「マインドなんかどうでもいいじゃん、すぐ突破方法を教えてよ」と考えている方もいると思いますが、
これらのマインドは壁を突破するために必ず持っておかなければなりません。



ここは絶対に飛ばさず確認しておきましょう!
目的を意識し続ける


壁を突破してキャッチアップを成功させるためには、目的を意識し続けた行動することがなによりも重要です。
例えば、「キャッチアップをしてどうなりたいのか」とか、「なぜこれを学習するのか」といったことですね。
なぜ目的を意識しつづけないといけないのか。それは以下のいずれかの状態に陥ってしまうからです。
- やるべきことがはっきりせず無駄な学習をし続けてしまう
- モチベーションが続かず学習自体を辞めてしまう
- 「スキルを身につけた」には程遠い状態になってしまう
1つ目はそもそも目的が決まっていないために何を学習すれば良いのかわからない状態です。
本来必要のない学習をしてしまったり、現段階ではまだ学習すべきところではない部分を学習して時間を無駄にするパターンですね。
例えば、PHPのスキルを身につけたいのに、見た目が重要な気がしてHTMLとCSSに力を入れてしまったり……。



あとは、Vue.jsで記法や文法への理解がまだまだ未熟なのに、
「ディレクトリ構成のベストはなんだろう」と考えてしまうなどですね。
2つ目は「なんで学習するのか」がはっきりしていないためにモチベが上がらないパターンです。
学校の授業を思い出してください。
数学とか理科とかあったと思いますが、とりあえず「やらなきゃいけない」で勉強していましたよね。
まさにこの状態です。
これだと当然やる気なんかでないし、覚えるのにも時間がかかります。
これならやらない方がマシですね。
3つ目は興味もないために、上部だけの勉強をして終えてしまうパターンですね。
たしかに基礎は身に付くかもしれませんが、興味がないためにそれ以上の内容は勉強せず、そのまま辞めてしまう感じ。
実践で使えるスキルは何1つ身につかないので、「スキルを身につけた」とはいえない、中途半端な状態になってしまいます。
逆に、目的さえ意識しつづければ、
「やるべき学習がはっきりしている」「やる気十分!すぐにでもやる!」「もっと突き詰めていく!」の3拍子が揃った状態になるので、ぜひ目的は意識し続けましょう。
粘り強くわからないことに向き合い続ける


プログラミングを扱う世界では、わからないことに直面することは茶飯事のため、
わからないことに対して粘り強く向き合い続けなければなりません。
「初めてこのコードを見たけどわからないから無理!」
「エラーが出てなんか書いてあるけど何を言っているのかわからないから知らない!」
こんなんではキリがありません。こういった状況が常に発生するわけですから。
そうではなく、
「このコードはどうしてこう書かれているんだろう」「なんでこんなエラーが出たんだろう」と言った感じに疑問を持ち、
絶対解決してやる!という気概を持って向き合ってください。
目の前にスキルアップのチャンスがあるというのに、自分から機会を無駄にしてしまうことになるので。



ロジックを理解することに直結する部分なので、
しっかり探究心を持って粘り強く向き合い続けることを意識しましょう。
これはキャッチアップ後の、さらに極めていくという段階でも重要なマインドですので、必ず持っておいてください。
とにかく手を動かして実践する


プログラミング学習ではアウトプットが本当に大事なので、とりあえず何でも良いので手を動かすことを意識しましょう。
- サイトや教材のコードを丸写しする(コピペではない)
- 初めてみる書き方やメソッドについてネットで調べてみる
- コードを改変して試しに実行してみる
ちょこっとだけコードを書いてみるだけでも全然大丈夫です。
よくいるのが、ただただサイトや教材をじ〜っと見ている方。ただ読んでわかった気になって満足しているパターンですね。
プログラミングはいろんなルールにしたがって書いていくものなので、
単に見るだけではルールを理解できないし、覚えることだってできません。



わからないことだってわからないままです。
ただ見るだけでは解決なんてできませんから。
素人がプロの料理人が料理しているところをただ見ていても、
プロレベルの料理を作れるようになれるわけがありませんよね。そんな感じです。
とにかく!どんな形でも良いので、手を動かしてコードを書くようにしましょう。じゃないと頭に入っていかないので。
コーディングの壁を突破する方法をステップごとに解説
コーディングの壁の突破に必要なマインドを紹介したところで、いよいよ突破方法を解説していきます。
まず簡単に、それぞれの壁の突破方法は以下のとおりになります。
これだけではイメージなんかつかないと思うので、それぞれ細かく説明していきますね。
壁①の突破方法:自分がやりたいことを明確してから言語を選ぶ


学ぶ言語がはっきりしないという壁①ですが、
この壁を突破するためにはとにかく目的を明確してから言語を選ぶようにしましょう。
まずは目的ですが、自分が何をしたいのかということを決める必要があります。
ただ、「でも目的なんか見つからない」「どうなりたいかなんてそこまで考えていないよ」となる方も当然いることでしょう。
だからといって、言語を学ぶこと自体を目的になってしまうのはダメです。プログラミング自体はあくまで「手段」なので
じゃあどうすれば良いんだ!と思うかも知れませんが安心してください。
そんなたいそうなものでもなく、「こんな機能を作れたらいいな」「便利なサイトができたらいいな」程度でも十分だからです。以下に目的の例も載せておきますね。
- ちょっとした掲示板を作る
- 開いたら自分の地域の天気予報を見れるサイトを作る
- ローディングアニメーションを凝ったページを作成する
- 自分でディレクトリ構成まで考えられるようになる
- 他のサイトのコードを解読できるようになる
こんな感じで、特定の機能を作ったり、ちょっとしたことができるようになるという目的で良いのです。
何かしら目的が決まることで、自然と学びたい言語がはっきりしてくるのですから。
だって、言語はやりたいことを実現するための「手段」なので!
そして目的が決まったら、どんな言語なら目的を実現できそうなのかという観点から選んでいきます。
その具体例を以下に置いておきますね。
- Webサイト上でページや機能を作りたい→HTML・CSS・JavaScript・PHPなど
- スマホアプリを作れるようになりたい→Swift・Flutter・Kotlin
- ゲームを作ってみたい→C#・C++、Javascript
- AIを使った分析やグラフ作成をしたい→Python
- デスクトップで動くシステムを作ってみたい→Java、C#
他にもたくさんありますが、主要なものだとこんな感じです。
「プログラミング言語別 できること」で検索して、目的を実現できそうな言語を一度探してみましょう。
あと、どの言語でもできそうな目的であれば、難易度が低いものであったり、記述のしやすさから選ぶのもアリです。



くれぐれもマイナーな言語だけは選ばないようにしましょう。仕事にもつながらないし、今後残っていくのかすら怪しいので。
関連 初心者におすすめのプログラミング言語7選!基準やレベル別でも紹介!
こんな感じに、自分がやりたいことを明確に、それに合わせて言語を選んでいくことでコーディングの壁①は突破できます。
壁②の突破方法:言語の基本と目的の機能実装を学ぶ


勉強方法がわからないという壁②の突破方法は、
「言語の基本」と「その言語での目的の実現方法」を学ぶように計画を立てていくことになります。
まず「言語の基本」を学ぶ理由は、そもそもその言語の基本的な書き方やお作法、独自の機能などを理解する必要があるためです。
いきなり目的の実現をしようとすると、コードが全く理解できないまま、スキルが身につかないからですね。
コードを書けばもちろん実装自体はできますが、
「なんでそのコードを書いたら実現できるのか」「オリジナルのものに落とし込むのはどうするのか」
が全くわからないままになるので。
じゃあ言語の基本ってどんなことを学べば良いの?って気になる方もいるでしょう。
以下が学ぶべき内容になります。
- 環境構築の方法
- 言語の基本的な書き方やディレクトリ構造の知識
- 簡単なメソッドやif文を使った処理の書き方
- その言語でよく使われる独自の機能
- 言語でのシステムやサイト作成の一通りの流れ
これらを学んでおけば、その言語の基本を理解できている状態になります。
さて、学ぶべき内容はわかっていただけたと思いますが、みなさんは「どうやって学んでいけば良いの?」となっていることでしょう。
結論、Udemyやドットインストールなどの動画サイトや、プログラミングスクールなどのサービスを使って学ぶことです。
基本を一通り学べるうえ、効率よく学べるからですね。
別に本とかサイトでも別に良いのですが、
内容が古かったり勉強すべき内容が抜けていたりもあるので、「言語の基本を学ぶ」という点ではおすすめしません。



サイトならまだ良いのですが、本だとコードのコピーができないため、すべてを手入力しないといけません。入力ミスによってくだらないところで止まったりする可能性があるんですよね。
そして、基本を学んだら、その言語での実現したいことを学んでいきます。
学び方としてはYoutubeやサイトなど個人が出している情報を漁ることですね。
公式系だと基本は網羅しているのですが、応用までは学習できなかったりするので。
検索バーに「言語 実現したいこと」を入れて検索し、サイトや動画に目星をつけていきましょう。
例えば、「PHP リアルタイム表示」みたいな感じ調べるとかですね。
こういった感じに、「言語の基本を学ぶ→実現したいことを調べて学習していく」という学習計画を立てて、学習を進めていきましょう。
壁③の突破方法:根気よくコードを分解しながら読む


勉強を開始し、サイトや教材のコードを見ても理解できないという壁③については、
根気よくコードを分解しながら読んでいくことで突破できます。
「なんだよ、根性論じゃん」と思った方、待ってください!
さっきも言いましたが、
システムや機能というのはたくさんの処理のかたまりであり、処理はちょっとしたメソッドや条件分岐で成り立っています。
- システム:複数の機能のかたまり
- 機能:複数の処理が組み合わさったもの
- 処理:いくつものコードが集まったもの
※複雑なものもありますが、だいたいのイメージです。
例えると料理がありますね。1品の料理は、焼く・味をつける・包丁で切るなどの作業が集まっています。
さらにその作業は材料や調理器具があること前提になっていますよね。こんな感じです。
なので、コードを理解するためには1つ1つを分解し、「このメソッドはなんで書かれているのか」「どの条件を満たせばこの処理に進むのか」といったことを考えていかなければいけません。
また、そのメソッド自体を知らなかったり、見たことのないコードの書き方があった場合には、
ネット上で検索して調べることもしていく必要があります。
「根性論だから…」みたいな考え方はやめましょう。むしろプログラミングの世界では論理的だったりします。
なにせ論理的に考えるというのは、「なぜそうなるのか」を根気よく突き詰めていく行為ですからね。
すぐに考えを辞めてしまえば答えには辿り着けません。
とはいえ、今の時代はChatGPTがあるので、「コードを分解して読む」という作業はかなり楽になっています。
ChatGPTにコードを渡し、1つ1つわかりやすく説明してもらうよう指示さえすれば、回答を見るだけですぐに理解できてしまうからですね。
ただし、できる限り自分の力でコードを分解して読むようにし、
どうしても難しい場合にはChatGPTなどAIを使って、根気よく理解していくことを心がけましょう。
関連 【ChatGPT】初心者向けにAIを使った実践的なプログラミング方法



自分で考える力や分解する力を身につける必要があるので、ChatGPTは最終手段という位置付けにしましょう。
壁④の突破方法:エラー文を読んで原因を調べる


教材の演習問題やサイト上の処理を自身で実装してみるなど、自分でコードを書いてみる場面でエラーが出てしまうという壁④。この壁の突破方法は、とにかくエラー文を読むことです。
なぜなら、エラー文というのは「なぜエラーが起きているのか」を教えてくれている、いわばプログラムからのメッセージだから。
「この変数が未定義だから表示できない!」「こんなメソッドは存在しないよ!」というの文章で記載されていて、
このコードがまさに原因だよ!っていうのをちゃんと記載してくれています。
でもエラー文は英語だから読めないよ!ってなっている方、すっごく気持ちはわかります。
僕自身も英語はすっごく苦手で、英文を見た時は正直「うっ」ってなりますからね。
こうした場合、以下の手順でエラー文を理解していくのがおすすめです。
- ①エラー文をコピーする
- ②Google翻訳やDeepLに貼り付ける
- ③翻訳された文章を読む
基本的に、日本語にさえ翻訳してもらえれば、エラー文は読むことができます。
ただ、エラー文を翻訳したところでエラー内容が理解できなかったりすることもあります。
自分の書いたコードとは関係なさそうであったり、
知らない語句がでてきて理解できないエラー文が表示されてしまうパターンですね。
この場合は、自分で解決できないのでChatGPTに頼りましょう。
エラー文と自分の書いたコードをプロンプト入れて、ChatGPTにエラーの原因を教えてもらう方法を使うです。
この方法であればChatGPTからエラー原因について詳しく教えてもらえるのと、
解決方法まで答えてくれるので、たいていのエラーは解決できるからになります。
関連 プログラミングのエラーでChatGPTは使えるの?メリットやリスクを解説!



ただし、最初からChatGPTに頼るのではなく、まずは自分でエラー文を読んで解決を試みましょう。スキルが身につかないので。
とにかく、まずはエラー文を翻訳するなどで読む努力をしましょう。読まないことには何も始まらないので!
壁⑤の突破方法:サンプルコードから仕組みを理解する


1つ1つの処理はコードで書けるものの、「処理を組み合わせて機能を実装する」まではできないのが壁⑤でした。
この壁の突破方法は結論、サンプルコードを見ることです。
サイトや動画などネット上にある実装したい機能のサンプルコードを確認し、
どんな処理をどうやって繋げているのかについて知る感じですね。
そもそもこの壁にぶち当たる方は、「点と点の繋げ方を知らない」状態なので、
いくら自分で考えても答えには辿りつけません。「知らない」わけですからね。
そのため、他人のコードからどうやって実装しているかを教えてもらう必要があります。
教科書を見るようにサンプルコードから仕組みを学ぶイメージですね。
じゃあそのサンプルコードはどうやって探せば良いの?と思った方もいるでしょう。
それは「検索で調べる」ことで見つけることができます。
- GoogleやYahooなどの検索エンジン
- Youtube
- Qiita
キーワードについては、「言語 機能名」で調べることが良いでしょう。
具体的には「PHP 検索機能」とか「Vue ページ遷移」みたいなイメージですね。
また、機能をもっと詳しくしたい場合は3語で検索するのがおすすめです。
「PHP 検索機能 複数検索」や「Vue ページ遷移 動的」、「Javascript アニメーション 浮き上がるやつ」とかですね。
こんな感じにネット上での検索でサンプルコードを見つけ、コードを読んで仕組みを理解しましょう。
単に理解するだけでなく、自分で応用できる力も身につきます。



単に読むのではなく、サンプルコードを自分で写したり、少し改変して実行してみましょう。とにかく手を動かすことが大事なので!
らいちのキャッチアップ方法
コーディングの壁の突破方法を踏まえて、僕(らいち)のキャッチアップ方法を紹介。
僕の場合、以下の流れでキャッチアップを行ないます。
それぞれについて具体例を用いて詳しく説明していきます。



キャッチアップ方法の正解の1つなので、しっかり確認しておきましょう
ステップ①:やりたいことから言語を選ぶ


まずはやりたいことを明確にし、そこから言語の選定をおこなっていきます。
コーディングの壁突破方法の①に当たりますね。
今回では「Webで何か作りたいと考えている初心者」の場合でのキャッチアップを例に紹介します。
かなりざっくりした感じですね笑。
ここからやりたいたいことを明確にしていく必要があるのですが、
「とりあえずWebで何か作れればいいなあ」程度なので、がっつりした目的を決めるのは正直難しいです。
すごくやる気があればがっつりした目的設定で良いのですが、
ほどほどのやる気なので、ガチガチすぎるとすぐに挫折してしまうためです。
なので、今回の目的は比較的簡単に達成できそうなものにします。
「何か作れればいい」なので、ちょっとした機能の作成を目的にしていきましょう。
とはいえまだまだ曖昧な目的です。
機能の作成といってもたくさんありますからね、検索機能とか投稿機能とか色々ですし。
そこで、作る機能をしっかり決めていく必要があるのですが、
今回はWebサイトならたいてい実装されている機能「お問い合わせフォーム」を作ることを目標にしていきます。
ちなみに今回では「よく実装されているから」という理由で機能を選んでいますが、
他にも以下のような選び方がおすすめです。
- 自分が実装してみたいと思った機能
- 実装できたら便利だと感じる機能
- どのサイトやシステムにはないオリジナルの機能
これで実現したいことが「お問い合わせフォームを作る」に決まったので、
あとはキャッチアップする言語を選んでいきます。
まず、お問い合わせフォームはWeb上で実装するつもりなので、Web系の言語が候補に上がります。
PHPやRails、C#、Pythonなどが挙げられますね。
ただ、このままだとキャッチアップする言語が1つに決まらないので、他の要素でも考えていきます。
今回は初心者という体なので、「習得難易度が低めの言語であること」を条件に追加します。
難しいものだとすぐ挫折してしまいますから。
Web上で実装できるかつ、習得難易度が低めの言語となると、PHPが選ばれます。
他の候補だとPHPよりも難しいものばかりなので。
ちなみに、習得難易度が低い以外に、以下のような選び方もおすすめです。
- 自分がこれまで開発したことのない言語で選ぶ
- 周囲の人がよく使う言語で選ぶ
- 興味があると感じた言語で選ぶ
関連 初心者におすすめのプログラミング言語7選!基準やレベル別でも紹介!



これで、キャッチアップする言語が決まりました。目的もはっきりしているので、次のステップへ安心して進めます。
- ①目的・実現したいことを決める(曖昧な場合はちょっとした機能の実現がおすすめ)
- ②やりたいことのできる言語の候補を挙げる
- ③自分の状況に合わせて条件に沿った言語を決める
ステップ②:選んだ言語の基礎を学ぶ


キャッチアップする言語が決まったところで、次のステップでは言語の基礎を学んでいきます。
ここはコーディングの壁②突破方法の前半部分にあたります。
ここで言語の基礎についておさらい。学ぶべき言語の基礎は以下でしたね。
- 環境構築の方法
- 言語の基本的な書き方やディレクトリ構造の知識
- 簡単なメソッドやif文を使った処理の書き方
- その言語でよく使われる独自の機能
- 言語でのシステムやサイト作成の一通りの流れ
これらを学んでいくために教材を選んでいく必要があるのですが、僕の場合は動画教材を選びます。
具体的にはUdemyやドットインストールになります。
動画教材だと一緒に手を動かしながら学習できるのと、実務に役立つプラスアルファな情報もあったりするので、個人的におすすめです。あと、安いので学習に入りやすいことからも気に入っています。
ただ、他にもいろんな媒体があるので、それぞれ自分にあったもので学習を進めましょう。以下に例を置いておきます。
- 本:自分のペースでじっくり進めたい方向け。
- プログラミングスクール:プロによるサポートが欲しい方向け
- 公式ドキュメント:仕組み1つ1つに対する理解を深めたい方向け



有志の方が作成した教材のようなサイトも言語によってはあるので、
一度調べてみるのもおすすめです。
教材を選んだら、あとは教材の進行に従って学習を進めていきます。
コードを1つ1つ分解しながら読み、どうしてそのように記述するのか、何をしているコードなのかを根気よく理解しながら勉強しましょう。
こうして教材を使って言語の基礎が学べたら、最後のステップへ進みます。
- ①基礎を学ぶための教材を選ぶ
- ②教材に従って根気よく学習していく
ステップ③:目的の機能や処理を調べながら実装


言語の基礎が学べたら、目的の機能や処理を調べながら実装していきます。
コーディングの壁突破方法②の後半〜⑤まではすべてここに入ってきます。
今回だと「お問い合わせフォーム」の実装でしたね。
とはいえ、言語の基礎を学んだだけだといきなり機能を実装することは難しい、っていうか無理なので、
サンプルコードを探します。
サンプルコード自体はネット上に転がっているので、検索によって見つけます。
今回の例だと「PHP お問い合わせフォーム」で調べる感じですね。
するといろんなサイトが検索にヒットするため、「作り方」的なサイトを開いて、サンプルコードを探していきます。
今回の場合は「お問い合わせフォーム」というありふれた機能なので、検索すればすぐに作り方がでてくるでしょう。
ただ、目的の機能がオリジナルの機能であったり、複数の機能を組み合わせたものだと、
同じような動作をするサンプルコードが見つかることは、はっきり言って少ないです。
この場合、目的の機能を分解して、処理ごとのサンプルコードを調べたり、似たような機能のコードを探すのがおすすめ。
例えば、「フォームに入力した内容によってデータベースに登録、もしくはメールを送信する」機能だったら以下のとおり。
例:「フォームに入力した内容によってデータベースに登録、もしくはメールを送信する」機能
- 入力した内容を送信する機能
- 内容に合わせて条件を分岐させる処理
- データベースへ登録する機能
- メールを送信する機能
こうしてサンプルコード探して見つかったら、
次はサンプルコードを自分の環境で実行したり、少しいじったりするなど、とにかくコードを書きます。
今回のお問い合わせフォームであれば、お問い合わせフォームの値の受け渡し〜メール送信までをサンプルコードに沿って記述したり、条件によってメール送信しないように改変するなどがあります。
コードを書くことによって、処理の流れに対する理解が深まり、
どんな処理が集まって機能になっているのかを知ることができるため、必ず自分でコードを書くことを意識しましょう。



コードを書いているとエラーに遭遇し、解決するためにエラー文を読んだり、原因となるコードを探す機会もでてくるため、より理解が深まります。
そして、サンプルコードを実行したり、いじったりしてみたところで、あとはサンプルコードやこれまで学んだ基礎をもとに、目的の機能を実装します。
サンプルコードに改変を重ねたり、処理同士の組み合わせをいろいろ試したりで、目的の機能にどんどん近づけていくイメージですね。
途中何度もエラーに出会したり、意図する動作にならなかったりすることもありますが、根気よくコードを1つ1つ確認しながら、実装を目指して頑張っていきます。
こうして、目的の機能の実装、ここではお問い合わせフォームの作成が完了したら、キャッチアップは完了です。
- ①検索でサンプルコードを探す
- ②サンプルコードを自身で書いたり改変したりで試す
- ③基礎やサンプルコードをもとに目的の機能実装を目指す
よくあるキャッチアップの失敗例
キャッチアップの正解例を紹介したところで、反対によくある失敗例を紹介します。
主なキャッチアップの失敗例は以下のとおり。
どれも本当によくある事例なので、ぜひ一度確認し、同じような失敗をしないようにしましょう。



僕自身もやってしまった経験のある例なので、みなさんにはこれを確認し、必ず回避してほしいです!
流行りや他人のおすすめで言語を決める


「流行りだから」「他人のおすすめだから」というのは、言語を選ぶ上での要素であれば問題ないのですが、
理由にしてしまうのはダメです。
転職やフリーランス向けサイトでおすすめの言語一覧とか、需要のある言語で調べたりしていませんか?
使用率とか求人数が数字で書いてあるやつです。



僕自身も目的が決まっていない時はやってしまっていました笑。需要があるならいつか役立ちそうだと思ってしまうんですよね
なぜダメなのかについてですが、それはそもそもなんで勉強しているのかがはっきりしないから。
「今後役立つと思うからいいじゃん」「流行りに乗っかるのは悪いことじゃない」と思う方もいるでしょうが、
じゃあその言語を扱えるスキルはいつ役に立つの?
たしかに今後役立ちそうであったり、流行りに乗っかること自体は悪いことではないです。
ただ、身につけたスキルを使わなかったらこれまでの時間はすべて無駄になってしまいます。



そんなんだったらプログラミングに時間を割くよりも、どこでも使えるコミュニケーションスキルとかを磨いた方が断然良いです。
あと、モチベーションが続かないのも流行りや需要で決めてはけない理由になります。
「目的がないから頑張る理由がない」=「勉強しなくても良い」なんですよね。
勉強を辞めてもなんら問題ないわけですから、続くわけがありません。
人間ラクな方を選ぶ生き物なので、やらない方がラクなら、すぐに辞めてしまいます。
また、イヤイヤやったところで、目的がある人に比べてスキルの身につき具合も悪いといった面もありますね。
目的のある人だったらとことん追求してスキルを身につけていきますが、
なければ表面的な基礎部分で終わり。「使えるスキル」までは身につきません。
こうした諸々の理由で、流行りや他人のおすすめで言語を選ぶことはやめましょう。
出来ない・理解できないからとすぐに諦める


コードをざっと読んでわからないと感じたり、理解できないからと、すぐに諦めるのは絶対にいけません。
「なんかよくわからん文字がいっぱいだから無理」「なんで動いているのかさっぱりだからもういいや」となる気持ちはものすごくわかるのですが、それだといつまで経ってもスキルが身につきません。
コーディングの壁を突破するために必要なマインド「粘り強くわからないことに向き合い続ける」でも説明しましたが、
プログラミングの世界ではわからないことが常に立ちはだかるからですね。
わからないことから何度も何度も逃げていては、そりゃあスキルなんて身につきません。
ただ逃げているだけなので、何も得られないのは当然なことなのです。
そうではなく、わからないことにも根気よく向きあいましょう。
コードをメソッドや変数とかで分解したり、なぜそんな記述をするのかを追求するなど、
どんな形であれ「根気よく向き合う」ことを意識し続けることが大切です。
根性論っぽく見えますが、プログラミングでは1つ1つを理解しないと処理や機能を作成できないため、
向き合わないことにはむしろ論理的な解決ができません。



システムは複数の機能のかたまりであり、機能は複数の処理のかたまりであるため、システムを理解するには1つ1つの処理に向き合う必要があるんですよね。
言語の仕組みをすべて理解しろとはいいませんが、
すぐに諦めるのではなく、処理の流れやコード1つ1つの意味は理解するよう向き合うようにしましょう。
手を動さずに見るだけで勉強する


ただ教材やサイトのコードや言語に関する説明を見て、単に理解した気になっているだけではスキルは身につきません。
なぜなら、手を動かしながら学ばないと、言語の文法や処理の作り方が体に染みつかないからですね。
みなさんも経験はありませんか。知識としては理解していても実際にやってみると全然できないこととか。
例えば、中学校や高校の数学とかイメージしやすいのではないかと思います。
公式を学んでもいざ問題を解こうとしたら、どうやって使えば良いのかわからなかったり、これで良いのか?という疑問があったり。
プログラミングでも同じで、実際に書いてみると「あれ、どうやって書くんだっけ?」と必ずなります。
実際は知った気になっていたり、体に染み付いていないので書けないのは当然ですね。
また、手を動かさないことで、エラーに出会わなかったり、そもそもコードを書くための準備である「環境構築」にも縁がないままです。



エラーなんてしょっちゅうありますし、環境構築に対する経験がなければいつまで経ってもコードは書き始めることなんてできません。
こういった感じに、言語に対する理解が思った以上にできていなかったり、本来経験すべきことに出会えなかったりするので、必ず手を動かすことは意識しましょう。
でないと、まんまコーディングの壁を突破するために必要なマインド「とにかく手を動かして実践する」に反することになってしまいます。
いきなり完璧を求める


完璧主義者にありがちな方にある失敗なのですが、勉強の段階からコードや構成に対して、最初から完璧を求めるパターンです。
具体的には、無駄のない数行のコードを目指したり、ディレクトリ構成のベストプラクティスを学習の段階から求めることなどですね。
いわゆる、いまやるべきことじゃないだろ!というところまで勉強してしまう感じです。
たしかに完璧を求めることは、言語を極めることにつながるので大変良いことではあります。
ただし、まだまだ処理や機能ができないどころか、言語の文法や環境構築すらできない段階であれば、
基礎をとりあえず理解するところが最優先。



漢字ドリルの宿題が終わっていないのに、1文字1文字の字の綺麗さを、自分が納得いくまで追求するイメージ。
まずは終わらせろよって思いますよね笑。
基礎すらできないのに、細かな実装部分にまでたどり着けるわけがないですし、そもそもコードや構成の良し悪しを判別できないですからね。
どんなに汚いコードやディレクトリ構成でも良いので、まずは自分で実装できることを目指すのが重要です。
また、完璧を求めることによって、いつまで経っても実践にまで辿りつかないという問題も発生します。
不安だからという理由でなんどもなんども基礎をやり直したり、片っ端から勉強することで、
いつまで経っても勉強にキリをつけられない状態ですね。
完璧にしたい気持ちも十分わかりますが、はっきり言って完璧な人はいません。
どんな人でも言語の仕様について知らない部分はたくさんありますし、そもそも縁がないものも存在します。
そうではなく、基礎以外のプラスアルファな部分については「必要な時に学ぶ」が正解です。
あと、そもそも別に基礎自体も完璧にする必要はありません。
「少し理解できた部分がある」程度で良いので、とにかく実践へ進みましょう。
実践した方が圧倒的にスキルが身に付くので。



完璧にしたいという気持ちを我慢して、ある程度で目処をつけるということを意識しましょう。妥協とは違いますからね。
【キャッチアップ後】極めた状態へ到達するまでのロードマップ
これまでキャッチアップの方法に関することを紹介してきましたが、ここからは言語や技術を極めた状態を目指す方へロードマップを紹介します。
まずはざっくりとですが、以下の流れで極めていきます。



それぞれ詳しく説明するので、言語や技術を極めていきたい方は、ぜひ確認しておきましょう。
ステップ①:気になった知識や処理をインプットする


まずは既存のサイトに実装されていたり、ふと「これってできるかな」と思ったりなど、
少しでも気になったことはインプットするようにしましょう。
- LINEやTeamsのようなリアルタイムでのチャットアプリをPHPで作れないかな
- HTMLやCSS、JavaScriptでスマホアプリを作れるんじゃないか
- 3Dグラフィックを実装したサイトがあったけど、どうやってやっているんだろう
今挙げたことは少しスケールが大きいかもしれませんが、実際はもっと些細なことでも大丈夫。
「PHPってなんですぐに実行できるんだろう」「JavaScriptは、なんでサーバー側で実行できないんだろう」とか良いです。
キャッチアップではとりあえずでもやりたいことを決めて、それを実現することがゴールでした。
しかし、「極める」段階ではプラスアルファ以上の世界。
ゴールというものがなく、常に少しでも知らないことを見つけたら、調べる+インプットし続けていくことになります。
いわゆる、「引き出しを増やつづける」ことですね。いろんなアイデアややり方を知識として取り入れていくイメージです。
そのため、初心者では実装できなさそうな機能やアニメーションも、
「極めた」人たちは動きを見ただけですぐに処理をイメージし、実装できるわけです。
例えば、スマホ表示でのサイトメニューで、ボタンを押したら横からスライドして、メニューが出てくるものがありますよね。初心者からすれば難しそうに感じます。
でもあれ、JavascriptでHTMLのクラスをつけ外し、あとはCssのtransitionとtransformプロパティなどを付与しているだけなんですよ。



見た目では難しそうでも、知ると意外に簡単な処理だったりすることもたくさんあるんですよね。
こんな感じに、インプットし続けることですぐさま実装方法を思い浮かべられるようになるため、とにかくインプットをし続けましょう。
で、インプットするにはどうやるの?ってなると思いますが、結論、サイトやYoutubeから行なっていきます。
最初に挙げた気になったことの例だと、
「PHP リアルタイムチャット やり方」や「Webサイト 3D 作り方」といったキーワードで検索するイメージになります。
なぜサイトやYoutubeからインプットするのかについてですが、
こういうプラスアルファな内容は「個人しか出していない」からですね。
教材とかだと基本は網羅しているのですが、それ以上については実践で身につけてくれのスタンスなので、載っていないんですよ。
なので、個人サイトや動画を1つ1つ確認し、そこから知識を取り入れていく方法がメインになります。
また、ChatGPTに聞いてしまうのも有効です。
どんなサイトにも載っていないことだってあるので、その場合には素直にChatGPTに聞いてしまいましょう。



ChatGPTは実装できるものは答えを、できないものについては「できない」と言ってくれるのでありがたいです。
関連 【ChatGPT】初心者向けにAIを使った実践的なプログラミング方法
こんな感じに、少しでも気になったことがあれば、サイトや動画を調べて常にインプットするようにしましょう。
ステップ②:インプットした内容を実践する


ステップ②では、インプットした内容をもとに作成したり、試しに実行したりで、とにかく実践します。
何度も言っていますが、知識として得ただけでは身につかないので、しっかり手を動かしていく必要があります。



見るだけではいざ実装するとなった時に、絶対にコードを書けないですからね。
ただ、キャッチアップの時のように、気になった知識や処理などの目的のものを単に実装するのではなく、
「研究」を行うことを意識しましょう。
- 少し処理を変えてみての動作を見てみる
- コードを増やしたり減らしたりしてどう結果が変わるのかを確認
- 動作は同じだけど記法が違うものに変えた際の動作を見る
なぜ「研究」を行うことを意識するのかについてですが、それは自分だけのスキルを身につけられるからです。
細かなことでもコードを変更して実行することで、「こうするとこうなる」「これがあるとエラーになる」といった知見を得ていき、多くの人が知らないことも認知している状態になるんですよね。
そうなるとクライアントへの提案も質の高いものになり、そもそもエンジニアとしての価値も高められます。



他のフリーランスよりも頭1つ抜けられますよ。
なので、インプットにとどまらず得た知識をアウトプットし、
さらには「研究」によってユニークなスキルを身につけていきましょう。
ステップ③:何度もインプットと実践を繰り返す


ステップ①のインプットとステップ②の実践を何度も繰り返し続け、
どんどんプラスアルファのスキルを体に染み付けるのがステップ③です。
数回インプットと実践を繰り返したところで、プラスアルファのスキルは少ししかつきません。
なにせ「慣れ」がないからですね。
「極めている人」というのは、機能や処理の実装方法、エラーやうまく動作する・しない書き方、無駄のない記述についてなどをすぐにイメージできます。
それはインプットと実践を繰り返すことによっていろんな知識がある上、「慣れ」によってパターン化されているからですね。
パターン化というのは、
「このエラーがあるということは、この部分が間違っているな」
「あの機能はこれとこの処理を組み合わせたら実装できる」
「こうすることで最小限のコードになる」
ということが理解できている状態のこと。
わかりやすく身近な例に例えてみましょう。小学校の登下校を思い出してください。
最初の頃の登下校では道がわからないので、決まった道しかわからず、少しでも外れたら迷子になってしまいます。
でも小学校6年生の頃には、登下校で何度も何度も同じ道を歩いてきているので、
「ここから行けば近道になる」「このあたりは車通りが少ないから安全に歩ける」といったことがわかっている状態です。



プログラミングの世界でも同じで、何度も何度も繰り返せば「わかる」状態になります。
そのため、「慣れる」までインプットと実践を繰り返していきましょう。
知識や理解をすることを意識し続けるのはもちろんですが、とにかく繰り返すことが重要なので!
ステップ④:ネット上にないオリジナルの機能を実装する


ステップ③によって「慣れ」を感じてきたら、ネット上にないオリジナルの機能の実装に挑戦するステップ④へ進みましょう。
いわゆる開拓ですね。これまでの知識を応用するのはもちろんですが、アイデアも必要になってきます。
今の時代、ネットで調べればだいたいの機能が出てきます。
先駆者の方がいろいろ見つけて、それを記事にしたり動画にしたりで発信してくれているためです。
ただ、まだまだネット上に載っていないこともたくさんあります。
「他の言語だったら簡単にできる機能」であったり、「あるようでなかった機能の組み合わせ」などですね。



Webサイトシステムと物理的な機器との連携とかも案外なかったりしますね。カードリーダーとか、周辺機器との連携とか。
こういったまだまだネット上にない機能の実装を目指す理由ですが、それは圧倒的な問題解決力と応用力が身に付くから。
ネット上に情報がないということはヒントがないこと。
つまり自分で答えを探していくしかないため、何度も考えたり試したりしまくるわけです。
とにかく、わからないことに向き合い続けなければいけません。



ChatGPTからもちゃんとした答えが来なかったりもするので、自分で導き出すしかないです。ただ、ChatGPTへの壁打ち自体は有効ですよ。
また、何度もトライアンドエラーを繰り返すことでアイデアも生まれたりするんですよね。
「あれ、このコードとあのコード組み合わせたら、こんなことできるじゃん」とか、
「この部分を解決できれば、あんなことができるな」とか。
コードを触ったり、いろいろ考えていたりすると、あるときカチッと組み合わさって、アイデアが生まれますね。
不思議なことに、アウトプットし続けている時の方がアイデアが浮かびやすいです。
こんな感じに、オリジナルの機能に挑戦することで、圧倒的な問題解決力と応用力、さらには発想力も鍛えられます。
相当な根気が必要が必要にはなりますが、1つでも実装できれば万々歳。
できなくても、何度も挑んだという過程があれば、間違いなくあなたは「極めた状態」になっていることでしょう。
ロジックも必要だがマインドが一番重要


キャッチアップ方法〜極めた状態へ到達するまでのロードマップを伝えましたが、結局はマインドが一番大事です。
ここまで読んでくれた方は気づいているのではないでしょうか。
「コーディングの壁を突破するために必要なマインド」は、
壁を突破するためだけでなく、キャッチアップ後のその先にも必要なものであると。
コーディングの壁の突破方法だけでなく、
「僕(らいち)のキャッチアップ方法」や「極めた状態までのロードマップ」もすべて、
これら3つのマインドに則ったものになります。
そして、キャッチアップの失敗例のほとんどは、マインドを持ちあわせず挑んだ成れの果てになります。



どんなステップでもこれらのマインドは重要になるんですよね。
プログラミングでは論理的な思考や仕組みへの理解が重要になりますが、
これらができるまでに「目的を持って」「根気よく向き合いながら」「とにかく実践し続け」なければいけません。
逆に、これらのマインドがなければ極める段階にはいけず、中途半端なスキルであったり、そもそも挫折してしまうことになります。
なので、プログラミングを勉強する場合は、かならず今回伝えた3つのマインドを持って挑むようにしてください。
これは絶対です!



マインドさえあれば、いくらでも上へ進めるので!
最後に
ここまでお疲れ様です!
プログラミングを習得するには、新しい技術を効率的にキャッチアップする方法を知ることが重要です。
しかし、多くの人が「学ぶ言語が決まらない」「勉強方法が分からない」「コードの意味が理解できない」「エラーが解決できない」「機能の実装方法が分からない」という5つの壁に直面し、挫折してしまいます。
これらを突破するには、目的を明確にし、エラー文を読み解きながら根気強く学習を続けることが大切です。
特に、手を動かしてコードを書くことが習得の近道になります。
基礎を習得した後は、サンプルコードを活用しながら実装力を高め、処理を分解して理解することで応用力を養いましょう。
そうすることで、継続的に知識をインプットし、試行錯誤を重ねることで、どのような案件にも対応できるWeb制作者へとなることができます!