プログラミング初学者が独学でポートフォリオを完成させるまでの話～ポートフォリオ制作の流れ～

#自己紹介
2019年3月初旬にエンジニアYouTuberの動画を見てHTML/CSSから[Progate](https://prog-8.com)でプログラミングの勉強を始め、2019年6月末にRuby on Railsのポートフォリオを完成させてデプロイしました。2019年4月からは大学院の修士課程（農学）にいて、21卒でエンジニアを目指しています。プログラミングの勉強を始めた2019年3月時点ではプログラミングは完全未経験でした。
本記事では独学での勉強の流れや、はまりやすいことを書いているのでプログラミング学習の計画を立てる際の参考にしていただければと思います。また、ポートフォリオ制作の際にできなかったことも正直に書いているので、本記事を読むことで「こいつもこれができなかったけれど、こいつが最後まで独学できたんだから自分だってできる」というような感じで初学者の励みになればと思います。

#独学の大まかな流れ（筆者の場合）
1. 2019年3月にエンジニアYouTuberの動画を見てエンジニアが稼げることを知り、Progateを始める
2. プログラミングスクールに行こうとしていたが、3月下旬、あるスクールの担当者の提案から独学でポートフォリオ制作を頑張る方向に切り替える
3. 4月中旬にポートフォリオの制作を開始し、ゴールデンウィーク期間中は連日ポートフォリオ制作を進める
4. ゴールデンウィークが明けてからは忙しく、なかなかポートフォリオ制作ができない時期が続く
5. 6月に入って忙しさがひと段落し、ポートフォリオ制作を再開。6月末にポートフォリオが完成し、デプロイ

# 各時期にしたことや、そのとき感じたこと
### 1. 2019年3月にエンジニアYouTuberの動画を見てエンジニアが稼げることを知り、Progateを始める
見ての通り、筆者はかなりミーハーな理由でプログラミングを始めています（笑）。今はエンジニア不足のため、きちんと戦力になるのであれば、そのような理由でプログラミングの勉強を始めてもよいのではないでしょうか。
プログラミングの勉強を始める前に、プログラミング言語の選択です。いろんな人の記事や動画を見て、どの言語にするかを総合的に判断しましょう。言語の人気などの情勢はすぐに変わるものなので、自分でしっかり調べて最新の情勢や行きたい企業をもとに判断するとよいと思います。筆者はRubyを選びました。
Progateの勉強法については、筆者はまず学習コースを一通りやった後、コードを残した状態で復習していました。そして、復習する際には書いたコードを説明とともに自分専用のライブラリとしてPCに保存していました。コードの意味を一度に理解しようとはせず、復習でコードを保存する際にある程度理解することを目標にしていました。エンジニアになりたいと思ってProgateをするのであれば、Progateには課金しましょう。きちんと集中して学習すれば課金は1000円で済みます。筆者は忙しさを言い訳にダラダラ学習していたので3000円課金しましたが（笑）
また、筆者は2019年3月までは大学4年生であり、2019年4月からは修士に進学することが決まっていました。しかし、エンジニアYouTuberの動画を見始めるようになってからは、大学院を中退してプログラミングスクールで勉強し、そのまま働こうと思うようになっていました。今となってはこの選択は捨て身の非常に危険な選択であることが分かりましたが、世間知らずの筆者は当時、この選択の危うさが分かっていませんでした。そんな筆者の間違った方向性を修正してくれた、ある出会いがあったのです。

### 2. プログラミングスクールに行こうとしていたが、3月下旬、あるスクールの担当者の提案から独学でポートフォリオ制作を頑張る方向に切り替える
筆者は大学院を中退してそのまま働こうと思っていくつかのプログラミングスクールに話を聞きに行っていました。しかし、[DMM WEB CAMP](https://web-camp.io/)さんに説明を受けに行ったところ、個人面談の担当者の方から「新卒採用まで待った方がいい。修士の間にポートフォリオを作りなさい。新卒採用でポートフォリオを作ってくる人はほとんどいないから、そこでポートフォリオがあると優位になる。今後のことを考えると、新卒カードは絶対に捨てない方がいい。」という内容のことを言われました。このアドバイスは自分たちのプログラミングスクールに入らない方が良いと言っている内容であり、ビジネスチャンスを自分から断っていることになります。短期的な自分たちの利益を度外視しても筆者のためになるアドバイスをしていただき、本当に感謝しています。筆者はこのアドバイスのおかげで極端な選択をやめて現実的な方向に行けました。プログラミングスクールを選ぶ際には、一度DMM WEB CAMPさんにお話を伺いに行くと親身にアドバイスしていただけると思いますので、おすすめです。

### 3. 4月中旬にポートフォリオの制作を開始し、ゴールデンウィーク期間中は連日ポートフォリオ制作を進める
かくして筆者は独学でポートフォリオを作る方針に切り替えました。Progateでの勉強が一通り終わったので、ポートフォリオの制作を開始しました。とは言っても、ライブラリ作りがまだ終わっていなかったのでProgateへの課金は継続していました。
Progateは学習編と道場編がありますが、Railsコースの道場編は面倒臭くなったのでしませんでした。筆者の場合はライブラリさえ作れれば道場編をしなくてもポートフォリオを作れたので、道場編をしなくてもポートフォリオは作れます。しかし、実際にポートフォリオを作る段階になるとProgateの道場編以上に多くのエラーが出てくるので、ポートフォリオ制作で極力詰まりたくない人は道場編もしっかりしておくのが無難かもしれません。
ポートフォリオ制作の前にRubyとRailsの環境構築をしてRailsの初期画面を自分のPC上に表示させますが、これがかなり大変でした。Aという作業をするためにはBとCをインストールしないといけないが、BをインストールするためにはDとEとFが必要、といった感じで芋づる式に必要なものがたくさん出てくるため、自分が何をしているのか途中で分からなくなります。環境構築で挫折する人が一定数いるというのも納得で、環境構築が自分できちんとできた人は独学でポートフォリオを完成させることができるだけのリサーチ力と忍耐力があると思います。（あとはやる気が続くかどうか次第です）
ポートフォリオ制作の最初はProgateのコードのコピペです。筆者はProgateでRailsの道場コースをしていなかったため、ポートフォリオを作りながらコードの意味を理解していきました。そして意外だったのが、Progateのコードを完全にコピペしたコードでもエラーが出ることです。ググったところ、Progateのコードが必ずしもベストなコードではないことが分かったり、Rubyのバグが原因（Rubyのバージョンを切り替えると解決しました）だったりしました。
ゴールデンウィークの期間中に一気にポートフォリオ制作を進め、Progateのコピペ作業はゴールデンウィーク期間中に終わりました。

### 4. ゴールデンウィークが明けてからは忙しく、なかなかポートフォリオ制作ができない時期が続く
エンジニアYouTuberやプログラミングスクールの人たちは会社に入るまでの学習期間を3か月程度と言っている人が多かったので、3月初旬の勉強開始から約3か月後になる5月末にポートフォリオを完成させようとしていました。しかし、連休が明けてからは大学院の方で課題の提出ラッシュがあったために忙しく、ポートフォリオの制作時間がなかなか取れない時期が続いていました。ポートフォリオ制作のモチベが下がることもありましたが、そういう時はエンジニアYouTuberの動画を見返してモチベを上げていました。エンジニアYouTuberたちは極端なことを言っていることもあるので（お前が言うなというツッコミはさておき）内容を安易に鵜呑みにしない方がいいと思いますが、プログラミングのモチベを維持するためには結構いいものです。

### 5. 6月に入って忙しさがひと段落し、ポートフォリオ制作を再開。6月末にポートフォリオが完成し、デプロイ
6月に入ると大学院での課題の提出ラッシュが終わって時間に余裕ができ、週末を中心にポートフォリオ作りをしていました。この頃になるとProgateで勉強していない機能を実装しようと頑張っていました。筆者の場合は、勝又健太さんが[ポートフォリオに入れた方がよい機能一覧](https://www.youtube.com/watch?v=eFX7moQxU7M&t=245s)として挙げている機能を一通り実装し、ポートフォリオの内容から筆者が追加したいと思った機能も追加しようとしていました。勝又さんは欲しい機能を10個ほど挙げていますが、Progateの内容ですでに実装できている機能が割と多いので、実装方法を最初からググらなければいけない機能は意外と少ないです。そのため、一部難易度が高い機能もありますがこれからポートフォリオを作る皆さんも勝又さんの挙げている機能一覧に挑戦してみてはどうでしょうか。
Progateでは扱っていない機能を実装する際には、当然のことながら実装方法をググります。すると、大抵の場合はすぐに実装方法を丁寧に書いてくれているページが見つかるのですが、大変なのはここからです。実装手順が5つぐらい書いてある場合、99％の確率で途中どこかでエラーが出ます。そのエラーの対処に時間がかかることも多く、ここは踏ん張りどころですね。
筆者の場合はほとんどの機能は実装できたのですが、テスト機能においてテストコード内でログインする方法が分からず、最終的にテスト機能の実装をあきらめました。このように実装をあきらめる機能が出てくるのは本来あまり良くないことですが、筆者は最後まで独学でポートフォリオを作ることを優先したので、挫折しないためにこのようにしました。独学だとこのような妥協が必要になることもあるかもしれません。また、実装をあきらめる機能があってもProgateにはない機能がポートフォリオにある方がいいため、ポートフォリオの設計段階ではポートフォリオに入れたい機能を多めに挙げておくといいかもしれません。
最終的にポートフォリオを完成させることができたら[GitHub](https://github.co.jp/)で公開します。実はこの記事を書いている2019年7月時点ではProgateのGitコースは無料で受講できるので、Progateをすでに解約していたとしてもGitHubの使い方をProgateで勉強できます。Gitの基礎はProgateで勉強し、分からないことがあったらググるというのが一番簡単だと思います。
筆者は最終的には[Heroku](https://jp.heroku.com/)というサービスでポートフォリオをデプロイ（インターネット上で公開すること）しました。Railsアプリの場合、デプロイの前にマイグレーションファイルをカラムの過不足がないように一度整理しておくことをおすすめします。また、コードは合っているのにHerokuページ上だけエラーが出る場合はデータカラムがないことが原因かもしれないということを覚えておくといいかもしれません。
ポートフォリオを完成できた方は、おめでとうございます。ポートフォリオを持って企業の面接を受けに行きましょう。幸運を祈ります！

# 最後に
筆者の場合は学業で忙しかった時期もあったことから勉強開始からポートフォリオ完成まで約4か月という少し長い期間がかかり、途中モチベーションが下がることもありました。仕事が忙しいなどといった理由で学習が長期化するのは仕方ないことだと思いますが、そうなった場合はモチベーション低下との戦いになります。モチベーションが下がったときは自分がプログラミングの勉強を始めたきっかけになったものを見返すといいかもしれません。ただ、ポートフォリオ完成までできた人は比較的短期間で勉強している人が多いので、短期集中の方が挫折しにくいことを覚えておくといいかもしれません。
長い記事になってしまいましたが、最後まで読んでくださり、ありがとうございました。本記事が参考になりましたら、いいねを押していただけると幸いです。
それではこれからプログラミングを始めるみなさん、まずは独学でポートフォリオを作ることに挑戦してみましょう。幸運を祈ります！