プログラミングスクールが高いので、ChatGPTにスクールを開校してもらった【入学0日目】

# はじめに
GPT-4の登場により、近い将来プログラミングスクールが不要になるかもしれないというツイートを目にし、興味を持ち実際に試してみることにしました。
学習を始める前に、ChatGPTにヒアリングを行ってもらい、私専用のスケジュールとカリキュラムを作成してもらいました。


## ヒアリングシート
- 使える技術:Webデザイナーを数年していてPHP、HTML、ワードプレス、CSS、jqueryなどを使用しています。
- 新しく学びたい内容:AWS、react、github actions、Tailwind CSS、Ruby、Ruby on Rails、Docker、JavaScript（Tailwind CSS、Ruby、JavaScriptは過去に学習経験あり）
- 制作したいWebサービス:観た映画の評価（点数とコメント記録）、映画情報の検索、観たい映画の保存、会員登録
- 確保できる学習時間:平日は2時間、土日は8時間
- 期間:100日（2023/3/17 - 2023/6/24）

## ChatGPTが作成した内容
### スケジュール
1.Ruby 入門 (1日目-9日目, 2023/3/17 - 2023/3/25, 32時間)
2.Ruby on Rails 入門 (9日目-23日目, 2023/3/25 - 2023/4/8, 52時間)
3.AWS 入門 (23日目-28日目, 2023/4/8 - 2023/4/13, 20時間)
4.Docker 入門 (29日目-32日目, 2023/4/14 - 2023/4/17, 20時間)
5.JavaScript 入門 (33日目-42日目, 2023/4/18 - 2023/4/27, 32時間)
6.React 入門 (43日目-56日目, 2023/4/28 - 2023/5/11, 52時間)
7.Tailwind CSS 入門 (57日目-59日目, 2023/5/12 - 2023/5/14, 14時間)
8.GitHub Actions 入門 (59日目-65日目, 2023/5/14 - 2023/5/20, 20時間)
9.映画情報検索APIの利用 (65日目-69日目, 2023/5/20 - 2023/5/24, 16時間)
10.会員登録機能の実装 (70日目-73日目, 2023/5/25 - 2023/5/28, 20時間)
11.観た映画の評価機能の実装 (74日目-80日目, 2023/5/29 - 2023/6/4, 20時間)
12.保存した映画リスト機能の実装 (80日目-86日目, 2023/6/4 - 2023/6/10, 20時間)
13.レコメンド機能の実装 (86日目-91日目, 2023/6/10 - 2023/6/15, 20時間)
14.デプロイと運用 (92日目-100日目, 2023/6/16 - 2023/6/24, 36時間)

