プログラミング~最初に知るべきこと~
今日はプログラミングについてお話していきたいと思います。初心者の方はまずこの記事を読んで最初に覚えなきゃいけないスキルを学んでください。まず最初にお伝えしたいことは、プログラミング歴が10年でも30年でもわからないことだらけなのでググりながらプログラミングします。なのでこれからプログラミングを「覚えたいな」「仕事にしたいな」と思っている方は一生学び続ける覚悟が必要になります。一度覚えたらいいといういことではありませんので勘違いしないで下さい。
プログラミングを覚えるためにはまず、プログラミング業界の「用語」と「仕組み」を覚えないと話になりません。どういうことかというと先程いったように基本的にはググりながらプログラミングします。その際に「HTTP通信を~」とか「ホスティングしてください」という用語で説明してきます。まずその用語の意味がわからないと作業が進みませんのでプログラミング業界の「用語」「仕組み」から学んでいきます。
全体像
まずどんな人がどんなことをしてプログラミングを世に出しているのかを説明していきます。基本的な仕事の順番はこちらです。
1 デザイナー 2 フロントエンジニア 3 バックエンドエンジニア 4 インフラエンジニア 5 テスター 6 プログラマー 7 プロジェクトマネージャー 8 プロダクトマネジャー
1 最初の作業はデザイナーが見た目だけの制作を行います。このプログラミングを使うことが想定される人に対して「こういうものがあればどうですか?」とヒアリングして改善してヒアリングして改善の繰り返しをしていきます。デザイナーはそのプログラミングに価値があるのかを確かめる仕事です。デザイナーがよく使うツールは「figma」や「AdobeXD」です。
2 次の作業はデザイナーが制作したものをフロントエンジニアが実用化していきます。デザイナーが作ったものはGoogleやSafariではまだ見れません。実際にプログラムすることでブラウザで見れるようになります。見れるようにすることがフロントエンジニアの仕事です。フロントエンジニアがよく使う技術が「HTML」「CSS」「Java Script」です。
3 バックエンドエンジニアの仕事はユーザーの情報を管理することです。例えば楽天市場を利用する時まず最初にログインします。ログインする際にパスワードやメールアドレスを入力しますがそのパスワードやメールアドレスは何処で管理しているのか、それがバックエンドといプログラミングが管理しています。その管理していた情報をフロントエンドに返すということをしています。バックエンドエンジニアが使用する言語はたくさんあり「java Python C# Go Kotlin 」などたくさんあります。
4 ここまで出来たプログラミングを管理する人がインフラエンジニアになります。アクセスが集中した時でもユーザーが快適に使用できるように土台を作って行きます。インフラは「AWS」や「GCP」で管理出来ますので一度調べてみて下さい。
5 ここで実際に世に出ても大丈夫なのかテストする人がテスターになります。このお仕事はエンジニアが兼用するパターンが多いです。
6 ここでプログラマー出てきますがだいたいのプロジェクトの場合フロントエンジニアとバックエンドエンジニアが兼用していることが多いです。大きなプロジェクトの場合はフロントエンジニアとバックエンドエンジニアが設計をしてプログラマーがコーディングをするという流れになります。少し皆さんのプログラマーのイメージと違ったと思いますが実際はこんな感じです。
7 プロジェクトマネージャーとはここまでの進捗状況やクレーム、品質などプロジェクトのチェックを行う管理者のことです。飲食店の店長みたいな立ち位置になります。
8 そして、ようやくプログラミングが世に出ました。世に出すことでまた色々な課題が出てきます。その課題をクライアントからヒアリングして改善する人がプロダクトマネージャーです。
以上がプログラミングに携わる人の仕事内容と流れでした。「プログラマーになりたいけどどうすればいいですか?」という質問を受けるのですが実際の現場ではプログラミングはインドに外注することがほとんどです。月2万円でプログラミングをしてくれるのでもしあなたがプログラマーになっても2万円の価値にしかなりません。なのでプログラミングだけではエンジニアとして働けないのでしっかりと学んでいきましょう。
基本的なエンジニアとしてのキャリアパスは
1 テスター 2 プログラマー 3 フロントエンジニアとバックエンジニア 4 プロジェクトマネージャー 5 プロダクトマネジャー
この順番のキャリアパスが一般的と言われていますので何処からやればいいかわからない方はこの順番で進んでいきましょう。
インターネットの仕組み
エンジニアとして働くにはまずインターネットに関する「用語」を覚えていきましょう。図書館を例で例えていきます。
図書館について「〇〇の本は何処にありますか?」と聞いたとします。A店員が「そこの棚にありますよ」このような会話のやりとりの事をインターネット上ではプロトコル(HTTPプロトコル、HTTP通信)といいます。
A店員がそこの棚に辿り着くまでの地図を描いた紙をくれました。その紙(情報)をHTMLといいます。
A店員はその紙に書いてあることを分かりやすくするため色を付けたり可愛く装飾してくれました。その紙(情報)を装飾することをCSSといいます。
A店員はその紙を叩くと鳥が出てきて鳥がそこの棚まで案内してくれるようにしました。その紙(情報)に動くアクションを加えたりすることをJava Scriptといいます。
その紙には本が置いてある場所の番号が書いてありました。本の場所(ネット上の住所)をURL(ドメイン)といいます。
その本の場所は私達が辿り着きやすいように簡単な番号で教えてくれましたが図書館内では業界用語(機械が判別する番号)をIPアドレスと言います。
A店員は業界用語といつもの簡単な番号が紐づかないのでいつも「ある場所」で紐づけをしてました。業界用語(IPアドレス)と簡単な番号(URL)を紐づけの管理している「ある場所」をDNSサーバーと言います。
出張図書館というサービスを始めました。ある日「今何処で出張サービスがいますか?」と電話が来ました。「鯵ヶ沢(サーバー)という場所(位置づけ)にいます」。鯵ヶ沢という場所に位置づけしたことを(サーバーの位置づけ)をホスティングといいます。よくサーバーにホスティングすると言ったりします。
以上が図書館の例でした。今度は実際にIT業界の話で解説していきます。
上記が実際のURLです。普段皆さんはこのURLにアクセスして色んな情報に辿り着いています。どうやってアクセスしているかというとChromeやSafariなどのブラウザからアクセスしています。ブラウザで「データーを下さい」といったらIPアドレスにの「暗号により先程出てきたプログラミングのHTMLやCSSやJavaなどが送られてくるという仕組みになっています。
今回の出てきた用語は10個です。
HTTP通信 HTML CSS Java Script URL IPアドレス ドメイン DNSサーバー ホスティング ブラウザ
この10個の単語と意味を理解していきましょう。
以上がプログラミングの超基本になります。最初にプログラミング言語を覚える前にまずこの「用語」と「仕組み」を覚えていきましょう。
最後にこれからエンジニアとして生きていく中で一番重要なことを最後におお話いたします。それは個人情報を扱う場合はしっかりと対策して下さい。万が一個人情報が流失してしまった場合あなたのエンジニア人生は終わると思った方がいいと思いますのでセキュリティー面はしっかりしていきましょう。
ありがとうございました。