以前から思っていたのですが、ポートフォリオサイトをリニューアルしようと構想中です。モダン開発に興味を持ったこともあり、タイトルに含まれているような技術【React,TailwindCSS,Gatsby.js,MicroCMS,Firebase hosting】を使って作ることができればなと思っています。
まずはReact,TailwindCSS,Gatsby.jsの概要を説明したあと、実際に行った環境構築について書いていきます。分からないことばかりで大変ですが少しずつ形にしていきたいと思います。
技術選定
「モダンな技術で作られたポートフォリオサイトってないかな?」と調べているとブログがいくつかヒットしたので、それらを参考にしようと思いました。以下拝見した主なサイトです。※ちなみに既存のポートフォリオサイトはちょこっとindex.htmlやcssファイルで作った簡易なものでした。ポートフォリオサイト自身が作品として恥ずかしくなく載せれるものを作っていきたいと思います。
![](https://kotoura3-blog.com/blog/wp-content/uploads/cocoon-resources/blog-card-cache/772b445d2eac1ad6461cb95d91ef785c.jpg)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UmVhY3QlRTMlODElQTclRTMlODMlOUQlRTMlODMlQkMlRTMlODMlODglRTMlODMlOTUlRTMlODIlQTklRTMlODMlQUElRTMlODIlQUElRTMlODIlQjUlRTMlODIlQTQlRTMlODMlODglRTMlODIlOTIlRTQlQkQlOUMlRTMlODElQTMlRTMlODElQTYlRTMlODElQkYlRTMlODElOUYlRTUlQTQlQTclRTUlQUQlQTYlRTclOTQlOUYlRTMlODElQUUlRTglQTklQjEmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPWIyNmEzYWFkYjQ2YmI4NjQzYzZiMTFlNGRiNzk2MzA4&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBLZW50YXJvOTEwMTEmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWJlOTdhY2VlZTQ3YzA5MDYyNDgwNTdlODZiOGFhOTVi&blend-x=142&blend-y=486&blend-mode=normal&s=6df5889e04ad71ff96610984742bc374)
後ほど紹介する、静的サイトジェネレーターやヘッドレスCMSに興味を持ったきっかけの記事がこちら。※直近、他企業さんのサイトを作ることになりWordPressで作ることはきまったのですが、WordPress以外で作る方法ってないんだろうか?と思って調べてたどり着きました。
![](https://kotoura3-blog.com/blog/wp-content/uploads/cocoon-resources/blog-card-cache/ba43c9b8fa5111b8b85067488b87b2cf.jpg)
まずは選定した技術の紹介から。
React
ユーザインターフェース構築のための JavaScript ライブラリ
数年前までは Vue / React / Angular の3つが代表的になってましたが、最近では参考文献・コミュニティの活発さなどから考えて Vue / Reactの2強になりつつあります。
Vueが2021年時点で最も優れたフレームワークだと感じる理由をVue/Reactエンジニアがまとめます!技術選定を悩んでいるなら必見です | Ragate ブログ
現在ではVue/Reactの2強のようですが、モダン開発に興味をもったきっかけの企業様はReactを推していましたし、正直なところあまり違いも分からない(好みの問題?)ので今回はReactを選択いたします。
TailwindCSS
Utility First(ユーティリティファースト)をコンセプトに設計されたCSSフレームワーク
Utility First(ユーティリティファースト)
ユーティリティクラスを使用して、CSSを記述せずにカスタムデザインを構築する手法のこと?
以下の特徴があるようです。※参考リンク
- クラス名を考える必要がない
- CSSが肥大化しない
- 変更を加えるのが怖くない
インラインスタイルと同じ?いいえ、違います
インラインスタイルと大差ないと思うかもしれませんが比較するとこんなメリットが有ります。
- メディアクエリを使わないレスポンシブ対応
- 制約付きのデザイン-視覚的に一貫性のあるUIを簡単に構築できる
- インラインスタイルでは使えない疑似クラスも使える
似たようなものとしてBootstrapがあるかと思いますが、自分はこれまでCSSのフレームワークを「慣れれば簡単なんだろうな」というようには思っていたのですがあまり触れてこなかったので、これを機に慣れていきたいと思います。
Gatsby.js
先程ちらっと出た、Reactで作られた静的サイドジェネレーターになります。概要は以下の記事を読むと分かりやすいかと思います。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UmVhY3QlRTMlODElQUUlRTYlOUMlODAlRTUlQkMlQjclRTMlODMlOTUlRTMlODMlQUMlRTMlODMlQkMlRTMlODMlQTAlRTMlODMlQUYlRTMlODMlQkMlRTMlODIlQUZHYXRzYnkuanMlRTMlODElQUUlRTglODklQUYlRTMlODElOTUlRTMlODIlOTIlRTQlQkMlOUQlRTMlODElODglRTMlODElOUYlRTMlODElODQlRUYlQkMlODElRUYlQkMlODEmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTc5N2I2YjM0NmNhMjYyZTA0ODJkYzk1OTU2YmE3ZmNi&mark-x=120&mark-y=96&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBocHBSQyZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YmEzNjRiMDE3ZWNjM2UwZTkxNmQwMDVhNjVhM2EwODY&blend-x=120&blend-y=500&blend-mode=normal&s=4409fed80e0b2abf4d65242cae6ff854)
環境構築
前置きはここまでにしまして、早速作業に入っていきます。
Node.jsの準備
Reactを本格的に使うにはNode.jsが必要なようです。既にインストールはされていたのでバージョンの確認及びバージョンが古かったのでアップデートを行いました。nというNode.jsのバージョン管理ツールがあるので、そちらもついでにインストールしておきます。※以下リンクも参考にしてみてください。「stable」か「latest」かはお好みで。頭に「sudo」が必要なこともあります。どのコマンドが必要だったか1つ1つは覚えていないので必要に応じてつけてください。npmが使えない方はnpmもインストールしておきましょう。(省略)
/*nのインストール*/
npm install -g n
/*Node.jsのバージョン確認*/
n -v
/*Node.jsのアップデート(推奨版)*/
n stable
![](https://kotoura3-blog.com/blog/wp-content/uploads/cocoon-resources/blog-card-cache/e15d1d446b009d4e77f5bc2616a678f5.png)
Gatsby.jsを使っていく
まずはコマンド「gatsby」が使えるようにCLIツールであるgatsby-cliをインストールします。
/*gatsby-cliのインストール*/
npm install -g gatsby-cli
自分はその後「gatsby new 〜」でプロジェクトを作ろうとしたのですがエラー。事前にGitが必要なようでしたので、それもインストールします。
/*Gitのインストール*/
sudo apt-get install git
次にプロジェクトを作ります。デスクトップ上に適当にフォルダを作り、cdコマンドでそこまで移動。その後、gatsby new〜でプロジェクトを作りましょう。Gatsby.jsのサイトにサンプルのスターターキットがいくつもあります。自分は今回、「hello-world」を採用しました。
![](https://www.gatsbyjs.com/_gatsby/image/a7b4b7d3a899b6f5e3904b91d717435a/cec4769b5fc062e3fd845016a7ef84e3/contentful.jpg?eu=8f2ac621d6484ad8758cf4a74719cb8598a1daf2be7c59fd4202856a3c2479c745ead04940294752962fa7678db9f2dc58b9f1de2ef22855f9da8e27c83e8edf85d303715b47ced9dc8c65d72edde40dd17ab0e26efb277a4ad0cb0c926f396d443e073ee0cab7e2353d2ba7fefedebc92b739301c643326c434539ed65d86d36afe42719768182213fb3e76af7b992261828433817569601f962ec982e39bead4575ab8cf8795229cb6f5753910b03db34c4b99fd43964a5b&a=w%3D1500%26h%3D790%26fit%3Dcrop%26crop%3Dtop%2Cleft%26fm%3Djpg%26q%3D75&cd=fed3d55acfac37d6eb4168cd8430a687)
/*スターターキット「hello-world」でプロジェクトを作る*/
npx gatsby new gatsby-starter-hello-world https://github.com/gatsbyjs/gatsby-starter-hello-world
cdコマンドでhello-worldディレクトリに移動し、以下コマンドでビルドします。
/*ビルドする*/
gatsby develop
TailwindCSSを適用する
以下、こちらのページを参考に作業を進めます。
まずはプロジェクトの中にTailwindCSSをインストールします。2行目のコマンドで「tailwind.config.js」及び「
postcss.config.js」
が作成されます。今後編集が必要になるファイルです。
/*TailwindCSSをインストールする*/
npm install -D tailwindcss postcss autoprefixer gatsby-plugin-postcss
npx tailwindcss init -p
「gatsby-config.js」のファイルを開き以下のコードを丸々コピペして上書き保存します。
/*Gatsby PostCSS pluginを有効化する*/
module.exports = {
plugins: [
'gatsby-plugin-postcss',
// …
],
}
続いて「tailwind.config.js」の以下コードの差異文(contentの中身)を変更して上書き保存します。
/*パスを通す*/
module.exports = {
content: [
"./src/*/.{js,jsx,ts,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}
続いて「./src/styles/global.css」ファイルを作り、global.cssファイルの中身に以下のコードを記述して上書き保存します。
/*指示文の追加*/
@tailwind base;
@tailwind components;
@tailwind utilities;
続いて「gatsby-browser.js」ファイルを作り、gatsby-browser.jsファイルの中に以下のコードを記述して上書き保存します。その後再度ビルドし直します。
/*指示文のインポート*/
import './src/styles/global.css'
/*ビルドする*/
gatsby develop
続いて「index.js」ファイルに以下の内容をコピペします。※参考にしているページの<Layout>…</Layout>はまだ使えないので<div>…</div>に変更します。
/*TailwindCSSの動作確認用コード*/
export default function IndexPage() {
return (
<div>
<h1 className="text-3xl font-bold underline">
Hello world!
</h1>
</div>
)
}
最後にローカルサーバーを立ち上げてこれまでの作業がうまく行っているか確認します。以下のコマンドを入力したあとに表示される「http://localhost:8000/」をCtrlキーを押しながらクリックします。
/*動作確認*/
npm run start
以下のように「Hello world!」の文字が太字・下線付き・大きめのフォントサイズになっていれば完了です。
![](https://kotoura3-blog.com/blog/wp-content/uploads/2022/01/Screenshot-from-2022-01-30-18-12-47.png)
まとめ
以上、簡単な技術の紹介・環境構築方法と動作確認でした。今回はただHello world!を表示させただけなので、今後はルーティングやコンポーネントを追加して見栄えを整えていこうと思います。更にヘッドレスCMSやFirebase Hostingも控えていますね。進捗があればまた更新しますのでお楽しみに。