Netlifyを使って自分のプロフィールサイトを簡単に公開する

# はじめに
何かプロフィールサイトを作って公開したいと思ったときに、方法はいくつかあると思います。
今回は、Netlifyを使って簡単に自分のプロフィールサイトを公開する方法について書いていきたいと思います。

# 環境
- ArchLinux

# Netlifyとは
> Netlifyは、最新のWebプロジェクトを自動化するためのオールインワンプラットフォームです。ホスティングインフラストラクチャ、継続的インテグレーション、およびデプロイメントパイプラインを単一のワークフローに置き換えます。プロジェクトの成長に合わせて、サーバーレス機能、ユーザー認証、フォーム処理などの動的機能を統合します。

[ドキュメント](https://docs.netlify.com/?_ga=2.145254515.670411481.1614842728-197427376.1614168354)より抜粋

### 料金
個人的なプロジェクト、趣味のサイトなどは無料。使える機能としては

- Gitからの自動ビルド
- グローバルエッジネットワークにデプロイする
- プッシュごとのサイトプレビュー
- 任意のバージョンへの即時ロールバック
- 静的アセットと動的サーバーレス機能をデプロイする

[Netlify](https://www.netlify.com/?_ga=2.151996542.670411481.1614842728-197427376.1614168354)

# 手順
## 1. プロフィールサイトの作成

まずはプロフィールサイトを作らなければ始まりません。今回はReactのCreate React Appを使います。

```
yarn create react-app mypage
yarn start
```

![qiita1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543602/64a90ea8-9dba-de4a-859c-f55187c8f204.png)
これがブラウザで表示されればok

※ 今回はあくまで公開する方法の紹介なので、サイト自体の作りは簡単に済ませちゃいます。

構造はこんな感じ
![qiita2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543602/9c5b5e97-390e-ea8d-b280-934c81d21686.png)

```App.js
import './App.css';
import profileimg from "./profileimg.png";

function App() {
    return (
        <div className="body">
            <div className="header">
                <h1>MyPage</h1>
            </div>

            <div className="main">
                <img src={profileimg} alt="profileimg" />
                <div className="text">
                    <h3>About</h3>
                    <p>Hello My Profile Page!<br></br>
                    Name:Taro<br></br>
                    Birthday:2021/03/04
                    </p>
                    <h3>Study</h3>
                    <p>JavaScript / HTML / CSS</p>
                </div>
            </div>

            <div className="footer">
                <p>Copyright ©</p>
            </div>
        </div>
    );
}

export default App;

```

```App.css
.body {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.header {
    padding: 10px;
    background-color: #dcdcdc;
}

.header h1 {
    margin-left: 40px;
}

img {
    border: 2px solid black;
    border-radius: 50%;
}

.main {
    flex: 1;
    display: flex;
    justify-content: center;
    align-items: center;
}

.main h3 {
    margin-bottom: 0px;
}

.text {
    margin: auto 40px auto 40px;
    display: flex;
    flex-direction: column;
}

.footer {
    padding: 10px;
    text-align: center;
    background-color: #dcdcdc;
}
```

こんな感じの画面が表示されていたらokです
![qiita3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543602/794894d7-d836-b33a-0b88-ffaf902dff4d.png)

そしてビルドする

```
yarn build
```

新しく`build`というディレクトリができているはずです。

## 2. GitHubにリポジトリを作ってプッシュ
分かる人はとばしてもらってもいいですが、一応手順を書いておきます。
アカウント登録をしていない人は登録してもらって、している方はリポジトリを作ります。
この時、PublicにするかPrivateにするかはどちらでも大丈夫です。
今回はPublicで作成します。
![qiita4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543602/55b3c70e-4478-d006-2752-db25847b4554.png)

作成したときに手順はページに出てきますが

```
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin {url}
git push -u origin main
```

今回はこれでプッシュ
この時注意しないといけないのは、今回`yarn`を使用しているため`yarn.lock`があるディレクトリ内で行ってください。理由は後ほど説明します。

## 3. Netlifyで公開する
最後の公開の手順です。Netlifyにアカウント登録をしていない人はまずアカウント登録をしてください。
登録が終わったら画面にある`New site from Git`をクリック
![qiita5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543602/ee151081-931f-cf3e-3a72-55323483e4ee.png)
すると下の画面が表示されるので、
![qiita6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543602/b5c3b0c8-5785-78f0-b1a6-d7ef340ee98a.png)
GitHubをクリック。
別ウィンドウが開かれると思います。
![qiita7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543602/197fae13-80da-a622-8097-fb4d969cd629.png)
この画面が出たら、自分のアカウントを選択。
![qiita8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543602/dab96061-6c5f-f2b3-df1d-064484e70edc.png)
スクロールするとリポジトリを選択する部分があります。All repositoriesでもいいのですが、今回は作成したリポジトリだけにしたいのでOnly select repositoriesで作成したリポジトリを選択します。

そしてNetlifyの画面へ戻ります。画面が変わらないようであればページ更新してもらって、上記と同じ様にGitHubをクリックしてもらえれば先程選択したリポジトリが表示されていると思います。
そのリポジトリをクリックすると
![qiita9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543602/e9f87937-78cd-bf1a-d5bf-37778fa7ac13.png)
この画面が出てくればokです。
もしBuild CommandとPublish directoryが空白であれば画像と同じ様に入力してもらえれば大丈夫です。

ここで思い出してほしいのが、リポジトリにプッシュする時のこの文。
> この時注意しないといけないのは、今回`yarn`を使用しているため`yarn.lock`があるディレクトリ内で行ってください。理由は後ほど説明します。

これがここで関わってきます。もし`yarn.lock`がないディレクトリでプッシュしてしまっていると、Deploy siteをしたときにエラーがでて失敗します。

> Yarnをローカルで使用してJavaScriptの依存関係をpackage.jsonファイルにインストールする場合、Yarnはyarn.lockインストールされたモジュール名とバージョンを記録するファイルを作成します。このファイルをリポジトリ内のサイトのベースディレクトリにコミットすると、Yarnがインストールyarnされ、コマンドを実行してyarn.lockファイルで指定された依存関係をインストールします。この動作は、NETLIFY_USE_YARN以下で説明する環境変数でオーバーライドできます。

[ドキュメント](https://docs.netlify.com/configure-builds/manage-dependencies/)より抜粋
自分も最初、`command not found`といった文でエラーが出て失敗したのですが、`yarn.lock`がないと`yarn`がインストールされず、エラーになるみたいですね。

では以上を踏まえた上でDeploy siteをクリックします。
するとデプロイが始まるので終わるまで待ちます。
成功するとPreview deployに変わりますのでクリックすると、先ほど作成したページが表示されます。

### URLの変更
初期のURLでは分かりづらいので、自分が指定したものに変えます。
(そのままでもいい人は飛ばしてください)
ホームに戻り、追加されているSitesに追加されたリンクをクリック。
Site settingsをクリックしてChange site nameをクリック。
すると入力欄が出てくるので、好きな名前を入力しましょう。
※ すでに使用されているものは設定不可

# まとめ
以上で簡単ではありますが自分の作成したサイトをNetlifyを使って公開する方法でした。
今回作成したページ
https://optimistic-almeida-cd1568.netlify.app/

# 参考
https://qiita.com/shozzy/items/dadea4181d6219d2d326