プログラミングだけじゃだめ!今のエンジニアに必要な知識・ロードマップ

プログラミング入門
A beautiful giraffe in the middle of the jungle in Kenya, Nairobi, Samburu
この記事は約11分で読めます。

みなさんこんにちは、教務主任のkyo.です。

これをみている皆さんはプログラミングの勉強を始めているかと思います。
しかし、初心者の方は絶望されるかもしれませんが、ただコードが書けるようになるだけではだめです。

じつは、コード以外にも、必要な知識があります。
初心者の方は、こういった別の重要な知識が抜けしまっているので実務で通用するまで時間がかかります。

しかし、初心者のうちから重要な知識に触れておくことで、即戦力となる確率が高くなります。
よって今回はエンジニア、特にWeb系のエンジニア向けに必要最低限の知識を解説していきます。

本記事のペルソナ
  • プログラミング初心者
  • プログラミングの他の技術を知らない方
  • 実践的な技術を身に着けたい方

初心者が身につけるべき知識

では、初心者が身につけるべき技術を解説していきます。
今回は初心者向けの記事ですので、難易度順に解説していきます。

下に行くほど、難しくなっていきます。理解するのに時間がかかるかもしれませんげ、いずれは通る道(経験談)ですので、頑張って身につけてください。

フロントエンド

最初に、フロントエンドについて解説していきます。
フロントエンドというのは、Webサイトやスマホアプリなどの私の目に見える部分のことです。
パスワードや自分のIDなどをアカウントとして登録したりするためのフォームのデザイン、アニメーションや、動的なエフェクトなどがフロントエンドに当たります。

たとえば、上記のサイトを訪れてみてください。
上記のサイトは実際に運営されているウェブサイトです。2つとも巨大企業のウェブサイトなので、洗練されたデザインになっています。
これら2つのウェブサイトを見るだけでも、フロントエンドの勉強になります。
先程言った動的なエフェクトやアニメーションがサイトに使われています。

このような部分が総称してフロントエンドになります。
プログラミングを始めるなら、フロントエンドからやるというのがエンジニア界隈の共通のルートになっています。

有名な大手のプログラミングスクールも最初はフロントエンドから始めているところばかりです。フロントエンドは結果が目に見えるので、取り組みやすいですし、難易度も高くはありません。まず、プログラミングで身につけるように頑張りましょう。

フロントエンドの言語

フロントエンドの言語は以下になります。

フロントエンド
  • JavaScript
  • TypeScript
  • HTML/CSS
  • SCSS

フロントエンドの言語は少ないため、迷うことはないでしょう。
HTMLとCSSはあくまで、マークアップ言語と、スタイルシートです。これらには時間をかけず、JavaScriptもしくは、TypeScriptに時間をかけてください。

バックエンド

続いてレベル2,バックエンドについて解説していきます。

バックエンドというのは、フロントエンドの逆で、ユーザにとって目に見えない動きをする機能の全般を指します。
別名、サーバーサイドとも言われています。サーバーとの通信の部分を構築する機能で、基本的にフロントエンドよりも難易度は高いという位置づけになっています。

たとえば、有名なTwitterを例に見てみましょう。
Twitterには以下のような機能がありますね。

Twitterの機能

機能例
  • ユーザー登録機能
  • ログイン機能
  • 投稿機能
  • 検索機能
  • 画像、動画投稿機能
  • プロフィール画面編集機能
  • 投稿削除機能
  • プロフィール画面閲覧機能
  • いいね機能
  • リツイート機能

ざっと、Twitterの機能を挙げてみました。
これらのような機能をサーバーサイド言語で構築していきます。

フロントエンドと違い、フレームワークというものを利用しながらコーディングしていきます。
バックエンドエンジニアにとっては、ここが第一の関門です。
とはいえ、今ではだいぶ情報が充実しています。ネットで検索しながら学んでいきましょう。

バックエンドの言語

バックエンド
  • Ruby / Ruby on Rails
  • Python / Django
  • PHP / Laravel・CakePHP

上記が主なサーバーサイド言語と利用するフレームワークです。
選択肢が3つありますが、基本的にどれを使っても大丈夫です。もっとも学習コストが低いと言われているのが、RubyとRuby on Railsとなります。

Pythonはそのほかにも機械学習やDeepLearningなどでも利用用途があります。もしそちらをやっている方はDjangoでもよいでしょう。

ディベロッパーツール

