うさぎ日和

今より少しだけ新しいことに興味がわく雑記ブログです!

プログラミングを独学で身に着けるおすすめの手順

f:id:DwarfRabbit:20200318182435j:plain

プログラミングの独学をしようと考えたとき、「どっから勉強すればいいんだ…?」と早速壁にぶち当たる人も多いのではないでしょうか?

 

「プログラミング学習」といっても、知識”0”の状態でこれから独学で身に着けようと考えている人には、何を勉強したらいいのかイメージが難しいと思います。


今回はプログラミングを独学するのに、具体的にどんな学習が必要なのかをご紹介していき、少しでもプログラミング学習のイメージを持ってもらえたらと思います。

 

初心者はプログラミング学習のイメージが難しい

皆さんがイメージするプログラミング学習とは、どんなものをイメージするでしょうか?


おそらく、まったくプログラムに無縁の生活をしてきた人でも、下の画像のようなイメージを頭にイメージすると思います。

f:id:DwarfRabbit:20200318174301j:plain

確かに、間違いではありませんがこの画像が全てではありません。
ひとえにプログラミングといっても、様々なジャンルがあり一つだけ理解しても使いこなすのは難しいです。


最低限プログラムにおける関連性について、概念的な理解だけでもしておく必要があると思います。


その理解がないと、プログラミングの勉強をするにもどこから手を出すべきなのかがわかりませんし、とりあえず勉強しているものが具体的にどんな場面で使えるものなのか、イメージがしずらいでしょう。

 

そのため、独学をこれからするのであればある程度の指標を持つことで、かなり勉強の効率が変わってくると思います。

どんな勉強をすればいいの?

f:id:DwarfRabbit:20200318182629j:plain

では、具体的にどんな勉強が必要なのか、下記に一覧にしますので参考にしてみてください。

学習の種類
  • フロントエンドの学習
  • サーバーサイドの学習
  • DB(データベース)の学習
  • オブジェクト指向の学習
  • フレームワークの学習
  • 開発工程の学習※転職を考えるのであれば

以上の勉強を一通り行うことで、プログラミング知識は十分身につくと思います。

 

IT企業への転職を考えている人であれば、開発工程も頭に入れておくと現場での理解もスムーズに入ると思います。

 

すでに、内容が難しそうに感じるかもしれませんが、大丈夫です。


ただ、カッコよく言っているだけで内容はそこまで大したことではありません(笑)

それではさらに具体的に説明していきたいと思います。

【スポンサーリンク】

 

フロントエンドの学習

 まずは下記の画像をご覧ください。

f:id:DwarfRabbit:20200318174241j:plain

上記の画像は、私たちが普段使用しているインターネットにおけるWEBサービスの概要を図にしたものになります。


フロントエンドとは、上記画像の赤色の枠に囲われた部分のことを指し、主に下記の一覧にある学習を行う必要があります。

学習の種類
  • HTML:主にサイトのページ作成を行う言語
  • CSS:サイトの見た目を変える言語
  • Java Script:動作の要素を加えることのできる言語

 

ブログやサイトの作成をしている人であれば、ほぼ間違いなく耳にしたことあるものだと思います。

 

かなり簡単に説明すると、私たちが普段使用しているスマートフォンやPCの画面に表示されている、目で見える部分のデザインを行うことを言います。


主に、視覚に入る部分(GUI)のプログラミングになるため、webデザイナーやフロントエンジニアの人が携わる部分となります。

サーバーサイドの学習

もう一度下記の画像をご覧ください

f:id:DwarfRabbit:20200318174241j:plain

サーバーサイドは画像の青枠の部分を指し別名バックエンドとも呼ばれることもあり、サーバー部分とデータベースの二つの分野があります。


しかし、実はもう一つ隠れているのが、インフラエンジニアの人が行うサーバ構築などの部分になります。

後でもう少し触れますが計3つの分野が実際には存在します

 

サーバーサイドで学習を行う必要があるのは以下の一覧になります。

