# lightning-neko-talk ## 開発環境構築 ### Go - [x] Goのプロジェクトを作成する - [x] gin, gorm, mysql-driverをいれる - [x] vscodeの環境を整える - [x] liveshareを追加する - [x] system/pingのAPIを作る - [x] テストを適当に作る - [x] Makefileを使って起動とかできる ### React - [x] React+TypeScriptをviteで作る - [x] portを3000にする - [x] chakuraUIをいれる - [x] HelloWorldを表示させてChakraが効いてるかを確認 - [x] swc/jestをいれる - [x] テストを適当に作る ### docker - [x] MySQLのコンテナを立てる(日本語も使える) - [x] 起動時にテーブルが作成されるようにする ### GithubActions - [x] goのテスト実行 - [x] jest実行 # GoのAPIを作る グループテーブル |column|type|| |---|---|---| |id|int|NN UQ PK AU| |name|varcahr|NN| |description|varchar|| |date|localDate|| ユーザーテーブル |column|type|| |---|---|---| |id|int|NN UQ PK AU| |name|varchar|NN| |email|varchar|| |theme|varchar|| |group_id|int|NN FK| グループは追加更新、削除できる ユーザーは追加と削除のみ ## アイスブレイク Q. 今日達成したいことはなんですか じん: CloudRunを理解したい。1日である程度のものを1から教えながら完成まで持っていく。どこが難しいポイントなのかを理解する やまと: 自分一人で簡単なGinを使った何かをつくれるようになりたい!! おーが:なんちゃってクリーンアーキテクチャを卒業する!!!テストも理解する!!! ## クリーンアーキテクチャを説明する - [x] SOLIDの原則 - [x] クリーンアーキテクチャ - [x] DI ## モブプロについて説明する ## MVP: ユーザーは開催したLTを管理できる ### GET /v1/groups 14:00終了 - [x] テストデータ作成 - [x] Usecaseテスト - [x] Usecase実装 - [x] Gatewayテスト - [x] Gateway実装 - [x] Driver実装 - [x] DI実装 ### GET /v1/groups/{id} - [x] Usecaseテスト - [x] Usecase実装 - [x] Gatewayテスト - [x] Gateway実装 - [x] Driver実装 ### POST /v1/groups - [x] Usecaseテスト - [x] Usecase実装 - [x] Gatewayテスト - [x] Gateway実装 - [x] Driver実装 ### PATCH /v1/groups/{id} - [x] Usecaseテスト - [x] Usecase実装 - [x] Gatewayテスト - [x] Gateway実装 - [x] Driver実装 ### DELETE /v1/group/{id} - [x] Usecaseテスト - [x] Usecase実装 - [x] Gatewayテスト - [x] Gateway実装 - [x] Driver実装 - [x] DI実装 ## ふりかえり(FDL) ### FUN: 楽しかったこと - パンが美味しかった - スープたくさんあった - CloudRun使えた - Pushがなんとかできた(つらかった) - かんきょうめっちゃよかったわくわく - みんなで開発は楽しい - どんどん成長している感じがいいね - 調べて解決するのたのしいなぁー - 問題の勘所を予想できた*2 - 案外集中できてよいな - 12時間あっという間だった - 実際デプロイして動いたら楽しくなるわー - 景色が綺麗 - モブプロ楽しい - モニター使えるのいい - 瓶の飲み物飲めるの楽しい - ChatGPT使えるの楽しい - コードがかけるようにどんどんなった - なれないキーボードもまたいい - やっぱりコーディングは楽しい - 気づいたら時間が立っている - 途中から晴れてきた - お菓子いっぱい食べた - 景色いい - 夕日綺麗 - 飲み物たくさん飲んだ - クーリンアーキテクチャおもしろい - TDDおもろい - テスト書いてるのにプロダクトコード完成してた - BGMよい - もぶぷろよい - なんかコード完成してた - APIから期待通り帰ってくるの楽しい ### Done: 達成したこと - 朝早く起きて時間より早く来れた - MVP2つ達成した - 食べたいものは食べた - クリーンアーキテクチャを理解してもらえた - 実装を自分たちでやりきる力をつけてもらった - SOLID原則を理解してもらった - モブプロをやれるようになってもらった - 休憩もまぁとれたかな?? - いっぱいお菓子食べた - わからないなりにコードをかけた - とりあえずコードを書く精神を大切にした - クリーンアーキテクチャの凄さに感動 - 12時間近く開発をするのは初めてですごい - わからないところいっぱい聞けた - テスト駆動開発はじめてできた - API 完成した - クリーンアーキテクチャを理解した - APIデプロイできた - モブプロでチーム開発できた - SOLID原則理解した - TDD理解した - サービスリリースした ### Learn: 学んだこと - 渋谷ラウンジ人が少ない - 夜は暗くなる - CloudRunはシークレット設定にバグある - us-west-1はus-west1 - PlanetScaleの使い方 - PlanetScaleはGitにパスワードをPushすると自動変更されてすげーな - 食べ飽きるんだなぁ - 参考にするリポジトリを事前に作っておくとスムーズに教えられる - VSCodeのVIMは切っておくとよい - SORIDの原則あとからなるほどってなった - テスト大事だなー - APIの作り方は一回分かれば簡単だ - クリーンアーキテクチャがフロントでも使える - Cloud runは手こずるとやばい - 人が書いてるコードを見ながら質問するといい - テストは何を作ればいいか教えてくれる - 依存性がないと付け替えるの簡単 - Cloud Runの使い方 - テスト駆動開発のやり方 - モブプロのやり方 - シェアラウンジの使い方 - vscodeの背景画像 - 依存性注入のやり方 - 依存性逆転の考え方 ### カイゼン - もっと休憩を増やす - サンプルリポジトリ作る - GitHubActionsでCDが回るように設定する - 手動デプロイをなんとかしたい - 最初からテスト駆動でやる - ちゃんとTODOをみながら実装していく - CloudRunのときやまとさん放置 - 事前に資料を確認できるなら見ておく - 自分でいちからAPIを作るとこまでやってみる - 自分でもキーボードを買う - 甘い飲み物ばっかり飲まない - Cloud Runやってみる - フロントでクリーンアーキテクチャ書いてみる - シャアラウンジの座る位置、眩しい - 他の言語でクリーンアーキテクチャを実装する - Cloud Runパッとできる手順リポジトリ作る ### アクション - 休憩までの時間を測る、そして休憩をとれるようにする cn - クリーンアーキテクチャでAPI作れるかやってみる - reactでクリーンアーキテクチャを実装する curl -X POST http://localhost:8080/v1/groups --data-urlencode 'name=test' --data-urlencode 'description=test' --data-urlencode 'date=2006-01-02 15:04:05' curl -X PATCH http://localhost:8080/v1/groups/1 --data-urlencode 'name=update' --data-urlencode 'description=update' --data-urlencode 'date=2006-01-02 15:04:05' curl -X PATCH http://localhost:8080/v1/groups/1 --data-urlencode 'name=' --data-urlencode 'description=update!' --data-urlencode 'date=' curl -X DELETE http://localhost:8080/v1/groups/1 https://api-image-kllnys4xfq-uc.a.run.app # Day3 フロントエンド ## アイスブレイク Q. 前回と今を比べての変化とか技術の考え方とかなんかあれば (今日の目標) ### じん - ある程度いろんな言語を触れたなって感じ - 次は重めのシステムを作りたいなと考え中 - 成長少しはした気がする - Reactを思い出す - outputPort周りをReactでやってみる - ゆったりやる ### オーガ - TDD楽しい - クリーンアーキテクチャも流れは分かってきたが、手癖で書けるようにはまだなれてない - FultterのUIや状態管理周りむずい - Rustむずい - Goって楽なんやな〜〜〜 - typescriptの基本を理解する - Reactの基本。特に状態管理周りを理解する ### やまと - バックエンド開発って意外とできるじゃんって気持ちになった - テスト駆動いいね!! - 最近は生成系AI関連で勉強中 - Typescriptの型をマスターしたい - React特有の書き方を覚えたい - 新しいことどんどん学んでいきたい - とにかく楽しむ ## MVP1 : ユーザーは登録されているLTを一覧で見ることができる - [x] Usecase - [x] Gateway - [x] Driver -> Goと通信 - [x] Presenter - [x] Container - [x] ChakraUIでテーブルデザインを作成する ## MVP2 : ユーザーは新たなLTを登録することができる - [x] Usecase - [x] Gateway - [x] Driver -> Goと通信 - [x] Presenter - [x] Container - [x] 新規登録ボタンを作る - [x] モーダルが表示される (バツで閉じる) - [x] 各項目を入力する (バリデーション) - [x] 保存をクリックするとデータが保存される - [x] モーダルが閉じる ## MVP3 : ユーザーはLTを編集することができる - [x] Usecase - [x] Gateway - [x] Driver -> Goと通信 - [x] テーブルにある編集ボタンをつくる - [x] 編集を押すと、モーダルが開き情報が入力されている状態 - [x] 更新ボタンを押すと更新される - [x] とじる ## MVP4 : ユーザーはLTを削除することができる - [x] Usecase - [x] Gateway - [x] Driver -> Goと通信 - [x] テーブルにある削除ボタンをつくる - [x] 削除される - [x] とじる ## デプロイ - Firebaseにデプロイ - GoにCORSの設定をいれる https://lightning-neko-talk.web.app/ ## ふりかえり ### 学んだこと #### じん - Reactを思い出した - outPutPortをがんばった #### オーガ - Reactの状態管理 - useStateの使い方 - useEffectの使い方 - typescriptのクリーンアーキテクチャの実装の流れ - Propsの使い方 (マジで今までわからなかったので とくに!!! - outputportの使い方 ### やまと - Reactの書き方 - chakraUIの使い方 - ReactとVueでemit部分の違いがあることがわかった - InputPort, OutputPort - useStateの使い方 ### 次やること #### じん - FirebaseのCDがうまく行かなかったので頑張りたい - Reactをきれいにかけるようになりたい - 型をオリジナルでつくれるようになりたい #### やまと - Typescriptの型の書き方をマスターしたい(https://qiita.com/morrr/items/4b555e0642ad57c987f3) - Reactクリーンアキテクチャわかるようになりたい - もう一回Reactで簡単なアプリケーション作ってみる #### オーガ   - Reactできれいなフロントのミニゲーム実装 (三目並べとかスロットゲームとか - typrscriptでクリーンアーキテクチャ実装 - ChakraUIごりごり使ってきれいなサイト作る