どうも、つよぽん(@tsuyopon_xyz)です!
今回は、こんな悩みを持っている方向けに、
これができるようになれば、
開発の仕事に参加できるっしょ
という答えを教えます。
目次
結論
以下のツイートでも共有した「こちらのGitHubレポジトリ」と同じサンプルコードを実装できれば、開発で求められるスキルは一通り身につきます。
【これできれば、開発の仕事参加できるっしょ】
解説タスクを洗い出したら結構なボリュームになった。
全部作ると結構時間かかるから、必要な人にだけサポートする形でいく。
・コード
・身につくスキル
・実装手順
・完成形(動画で紹介)全部GitHubにまとめました。
↓https://t.co/Tee5kMksyt pic.twitter.com/Bav7yU3AbL— つよぽん@FrontHacks講師 (@tsuyopon_xyz) August 25, 2022
このGitHubレポジトリの詳細は「README」にも書いているのでそちらをご確認ください。
このレポジトリと同じものを作ると身につくスキル
細かく技術名をあげると「NestJS」「Next.js」「TypeScript」という名前が出てきますが、ここでいう「スキル」とは、特定のプログラミング言語に依存しないWeb開発に出てくる知識・概念です。
具体例を挙げると以下の通りです。
- クライアントとサーバーのデータのやりとり(リクエスト & レスポンス)
- 認証周りの仕組み
- Cookie
- CORS
- REST API(スライドのおまけパートを参照)
- ルーティング
- HTTPメソッドの種類(GET, POST, PUT, PATCH, DELETEなど)
- HTTPステータスコードの種類と意味(200, 401, 404, 500など)
- Webフレームワーク(今回の例だと「NestJS」がそれにあたる)
- データベース(今回の例だと「RDB」の「PostgreSQL」を利用している)
- データベース設計(アプリ内の使う「データ構造」を考える)
- 「ORM」を使ったWebアプリケーションフレームワークとRDBのデータやりとり(今回の例だと「Prisma」がそれにあたる)
- マイグレーションツールを使ったDBのテーブル構築(今回の例だと「Prisma」がそれにあたる)
- 外部APIの利用(今回の例だと「SendGrid」というメール送信サービスを使って、ユーザー登録時にメールを送っている)
- ビルド
- デプロイ
- Git(GitHubへのpush、ブランチを切り分けてプルリクの作成)
- GitHub(Heroku, VercelをGitHubと連携して、GitHubに更新があるたびにデプロイするように設定している)
GitHubレポジトリで作るサンプルアプリを作るには、上記のような知識(概念)を知っている必要があります。
上記に「テスト」は含まれていませんが、ユニットテスト(単体テスト)、インテグレーションテスト(結合テスト)も、覚えておくべき概念の1つです。
しかし、最初はテストよりもアプリを動かす経験をする方が大事なので、今回はテストを取り入れませんでした。
一通り実装できたら、テストにチャレンジしてみるのも良いでしょう。(採用面接で「テストもしっかり書きました」とアピールできれば、絶対にプラスに評価されます。)
どの「プログラミング言語」「ツール」を使っても根本は同じ
さきほど書き出した内容ものは特定のプログラミング言語に依存した知識ではないです。
「React」「Next.js」「Laravel」「Ruby on Rails」「Rust」「Go」「TypeScript」「JavaScript」「Bootstrap」「Tailwind CSS」などなど…
細かい「技術」「ツール」を挙げるとキリがありません。
しかも、毎年あたらしい開発ツール(ライブラリやフレームワークなど)はたくさん出てきます。
現実的に考えて、全ての技術に手を出して、全ての技術を覚えるのは物理的に不可能です。
それでは現役エンジニアはどうやって、新しい技術の使い方をすぐに理解して、使いこなせるようになるのか?
それは、さきほども洗い出した「特定のプログラミング言語に依存しない知識を流用している」からです。
たとえば、Webフレームワークを例にします。
Rubyの有名なWebフレームワークは「Ruby on Rails」。
PHPの有名なWebフレームワークは「Laravel」や「Cake PHP」。
JavaScript(TypeScript)の有名なWebフレームワークは「Express」や「NestJS」。
これらそれぞれ利用するプログラミング言語は異なりますが、バックエンドの開発を便利にする「Webフレームワーク」です。
「Webフレームワーク」はプログラミング言語に関係なく共通する概念が存在します。
例えば、どの言語のWebフレームワークを使っても、以下のような概念が出てきます。
- ルーティング(リクエストURLに応じて、処理先を振り分ける)
- コントローラー(クライアントからのリクエストを受け付けて処理をするところ)
- ミドルウェア(コントローラ処理前の認証チェック、リクエストボディのパースなど、コントローラーの前で行いたい共通処理)
今回はWebフレームワークを例にしましたが、言語に依存しない概念を知っておくと、初めて利用する開発ツールでも、
『あー、ReactのContextってRedux的なものか。
結局のところ、フロントエンドの状態管理を一箇所でまとめるやつね。』
『NestJSでCORSの設定ってapp.enableCorsで出来たけど、
Railsではどうやるんだろう。
「Rails cors」で検索したら、
「rack-cors」って出てきたらこれ使えば良いのかな?
とりあえず、一旦使って動作確かめてみるか。』
といった感じで、次々と問題を解決しながら開発を進めることができます。
現役エンジニアの「技術のキャッチアップの早さ」「自己解決力の高さ」は、こういった特定の言語に依存しない知識の多さと、知識の流用(応用)を頻繁に行なっているからです。
ゴールから逆算して、Webエンジニア就職・転職に必要な学習だけに専念しよう
さきほども少し話したように、技術やツールは細かくあげだすとキリがありません。
Webエンジニアとして働きはじめてから覚えることもたくさんあります。(エンジニアでいる限り、開発の勉強は一生続きます。)
それではどこまで覚えれば、Webエンジニアとして働き始めることができるのでしょうか?
結論はすでに「このレポジトリと同じものを作ると身につくスキル」のパートで話した通りです。
「こちらのGitHubレポジトリ」の開発するのに必要な知識を一通り身につければ、少なくとも、すでに運用されているサービスのコードの不具合対応や、追加機能実装など開発の手を動かすことはできます。
もちろん
「AWSのインフラ構成をゼロから作れます」
「Docker、Kubernetesを使った、システム構築できます」
と聞くと、「未経験なのにすげーなー」と思います。
むしろ、僕自身「AWS」「Kubernetes」を個人開発・趣味レベルで触ったことありますが、普段からゴリゴリ使っているわけではないので、そこまで知識は深くありません。
それでもWebのフロントエンド開発やバックエンド開発、つまりWebアプリケーションの開発はできます。
あなたの直近のゴールはなんですか?
インフラエンジニアになることですか?
スマホアプリを開発するモバイルエンジニアになることですか?
Webアプリを開発するWebエンジニアを目指しているならば、まずは一人でWebアプリのフロントエンドとバックエンドを一人で開発できるレベルになればOKです。
アプリのデプロイ先はAWSでもGCPでもHerokuでもVercelでも構いません。まずはローカルで開発したWebアプリをインターネットに公開してください。
そこまでできれば、少なくとも「Webアプリのフロントエンドとバックエンドを1人で開発して、インターネット公開するスキルをあなたは持っている」ということが証明できます。
そこから先は、就職・転職活動しながら開発したWebアプリのブラッシュアップをしていきましょう。
あとは、面接のときに
「コミュニケーションがしっかりとれる」
「成長意欲・学習意欲が強い」
「人間的に魅力を感じる」
「一緒に働いてみたい」
のように、開発スキル(=ハードスキル)とは別に「人間力(=ソフトスキル)」を気に入ってもらえれば、開発スキルが少し劣っていたとしても、ポテンシャル採用という可能性もでてきます。
就職・転職活動では「ソフトスキル」と「ハードスキル」の総合点が重要です。
開発の仕事はもちろん技術スキルも重要ですが、結局のところ仕事は「人と人とで成り立っている」ので。
「ソフトスキル」「ハードスキル」という言葉を初めて知ったというかたは、以下の記事を参考にしていただけたらと思います。
【Webエンジニア就職・転職希望者向け】個別相談を受け付けてます
ここまでいろいろと書いてきましたが、
「Webエンジニア就職・転職に
必要な学習を洗い出せないよ」
「Webエンジニア就職・転職への
学習ロードマップを一緒に作って欲しい」
という方もいらっしゃるかと思います。
そういう方向けに「個別相談会」を受け付けてます。
もし個別相談を希望される場合は、「こちらのページ」よりLINE公式アカウントに登録していただき、
「Webエンジニア就職・転職の個別相談を希望します」
とメッセージをいただけたらと思います。
「個別相談会の詳細」を返信いたします。
「Webエンジニア就職・転職を目指している方向け」のアドバイスメルマガ講座(7日間)
個別相談とは別で、「Webエンジニア就職・転職のアドバイスをするメルマガ講座」もやっています。
この無料メルマガ講座では、7日間にわたって、
「プログラミング以外の開発知識では
〇〇の知識が絶対に必要だよ」
「開発知識以外にも〇〇がないと
開発スキルは足りていても、
面接では落ちまくるかもよ」
などといった、プログラミング系の本やYouTubeなどからでは、なかなか学べない情報を配信します。
無料のメルマガ講座となるので、Webエンジニアを目指されている方は、お気軽に登録していただけたらと思います^^