こんにちは。
今回も前回の記事に引き続いてPHPでSNSの実装を記していきます。
フレームワークを真似てフォルダを作る
フレームワークとは、システムやアプリ開発において土台となる機能を予め用意している箱のようなモノです。
そのため開発において似た処理は予め雛形として作っておくことで開発効率が上がります。また、オープンソースのため属人化することなく運用面でもメリットが大きいです。
脆弱性が発見されてもパッチが出るためバージョンの管理をすればよいためセキュリティも高めやすいのです。
そんな便利そうなフレームワークですが、難しいです。
というのも、既にあるコードに追記、改変、設定変更を施す必要があるため
プログラミングスキルと共にフレームワークの知識も要求されるわけです。
そのためプログラミングスキルを身につけずフレームワークを利用すると
破茶滅茶な設計になってしまうわけです。
また、フレームワークに依存して汎用的な技術を身につけることができません。
なので最初のステップとしてスクラッチ開発。いわゆるゼロからつくってみるということが重要です。
そして今回はフレームワークの設計思想でも使われるMVCに沿った設計にします。
フォルダ構成
ある程度決め打ちでフォルダを作成しました。
sns_training ├── api ├── app │ ├── auth │ ├── config │ ├── constants │ ├── controllers │ ├── helper │ ├── kernel │ ├── models │ ├── services │ └── utill ├── routes └── views ├── assets ├── components ├── css ├── js └── pages
では各フォルダの用途をご説明します。
api
今回は、RDBのMySQLを使ったDBを構築するので
そのやりとりをapi化する目的で作成しました。
個人的ですが、SQL文を書くのであれば一箇所にまとまっていた方が
改修が楽ということで今回はapi方式を採用しました。
app
主に内部処理系をapp配下に置きます。
サーバ側で実行されるものを基本的に書いていきます。
auth
暗号化やハッシュ化といったセキュアな管理、
またSession管理などをこちらのフォルダ配下で管理します。
フォルダ名が「auth」で役割とフォルダ名が合っているかは微妙ですが、、
今回は「auth」配下に認証やセッション、セキュアな面を管理させます。
config
環境変数ファイルを置くフォルダです。
フォルダを作るほどでもありませんが、環境変数ファイルから呼び出す処理も加わるため今回はconfigというフォルダを作成しました。
constants
定数管理をするフォルダです。
データベースで管理するほどでもない情報を管理します。
controllers
viewの表示やviewトリガーの処理を受け持つ役割をします。
システムの司令塔的な役割を果たします。
初期表示、画面遷移
helper
viewを持たないがcontrollerのような司令塔の役割が必要な場合に使うフォルダです。
kernel
システムの中核部分です。
一番はじめに処理される部分です。
models
controllerとservices間、servicesとapi間を行き来するオブジェクトです。
ネット通販でいうと段ボール的な役割です。商品(変数)を包んで運ぶ。
現在のPHPでは型は不要なので必要ありませんが
組織での開発や他言語を使う場合、型を意識する必要があるのでmodelは必要な存在になります。
services
apiへ値の送受信を行い、結果をcontrollerに受け渡す役割をします。
データのチューニングを行ったりします。
複数回apiにリクエストを送る場合もservicesで再呼び出しをした後、結果をcontrollerに送ります。
utill
使いまわせる関数を管理するフォルダです。
複数ファイルに跨って同じ処理を必要とする場合に
utill内で関数を定義して使用します。
routes
ルーティング管理をするフォルダです。
リクエストURLと表示するページ(view)の紐付けを行います。
views
ユーザから見える”フロントエンド処理”を管理するフォルダです。
assets
写真や動画、フォルダを管理するフォルダです。
更に細かくフォルダで分けてもよいです。
components
ビュー側の共通部分を管理するフォルダです。
js / css
jsはフロントエンドで実行されるJavaScriptの管理フォルダ。
cssはデザイン管理フォルダ。
pages
ユーザに見える部分の管理
おわりに
今回は、フォルダについて細かく分けてみました。
フレームワークのようなフォルダ構成にするとフレームワークはどう作ってるんだろうって探究心がくすぐられますよね。
内部構成は違えど、面白いので是非一度見てみてください。
コメント