サラリーマンを続け未経験からWEBエンジニアに6ヶ月で転職するまで【第1部/3部作】

初めまして。ユーキと申します。

タイトルからもわかる通り、僕はサラリーマンを続けながらWEBエンジニアを目指しています。エンジニア見習いといったところです。

「**社会人を続け**」ながら、「**6ヶ月間**」で転職を成功させるための軌跡を残したいと思い本記事を書くことにしました。

＊＊2018年12月に勉強を開始し、6ヶ月間、つまり2019年6月までの転職＊＊を目指しています。
本記事では、勉強開始から2019年2月現在までの2ヶ月間を記します。

5000字程と長くなりましたが、お付き合いいただければ幸いです！

参考1：[サラリーマンを続け未経験からWEBエンジニアに6ヶ月で転職するまで【第2部/3部作】](https://qiita.com/YukiWebTech/items/e975f41fd55e3b4cbd81)
参考2：[サラリーマンを続け未経験からWEBエンジニアに6ヶ月で転職するまで【第3部/3部作】（→9ヶ月かかりました）](https://qiita.com/YukiWebTech/items/2c4f95cb347b68428f2b)

目次は以下の通りです。

#目次
0.本記事の目的
1.WEBエンジニアを目指す理由
2.筆者のスペック
3.勉強時間
4.勉強内容
5.今後の方針
6.最後に


#0.本記事の目的

1.勉強過程をアウトプットし客観的に確認し軌道修正したい
2.先輩方からアドバイスをいただきたい
3.未経験からWEBエンジニアを目指す方と高め合いたい

#1.WEBエンジニアを目指す理由
僕がWEBエンジニアを目指すのは2つの理由があります。

1.WEBを通したサービス拡大したい
2.仕組みを作れるようになりたい

##WEBを通したサービス拡大したい
「**WEBを通したサービス拡大**」をしたいと考えるのは、2018年4月に始めたブログ運営がきっかけとなっています。

始めは雑記ブログとして、資格勉強、レジャー、筋トレ、サプリメント、レストラン、ファッションなど広範なジャンルの記事を100記事ほど書きまくりました。

日に日に増すアクセスが嬉しく、記事を書きながら「SEO」や「WEBライティング」、「WEBマーケティング」も勉強。
書籍『沈黙のWebマーケティング』と『沈黙のWebライティング』は最高の教材でした。

ブログ開始後5ヶ月ほどで100記事を書き終えたところで、アクセス解析についても学びました。
ちなみに「Google Analytics」や「Google Search Console」、「GRC」といったツールを用いています。

すると、ブログの雑多なジャンルの中でも「筋トレとサプリメント」に関するアクセス数が圧倒的に多い事が判明。その後はブログのジャンルを「筋トレとサプリメント」に特化した方向で舵を切る事に。

試行錯誤の末、現在では月間PV3万ほどで、収益も程よく上がっています。

<img width="375" alt="IMG_0632.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/331354/5d997457-0042-13a9-2fad-be7bd0510b43.jpeg">

僕がこの経験から、**WEBでユーザー（読者）へ向けて発信することで、自分のアイディアが莫大に広がっていき、とても大きな喜びを得る**事ができました。

しかしブログは、あくまでも僕の一方向的な情報発信であり、言ってみれば静的なサービスです。
ユーザー同士が交流できるような**動的なサービスを開発できれば、より多くの価値提供ができるのではないか**と考えました。

この、「動的なサービスを作りより大きな価値提供をしたい」との思いが、WEBエンジニアを目指す僕のモチベーションです。
そして、チームでサービスを開発できるため、個人開発者よりもより大きな（たくさんの人に使ってもえらえる）サービス開発を担える可能性が高いと考えて、WEBエンジニアとして企業に所属する道を目指しています。

##仕組みを作れるようになりたい
詳細は後述しますが、僕は入社以来経理マンとして仕事をしています。
社内の業務効率化に資するプロジェクトを何件か担当したなかで、ITによる仕組み化・効率化の影響を目の当たりにしました。直近ではRPAなど。

こうした経験は、今後仕事をする上で「**自分でITによる仕組みを開発できるスキルを得たい**」と考えるようにいたりました。

以上より、「WEBを通したサービス拡大」と「仕組みづくり」に興味を持って、WEBエンジニアを目指している、というわけです。

#2.筆者のスペック
僕のスペックは下記の通り。

1.社会人6年目：エネルギー会社経理部所属
2.資格：基本情報技術者、宅地建物取引士、日商簿記検定2級、FP2級
3.趣味：筋トレ

「WEBエンジニアになるなら会社を辞めてフルコミットすべき」という意見をよく聞きますが、僕は社会人を続ける道を選びました。理由は簡単で、もしプログラミングへの適性がなかった場合のリスクはかなり大きいものと考えたからです。

現在はエネルギー会社の経理部に所属しています。月間の残業時間が50時間ほどで、少し多め。

また、**勉強する事がとても好き**でいくつもの資格を取得しています。ITへの興味から、2018年の春試験で基本情報技術者を取得しました。
今思うとWEBエンジニアを目指すにあたり必須の資格ではないですが、ネットワークやデータベース周りの知識がある程度ついていたのはよかったなと思います。

趣味はもちろん**筋トレ**です。最低でも週に1度はジム通い。
種目は、ベンチプレス、スクワット、懸垂、ディップスをそれぞれ10回3セットがルーティーン。
自慢の筋肉は「大胸筋上部」です。お目にかかる際は、ご注目をよろしくお願いします。

#3.勉強時間
社会人がWEBエンジニアを目指すに当たって一番の課題は勉強時間の確保ではないでしょうか。
僕は下記のようにどんなに仕事が忙しくても**必ず1時間**は勉強をする時間を作っています。
イメージ的には、平日の空き時間はフルコミット、土日は8割コミットくらいで、週に15時間、月に60時間くらいになります。

1.平日朝：毎日45分(7:30~8:15)
2.平日昼:毎日20分(12:20~12:40)
3.平日夜:不定期(残業のため週1程度)
4.土日:各5時間

平日の昼は会社での勉強となるため、スマートフォンを使い書籍での学習に充てています。
具体的には、iPhoneのKindleアプリを使っているため、リフロー型レイアウトの書籍が適しており、現在は『WEBを支える技術』を読んでいます。

土日の勉強時間が短くないか？と思われるかもしれませんが、フルコミットならぬ8割コミットくらいです。
残りの2割は筋トレや妻との時間を楽しんでいます。

#4.勉強内容
##前提
僕は勉強の進め方として1~3月を独学、4~6月をプログラミングスクールで行うことに決めました。
基礎・基本は良い教材がたくさんあったため、独学の道を選びました。
また、4月以降はオリジナルプリケーションなど本格的なアプリケーション制作に注力するため、そのサポートを効率的に行ってくれそうなオンライン完結型のプログラミングスクールを選びました。

以下では、12月下旬に勉強を開始し、2月現在に至るまでを時系列で振り返ります。

##12月下旬〜1月下旬
###「Progate」にてWEBサービス開発基礎を学ぶ
プログラミングスクールの体験学習を機に本格的に勉強を開始しました。
翌日にはProgateを開始し、即有料会員となりました。

具体的には下記のコースを2週程度しました。

- HTML
- Ruby 
- Ruby on Rails 
- Command
- SQL 
- Git

1週目は理解できないところもとりあえず進め完遂。

2週目以降は、わからない部分を『現場で使える Ruby on Rails 5速習実践ガイド』で知識を補充しながら進めています。
また、エラーが出た際は、『プロを目指す人のためのRuby入門』を読みながら自力でデバッグできるよう工夫しました。

1回あたり30分未満の勉強時間しか確保できない場合は、今でもProgateの「Ruby on Rails」編をやっています。
環境を構築する手間がかからず一瞬で勉強を開始でき、また書籍を使用しながら学習することで効率よく知識を深める事ができるからです。

##2月上旬
###機械学習エンジニアへの興味
ITエンジニアの仕事内容を調べているうちに、WEBエンジニアに加えて、「機械学習エンジニア」の存在を知りました。どうやら「数学」の知見が必要なよう。

僕は私大の経済学部出身ですが、結構数学が好きです。
高校生の時は数学が得意で大学も数学受験しました。大学では必修科目として線形代数や行列、統計学が必修科目として組み込まれていました。

この時期は、数学を使うエンジニアになんとなく親近感を覚え、機械学習へ興味を持ち、機械学習エンジニアへのキャリアについても検討しました。

具体的には、下記を学びました。

- 書籍『機械学習エンジニアになりたい人のための本 AIを天職にする』
- Udemy「【キカガク流】人工知能・機械学習 脱ブラックボックス講座 - 初級編 -」

書籍では、機械学習エンジニアの広範な活躍方法を知り、Udemy講座では基礎的な数学やPythonとライブラリの知見を学ぶ事ができました。

結果的には、「WEBサービスを作りたい」との思いが強いことを確認し、WEBエンジニアへの道を迷わず進むことになります。

独学の場合は、こうした回り道ができるのが良いですね。

##2月中旬

###Udemy「よくわかるRuby on Rails入門」にてWEBサービスの基本を学ぶ
実際のWEBサービス開発の知見を得たいと考えて、Udemy「よくわかるRuby on Rails入門」を受講しました。

こちらの講座は、Q&Aサービスを開発するもので、写経しながら僕が開発したコードは下記の通りです。

Github:https://github.com/yuki0920/qanda

ProgateからWEBサービス開発の橋渡しができました。

具体的には、「Cloud9の環境構築」や「heroku」に加えて、Progateで学んだ下記の知識を、「実際のWEB開発ではどのように活かす事ができるのか」を知る事ができました。

・HTML+ CSS 
・Ruby 
・Ruby on Rails 
・Command(ターミナル)
・MySQL 
・Git

この時、初めてエラーの問題に直面。特に、データベースやマイグレーションエラーは修正不可能な場合が多く、かなりの時間を費やすことになりました。

過去に実行したマイグレーションファイルに追記してしまったり、そもそもマイグレーションファイルの名称を誤ってしまったりしたことが原因でした。

ググったりしながら、下記の知識を補充して、なんとか開発を完了させる事ができました。

```
#データベースを削除
rails db:drop

#マイグレーションファイルのバージョンを戻す
rails db:rollback

#migrate、drop、createを一度に実行
rails db:migrate:reset

```


プログラミングにおける「調べる」→「試す」の繰り返しは初めてでしがたが、徐々にコツもわかってきました。


##2月中旬
###Udemy「もう怖くないGit！チーム開発で必要なGitを完全マスター」でGitHubへの習熟
初めてのwEBサービス開発では「**バージョン管理の重要性**」を痛感。

学習履歴はこんな感じです。
GitHub:https://github.com/yuki0920/git_tutorial

バージョン管理していないと、「初めからやり直さなければいけなかったり」、「いつどんな変更を加えたのかわからない」という点が非効率的だと感じ、Git/GitHubの知見をより深め、使いこなせる必要があると感じました。

初学では、Udemyの動画教材は勉強スタイルに合っている事がわかってきたので、Gitの学習もUdemyを用いました。

下記のコードを学びました。

```
git init
git add
git commit
git status
git rm
git log
git diff
git fetch
git merge
git pull
git checkout
git branch
git remote show [リモート名]
git remote add origin [URL]
git push origin [branch]
```

「ブランチを切って、一人プルリクエストからの一人コードレビューして、マスターへマージ」を出来るようになり、Gitについての抵抗感がなくなり、自信がつきました。

余談ですが、GitHubへpushしているのにの草が生えていなくて苦悶しました。

・masterブランチへpushする
・実施環境でのemailアドレスとGitHubのemailアドレスを対応させる

事で解決しました。
せっかく習ったので、ブランチを切って開発していても草が生えなくて泣けました。

##2月下旬
###書籍『現場で使える Ruby on Rails 5速習実践ガイド』でWEBアプリケーションスキルの深化 
より高レベルなWEBアプリケーションのスキルを得るため、『現場で使える Ruby on Rails 5速習実践ガイド』を使用しています。

現在1週目でサンプルコードをコピー&ペーストしながら、全体感を掴んでいるところです。

もちろん、GitHubを使い、ちょくちょくpushしています。

GitHub:https://github.com/yuki0920/taskleaf

サクッと1週を終えましたが、基本的なCRUD機能に加えて、

- RSpecによるテスト
- 検索
- ソート
- ファイルアップロード
- CSVのインポート/エキスポート
- ページネーション
- Ajax

なども学ぶ事ができました。

まだまだ、ロジックの理解が足りないので2週目に突入予定です。

##補助教材(隙間時間用)
###書籍『WEBを支える技術』
サラリーマンを続けながらの勉強時間は限られているので、隙間時間は有効活用すべきだなと感じています。
現在はWEB技術の名著、『WEBを支える技術』を読んでいます。

難しい内容ですが、

・WEB
・REST
・HTTP
・URI(URL)

などが参考になります。

うまく取捨選択しながら知識をインプットしていきます。



#5.今後の方針

今後の方針は、ざっくりと下記をベースに行なっていきます。

##3月
- 目的：WEBアプリケーションスキルの深化
- 手段：書籍『現場で使える Ruby on Rails 5速習実践ガイド』

##4月
- 目的：WEBアプリケーションスキルの深化
- 手段：Twitterクローンの開発/楽天APIを利用したECサイトの開発

##5月〜6月
- 目的：技術力証明用ポートフォリオの作成
- 手段：AmazonAPIを利用した口コミサービス型のオリジナルアプリ開発



#6.最後に
- **先輩方からの勉強方法についてのアドバイス**
- **同じく未経験からWEBエンジニアを目指す方からのコメント**

お待ちしております！！

以上、初めてのQiita投稿でした！！
次回は、「サラリーマンを続けながらWEBエンジニアに6ヶ月で転職するまで【第2部/3部作】」を4月末に投稿予定です。