0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📸 PICTWEET_NEO 開発振り返りログ 〜非同期通信SPA風アプリ〜

Posted at

PICTWEET_NEO 開発振り返り

Laravel × Breeze × MySQL × Blade + Alpine.js + Axios + Stamac による SPA風アプリ「PICTWEET_NEO」の開発を振り返ります。
初代 PICTWEET の設計思想を引き継ぎつつ、非同期通信を活用した現代的な UX を目指しました。


バージョン1:開発過程の共有

🏗️ 技術スタック

項目 技術
フレームワーク Laravel 12
認証 Laravel Breeze
データベース MySQL
フロントエンド Blade + Alpine.js + Axios
非同期通信 Axios(REST API経由) + Stamac(Cookieベース)
UI Tailwind CSS
状態管理 Stamac(Cookieでセッション情報を保持)

🔹 開発中のキャプチャ

投稿一覧
投稿画面
詳細画面


バージョン2:HTTP の流れ・コードの動き

ユーザーがブラウザで操作してからレスポンスが返るまでの流れ(Stamac + Cookie を使った非同期通信込み):

🔄 HTTP リクエストの流れ

  1. ユーザーがブラウザで操作(例: 投稿ボタンをクリック)
  2. Axios が HTTP リクエストを送信
    • Stamac がセッションや状態を Cookie 経由で管理
  3. routes/web.php または routes/api.php でルートが解決
  4. ミドルウェアが処理(認証・CSRF・ログ・Cookie読み取り)
  5. コントローラーの該当アクションが実行
  6. モデルが DB と通信
  7. ビュー / JSON レスポンスが返る
  8. ブラウザが受け取り、Stamac が状態を更新して画面を更新

🧱 コードの責務例

  • コントローラー:リクエスト受け取り、サービスやモデルに処理を委譲
  • モデル:データ取得・保存
  • Blade + Alpine.js:DOM 操作と Stamac の状態同期
  • Stamac:Cookie を使ってセッション・状態管理、非同期通信を効率化

image.png

バージョン3:開発での難所と対応

🔹 難しかったポイント

非同期通信の設計

  • Axios だけでの状態管理だと、セッション管理や Cookie の同期が複雑

対応:Stamac を導入して、Cookie ベースでの状態管理を一元化

HTTP の流れ理解

  • ミドルウェアやコントローラーの処理順序、API Resource の返却タイミングが分かりにくかった

対応:ログ出力を活用してリクエストからレスポンスまでの流れを可視化

認証処理(Breeze)との統合

  • API 形式でのログイン後に Stamac で状態を反映させる必要があり、初期設定では動作せず

対応:ミドルウェアで Cookie を正しく読み込む処理を追加

バージョン4:所感と学び

  • PICTWEET_NEO の設計は自分なりに最大限考えた構造でしたが、ベストではない

  • 今後は 拡張しやすい設計、可読性の高い設計、修正しやすい設計 を追求していく

  • HTTP の流れやミドルウェアの役割、Stamac + Cookie による状態管理の理解が深まった

  • Laravel 12 でのカーネルやブートストラップ周りの扱いに触れることができた。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?