チャットアプリケーションの開発

チャットアプリケーションの開発

みなさん、おはようございます。ただいまAM1:53。寝たのは8時で起きたのが23時。仕事開始は24時。0時ともいう。

人が寝静まった時間というものは、それだけでワクワクします。

人と違うことに価値がある。AIと共に生きる石井です。

さて、ここでは、チャットアプリケーション開発の中身をみていきましょう。

構成としては、

Reactフロントエンド(UI Compornent、axios通信、localStorage)

Laravel API(Controller, Model, CORS対応、CSRF無効)

MySQL DB(diagnosis_sessions, diagnosis_logs)

Reactは、JavaScript拡張ではありますが、フロントエンドに特化して、コンポーネント開発ができるというところに価値があります。

フロントというのは、一般の利用者側のスマフォとかPCとかの画面側で見ているところになります。

その部分を分離することと、サーバサイドから切り離してクライアント側で実行することには非常に大きな意味と意義があります。

JavaScriptはもともとクライアント側のリソースを使って動作します。もちろんこのReactでつくったアプリもクライアント側で動作するようにしてあります。(サーバサイドでレンダリングしたいという目的の場合は別途)

ReactからサーバへのやりとりはすべてAPIをつくってやりとりしますので、DBへ直接アクセスなどはしません。

テーブルを設計してマイグレーションしてしまえば、そのテーブルへのインターフェイスをAPI、具体的にはコントローラのメソッドとしてつくることは非常にシンプルです。

そして、そのAPIを呼び出すのは axiosで通信してJSONで結果を返すようにしておくと扱いしやすいです。

フェーズAPI関数エンドポイント内容
Phase0postStart()/api/diagnosis/startセッション開始
Phase0〜2postLog()/api/diagnosis/log発言・回答ログ保存
Phase0/ResultpostComplete()/api/diagnosis/complete診断完了・ユーザー情報保存
EntrypostEntry()/api/diagnosis/entry特典申込登録
Result/CompletegetComplete()/api/diagnosis/{token}診断結果取得

🧭 React診断チャット:完全UXフロー(Start → Complete)

診断をおこなうさい、開始ページでセッションを初期化します。セッション自体はLaravel側で生成したセッショントークンを保管して使いまわします。初期情報収集では名前やメールアドレスなどの質問に答えた情報を保管し、フェーズ1,フェーズ2ではそれぞれ用意した質問に対応した回答結果を保存します。診断結果を表示して、申し込みフォームへと誘導します。フォーム入力してもらい送信したら、最後にもう一度診断結果を表示しておわりです。

フロントエンドの開発はレイアウトの決定、スタイルCSSの決定など見栄えの部分で決めておかないと、あとからの影響が大きいです。

特に、スマフォ側のブラウザキャッシュが強力なので、その影響により変更が反映されないなどの混乱になる原因になります。

ほんとフレームワーク、ブラウザ、ありとあらゆる点でキャッシュは開発上での最優先チェックポイントです。

🧭 StartPage:診断導入フェーズの構成

🔹 主な責務

  • YouTube動画の埋め込み再生(IFrame API)
  • 再生終了後に /diagnosis へ自動遷移
  • セッション初期化(postStart())を強制実行し、localStorage に保存

🔹 技術ポイント

機能実装内容
セッション初期化postStart() を呼び出し、diagnosis_session_tokenlocalStorage に保存
動画再生YT.PlayerplayerRef に格納し、終了イベントで navigate("/diagnosis")
再生完了表示isEnded によりメッセージ切り替え

本当は、自動再生させたかったのですが、無音動画でないと自動再生はAPIでできないYoutubeの仕様制約があります。まあ、ここはユーザの意思で再生するで問題ないです。

手帳學 簡易診断アプリケーション

 株式会社 iPLUS ONE