### カリキュラム
#### 1.Ruby 入門（32時間）
- Ruby言語の基本概念と構文
- データ型（数値、文字列、シンボル、配列、ハッシュ）と変数
- 演算子と式（算術演算子、比較演算子、論理演算子）
- 条件分岐（if文、case文）
- 繰り返し処理（each, for, while, until）
- メソッドの定義と呼び出し
- クラスとオブジェクト指向プログラミング
- モジュールとミックスイン
- 例外処理
- ファイル入出力
- RubyGemsとライブラリの利用
- コードの品質向上（リファクタリング、テスト）
#### 2.Ruby on Rails 入門（52時間）
- Railsフレームワークの概要とアーキテクチャ（MVCパターン）
- データベースとの連携（Active Record）
- ルーティング、コントローラー、ビューの設定と実装
- テストの基本とRSpecの導入
- 認証・認可機能の実装（Devise）
#### 3.AWS 入門（20時間）
- AWSの概要と主要サービス
- AWSマネジメントコンソールの操作
- EC2, S3, RDSの基本概念と利用方法
- IAMの基本概念とユーザー、ロールの管理
#### 4.Docker 入門（20時間）
- Dockerの概要と利点
- Dockerのインストールと基本操作（コンテナ作成、起動、停止）
- Dockerfileの作成とイメージビルド
- Docker Composeを使用したマルチコンテナ管理
#### 5.JavaScript 入門（32時間）
- JavaScriptの概要と基本構文
- 変数、データ型、演算子
- 条件分岐とループ
- 関数とスコープ
- オブジェクトとプロトタイプ
- DOM操作とイベントハン
#### 6.React 入門（52時間）
- Reactの概要と特徴
- コンポーネントとprops
- JSXとイベントハンドリング
- stateとライフサイクル
- フック（useState, useEffect, useContext, useReducerなど）
- コンポーネント間のデータの受け渡し（Context API）
- ルーティング（React Router）
- スタイリング（CSS-in-JS）
- テスト（Jest, React Testing Library）
#### 7.Tailwind CSS 入門（14時間）
- Tailwind CSSの概要と利点
- インストールと設定
- ユーティリティクラスとレスポンシブデザイン
- カスタマイズと拡張
- コンポーネントの作成と再利用
#### 8.GitHub Actions 入門（20時間）
- GitHub Actionsの概要と利点
- ワークフローの作成と設定（YAMLファイル）
- アクションとジョブの定義
- イベントトリガーと条件分岐
- セキュリティとセルフホストランナー
#### 9.映画情報検索APIの利用（16時間）
- TMDb（The Movie Database）APIとOMDb APIの概要
- APIキーの取得と設定
- 映画情報の検索と表示
- クライアントサイドのページネーション
#### 10.会員登録機能の実装（20時間）
- 会員登録フォームの作成
- バリデーションとエラーハンドリング
- パスワードのハッシュ化と認証
- セッション管理とログイン・ログアウト機能
- OAuth認証（Google、Facebookなど）
#### 11.観た映画の評価機能の実装（20時間）
- 映画の評価フォームの作成
- ユーザーごとの評価データの管理
- 評価データの集計と表示
- 星評価の表示コンポーネント
#### 12.保存した映画リスト機能の実装（20時間）
- 映画リストのデータベース設計
- 映画リストの追加・削除機能
- ユーザーごとの映画リストの管理
- 映画リストの表示とソート機能
- リスト内での映画の詳細情報表示
#### 13.レコメンド機能の実装（20時間）
- ユーザーごとの映画評価データの分析
- 類似ユーザーの検出
- レコメンド映画の選定アルゴリズム
- レコメンド映画の表示
- レコメンド機能の改善と評価
#### 14.デプロイと運用（36時間）
- Heroku, AWS, Vercelなどのデプロイ先選定
- デプロイの設定と実行
- 環境変数の管理
- ドメイン名の設定とSSL証明書の取得
- パフォーマンスチューニングとモニタリング

### 教材