続いて解説していくのは、ディベロッパーツールとなります。
みなさまの殆どは、Google Chromeを使っているかと思います。

みなさんが好きなウェブサイトでPCでしたら、F12キーを押してみてください。
YouTubeでディベロッパーツールを開くと以下のような画面になります。

この画面の右側は、ウェブページの構成を見ることが出来ます。
これが、フロントエンド開発で重要な役割を果たしています。

ディベロッパーツールでは、HTML、CSS、Javascriptの三つのコードをすべて包み隠さず見ることができます。これにより、どのwebページであっても、中身を知ることができるのです。

フロントエンド開発をするとき、もっとも重要かつ、参考になるのがこのディベロッパーツールになります。フロントエンドを極めたいという方は、普段からディベロッパーツールを開く癖をつけておきましょう。

DataBase・SQL

つづいては、データベースSQLについて解説していきます。

データベースというのは、プログラミング初心者の方には聞きなれない単語かもしれません。
簡単に説明しますと、データベースはwebサーバー上にあるストレージという認識で今は構いません。

先ほど、バックエンドの技術について解説しました。
しかし、バックエンドはサーバーサイド言語だけでは成立しません。なぜなら、データが保存されないのです。

アカウントなどを作るときや、ログインをして投稿をする場合、ウェブサイトを更新したり、再度訪れた時はその入力したデータは消えてしまいます。
そんなとき、データを保存するのに使うのが、データベースとなります。

idnamedateupdate
001tanjiro1899/07/011911/01/01
002nezuko1900/07/061911/02/02
003zenitsu1899/06/031911/04/02
データベースのイメージ

データベースというのは、うえのようにデータを表のように格納していきます。
このようなデータベースからデータを格納したり取り出したりしてウェブサイトに表示させているのです。

サーバーサイド言語を学習する場合、データベースも学習する必要があります。
データベースとサーバーサイド言語は一心同体といっていいほど、重要な関係があります。

そして、そのデータベースを操作する専用の言語がSQLとなります。
SQLはプログラミング言語のように、決められた文法でデータを格納、削除、更新、抽出などをしていきます。

pythonやRubyなどでデータベースを操作する場合は、SQLを利用せず、python,ruby特有のデータベースを操作する文法があります。とはいえ、データベースをどのように操作しているのかを理解する必要がありますので、SQLを触っておく必要もあります。

データベースとSQLはとても重要な技術ですので、勉強をしておきましょう。

データベースの種類

DB
  • MySQL
  • MongoDB
  • PostgreSQL
  • SQLite
  • Oracle DB
  • SQL Server
  • MariaDB

データベースはこのように種類があります。
名前や、構造、設計などの違いはありますが、基本的にデータベースの機能は同じです。
また、プログラミング言語のように文法が違うというわけではなく、SQL文はどのデータベースにも共通しているので、どれか一つを勉強すればよいです。

しかし、データベースはどれでも良いというわけではありません。
実務の世界ではこれ、というある程度デフォルトみたいなものもあります。
また、利用用途に向き不向きがあったり、オープンソースではない(有料)ものもあります。

ここでは詳しくは解説しません。
結論から言うと、現状ではPostgreSQLを使いましょう。

Unix・Linux・Unixコマンド

つづいてUnixについて解説していきます。
Unixという言葉を聞いたことある方は少ないかもしれません。

Unixというのは、WindowsやMacOSといったものと同じく、コンピュータのOSです。
WindowsとMacOSよりも先に世の中に誕生している非常に歴史のあるOSなのです。
UnixやLinuxはプログラミングとかなり密接な関わりを持っています。

なぜなら、現在のウェブ系の技術や開発環境というのはUnix・Linuxベースであるからです。
また、ターミナルという環境でさまざまな操作をするためには、Unixコマンドを利用します。Unixコマンドは開発ではかなり多用しますので、ほぼ必須知識となっています。

ウェブ系の言語を勉強する場合、ウェブ系の業界に行く場合はLinux・Unixを勉強する必要もあります。しかし、よく使うUnixの知識やUnixコマンドはよく使う知識はあまり多くありません。なので、プログラミングの傍らで学んでいきましょう。

Git・Git hub

つづいて、解説していくのはGit・Git hubになります。
ここから少し難易度がぐっと上がります。

プログラミング初心者や中級者の壁というのがこのGit・Git hubになります。
Git Hubというのは、簡単に言うとソースコード版クラウドストレージになります。
開発したコードをGit Hubのサービスを使って管理、保存をするのです。みなさんが使うDropboxやIcloud、Google Driveといったサービスと同様です。

