質問: ### 前提・実現したいこと ・AngularJs(Angular)・CakePHP・Bootstrapのフレームワークの組み合わせで、DB(SQL)検索機能を持ち、セキュリティに配慮したレシポンシブルなWEBサイトを作りたいとおもっています。 ### 疑問 実際の作業に入る前に疑問が生じています。 ・AngularJs(Angular)・CakePHP・Bootstrapのフレームワークの組み合わせで申し分が無いのか、 それとも他におすすめのフレームワークの組み合わせがあるのか、 あればどのようなものがあるのか、 実際の現場では、どのような組み合わせが主流なのか、など 教えていたければ、と思っています。 要件の追記 ----- 要件があいまい、とのアドバイスを多数いただきましたので、追記させていただきます。 (たくさんの方からのアドバイス、ありがとうございます) 考えているサイトは、外部からの依頼でのサイトでなく、自身のサイトとして、自分が作成したDBを対象としたDB検索画面、検索結果表示できるサイトを作成したいということでした。 (イメージ的には、「住所録リストだけのものを、もっと使いやすく検索、表示できるサイトをつくり、公開する」) そうしたサイトを作るときの条件として、 A「DB検索まわりのセキュリティ」 B「スマートフォン対応ができるレシポンシブ」 を考えました。 ・当初は前述のDB検索画面、検索結果表示を実装するが、将来的には他の機能も必要となるかもしれないのでそれを実装できる環境にしておきたい。(ここの部分は曖昧すぎるな要件なので、現時点では無視するほうがいいのでしょうね(無視するしかない)) もともと、上記AB条件を満たしているであろうフレームワークをつかうことにより、効率的にに求めるサイトを作れるのでは、と思いました。 そのときの、フレームワークとしてAngularJs(Angular)・CakePHP・Bootstrapのフレームワークの組み合わせで申し分が無いのか、 ということでした。
回答: 回答依頼をいただいているので、回答させていただきます。 > > ・AngularJs(Angular)・CakePHP・Bootstrapのフレームワークの組み合わせで申し分が無いのか、 > > > まず、Bootstrapに関しては、見た目のスタイルの部分となりますので、本件での問題とはあまり関連しないかと思いますので、不問とします。 また、AngularJSと、Angularではだいぶ実装方法など変わってきますので、 私が現在開発を行なっているAngularの方で話をさせていただきます。 さて、元も子もない話ですが、 **要件によって変わるのでなんとも言えない**のが全てです。 なので、どういったサイトを作るのかによって、必要・有効なフレームワークはまるで変わってきます。 Angular含む、JSフレームワークが流行っているからといって、闇雲にそれを使うと大火傷どころか、プロジェクトが炎上します。 さて、AngularとCakePHPの組み合わせですが、 個人的な見解として、 **役割が重なりすぎる**部分が生じるので、正直組み合わせるのは逆によくわからなくなるし、やめた方がいいかと思います。 なぜなら、CakePHPは、PHPによって、DB連携〜ページ表示のロジック、実表示の部分まで統合的に、一括管理ができるフレームワークです。 対して、Angularは、表示の部分が特化されており、HTMLの表示を、統合的に、一括管理するというのを、フロントエンドで行えるようにするというものです。 (簡単に要約するとです) Angularを使うことを前提としましょう。そうすると、CakePHPにおいては、ビューのロジックから実表示までの機能は必然使うことができないので(方法はあるかもしれないが、AngularとPHPの表示部分での混合は基本的に不可能)、事実DBコントロールの部分だけを使うことになります。 そうなると、そこの部分だけのPHPフレームワークってなると、CakePHPいらなくね? DBコントロールだけのライブラリだけで十分じゃね? ってことになります。 そして、CakePHPを中心に使うことを前提としましょう。 最終のビューまで統合的に管理するので、Angularの出番はありません。 (というか前述の通り混合して使うのはかなり無理がある) ちなみに、セキュリティを考えると、Angularで(フロントエンド側)でDBコントロールは絶対ダメです(というかできない)。フロント側にDB情報扱わせたら、他者から丸見えですからね。セキュリティもクソもありません。 PHPなりのサーバーサイドとのAPIを用意するしかありません。 SPAを使ってシームレスにしたい!ってなら、AngularとかJSフレームワークだし、 お客様情報を扱う、Webアプリケーションで、ゴリゴリにサーバーでいろいろ処理したい、ってなら、サーバーサイドの言語のフレームワークを使うべきですし。 どうしてもSPAにして、かつサーバー処理ゴリゴリしたいってなら、 サーバー処理だけ、サーバーサイドとAPI連携して、表示部分だけはJSフレームワークで! ってやればいいし。 以上を考えた時、そのフレームワークの性質や、使用している言語の性質があるため、 **要件に合わせて**選択するしかないので、 今の時代だとどの組み合わせが一番いいよ!ダメだよ!なんてものは存在しません。 ただし、今回の、AngularとCakePHPに関してだけ言うと、組み合わせるのは難しいし、お互いのいいところを潰し合う結果になりかねません。 Vue.JSとかだったらわりと、CakePHPと組み合わせしやすいかもですが。 個人的な意見が多分に含まれている回答で大変恐縮ですが、 以上になります。