学習の種類
  • Java・C++・PHP・Ruby・Pythonなどのコンパイラ言語・インタプリタ言語
  • オラクル・MySQLなどのSQL文:DB(データベース)の管理に必要な言語

 

フロント分野に比べて、バックエンドの方がエンジニア感はかなり強く、習得難易度は上がります。(個人的感想ですが…)


というのも、フロント面のプログラミングが車でいう外装を作る作業であれば、バックエンドは中身の機会を作る作業になるため、内容が複雑になります。


さらに、バックエンドで覚える言語は数多く存在し、自分がどんな開発を行うかによって使用する言語が随時変化してきます。


そして仕事で作業を行う場合でも、現場ごとに使用している言語が違うため一概に"これ!"という断定はできません。

 

上記で上げた言語は、比較的多くの現場で使用されている言語になりますので勉強するのにおすすめの言語になります。


因みに、冒頭の方で私が「プログラミングに対するイメージ」について質問した時に出したプログラムは「Java」という言語になります。


超超簡単なで基本的な内容になっていますが、実際に動かすと下記の画像のように表示されます。

f:id:DwarfRabbit:20200318175143j:plain

因みにこれを職場の上司に見せると、大笑いされるかめちゃめちゃ怒られるかのどちらかなので、注意しましょう(笑)

DB(データベース)の学習

イメージとしては、ゲームなどのキャラクターや武器・アイテムのステータスの管理を行うのがデータベースの領分となります。


もっと現実な話をすると、私たちが普段使用している銀行の口座預金の残高や入出金履歴などもデータベースで管理されています。


たまに、テレビで何かの手違いで、「クレジットカードの顧客情報が漏れた!!」などやっていますが、データベースの中身は漏洩すると本当にやばいことになるので、かなりセキュリティーを万全にしないといけない重要な部分になります。

オブジェクト指向の学習

次にオブジェクト指向についての学習になります。


皆さんは「オブジェクト指向」とは聞いたことがあるでしょうか?


プログラミング学習を行う上でこのオブジェクト指向はとても重要な考え方になります。

正直オブジェクト指向には正解がないため、ほぼ概念的理解になってしまうのですが、要点をまとめると以下の内容になります。

オブジェクト思考の要点
  • できるだけ、汎用的な作りをしている
  • 誰でも同じものを作れるようにする
  • 再利用性を高められた作りをしている

ざっくりですが、このような要素を含んだもののことを言います。

 

では少し具体例を出してみてみましょう。

ここに一台の車があったとします。

この車の詳細を見てみましょう。

車の詳細
  • メーカー
  • 乗員人数
  • 排気量
  • 前進する
  • 曲がれる
  • 後退する
  • 止まる

以上のような詳細を持っているとします。この内容をカテゴリごとに分類すると以下のように分類することが可能です。

f:id:DwarfRabbit:20200318180038j:plain

上記のように要素をまとめることによって、誰が作っても同じ作りの車を量産することが可能となり、この内容をもとに速い車や違ったメーカーの車を作ることが可能となります。

 

さらに内容を引き継ぐことで、車ではなくバイクなどの全く違ったものを作り出すことが可能となります。

f:id:DwarfRabbit:20200318180024j:plain

このような作りをオブジェクト指向といいます。

【スポンサーリンク】

 

フレームワークの学習

プログラミングで開発を行うときは、フレームワークという知識も大切になってきます。


アプリケーション開発を行う場合など、複数人で開発を行う場合このフレームワークというものを理解していないと開発の難易度がとても上がります。


フレームワークとは開発における「骨組み」・「ルール」・「枠組み」など様々言われています。


開発において、ルールを決めて作業をすることで、作業の共通認識を計ることが可能となり開発が円滑に進みます。

開発工程の学習※転職を考えるのであれば

今後、IT企業への転職を考えているの出れば、開発工程についてもしっかりと認識しておくことが大切です。

 

ITの分野は、プログラミングを行うだけが全てではなく、開発の要件定義や設計書の作成コーディング・テストリリースとかなり省略しましたが、いくつかの段階に分かれて進んでいきます。


