【React, Next.js】アプリ作ってGithubにデプロイしてVercelに同期してみた #1

<h1>はじめに</h1>
初心者ログなのでご愛嬌でよろしくです！<br>参考程度でご了承を。全3回くらいで投稿していく予定。

<h1>開発環境(2023/10/9現在)</h1>

<ul>
<li>環境構築済み</li>
<li>macOS Ventura 13.6</li>
<li>エディタVScode</li>
<li>node v18.17.1</li>
<li>npm 9.6.7,/li>
<li>"dependencies": {
    "@testing-library/jest-dom": "^5.17.0",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^13.5.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-scripts": "5.0.1",
    "web-vitals": "^2.1.4"}</li>
</ul>

<h1>事前準備（私自身の環境構築）</h1>
軽く手順を書いたり、テンションが上がるツールを準備しておくと、落ち着いて作業し続けれるタイプです。12時間とかは余裕です（キリッ！）<br>家事を忘れる事なんて日常茶飯事です（キリッ！）<br><br>さて、手順と共に自分の状態も予想しとくと、冷静に客観的になれたりするので、挫折せず諦めず物作りを完成させるための大事な初期フェーズだと思ってます。
<ul>
<li>各サイトのアカウントは作成済み</li>
<li>アロマ、音楽、空気、化粧でテンション上げる
<li>スマートウォッチで血圧、ストレス、心拍数値を視覚化
<li>しょぼいアプリでも作ってデプロイする勇気の準備</li>
<li>オロナミンC注文しとく、グミとラムネも場合による。
<li>それを公開しちゃう勇気の準備（毛生えてるのでいける）</li>
</ul>


<h1>手順（１〜７）と未来予想図</h1>

さあ、やってくぞ！
<ul>
<li>1:軽く設計書かく（適当に作って走りながら改善）</li>
<li>2:Reactプロジェクトを生成する（寝ながらでも作れる）</li>
<li>3:ローカルサーバーで生成を確認する(まだ寝ぼけてる)</li>
<li>4:Githubにリポジトリを作る（ようやく目が覚める）</li>
<li>5:コード書く（オロナミンC必須の大変なフェーズ）
<li>6:Githubにcommit,push,バグ対処（オロナミンC再投下）</li>
<li>7:GithubにデプロイしたものをVercelと同期する</li>
<li>8:アプリ、ログ記事を公開する</li>
</ul>

<h1>1: 軽く設計書かく</h1>

コード触ってる時に必ず変更とかしたくなるので、走りながら改善していく前提でまずはとにかく設計図をかく。適当でいいっす。本当に。思いつくまま。
こんなの合ったらいいな（使用目線で）、あのコード構文使えるかな（開発目線で）をノートに思うがまま書いて、疲れたら完成って感じのノリで作った設計書です。
<br>
<b>5人乗りの車に5人乗る場合の<br>座席パターン数を算出するプログラムの作成</br>
![IMG_20231009_091724.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190311/5388b645-c929-3c33-df4d-feebb15512d0.jpeg)
盛り込む時に意識したこと、大体これらを殴り書き。
<ul>
<li>アプリの機能と非機能（特に非機能決めは大事）</li>
<li>大まかなUXとUI</li>
<li>ざっくりとしたレイアウト、要素、コンポーネントの名前</li>
<li>使用の流れ（ここを入力したら、これが現れて、この結果が見えるのような）</li>
<li>入力項目の状態、選択された時の要素の状態</li>
<li>要素が変更された時の仕様（ホバー、アクション時など）</li>
<li>条件分岐の仕様（ifかswitchかどうするか）</li>
</ul>
<b>ポイント</b>
<ul>
<li>非機能：5席シート5人乗車以外のパターンは作らない</li>
<li>機能：運転可能な人とそうでない人を選択してもらい、そのデータを元にパターンを算出する</li>
</ul>
です！！文字にすると簡単だ。。。

本当にこれでできるのだろうかという、もう１人の自分の声は無視して元気よく次に進みます。<br>

<h1>2: Reactでプロジェクト作成</h1>

HTMLとCSSの場合だと自力でエディタでフォルダからファイルから作ったりしてましたが、Reactでは、魔法の呪文をターミナルで唱えると、自動で準備してくれます。なんて素晴らしいの！の反面、こんなにファイルやら作ってもらってもどこのファイルに何を書いたらいいんでしょ・・・最後までは助けてくれない・・・<br><br>初心者所感①<br>餃子の作り方を知らない人がいきなりお金だけ渡されて、スーパーの入口に立たされた状態で放置されて、スーパーまで連れてきてくれたのはありがたいんですけども・・・って状況です。<br><br><b>ターミナルへの呪文(大小文字、半角スペースに注意)</b>
デスクトップ上にプロジェクトを作りたい気持ちを抑え<br>まず一旦ホームディレクトリ（作業を開始する際のデフォルトの位置）に移動するコマンドを入力↓
```
cd
```
デスクトップで作業したいので、コマンドを入力↓
```
cd Desktop
```
<b>プロジェクト名の命名（アプリを管理するフォルダ名）</b>
今回は車の座席パターン数を算出するアプリなので
<code>pattern-carseat</code>という名前を名付けます。
<b>プロジェクトを生成（npx creat-react-app 〇〇で、生成されます）</b>
デスクトップに移動しているこの状態のまま、Reactプロジェクトをこのプロジェクト名(<code>pattern-carseat</code>)で生成するコマンドを入力↓
```
npx create-react-app pattern-carseat
```
Success!やHappy hacking!といったメッセージ、下のようなコマンドライン一覧(青色のテキストが呪文で、その次の白色のテキストは魔法の内容です)が出れば<br>![スクリーンショット 2023-10-09 12.47.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190311/a6a0f677-058f-0d59-f517-7f66ab387b5e.png)
プロジェクトはデスクトップ、ローカルフォルダに生成されているはずなので、次に進んで生成を確認しましょう。


