開発現場で駆け出しPGの思い
Laravelとは?
すばりPHPのフレームワーク
ではPHPと何が違うの?
LaravelにはMVC概念とデザインパターンが存在していて、それにより大規模なプロジェクトの際により効率的に開発できるところ。
MVCの理解で十分か?
M:Model
V:View
C:Controller
のことである。
それぞれ、フロントエンドとバックエンドの観点で、Viewが1番フロントエンドより、Modelが1番DBより、Controllerが中間といった具合でざっくり抽象化するのが吉と考えている。
詳細は以下に示す。
Modelは間接的にDBに対してCRUD操作することが可能である。直接DBを触らないようにすることで、セキュリティ、保守運用性を高めているのではと認識している。
ControllerはModelからデータを取得して、Viewにデータを渡したり、外部システムからデータを受け取ってModelに渡したり、ビジネスで例えると、モノを横に流す商社マンのポジションだとアナロジーできる。(昨今はトレーディング業の方が勢いが強いだとか、、)エンジニア的に言えば、アクセスロジックとでも言っておこう。つまり、どこにアクセスしてデータを受け取り、どこにアクセスしてどこにデータを送るかを決めるところである。(Laravel初心者には、ここがかなりつまづくポイントになる。)
最後に、ViewはModelから取得したデータをフロントエンドで表示するためのものである。実は、ここはまだいじったことがないため省略。
以上の概念だけ覚えていれば現場の開発は十分か?否。これでは、開発プロジェクトにおいて、まったくチーマーワークが発揮できない。ビジネスロジックやデータロジックがごちゃごちゃになるからだ。
ServiceとRepositoryとは?
コーディングのロジック処理をわかりやすくするのがServiceとRepositoryの2つである。前者でデータロジック、後者でビジネスロジックを記述する。ここまで来れば言いたいことはわかるだろうが、決して私と同じようにControllerにロジックを書かないように。テックリーダーから厳しいレビューが飛んできます。詳細はググってみてください。
定数の扱いConfigとは?
さらに定数の扱いもcofigを利用して定義づける癖をつけらように。
ちょっとした愚痴
API連携で電話番号をDBに保存する時、ハイフンを入れるか入れないか論争。数値をstring型にするのは合理的だと思ったが、ハイフンを入れるのはいかがなものか?連携する時にいちいち正規化して登録すると大量のデータ連携の場合、システムの性能に影響が出るのではと。結局フロントエンドで処理を施すとなると、表示までに時間がかかる可能性があるためUX的には前者の方が良いのだろうか。さっぱりわからない。