1.はじめに
皆さん、こんにちは。
新卒入社2年目の Web エンジニアです。
この度、AWS が主催する疑似プロジェクト「ANGEL DOJO」に参加する機会をいただいたので、なぜインフラでもない若手の Web エンジニアが AWS を学ぶのかというテーマで記事にしてみました。
ANGEL Dojo とは
ANGEL Dojoでは次世代を担うAPNの若手のエンジニアの方々に、擬似プロジェクトを通じてアジャイル、DevOps、モダンなアプリケーション開発などのクラウドネイティブな手法と、様々なInnovationを作ってきたAmazonの文化と考え方を体験いただくことで、お客様にクラウドの価値を100%届けるための基礎的なスキルを実践を通して身につけていただきます。参加者の皆様はここで培ったスキルと、各パートナーの皆様がお持ちのそれぞれの強みを活かすことでお客様のビジネスを成功に導き、日本のITや経済をさらに成長させる主役、すなわち「APN Next Generation Engineer Leader」になっていただきます。
(「日本を元気にする」APN Next Generation Engineer Leaders(ANGEL) Dojo のご紹介
https://aws.amazon.com/jp/blogs/psa/apn-next-generation-engineer-leadersangel-dojo )より
2. Web開発を1年間経験して感じたこと
今回のテーマに入る前に、私が入社後に携わった業務を簡単に紹介し、そこで感じたことについて書かせてもらいます。
私は大学を卒業後、今の会社に新卒として入社しました。
入社後は、約3ヵ月の技術研修を行い、その後 OJT 期間を経て Web 開発の部署に配属となりました。
配属後の主な業務は次の通りです。
- 基本設計
- 詳細設計
- Java を使った簡単な開発
- 単体テスト、結合テスト
- 保守(PHP)
こう見ると色々経験させてもらっていて、まずは感謝です。
実際は、設計書の修正やテスト業務がほとんどだったという方もいるかもしれません。
ただ、どちらにしろ1年間 Web 開発の業務を経験して下記のように感じた仲間は多いんじゃないかなと思います。
(いや、ムズすぎだろ!)
(全く、意味がわからん...)
(俺、こんなできなかったっけ?)
はい、、自信喪失です。笑
私もまさにこの状態になりました。
私の周りにいるエンジニアの方々は、複数の分野での知識や経験を持ち合わせていて、広い視野で開発に携わっていたり、
スケジュールやタスクの管理ができ、状況によって柔軟に対応ができたり、
たとえ、経験値が浅い分野でも既存の知識とハック精神で何とかしてしまうといったような人が多くいます。
そういった方々と仕事をしていると、こういうエンジニアと肩をならべられるようになるにはいったい何年かかるだろうか...と考えてしまうこともしばしばあります。
特に、若手の Web エンジニアで同じように感じている人は多いのかなと思います。
というのも、圧倒的に経験値が足りないですよね。
得た知識に経験が上乗せされて初めて身についたといえると思いますが、必要とされる知識量も多いのでどうしても時間が必要になってしまいます。
今後、いくつかの言語を勉強しつつ複数のPJを経験することでこの経験の差を埋めていくことは可能かもしれません。
しかし、エンジニアが不足しているこのご時世であれば、エンジニアとして需要を上げる近道というものがあってもいいのではないかと考えました。
そして ANGEL Dojo に参加する中で AWS が、この近道になるのではと感じています。
3.若手のWebエンジニアにとっての近道は何か
「いやいや、AWS を勉強するのは当たり前なんじゃない??」
と、思う方もいるかもしれないですが、ポイントは Web 開発のエンジニアが AWS を使った Web 開発、特にサーバレスに特化した開発を学ぶということです。
なぜ、サーバレスに特化した開発を学ぶことがポイントなのかを説明する前に、1つ具体的なサーバレスの開発事例を紹介したいと思います。
画像は、シンプルな ToDo アプリをサーバーレスで構築した例になります。
ユーザ管理に Amazon Cognito 、ロジック処理に AWS Lambda と Amazon API Gateway 、データベースに Amazon DynamoDB を使用しています。
また、AWS Amplify を使用することでアプリケーションのコードリポジトリを接続するだけで、コードコミットを行うたびにフロントエンドとバックエンドへの変更を単一のワークフローにデプロイすることができます。
このような、サーバレスでの開発では大きく2つの利点があると考えています。
1つ目は、エンジニアが余分な開発をする必要がなくなるという点です。
今までは、インフラエンジニアが AWS を使いサーバ環境を構築し、Web エンジニアが何かしらの言語を使って Web 開発を行うというのが一般的でした。
しかし、近年では AWS が提供する多種多様なクラウドサービスにより、Web 開発に AWS のサービスを使う場面も増えています。
事例であげたように AWS のサービスを使った Web 開発では、自身が開発するべきことと AWS に任せることを明確に把握することで、結果的に顧客のための開発にフォーカスすることができます。
そして、2つ目の利点は拡張性や俊敏性を高めることができる点です。
先ほどの事例を見るとわかりやすいですが、AWS Lambda で機能ごとに複数のコンポーネントを組み合わせてアプリケーションを構築しています。
このように、コンポーネント間を疎結合にすることで依存性が低くなり拡張性の高い開発や保守が可能になります。
また、AWS Amplify のように CI/CD を導入することによって「作業」→「テスト」→「公開」の流れを自動化することができます。特にアジャイル開発では頻繫に機能を追加していくため、この俊敏性が重要になります。
以上のことが、サーバレスでの開発を行う利点だと思います。
ここで、「なぜ、サーバレスに特化した開発を学ぶことが Web エンジニアにとっての近道になるか」という疑問に戻りたいと思います。
とは言え、ほとんど答えは書いてしまったのですが、1つ目は上記で説明したようにサーバレスでの開発に利点があるという点です。
そして、もう1つはまだまだサーバレスでの開発事例が少ない点だと思います。
これらは比較的新しい概念ですし、クラウドの進化も速いため周りのエンジニアとも経験の差は少ないのではないでしょうか。
もちろん、サーバレスアーキテクチャは顧客の課題を解決するための手段の1つなので、これだけを学べばいいとは思いません。
ですが、若手の Web エンジニアが市場価値を高めるためにサーバレスアーキテクチャについて学ぶというのは大きなメリットがあると思います。
4.サーバレスの開発を触ってみる
とは言っても、サーバレスの勉強なにから始めればいいかわからない方もいるかと思います。
個人的には、興味があるものに手を出してみればいいと思っていて、AWSの資格の勉強もありだと思います。
私は、サーバレスのハンズオンを行ってみるのがおすすめです。
理由は2つあります。
1つ目は、手軽に模擬開発ができる点です。
AWSでは、初心者向けのハンズオン資料をまとめたサイトがあります。
その中の「サーバーレスアーキテクチャで翻訳 Web API を構築する」でサーバレスの構築を動画で説明していて、手を動かしながら AWS を使った実装を体験できます。
2つ目は、Cognito や Amplify など Web 開発に関わるサービスの理解が、文字で勉強するよりも進みやすい点です。
Qiita でも、Cognito や Amplify を使った開発についてまとめた記事があったので参考にしてみてください。
私も、ANGEL Dojo に参加する中でサーバレスアーキテクチャの実装を行っているので、近々 Qiita で紹介できればと考えています。
5.おわりに
今回、ANGEL Dojo に参加する機会をもらったことで、同世代のエンジニアから多くの刺激をもらっています。
エンジニアとして苦戦することが多くどうしたもんかと考えていた時に、ANGEL Dojo に参加する機会をもらいました。
結果、色々と学ぶことができているので、1人でもこの記事に共感してくれる方がいれば幸いです。
つらつらと AWS をテーマに書いてきましたが、実は6月に2回目の AWS-SAA 資格を受験したのですが合格できず、最近はさすがに SAA の勉強に飽きてきてしまいました。
どなたか合格への近道を知っていたら教えてほしいです...。