こんにちは。株式会社NextatでWebコーダー業務を担当しております、モリです。
今回は、弊社で毎週水曜日に開催しているPHPのもくもく勉強会で、自分が学習していることについてお話したいと思います。
私が最近勉強会で取り組んでいるのは、「PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 」を読むことです。
現在3章あたりまで読み終え、Laravelアーキテクチャや機能の説明、ADRとMVC、設計の話などについて学習しました。
感想としましては、私自身プログラミング初心者でアプリケーションの開発の経験もなく、中規模以上のアプリケーション設計に活かせるような話を読んでもあまりにもピンとこないので、なかなかハードな内容であると感じました。
そして、全体的な内容だけでなく、出てくる用語の意味がよく分からず、調べながら読み進めたのでかなり時間を要しました。
そこで、復習の意味も込めて調べた用語をいくつか載せておきたいと思います。
バインドと解決
本書のサービスコンテナについてのセクションで、よく出てくる用語です。(下記本文引用)
サービスコンテナに対してインスタンスの生成方法を登録する処理は、「バインド(bind/binding)」と呼ばれ、指定されたインスタンスをサービスコンテナが生成して返すことを「解決する(resolve/resolving)」と呼びます。
特に「解決する」という動詞が登場した瞬間、なぜ「解決」という動詞を使うのか意味が分からない、と考え込み完全にハマってしまいました。この用語が出てくるたびに内容が頭に入りづらくなっていました。
一応、応急措置として「解決する」=「利用する」と読み替えると理解しやすくなります。
本来は、同セクションの後半で出てくる「依存性の注入(DI)」という概念をしっかり理解することが必要となってくる用語であると思います。
「サービスコンテナにインスタンスの生成方法を登録し、抽象に依存させる(バインド)→依存性を解決する(解決する)」
ということではないかと思われます。
Eloquent
・Eloquentとは、データベース(DB)とモデルを対応づける機能。
・オブジェクト関係マッピング(ORM)である。
・Laravelに備わっており、modelやcontrollerに記述する。
用語を調べると新たに知らない用語、ORMが出てきました。これについても調べた結果、”オブジェクト指向プログラミング言語とDBをうまいことつないで、DB操作を簡単にさせてくれるもの”という適当な理解をしておきました。DBについても知識がないので、後に改めて学習します。
Eloquentはモデルクラスを定義して処理を実装しますが、EloquentモデルにDBの処理とビジネスロジックをあわせて実装すると、ファットモデルと呼ばれる状態になり、カラム変更やアプリケーション拡張時のDBリファクタリングに大きな影響を受けることになります。この問題を解決するための設計のヒントが本書に書かれています。
ビジネスロジック
Wikipediaによると、明確な定義がない用語のようです。
・ある業務システムなどで、入力されたデータを表現したり、処理する方法を実装した部分。
・システム固有の処理を記述した部分。
・DBに接続したり、DBにデータを登録するといった処理は、システム固有とはいえないからビジネスロジックに含まれない。
とりあえず、解釈の一例としては上記のようになります。本書を読み進める上では、この解釈で問題はないかと思われます。”ビジネスロジックは一体どこに記述するのがよいのか”を考えることが重要であるということが、本書の伝えたいことでしょう。
それでは、今回の私の学習内容の振り返りはここまでにします。なんとか自分なりに理解しようとした結果間違っていることもあるかもしれませんが、最後まで読み進めたいと思います。
毎週水曜に勉強会を開いてますので、興味のある方はご参加ください。私も毎週参加し、悪戦苦闘しています。
ここまで読んでいただきありがとうございました。