エンジニア

IT業界未経験/27歳/高卒/ニート歴6ヶ月からAWSエンジニアに転職しました。

こんにちは、にのみや(@ninomiya_hy)です。

僕は、2018年9月に事務職を辞めてから6ヶ月間のニート期間を経て、2019年4月からAWSエンジニアとして働いています。

もともとはプログラマー志望でしたが、実際に勉強してみるとクラウドやインフラも結構面白く、いまではむしろこちらの方が好きなくらいで、日々楽しみながら仕事と勉強に励んでいます。

割とめずらしいケースかなと思い、先日こんなツイートをしてみたところ、想像以上に反響をいただきました。

興味を持ってくれる方が結構いらっしゃったので、未経験からエンジニアへの転職を目指している方にとってのモデルケースの1つとなれば良いなと思い、僕が転職にいたるまでの経緯をご紹介します。

そもそもAWSエンジニアって?

インフラエンジニアの一種で、クラウドエンジニアとも呼ばれています。

従来であれば、サーバー(でっかいコンピュータ)や通信用のケーブルなどを準備して、物理的なインフラを地上に組み立てるのが主流でしたが、僕の場合は、Amazon.comが提供しているAmazon Web Services(AWS)というサービスを利用して、クラウド上にインフラを組み立てる仕事をしてます

※AWSジャパン株式会社には入社してません。もし期待した方がいたらごめんなさい。

クラウドを利用する場合、サーバーを搬入して、ラックに積んで、通信用のケーブルを繋いで・・・といった作業をする必要はなく、パソコンの画面上でぽちぽちクリックするだけでも簡単なインフラを組み立てることができます。

また、プログラミングのようにコードを書いて実行することにより、自動的にインフラを組み立てることも可能です。

当然ながら実務ではこちらが主流となっており、より短い時間でインフラを組み立てることができる、インフラの構成をコードで管理できるなど、様々なメリットがあります。

インフラエンジニアと言いつつプログラマーっぽい仕事をすることも多いので、現時点でプログラマー志望の方も、興味があればぜひ色々と調べてみて欲しいです。

そもそもインフラって?

以下は、サーバー?ネットワーク?インフラ?という方向けの補足です。既にご存知の方は読み飛ばしちゃってください。

例えば、アパレル業界では洋服を作りお店で販売するまでの間には、

  • 洋服のデザインや使用する生地などを決める。
  • デザインをもとに工場で洋服を作る。
  • 完成した洋服を倉庫に保管する
  • 洋服を倉庫からお店までトラックで運ぶ
  • お店に洋服を陳列して販売する。

といった流れを踏むと思います。(もっと色んな手順があるけど省略)

ここで言う「洋服を保管するための倉庫」や、「洋服をお店まで運ぶためのトラック」などがインフラに該当します。

上の各項目をIT業界に置き換えると、こんな感じになります。

  • Webサービスの画面のデザインや必要な機能などを設計する。
  • 設計した内容をもとにプログラマーがWebサービスを作る。
  • 完成したWebサービスのプログラムをサーバーに保管する
  • 所定のURLにアクセスされたら、必要なデータをアクセスした人のスマホやパソコンまでネットワーク(通信用のケーブルなど)を通じて運ぶ
  • アクセスした人のスマホやパソコンの画面にデータが表示される。

倉庫に該当するのがサーバー、トラックに該当するのがネットワークです。

サーバーとネットワーク以外にもインフラに該当するものはありますが、とりあえずはプログラムを保管したり運んだりするのがインフラなんだなぁ〜と思ってもらえれば良いかな。もっと良い例えがあったら記事を修正しますね。

勉強を始める前のレベル感

