Laravelを触る事になったら最初に抑えるべきポイント

  • 2021年6月25日
  • 2021年7月7日
  • Laravel, PHP
  • 2view

こんにちは!てりーです。

最近フロントだけでなく、サーバーサイドの開発にも業務で携わり始めました。
僕自身は今まで、フロントエンドの経験しか業務ではなかったのですが、チーム体制の変更でフロント⇄サーバーの垣根なく、機能単位での開発をしています。

プロダクトの使用技術はLaravel+Vueです。 今までまともに触った事ないLaravelで開発を初めて1.5ヶ月ほど経ったので、振り返りつつ抑えておきたいポイントをまとめていきます。

Laravelを触る事になったら抑えるべきポイント

1 画面とDBを照らし合わせてwebサービスをイジってみる

まず機能を作るために、全体の流れを理解します。
コードを見ないでプロダクトの画面とDBを見ましょう。

全体像を理解するために手っ取り早いのが、スタートとゴールを確認する事です。 画面から始まり、DBを経由してまた画面に戻るまでをざっくりで良いので把握しましょう。

webサービスでしていることのほとんどがDBをCRUDです。
DBの情報を参照して、画面からの入力を登録・更新。削除しているだけです。

例えば、住所などのユーザー情報を登録出来るフォーム画面があったとします。 Image from Gyazo

これは登録をする画面ですね。画面で上記のフォームに登録すると、DBのformsTableにはこんな感じでデータをが入ります。

  • name:名前
  • kana:ふりがな
  • address:住所
  • remarks:備考

なので、小難しい処理を除いてまずは、「この画面はこのDBのデータが参照されているんだ〜」「この画面ではこのdbに登録しているんだ〜」と把握しましょう。

2 DBの関連性を掴む(ER図)

画面とDBの関連性がなんとなく掴めたら次はテーブル同士の関連性をざっくり掴みます。
その際に役に立つのがER図です。

こんな感じのやつ。
Image from Gyazo

簡単にいうとDB同士の関連図ですね。
テーブルの中には多くのテーブルと関連を持つwebサービスの要になる物があります。

上の画像だとproductsテーブルが重要ですね。
productsテーブルのidがordersテーブルやpurchasesテーブルでproductsIdとして使われています。

こうする事でテーブル同士を紐付けることが出来ます。
テーブル同士の関連性はとても重要で、「○○機能では✖︎✖︎テーブルが中心になってデータが得られるんだなー」とざっくり理解しておきましょう。

3.APIの流れを掴む

そろそろコードに入っていきます。 といっても細かくコードを見るのではなく、全体のAPIの流れを追っていきます。

Laravelで主に使われているRESTfulAPIはサーバーサイドとフロントエンドをWebAPIを使って分断する仕組みです。

APIはフロント側で叩かれて(リクエスト)、サーバー側が何らかの処理をします。(レスポンス) ですので、その繋ぎ目を把握しましょう。

LaravelにはフロントとのAPIのやり取りをまとめているフォルダがあります。
route/api.phpです。

ここにAPIのリクエストがとび、各controllerに処理がいく訳です。

先程のform画面の例で見て見ましょう。 Image from Gyazo

目標はform画面で入力したデータをformsTableに登録する事です。 まずはform画面からapi.phpにリクエストを送ります。

フロント側からサーバー側にデータを送りたいので、httpメソッドのPOSTを使います。 api.phpではフロントからのAPIで渡ってきたJsonデータを、どのcontrollerにて実行するかを捌きます。

controllerに渡ってデータはModelを用いてDBに保存される訳です。

もしフロント側でDBにあるデータを参照したい!という時には、サーバー側でデータを取得し、APIを通してフロント側でそのデータを受け取ります。

こういったAPIの流れと、フロント・サーバー各々でのAPIの繋ぎ目を把握しましょう。

まとめ

僕が思う「Laravelを触る事になったら抑えるべきポイント」についてまとめていきました。

これらはサーバーサイドが全く分からない中で、キャッチアップの速度をいかにして上げられるか?を基準に要点をまとめた物です。

結局の所、「コードの囚われず、全体のデータの流れを把握する」事に注力する事で、キャッチアップを早める事が可能かなと思います。

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Compare
Wishlist 0
Open wishlist page Continue shopping