このGit Hubのアカウントを所持し、ソースコードなどを上げることはもはやIT業界で必須作業になっています。これができない人は門前払いという企業が多いです。
なので、これももはや勉強せざる負えないものになってきました。

そして、そのGit Hubにソースコードを上げるときに使うのが、Gitコマンドになります。
DropboxやGoogle driveにファイルをアップロードする場合、タブをクリックしてPCのファイルをクリックしてアップロードします。
しかし、Git Hubでは基本的にターミナルでのコマンド操作によるアップロードを行います。よって、Gitコマンドというのも勉強しておく必要があります。

とはいえ、Gitは多くのコマンドがありますが、基本的に常用するコマンドは少ないです。まずは、基本のGitコマンドを覚えておきましょう。
初心者のうちにGitを使う癖をつけておけば、あなたは他の初心者よりも圧倒的に上を行く存在になります。

Docker

続いて解説していくのは、Dockerになります。
ここからさらに難易度が上がります。

Dockerというのは、簡単に言うとソフトウェアのバージョンを揃えて開発環境を統一するためのソフトになります。
何かしらのプロダクトを作る場合、たいていはチームの開発になります。とうぜん、個人個人のPCは違う場合もありますし、個人個人が開発環境を整えるのに利用したソフトウェア、インストールしたソフトウェアのバージョンも違ってきます。

実は、同じPython3.8とPython3.9ですら、仕様などが変わっていたりする場合もあるのです。
こういったチーム開発において開発環境が違うというのは開発をすすめるにあたってとても大きな障害になりかねません。個々のPCによって動く動かないなどということもあります。

そんなときに利用するのがDockerになります。
このDockerはPC上に新たに仮想環境を作り、その上でPythonといった言語のバージョンを統一するのです。
特にウェブ系の開発をするときは100%使われているツールになります。なぜかといえば、ウェブ系言語はバージョンがバラバラになりがちになるからです。
これが、統合開発環境、Unityといったものだったりすれば話は変わってきます。

Dockerは誰かが開発環境を作ってしまえば、他の人に配布できます。であるので、開発の場で使われるのです。Dockerはとても難しく、私自身も最初は大いに悩まされましたが乗り越えれば非常に快適に開発をすることができます。


初心者の方がいきなり手を出すことはおすすめしませんが、どこかの場でDockerを勉強しておくと、さらに他人より一歩先に進むことができます。

クラウドサーバー

最後に紹介するのはクラウドサーバーです。
クラウドサーバーというのは、完成した製品を実際に動かす場のことです。

私達が普段利用している製品、youtube,Twitter,Suica,Netflixといったサービスはクラウドサーバーというサービスを利用しています。
現在、世の中に出ているサービスはほとんどがこのクラウドサーバーを使っています。クラウドサーバーというのは以下のようなものがあります。

  • AWS
  • GCP
  • Azure

日本では大体8割くらいのサービスがAWSで動いています。
AWSは皆さんご存知、Amazonが運営しているサーバーになります。実際に開発したプロダクトを世の中の人たちが使えるようにするために必須であり、これができるとようやく玄人といったところでしょうか。

このクラウドサーバをわかっているかわかっていないかで、バックエンドエンジニアとしてのレベルが決まっていきます。クラウドサーバを勉強することは必須ではありませんが、AWSを触って、デプロイ(プロダクトを公開すること)した経験があるというだけで他の人と差別化することができるようになり、ここまで経験した人間は本当に少ないです。

なので、クラウドサーバなどを触っておくことは必ず知見になりますので、ぜひチャレンジしていきましょう。クラウドサーバはお金がかかってしまうものもありますが、勉強代として捻出しましょう。

ここまで来くることができれば、あなたはもう初心者ではありません。

まとめ

今回は、プログラミングだけではない、ほかの必要な最低限の知識の概要を解説していきました。初心者の方にとっては、かなり茨の道かもしれません。

まとめ
  • フロントエンド
  • バックエンド
  • ディベロッパーツール
  • データベース・SQL
  • Unix・Linux・Unixコマンド
  • Git・Git Hub
  • Docker
  • クラウドサーバ

しかし、これらを一つ一つこなしていけば、見える景色は変わっていきます。
今回は、ここまでとなります。

また次回の授業でお会いしましょう。お疲れさまでした。

にほんブログ村 IT技術ブログへ
にほんブログ村
タイトルとURLをコピーしました