自分がどの工程の作業を行うのかを理解することで、成果物の品質向上につながります。

もし学習を行うのであれば、ウォーターフォールとアジャイルの二種類は確実に抑えておきましょう。

目的別の勉強種類

ブログ・サイト運営

ブログやサイト運営をするのであれば以下の内容を必ず押さえておきましょう。

必要技術
  • HTML
  • CSS
  • Java Script

しかし、もし顧客登録などのサイトを自分で一から作成する予定であれば、以下の内容も抑える必要が出てきます。

必要技術
  • JavaやPHPなどのサーバーサイド言語
  • DBの知識

ゲーム・アプリ開発

ゲームやスマホのアプリ開発などを行いたいの出れば以下の内容を抑えておきましょう。

必要技術
  • フロント面全般
  • サーバサイド言語(UnityやJava言語あたりがゲーム向け)
  • DB知識

サーバー構築・インフラ整備

上記でインフラエンジニアについて少し触れましたが、場合によってはこちらの知識が必要になることがあります。


内容としては、CUIでの作業がメインとなります。
GUIが視覚的な画面操作のことを指すのに対しCUIはコマンドでの作業をメインで作業を行います。


よくイメージされるのは、真っ黒い画面にコマンドを打ちまくるやつです(笑)

 

PCのOSはUNIXやLinuxでの作業が多くDBの作業も行うためSQLの知識も必要となります。
ITの現場によっては作業を行う場合もあるため、少し玄人向けではありますが、インフラエンジニアを目指すのであれば勉強して損はしない技術となります。

 

因みにこれを覚えるとPCのセットアップやネットワークなどを自分で行えるようになるくらい詳しくなるので、できるとかなり職場で重宝される存在になります。

【スポンサーリンク】

 

プログラミングの独学は無理ではないが難しい

f:id:DwarfRabbit:20200318182552j:plain

ここまで、プログラミングの独学に必要な物についてご紹介してきましたが、やはり独学だと理解に穴が開きやすかったり、知識が偏ったりするため、ハードルは割と高いです。


そのため、途中で挫折する人も本当に多くいます。


そんなときのおすすめのコツをいくつかご紹介していきたいと思います。

オンラインの無料体験をうまく活用し独学する

一つはオンラインスクールなどの無料体験などのをうまく活用し、基礎をしっかりと学ぶことです。


勿論独学や教科書で学ぶことができますが、無料体験を行うことで少なからず自分じゃ気づけない細かい部分に気づきやすいですし、独学あるあるの「俺流コーディング」になりづらくてすみます。


お金がかからないので、気兼ねなくできるのもポイント高いです

詳しくまとめている記事があるので、そちらも一緒にお読みください。

プログラミングスクールに通う

キャリアアップ転職を考えるのであれば、いっそのことスクールに通うのも手です


確実に学ぶことが可能ですし、一番大きいのが理解できない部分を「聞くことができる」のが本当に助かります。


プログラミングは壁にぶつかり理解に苦しむ場面が必ずあります。


その時に、すぐに聞くことが得きる環境があるのは本当に便利です。

エンジニアは常に勉強していく職業

f:id:DwarfRabbit:20200318182731j:plain

ITの分野は日々進化しており、言語一つにおいても様々な言語などが日々開発されていますし、最新の情報が毎日飛び交っています。


そのため、エンジニアは常に新しい情報をキャッチ出来る様にしないと大事な仕事のチャンスを失いかねません。


趣味でやってたサイト作成が、ほんの少しのきっかけで自分が会社のホームページ作成を任されるなんてことも本当にあります。


そのため、常に勉強を心がける様にと私も上司やスクールの講師に言われていました。

ある意味、ITの知識を持って業務をしていてもその先は独学していく必要があるという訳です。

 

しかし、初心者が右も左もわからない状態で、地図も持たずに旅をするのは無謀ですよね?

 

そのための基礎をしっかりとつけて自分の中の指標をしっかりと掲げて勉強していくことがおすすめだと私は思います。