<h1>3:ローカルサーバーで生成を確認</h1>
HTML, CSSの時はVSCodeの画面上で拡張機能を使ってプレビューしたり、<br>open with live serverを選択したらブラウザが自動で立ち上がって確認できたりと何かと便利でしたが、このサーバーでの確認手順がReactではちょっと違います。何が違うのかが最初は気付けてなかったので色々つまづいたポイントでした。
<ul>
<li>サーバー確認前に、まずローカルで生成確認</li>
<li>ターミナルからサーバーを開く指示が必要</li>
<li>このサーバー使えよとターミナルに表示される</li>
<li>指定されたサーバーに自分でアクセスしにいく</li>
<li>アクセス先でエラー表示される場合もある（対処あり）</li>
</ul>

<b>ローカルに生成されているかGUIで確認</b><br>MacのFinderで視覚的に確認しておきます。<br>デスクトップをクリックして、次のようにフォルダ名、その中にこのようなフォルダやファイルが生成されていれば成功です！</br>![スクリーンショット 2023-10-09 12.12.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190311/c1aa82dd-aef3-bc17-366a-639244f5f600.png)(アイコン表示で失礼します。この整列表示が一番ラクにスクショ編集できるのでお許しを・・・普段の作業やディレクトリの把握はカラム表示が一番確認しやすいです（個人の感想です）<br><br>
<b>ローカルサーバーで生成を確認、の前に</b>
今作業している場所（カレントディレクトリ）はプロジェクト名になっているはずで、私の場合こう表示されています↓
```
（私のPCアカウント名）@(私のPCネーム）　pattern-carseat %
```
この状態でない、状態がよくわからないって場合には
もう一度デフォルトの場所に戻ってからこのプロジェクト場所に行きなおす方法があります。↓こちらを入力
```
cd
cd Desktop/patternseat
```
訂正あり↑patternseatをpattern-carseatにしてください😅🙏
（このコマンドラインは、次の日とかに作業を改めて再開する時にも使えるので覚えておくとラクです）
```
（私のPCアカウント名）@(私のPCネーム）　pattern-carseat %
```
この%表示の手前がプロジェクト名になっていれば、OK!このプロジェクト名の場所で作業をするよというターミナルへ合図する事ができました！<br><br>
<b>いよいよ、ローカルサーバーで生成を確認</b>
生成時にターミナルが教えてくれた青色の呪文の一部を唱えていきます。![スクリーンショット 2023-10-09 12.47.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190311/ace729a7-2cb8-6964-daed-a01d78d8d869.png)
青色呪文の１番目
<code>npm start</code>開発サーバーを開始する呪文なのでこれを唱えたいところですが、私の場合、これだと上手くいかない時もあるので（理由不明）<code>npm start dev</code>で走らせます。
```
npm start dev
```
状況によってエラーが出たらどちらかのコマンドラインで走らせてみてください。ちゃんと走らない場合は、面倒ですが<code>cd</code> <code>cd Desktop/pattern-carseat</code>と入力し、プロジェクト開始する作業場所はここやでってもう一度合図してあげてから、青色の呪文を唱えてあげてください。<br><br>
<b>使用できる自分専用のローカルサーバーのURLが次のように指定されます</b>![スクリーンショット 2023-10-09 12.59.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190311/747b86a8-0357-46f5-a077-1733ca5b4799.png)3行目Local：と書かれた右側のURL<code>http://localhost:3000</code>をクリックするか、コピペをしてブラウザにアクセスします。

<b>ブラウザにこの画面が表示されていれば<br>Reactプロジェクトの生成は成功！</b>
![スクリーンショット 2023-10-09 13.10.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190311/5683005d-d1e9-929d-31a4-29f04e629e7a.png)
開発をスタートしていきます！次回の記事で！（笑）



<h1>はやる気持ちを抑えて<br>サーバーを終了します</h1>

PCをシャットダウンしたり、アプリをシャットダウンする時は、スタートさせているサーバーの終了を忘れないようにしましょう。<br><br>
<b>ターミナル側の終了手順</b><br>
ターミナルに入力はしないものの、ターミナル画面に移動して入力できる状態にしつつ、キーボードの<code>control（を押しながら）c</code>を押して、ターミナルに下のように表示されたらOKです。

```
（私のPCアカウント名）@(私のPCネーム）　pattern-carseat %
```
ブラウザ側の作業も行なって、終了を確認しましょう。

<br>
<b>ブラウザ、サーバー側の手順</b><br>
ターミナル側の終了作業をしてから、ブラウザをリロードし、次のような表示になれば終了完了です。<br>

![スクリーンショット 2023-10-09 13.28.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190311/b021bc9d-fefd-0a32-ba6f-cfd5e84756e8.png)

ブラウザもターミナルも閉じてOKです。

<h1>手順1~3が終了</h1>

本日はここで一旦終了します。次回は<br><b>手順4:Githubにリポジトリを作る</b>に取り掛かります！
#2に続く...お疲れ様でした！