大学院生がReactとTypeScriptでポートフォリオを作ってみた

#概要
タイトルの通り、この度（少し前の話ですが）ReactとTypeScriptでポートフォリオサイトを作成したので、使用した技術と学習方法についてまとめようと思います。
これからポートフォリオを作ってみたいという人にとって少しでもお役に立てば幸いです。

#動機
Qiitaでポートフォリオを作成したという旨の記事をよく目にするようになり、自分もやってみようという気持ちになりました。
特に「[フロント未学習の大学生が1週間でVue.jsを使ったポートフォリオを作った話](https://qiita.com/p1ass/items/a01578b782f17f573510)」という記事には大きな刺激をもらいました。

#完成品
[ポートフォリオサイト](https://hobiron03.github.io/KamikamiLab)
[ソースコード（恥ずかしいですが）](https://github.com/Hobiron03/KamikamiLab)
レスポンシブデザインとシングルページアプリケーション（SPA）に対応しています。
まだリンクを繋げてなかったり不完全な部分があるのでその辺は随時追加していきます。

###トップページと成果物ページ（PC）
トップページ
![hobiron03.github.io_KamikamiLab_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202986/f8b1d4df-0797-ed50-4249-7e95e5120589.png)


成果物ページ
![hobiron03.github.io_KamikamiLab_ (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202986/4706e071-185d-537a-ab13-036befd8873f.png)



###トップページと成果物ページ（スマートフォン）
トップページ（左）、成果物ページ（右）
![hobiron03.github.io_KamikamiLab_(iPhone 6_7_8 Plus).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202986/433de6e6-d65b-f2c8-8177-a43114451c1a.png)![hobiron03.github.io_KamikamiLab_(iPhone 6_7_8 Plus) (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202986/8820caff-b755-85a1-dc00-1ebd2d24aa7b.png)


#Sketchで簡易なデザイン作成
Reactを学習中している間に簡単なデザインを作っていました。
目に見えるようにすることでモチベーションを維持していました。

デザインには**[Sketch](https://www.sketch.com/)**というUIデザインツールを使っています。
スマートフォン用のデザインも同時にこの段階で行っています。
![25833681b36bf0306ae379b7ad37dca2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202986/5e4a5911-381e-c19c-98c8-83d6c8d5f883.png)


#使用技術と学習方法
###ポートフォリオ作成前のスキルについて
ポートフォリオを作成する前は、「**ある程度プログラミングをしたことがあるが、フロントエンドの技術に対してはほとんど知識・経験がない**」という状態でした。
具体的には、

- Unityでゲームを作成したことがある
- PythonとRuby（Ruby on Rails）で簡単な機械学習を用いたWebアプリケーションを作ったことがある
- Swiftを研究用のiPadアプリケーションの開発に使用していた
- HTMLとCSSを学校の授業で少し触れたことがある

という感じです。

以下の学習方法については、この状態からフロントエンドについて学習を開始したことを踏まえて読んでいただけると参考になるかもしれません。

##HTML&CSS
Webページを制作する以上避けては通れない技術だと思います。自分は授業で触ったことがある程度で基礎も怪しかったため一から勉強することにしました。

学習には **[Progate](https://prog-8.com/)** を使用しました。
Progateは初心者向けのオンラインプログラミング学習教材で、手を動かしながら学習を進めることができます。
自分は以前、**Ruby**と**Ruby on Rails**の基礎を学ぶために利用したことがあったのですが、**非常に良い印象**だったので今回も利用させてもらいました。

HTML&CSSコースは初級、中級、上級の３つの難易度に分かれており、上級コースまで終えると**レスポンシブデザイン**が実装できるようになります。

中級コースと上級コースを最後まで利用するためには月額課金が必要なのですが、課金する価値は十分あると思います。

##JavaScript
今回はReactを使ってポートフォリオを作ると決めていたのでJavaScriptの学習もしました。
こちらの学習にもProgateを使用しました。Progateでは**JavaScript(ES6)**の基本文法について学ぶことができます。
自分は以前にPythonやRubyなどのスクリプト言語を触ったことがあったので、早く終わらせることができました。

ポートフォリオを作成したいという人であれば、ここで学ぶだけで十分だと思います。

##TypeScript
ポートフォリオを作るためにフレームワークやJavaScriptについて調べていると、何やら**TypeScript**という言語がとても良いという情報を見つけました。
軽くTypeScriptで書かれたプログラムを見てみると、普段ゲーム制作で**C#**を使用している自分にとっては、なんだか馴染みやすく感じたため今回導入しました。

TypeScriptについての詳しい情報は「[TypeScript の概要](https://qiita.com/EBIHARA_kenji/items/4de2a1ee6e2a541246f6)」という記事が参考になります。
ポートフォリオを早く作りたい！という方はTypeScriptを学習せずに作りはじめて良いと思います。


学習には**[Udemy](https://www.udemy.com/)**を利用しました。
Udemyはオンライン動画学習のプラットフォームで、プログラミングやデザイン、ビジネスなど幅広い分野の学習コンテンツがあります。

コンテンツは買い切りで一度購入すればずっと視聴することができます。
コンテンツの多くが１万円以上と高額だったりするのですが、セール時であれば1200円程度まで値段が下がるので、購入時にはそこを狙うとお得です。

Udemyで今回自分は「**[ハンズオンで学ぶ TypeScript - JavaScript エンジニアのための TypeScript徹底入門](https://www.udemy.com/course/ts-for-js-developers/)**」というコースを購入して学習しました。
このコースでは実際に手を動かしながら学ぶことができるので効率よく学習することができたと思います。

他にもTypeScriptについてのコースはいくつかがあるので、プレビュー動画を見て自分にあったコースで学習すると良いと思います。

##React
冒頭でも述べましたが、ポートフォリオの作成では**React**というJavaScriptのライブラリを使用しました。

Reactを採用した理由としては、「**なんとなく凄そう**」と思ったからです。
当初はフロントエンドに対する知識が薄く、Vue、Angularとの違いも理解していなかったため、どれを採用すべきか分かっていませんでした（今もよく分かってない）。

そんな時に「[Nintendo Switchの中ではReactが動いてる！Nintendo eShop開発秘話を聞いてきた](https://html5experts.jp/shumpei-shiraishi/24538/)」という記事を見つけたり、**React Native**を使えばスマートフォンアプリ開発もできる! ということが分かったりして、Reactってなんだか凄そうだなと思ったのが採用のきっかけです。

学習にはこちらも**[Udemy](https://www.udemy.com/)**を利用しました。
購入したコースは以下の2つです。

- **[React + Redux を使用したモダンフロントエンド開発](https://www.udemy.com/course/react-application-development/)**
- **[React Hooks 入門 - Hooksと Redux を組み合わせて最新のフロントエンド状態管理手法を習得しよう！](https://www.udemy.com/course/react-hooks-101/)**

こちらのコースも実際に自分の手を動かしながら進められるので効率よく学べました。

上記の2コースと先述したTypeScriptのコースは @gipcompany さんが講師を務めていらっしゃるコースで、非常にわかりやすくて感動しました。


#まとめと感想
今回は**React**と**TypeScript**を使用してポートフォリオサイトを作成しました。

勉強方法としては主に**オンライン学習教材**を利用しました。
これまでは書籍を読んで勉強することが多かったのですが、オンライン学習教材の効率の良さと学びやすさには驚きました。

学習する内容も多く大変でしたが、楽しく作業できました（大事）。


初めてのブログ執筆で拙い文章になってしまいましたが、この記事が皆さんのお役に立つことができれば嬉しいです。