#### Ruby 入門
- Ruby公式ドキュメント: https://www.ruby-lang.org/ja/documentation/
- Ruby入門（プログラミング言語Rubyドキュメント）: https://docs.ruby-lang.org/ja/
- ~~Rubyでプログラミング初心者が学ぶべきこと（Qiita記事）: https://qiita.com/jnchito/items/9f9d45581816f121af6b~~
- Ruby入門（Progate）: https://prog-8.com/languages/ruby
#### Ruby on Rails 入門
- Railsガイド（公式ドキュメント）: https://railsguides.jp/
- Railsチュートリアル（マイケル・ハートル）: https://railstutorial.jp/
- Ruby on Rails入門（Progate）: https://prog-8.com/languages/rails
- Ruby on Rails入門（ドットインストール）: https://dotinstall.com/lessons/basic_rails_v2
#### AWS 入門
- AWS公式ドキュメント: https://aws.amazon.com/jp/documentation/
- AWS入門（Qiita記事）: https://qiita.com/tags/AWS
- AWS公式トレーニングリソース: https://aws.amazon.com/jp/training/
- ~~AWSのサービスを触って学ぶ（freeCodeCamp）: https://www.freecodecamp.org/news/aws-for-beginners/~~
#### Dockerの学習教材:
- Docker公式ドキュメント: https://docs.docker.com/
- Docker入門（Qiita記事）: https://qiita.com/tags/docker
- Docker入門（Zenn記事）: https://zenn.dev/topics/docker
- Docker入門（Progate）: https://prog-8.com/languages/docker
#### JavaScript 入門
- JavaScript公式ドキュメント（MDN Web Docs）: https://developer.mozilla.org/ja/docs/Web/JavaScript
- JavaScript入門（MDN Web Docs）: https://developer.mozilla.org/ja/docs/Learn/JavaScript/First_steps
- JavaScript入門（Progate）: https://prog-8.com/languages/javascript
- JavaScript入門（ドットインストール）: https://dotinstall.com/lessons/basic_javascript_v4
#### React 入門
- React公式ドキュメント（日本語版）: https://ja.reactjs.org/
- ~~React入門チュートリアル（MDN Web Docs）: https://developer.mozilla.org/ja/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React~~
- React入門（Progate）: https://prog-8.com/languages/react
- React入門（Zenn記事）: https://zenn.dev/topics/react
#### Tailwind CSS 入門
- Tailwind CSS公式ドキュメント: https://tailwindcss.com/docs
- Tailwind CSS入門（Zenn記事）: https://zenn.dev/topics/tailwindcss
- ~~Tailwind CSS入門（freeCodeCamp）: https://www.freecodecamp.org/news/tailwind-css-tutorial/~~
- Tailwind CSS入門（Traversy Media）: https://www.youtube.com/watch?v=UBOj6rqRUME
#### GitHub Actions 入門
- GitHub Actions公式ドキュメント: https://docs.github.com/ja/actions
- ~~GitHub Actions入門（Qiita記事）: https://qiita.com/tags/GitHub%20Actions~~
- ~~GitHub Actions入門（Zenn記事）: https://zenn.dev/topics/github-actions~~
- GitHub Actions Crash Course（Traversy Media）: https://www.youtube.com/watch?v=R8_veQiYBjI
#### 映画情報検索APIの利用
- TMDb（The Movie Database）API: https://developers.themoviedb.org/
- OMDB API（IMDbデータベース）: http://www.omdbapi.com/
- APIを使った映画情報アプリの作成（YouTube）: https://www.youtube.com/watch?v=YsPqjYGauns
- 映画情報検索アプリ開発（Qiita記事）: https://qiita.com/tags/%E6%98%A0%E7%94%BB%E6%83%85%E5%A0%B1%E6%A4%9C%E7%B4%A2
#### 会員登録機能の実装
- Devise公式ドキュメント: https://github.com/heartcombo/devise
- Devise入門（Railsガイド）: https://railsguides.jp/devise.html
- Deviseを使った認証機能の実装（Progate）: https://prog-8.com/languages/rails5/study/3/9
- Railsで会員登録機能を作る（YouTube）: https://www.youtube.com/watch?v=zJYuLebl-Js
#### 観た映画の評価機能の実装
- Ruby on RailsでCRUDアプリケーション開発（Traversy Media）: https://www.youtube.com/watch?v=pPy0GQJLZUM
- Railsでレビュー機能を作る（Qiita記事）: https://qiita.com/yukihigasi/items/074e60424836d9cfe7fe
- 映画評価アプリ開発（Zenn記事）: https://zenn.dev/topics/%E6%98%A0%E7%94%BB%E8%A9%95%E4%BE%A1
- ~~Railsで評価機能の実装（Railsガイド）: https://railsguides.jp/active_record_validations.html~~
#### 保存した映画リスト機能の実装
- Railsでお気に入り機能を作る（Qiita記事）: https://qiita.com/kitou88C39/items/5f7f0b1e97585a12aeb9
- Railsでお気に入り機能の実装（Zenn記事）: https://zenn.dev/topics/%E3%81%8A%E6%B0%97%E3%81%AB%E5%85%A5%E3%82%8A
- お気に入り映画リストの作成（YouTube）: https://www.youtube.com/watch?v=ZgP4q9gkcx4
- Ruby on Railsでリスト機能を実装（Railsガイド）: https://railsguides.jp/association_basics.html
#### Webサービスのデプロイと最終調整
- HerokuでRailsアプリケーションをデプロイ（Heroku公式ドキュメント）: https://devcenter.heroku.com/articles/getting-started-with-rails
- AWSでRailsアプリケーションをデプロイ（AWS公式ドキュメント）: https://aws.amazon.com/jp/getting-started/hands-on/deploy-ruby-on-rails/
- Railsアプリケーションのデプロイ方法比較（Qiita記事）: https://qiita.com/superizqi/items/5d5a78d6a58bc6d5c1b5
- Railsアプリケーションのパフォーマンスチューニング（Railsガイド）: https://railsguides.jp/performance_testing.html

## まとめ
何度かの試行錯誤を経て、無事にChatGPTによるカリキュラムとスケジュールが作成されました。
明日からは、このカリキュラムに沿って学習を進めていく予定です。