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

2025年10月30日

みなさん、おはようございます。ただいま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の仕様制約があります。まあ、ここはユーザの意思で再生するで問題ないです。

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

最新のお知らせ

thumb
2025年11月14日
プロトタイプ(試作)とPoC(概念実証)

プロトタイプ(Prototype)とは、「完成前に作る試作モデル...

thumb
2025年11月14日
見える化による安心感~最先端な要件定義

要件定義ってそんな簡単ではないです。 まずは見える化...

thumb
2025年11月14日
コミュニケーション

人間関係やチームでのコミュニケーション方法(伝え方・傾...

thumb
2025年11月13日
システム開発とは

システム開発とは、企業や組織が抱える課題を解決したり、...

thumb
2025年11月10日
AIをAPIで利用する、から、エージェントとして自律させる

「AIをAPIで利用する」から「AIエージェントを自立させる」...

thumb
2025年11月9日
人生の成長を支えるための行動としては、何が重要だと思いますか?

「成長を支える行動」は、才能や運よりも継続的な“習慣”や“姿勢...

thumb
2025年11月8日
ランサムウェア攻撃に関する情報をまとめてみました

大手企業が、システムをのっとられて稼働できなくさせられ...

thumb
2025年11月8日
感情編 ~ Human Writing 100 — 「人間らしい文章の100の条件」

先に言っておくと、100の条件もいらない。20程度あれば十分...

thumb
2025年11月6日
ウェルビーイングってなに?

「ウェルビーイング(Well-being)」とは、直訳すると「よく在...

thumb
2025年11月5日
Human Writing 100 — 「人間らしい文章の100の条件」

AIチャット(生成モデル)に“人間らしい文章”を出力させる...