こんな方におすすめ
- プログラミングを独学しようと思っている
- プログラミングを独学するのに何からやればいいのか知りたい
- プログラミングの独学は難しいの?
「プログラミングの勉強をしてみようかな?」と思って「いざ!」となっても、早速「何をどうすればいいんだ…?」となりますよね。
私も初めてプログラミングを勉強したときは、知識「0」の状態だったので、同じように「??」となっていました。
今回は、そんなプログラミングを独学しようとしている人向けに、初心者が知るべき最初の知識をご紹介していきたいと思います!
私の理解の範囲になるので、広く浅くではありますが、なるべく詳しくお話ししていくので是非参考にしてもらえたらうれしいです!
【スポンサーリンク】
プログラミングの独学は何から勉強すればいいの?
まず初めに、プログラミングと聞いてどんものをイメージするでしょうか?
おそらく下記の画像のようなものをイメージする人が多いと思います。
イメージとしては大体あっています。
ひとえにプログラムと言っても、様々なジャンルや種類があり、私たちが普段使っているネットのサービスやアプリなどは、複数の種類のプログラミング言語を駆使して作られています。
先ほど見た、上記の画像もその一つであり、「Java」という言語になります。
ちなみに先ほどの処理を動かすと下記のような実行結果が得られます。
私も最初の頃は「??」となっていたのですが、大丈夫です!
難しそうに見えるだけで、慣れれば難しくないです。
これからプログラミングの勉強をする上で、まずは全体的な理解をざっくりと頭に入れておくと、「何から勉強するべきか?」や「具体的にどんな場面で使えるのか?」などがイメージしやすくなります。
そのため、最初に勉強することは、これからプログラミング開発をする上での、全体像をざっくりとでいいので、理解していきましょう!
開発における全体像をまずは理解しよう!
前置きが長くなりましたが早速本題です!
全体像とは言いましたが、具体的にするとこんな感じです!
学習の種類
・フロントエンドの学習
・サーバーサイドの学習
・DB(データベース)の学習
私たちが普段ネットで行う、「調べ物」や「通販」・「サービス」は基本この3つの構成で作られています。
もちろん実際はもっと複雑ではあるのですが、今はこの形のイメージで大丈夫です。
これら全てで「プログラミング」が必要になり、それぞれの場面に応じた「プログラミング言語」を使用して、システムを作り上げていきます。
では、一つ一つ見ていきましょう!
フロントエンドの学習
まずは「フロントエンドサイド」についてです。
「フロントエンドサイド」は主にPCやスマホの画面に情報を映し出すために必要な分野になります。
今まさに、この記事をPCやスマホで読んでいると思いますが、この記事をあなたのPCやスマホに映すためのプログラミングを行うのが、フロントエンドサイドの領域になります。
フロントエンドの学習
・HTML:ページ作成を行う言語
・ CSS:サイトの見た目を行う言語
・Java Script:サイトの動的な要素を加える言語
主に、WEBデザイナーやフロントエンジニアの人が関わる分野になりますね。
サーバーサイドの学習
次に「サーバーサイド」についてです。
よく「バックエンド」とも呼ばれますが、フロントエンドに比べてエンジニア感が多少強くなります。※私の感想です(笑)
バックエンドの領域は名前の通り、裏で動く処理のことを指しているので、フロントエンドのように目で見える部分とは違い、より複雑になります。
フロントエンドが車の「外装」であるなら、バックエンドは中身の「エンジン」などの駆動系の部分を作るイメージですね。
サーバーサイドの学習
・Java・C・C++・C#・COBOL
先ほど紹介した「Java」はバックエンドの言語になるんですよね!
バックエンド言語は、お仕事をする職場や案件によって変わってくるので、「これ!」という断定が難しいです。
そのため、エンジニアはなるべく多くの言語で開発ができる方が重宝されます。
個人的には、多くの現場で使われている「Java」や「C++」あたりを勉強するのがおすすめですね。
「PHP」や「python」も需要が高い言語にはなるのですが、「Java」や「C++」のニーズも高く、すでにこれらで開発されているものも多いので、会社にもよりますが即戦力として外れない言語だとは思います。
DB(データベース)の学習
開発を行う上で「DB(データベース)」の勉強は必須レベルで重要ですね。
DBはバックエンドの領域トンあっており、「DB(デービー)」と言ったりもします。
DBはデータの管理を行う領域になっており、イメージはゲームのセーブデータやユーザー情報・ステータスなどの情報を保管しておく場所になります。
もっと現実的な話をすると、あなたが普段利用している「銀行」をイメージしてみてください。
口座の「残高」や「口座番号」・「名前や住所」などの情報は、全て銀行のDBにて管理されています。
DBの学習
・オラクル・My SQL・Postgres・SQLServer
この辺りが割とメジャーで現場でもよく使われているDBになるかと思います。
DBは、あくまでデータを保管しておくための箱になるので、実際に勉強が必要になるのは「SQL言語」になります。
どのDBでも、大体SQL言語は共通の内容になっているため、輝度レベルの知識なら難易度は割と低いと思います。
オブジェクト指向の学習
最後にプログラミング言語ではないのですが、プログラミングを行う上でとても重要で、多くの人が最初「??」となる知識があります。
それが、「オブジェクト指向」です。
今後プログラミングをしていく上で、どの教本にも載っていますし、これを意識しないで開発をすることはほぼないと思うほど重要な知識になります。
オブジェクト指向とは
役割を持たせた「もの」ごとにプログラムを作成し、「もの」ごとにそれぞれ関係性を持たせながらシステムを開発していくこと。
流石に、これだけだと分かりずらいと思うので、一つ例を出して説明しますね。
ポイント
・できるだけ汎用的な作りをしている
・再利用性を高めた作りをしている
例として、「家」でお話をしていきたいと思います!
あなたが「家」を建てる時に、家を建てるためには、それを構成する材料が必要になります。
こんな感じですかね!
プログラムも同じで、何かを作るときは、作成するものに対してそれを構成する部品を作り、それを組み合わせて一つの完成品を作ります。
オブジェクト指向とは、これらの一つ一つを「もの(オブジェクト)」としてそれぞれに関係を持たせながらシステムを作っていきます。
例えば、一つの会社ですべての部品を作り家を建てるとしましょう。
プログラムでの開発は、チームで行うことが多いため、このようなつくりをしてしまうと、属人生が強くなってしまい、保守性や作りが複雑になってしまいます。
画像のイメージで仮に問題があったとしましょう、、、
・扉の品質が悪くすぐに壊れてしまう。
↓
・使っている木材に問題がある。
↓
・家を構成している木材そのものの見直しが必要になる。
↓
・家に使っている木材すべてを取り換える必要がある。
↓
・家の作り直しが必要。
逆に、複数の会社でそれざれ分担して材料を作る、形に変えたとしましょう。
この様な形にすることによって、仕組みの単純化や保守性を高めることが可能になります。
もしさっきと同じ、問題が起きたとしても、、、
・扉の品質が悪くすぐに壊れてしまう。
↓
・使っている木材に問題がある。
↓
・扉を作っている会社に連絡して、作り直してもらう。
ざっくりとではありますが、このようなつくりが「オブジェクト指向」のメリットになります。
また、仕組みを単純化や「もの」としての考え方をすることで、流用や複製を容易にして、開発の時短や仕組みの担保などのメリットもあります。
今は、「家」を例えとしてお話しましたが、実際にはプログラムの構成や作り方として考えていきます。
最初にお話しした通り、「これだ!」という正解がオブジェクト指向にはなく、現場の「御作法」や「環境」によって考え方が変わってきます。
そのため、あまり囚われすぎてもいけませんが、基礎的な部分は身につけておきましょう!
プログラミングの独学は難しい?
プログラミングを独学する事は、全くの知識0の状態からは、正直難しいとは思います。
勉強していてると、間違いなく壁にぶつかるので、初心者ではプログラムを書く前の、環境を作る段階で挫折する人もいるかもしれません。
しかし私も含め、エンジニアは仕事をしながら常に勉強が必要な職業なので、なんだかんだ独学が必要な場面は多いんですよね。
そういう意味では、独学は難しくても学び方も知っていれば可能です!
ただ最初の基礎が、あってこその部分も大きいので、最初はなるべく「教えてくれる人」や「サービス」を使って学ぶことがおすすめではあります。
最低限、教本を1冊くらいは本屋で買うべきだとは思います。
教本で勉強する
教本で一度しっかり学ぶことで、自分の中にしっかりとした知識の柱が建つようになります。
正直ネットで調べればたくさんの情報がありますし、実際仕事をし始めると、ネットで調べることはとても大事になります。
しかし、逆にネットでは色々ない情報が多すぎて、初心者では何が正しいのかの判断がかなり難しいのが現実です。
確かに、ネットにはいろんな答えが溢れていますが、自分の起きている現象をピンポイントで教えてくれているサイトを探すのはなかなか難しいことなんですよね。
関係性の高い記事から、あある程度自分で読解して解決が必要なことがほとんどです。
そうなると、「調べ方」を覚えることもエンジニアには必要なスキルになります。
その引き出しを増やすことが、柱を持つためにも教本は一冊持っておきましょう!
おすすめの教本などは、下記の記事で紹介しているのでチェックしてみてください!↓↓↓
プログラミング初心者が上達する勉強法6選!独学でも何からやればいいかわかる!
こんな方におすすめ プログラミングが上達する勉強法が知りたい プログラムを独学で学ぼうと考えている まずは何からやればいいかい知りたい 私も、I ...
続きを見る
プログラミングスクールに通う
ハードルは高いかもしれませんが、「プログラミングスクール」に通うのも、場合によってはありだと思います。
私自身も身に染みているのですが、プログラミングはやっぱり最初は「誰かに教わることが大事」だと思います。
初めから独学でなんとかやれる人もいるとは思いますが、かなり偏った知識になってしまいがちです。
お仕事をしていると、どこの現場でも御作法というものがありますよね。
プログラミングにもその御作法というものがあり、コードが書ければいいというわけでもありません。
そういった細かい部分は、プログラミングの知識ではあるけど、御作法なのであまり教本とかでは教えてくれません。
また、壁にぶち当たった時に誰かに聞ける環境があるのは、勉強する上で結構重要なことです。
確かに、スクールに通う場合は「お金」も「時間」もある程度まとまったものが必要になります。
そのため、冒頭でも話した通り、「場合によってはあり」だと私は考えています。
まずは教本で勉強して「スクールに通いたい!」と感じたら、積極的に考えてもいいと思いますし、「IT転職するんだ!」と本気ならそれもまた検討でいいと思います。
プログラミングの勉強が無料でできて転職支援までしてくれるサービスもあるので、本気なら考えてみてください!
詳細は下記の記事で紹介しているので、是非読んでみてください! こんな方におすすめ 30代で未経験のエンジニア転職は無理か知りたい IT系に転職をしたいけどいろいろと不安 未経験でもエンジニア転職をするためのコツが知りたい ... 続きを見る
30代から未経験のエンジニアは無理?アラサーエンジニアの私が解説!
まだ、転職までは考えていないけど「プログラミングはちょっと本気で勉強したい」という人は「FREEKS」(フリークス)という「サブスク型」のプログラミングスクールがおすすめです。
月に1万円くらいで勉強でき、いつでもやめられて、わからないところは「チャット」で講師に確認することができるサービスです。
もともとは、社内の「新人教育用」に使っていた教材をサブスク展開しているため、教材の質も安心感があるので、おすすめです!
詳しくは「プログラミング初心者が上達する勉強法6選!」で紹介しているので興味があれば是非チェックしてみてください!
まとめ
プログラミングの独学は、確かに難易度が高いです。
と言っても、実際お仕事をしてると知らないことをやらないといけない場面が、割とあります。
なんだかんだ、エンジニアは常に独学で技術を伸ばしていく職業なんですよね!
なので、厳密には独学は可能ですし、なんなら必ずやるタイミングが出て来ます。
エンジニアは新しい技術を取り入れるために、常に勉強していくこともお仕事だと思います。
しかし、新しい技術に触れることや知識を得られるのは、プログラミングを含めてITの面白い所でもあるので、これからプログラミングの勉強を始める人は、是非楽しみながら挑戦して欲しいと思います!
プログラミングの技術は、間違いなく自分の可能性を上げてくれる力になるので、少しでも興味が湧いたのであれば、是非参考にしてみてださい!