事務系の職場の非IT人材の中では比較的パソコンに強い方だけれど、「Java」や「文字コード」と言われても何のことかさっぱりわからない、くらいのレベル感でした。詳しくは以下の通りです。

  • 生まれてから高校を卒業するまでの18年間、最寄駅まで車で1時間かつ娯楽施設の存在しないド田舎で過ごした。自宅にパソコンは無く、ネット環境を得たのは高校入学時に携帯電話を買ってもらってから。
  • 公立高校の普通科・就職コース(という名の大学に行けない学力の子のためのクラス)を卒業した。就職コース独自のカリキュラムとして簿記・電卓・ワープロの授業があったが、プログラミングどころかExcelすら触らなかった。
  • 高校卒業後、関西の企業に事務職として就職し、退職するまでの8年半の間、人事・労務・総務系の部署で、社内独自のシステムやOffice(Excel・Word・PowerPoint)を使った事務処理や資料作成に従事した。
  • Excel関数(四則演算をしたり、条件に一致するかどうかで◯×を表示させたりできる機能)を自作したり、マクロ(実行ボタンを押すと自動でデータを処理できる機能)を手書きしたりはできないが、既存のExcel関数を利用したり、ネット上にあるコードをコピペしてきて簡単なマクロを作成し、ちょっとした事務処理を自動化していた。
  • IT系の資格は一つも持っていなかったが、高校の授業でワープロを習ったおかげでブラインドタッチはできた。

地頭はそこまで良くはない(悪くもないはず)ですが、新しい仕事をキャッチアップしていくのは結構好きなタイプで、上司や同僚からは「真面目」とか「努力家」とか「仕事好き」と言われることが多かったです。

時折スイッチが切れると適当になるところがあるので、あまり真面目ではないかな・・・。

実際に勉強したこと

8月中旬に勉強を始めてから、2月下旬に内定をもらうまでに僕が実際に勉強したことを、時系列にそってご紹介します。

Progate(プロゲート)

8月中旬から10月初旬にかけて、Progateという初心者向けのプログラミング学習サービスを利用し、HTML&CSS → JavaScript → Ruby → Ruby on Rails5 の順に、累計40時間ほど勉強しました。

余談ですが、僕はProgateを始めた日曜日の夜に退職を決心し、週明けには上司に退職願を提出しました。

冷静に考えると、Progateを始めたばかりのこの時期に退職を決めたのは中々に無謀だったと思います。結果的に何とかなって本当に良かった・・・。その辺りの話も気が向いたら記事にしてみようかな。

プログラミング学習におけるProgateの位置付けは、こちらの井上慎也さん(@ino_dev)のツイートの通りです。

シミュレーターよりは結構面白いかな。マリオカートとか頭文字Dぐらい。

Progateだけ勉強してもプログラミングができるようにはなりませんが、心理的な障壁はかなり下げられるので、僕と同じくらいのレベル感の方が最初に学ぶコンテンツとしては最適だと思います。

Ruby on Rails チュートリアル

10月中旬から11月中旬にかけて、Ruby on Rails チュートリアルの全14章のうち第1章から第9章まで、累計35時間ほど勉強しました。途中でやめた理由は後ほど。

Railsチュートリアルは、Rubyというプログラミング言語のフレームワークであるRuby on Railsを学ぶための書籍で、Web上に無料で公開されています。

フレームワークとは、プログラミングを補助してくれるひな型のようなものです。非常に便利ですが、特に高機能なフレームワークを初心者が使うと、「何が起きたのかさっぱりわからねぇが、アプリが完成しちまった・・・」みたいなことが起きるので、フレームワークの内部の動きを理解することを強く意識しながら勉強する必要があります。

Railsチュートリアルでは、プログラミングをするための環境の準備方法、関連ツールの設定方法、フレームワークの利用方法などを学ぶことができ、実際に自分の手でログイン機能付きの簡易版SNSサイトを作り上げることができます。

ちなみに僕は第1章に8時間を費やしました。

プログラミングをする環境の準備は、AWS Cloud9というサービスを利用したので割と簡単でしたが、第1章では他にも、

  • Git(プログラミングした内容のセーブデータを自分のパソコンの中に保存・管理したりできるツール)
  • GitHub(セーブデータを他の人と共有したりできるサービス)、
  • Heroku(プログラミングして作ったアプリをネット上に簡単に公開できるサービス)

について勉強する必要があり、僕はここでかなり苦戦しました。

上のツイートにも書いた通り、ProgateでCommand LineとGitを勉強した上で再挑戦し、なんとか乗り越えられました。

RaiseTech(レイズテック)

Railsチュートリアルを途中で辞めたのは、RaiseTechというスクールでJavaフルコースを受講し、Javaの勉強に注力し始めたからです。

10月中旬から2月中旬までの4ヶ月間、毎週土曜日に2時間オンライン講義を受講し、翌週までに復習と宿題を進めていく、といった流れを繰り返しました。

