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?

Laravel × Inertia × Vue.jsでの命名規則の現実的ベストプラクティス

Posted at

はじめに

JS/TSやPHP/Laravelのロジック・関数・変数はcamelCaseを採用していることが多いと思いますが、DB由来のプロパティはsnake_caseで渡されるため、両者が混在します。
この混在をどのように受け入れ、現実的な落とし所を見つければ良いかを探るため、laravel-breezeとjetstreamの公式スタックのソースコードを調査しました。
その結果、公式の実装例や慣習から見えてきた「現実的なベストプラクティス」についてまとめます。


結論:命名規則の統一方針

  • バックエンド(DB・API):snake_caseで統一
  • フロントエンド(props・formデータ):snake_caseで統一
  • ロジックや変数・関数名(JS/TS/PHP):camelCaseで記述

なぜこのスタイルが主流なのか

  • LaravelのEloquentはDBのsnake_caseカラム名と自動でマッピング
  • APIリクエスト・レスポンスもsnake_caseがデフォルト
  • Jetstream/Breeze公式スタックでもpropsやformデータはsnake_caseで統一
  • JS/TS/PHPのロジックや関数・変数はcamelCaseが一般的
  • 画面制御用のprops(例: mustVerifyEmail)はcamelCaseで渡される(snake_caseも有り)

実装例

1. バックエンド(Laravel)

// DBカラム・APIレスポンス
$label = Label::create([
  'bg_color' => $request->input('bg_color'),
  'text_color' => $request->input('text_color'),
]);
return Inertia::render('Labels/Create', [
  'form' => [
    'bg_color' => $label->bg_color,
    'text_color' => $label->text_color,
  ]
]);

2. フロントエンド(Vue.js)

<script setup>
import { useForm } from '@inertiajs/vue3';

const form = useForm({
  name: '',
  bg_color: '',
  text_color: '',
});

function handleSubmit() { // camelCase
  form.post(route('labels.store'));
}
</script>

<template>
  <form @submit.prevent="handleSubmit">
    <TextInput v-model="form.bg_color" />
    <TextInput v-model="form.text_color" />
    <PrimaryButton type="submit">登録</PrimaryButton>
  </form>
</template>

3. ロジックや変数・関数名

function handleSubmit() { /* camelCase */ }
const isValid = computed(() => { /* camelCase */ });

まとめ

今回の調査から、Laravel × Inertia.js × Vue.js公式スタックでは
データ由来(DB・API・props・form)はsnake_caseで統一し、ロジックやDB由来でない変数、関数名はcamelCaseで記述するのが現実的なベストプラクティスのようです。

このスタイルを採用することで、公式スタックの設計思想に沿った保守性・可読性の高い開発がしやすくなると感じました。
あくまで私の調査結果に基づくベストプラクティスですが、命名規則で迷った際の参考になれば幸いです。

参考リンク

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?