カリキュラムについてはRaiseTechの公式サイトに詳しい記載がありますし、卒業生の声を見ていただくと僕の感想も掲載されているので詳細は省きますが、スクールの主な特徴は以下の通りです。

  • プログラミング(Java)、クラウド(AWS)のコースが選択できる。
  • オンライン完結型のエンジニアリングスクールで、場所を問わず学べる。
  • 現役エンジニアの方のみが講師を務めており、プログラミングやクラウドそのものだけでなく、現場で実際に必要とされる周辺知識も含めて学べる。
  • 動画視聴ではなくオンライン講義のため、タイムリーに質問ができる。
  • 就職・転職支援制度がある。運営会社の拠点が関西にあるため、特に関西圏の就職・転職に強い。(グループ会社が東京と名古屋にあるため、関西以外の就職・転職も可能)
  • 他社サービスを利用して就職・転職してはいけない等の制限はない。

そして僕の場合は、

  • 関西在住で就職先は大阪・京都・兵庫で考えており、関西に教室があるオフライン受講型もしくはオンライン受講型で、関西圏の就職に強いスクールを探していた。
  • 自分で新しいサービスを生み出すことにも興味はあるが、作ってみたいアプリやサービスの構想が明確にあるわけではなかった。どちらかといえば技術そのものに対する関心の方が強かった。(自動化・最適化などのワードにときめくタイプ)
  • リモートワークに多少興味はあるが強いこだわりはなかった。(勤務時間がある程度フレキシブルだと嬉しいが、出社することに対してそれほど抵抗はなかった)
  • とにかくお金がいっぱい欲しかった。大企業の大型案件とか面白そうだと思った。

といった考えを持っていたため、スクールの内容や方針が自身にマッチすると感じ、受講を決めました。

RaiseTechの内容や方針は、運営兼講師であるエナミコウジさん(@koujienami)も発信されているので、気になる方はチェックしてみてください。

技術書籍

RaiseTechの講義と並行して、以下の書籍を読みました。

スッキリわかるJava入門およびスッキリわかるJava入門 実践編は、タイトルが示す通りJavaの入門書です。RPG(ロールプレイングゲーム)を題材として、Javaプログラミングの基本やオブジェクト指向について、イラスト多めで解説されています。「例えがわかりづらい」と感じる方もおられるようですが、個人的には最高にわかりやすかったです。

Webを支える技術は、Webの成り立ちや、HTTP・URI・HTMLなどのWeb上のやり取りに利用される決まりごとについて解説されています。やや難しいですが、エンジニアとして重要な基礎知識を歴史的な背景から順を追って学ぶことで、より理解を深めやすくなっています。

マスタリングTCP/IP 入門編は、サーバーやネットワークの内部の仕組みについて解説されています。この4冊の中では最も内容が難しいですが、TCP/IPはWebを支える技術で学べる内容と同様に重要な基礎知識であり、これを知ることでWebの見え方が大きく変わるので、ある程度学習が進んだ方にはぜひ読んでみてほしい書籍です。

Udemy(ユーデミー)

UdemyはITに限らず様々な分野の学習用動画コンテンツが販売されているサイトです。こちらもRaiseTechの受講と並行して、以下の講座を勉強しました。

もう怖くないGit!チーム開発で必要なGitを完全マスターは、Gitの仕組みをイラストで理解した後に、実際に手を動かして勉強することができる講座です。超わかりやすいです。プログラミングの実務では知らないとそもそも仕事にならなかったりするので、特にプログラマーを目指している方にお勧めです。

手を動かしながら2週間で学ぶ AWS 基本から応用までは、AWSのサービスを実際に手を動かしながら学べる講座です。ネットワークを組み立てたり、サーバーやデータベースを設置したり、アクセスを複数のサーバーに分散させたり、怪しいアクセスが無いか監視したり、Eメールを送信したりなど、様々なサービスを一気に学ぶことができます。僕はコミットからデプロイまでを自動化するカリキュラムが一番楽しかったです。

コードの実行によるインフラの自動構築についても紹介されており、主要なサービスは概ね押さえられているため、初めてAWSを勉強する方にお勧めの講座です。インフラに関する知識もある程度身につくため、プログラマーを目指している方も受講しておくと役に立つと思います。

どうやって就職先を見つけたのか

1月下旬から2月上旬にかけて4社訪問し1社から内定をもらいましたが、希望していた条件からは少し乖離がありました。(お賃金とか仕事内容とか・・・)

その後、RaiseTechの就職・転職支援制度を利用し2月中旬に面接を受けた企業から、AWSエンジニアとして内定をもらい、こちらの企業での就職を決めました。

AWSフルコースを受けていない僕をAWSエンジニアとして採用していただいた理由については確認できていません(なんか恥ずかしくていまさら聞けない・・・)が、恐らく以下の一部もしくは全部が理由だと思います。

  • Javaフルコースでプログラミング・実務で使われている周辺知識について学んでおり、エンジニアとしての基礎が出来ていると評価された。(AWSエンジニアにはプログラマー寄りの知識もある程度必要です)
  • Javaフルコースで自動化(CI/CD)について学んでいたことが評価された。(AWSエンジニアにとって自動化(CI/CD)の知識はかなり重要です)
  • Udemy手を動かしながら2週間で学ぶ AWS 基本から応用までの講座を通じて、AWSのアカウントを取得し実際にサービスを利用した経験があることが評価された。
  • シンプルにRaiseTechの就職・転職支援の営業力がすごかった。

一番最後だけだったら泣く。

CI/CDって何?という方は、手前味噌ですが丹精込めて作った僕の人生初LT(ライトニングトーク。勉強会などで実施する5分程度のプレゼン)資料をご覧ください。IT業界未経験の方向けに作っています。

なぜJavaではなくAWSを選んだのか?

ここまで読んでいただいた方のうち何人かの方は、

「何でJavaを勉強してたのにAWSエンジニアに転職してんだコイツ・・・?」

と不審に思われた方もいらっしゃるでしょう。まとめるとこんな感じです。

  • Udemy手を動かしながら2週間で学ぶ AWS 基本から応用までの講座を学んだ時にAWSの虜になった。(この時点で「AWSフルコースを受講しておけば良かった・・・」と思っていました)
  • 業務系の企業も面白いけれど、将来的にモダンな企業やリモートワークのできる企業に興味が出てきた場合、JavaよりもAWSを勉強しておいた方が選択肢が豊富なのではないか?と考えた。
  • RaiseTechの就職・転職支援の運営からタイミングよくAWS案件の情報が流れてきたので速攻で手を挙げた。

一言で言えば、スクールで勉強したこと、自分で勉強したこと、興味、案件情報のタイミングの全てが完璧にハマったからです。運も実力のうちってやつですね。

まとめ

だらだらと書き綴ってしまいましたが、僕の転職にいたるまでの経緯は以上です。最後に、実際に学んだ項目の一覧を再度掲載しておきます。

学習サービス、Web書籍、スクール

Progate

Ruby on Rails チュートリアル

RaiseTech

技術書籍

スッキリわかるJava入門

スッキリわかるJava入門 実践編

Webを支える技術

マスタリングTCP/IP 入門編

Udemy

もう怖くないGit!チーム開発で必要なGitを完全マスター

手を動かしながら2週間で学ぶ AWS 基本から応用まで

僕は結果的にAWSエンジニアに転職できましたが、内定をもらった時点のスキルセットは「AWSの概要が分かるJavaエンジニア見習い」でした。

内定をもらってから割と必死にインフラやAWSについて勉強したので、何とか仕事になっています(と信じたいです・・・)が、ServerSpecやAnsibleなどのインフラ系のツールの知識が全くなくて若干苦労しています。

これからAWSエンジニアになりたいと思っている方がいらっしゃれば、そうしたインフラ系のツールの知識も学べるRaiseTechのAWSフルコースの受講はお勧めです。

プログラマーになりたい方は、上の一覧のJava関連の項目を、ご自身が希望する企業や業界で採用されている言語に置き換えてもらえれば、インフラの知識も含めてバランス良く学べるのではないかな、と思います。

この記事の中でよく分からなかったことや、聞いてみたいことなどがあれば、僕のTwitter(@ninomiya_hy)にご連絡いただければ、お答えできる範囲でご返事しますのでお気軽にどうぞ。

ここまでお読みいただきありがとうございました!