質問: プログラミングは独学の学生で、周りで仕事として使っている人と関わるタイミングが少ないので質問させてください。 僕は基本的にバックエンドにあまり深く突っ込んでいないので、webアプリ作りたければrails、モバイルアプリならapiをrailsで書いてAndroidみたいなものしか作ってませんでした。 Androidをメインでやっていてそこまで複雑なバックエンドが必要になったことがなかったからです。 しかし最近、phpで簡単なwebアプリを作るバイトをさせていただいて、phpはだいぶ昔に自分で簡単なフレームワークを作って使ったことがあっただけだったので、不安でしたが久々にドキュメントなど読みつつ書きました。 その際cakephp3を使ったのですが、発想がrailsとかなり近かったのかすごく早く学習ができて、一応仕様通りのwebアプリを3日程度で作ることができました。 もちろんまだ色々不安なところもありますが、昔は既存フレームワークを覚えてない状態で使っていたのでフレームワークによってこんなに早く使えるようになるのかとか感動してました。 しかし、今後クオリティを上げるためベストプラクティスなど検索してみたところフレームワーク不要論が結構phpでは多いようで、今後仕事を受けるときのためにフレームワークを使わないで色々できるようにしとくべきか迷うようになりました。 実際仕事でphpで書いた製品を納品する場合フレームワークを使うのは良くないのでしょうか? 開発規模にもよると思うのですが、簡単なwebアプリなら使わないほうがいいのでしょうか? その辺の正解がいまいちわからないので教えていただきたいです。
回答: 一般に Web フレームワークとは、MVC(Model, View, Controller)という構造をもったそれなりに規模の大きいシステム向けのものです。逆に言えば、MVC を必要としないシステムであれば、無理にフレームワークを使う必要はない、とも言えます。 が、現実問題として、MVC を必要としないシステムというのは考えにくい(DB がないシステム?)ので、なんだかんだ言ってフレームワークを使えたほうが楽はできます。 ただし、仕事、それも相手先がある仕事だと、そもそもポリシーとしてフリーソフトウェアやコピーレフトなものを使うことができない、という客先もあるので、そういう場合はスクラッチするしかありません。 フレームワークというのは基本的には似通ってますから、一つのフレームワークに触れていれば、他のフレームワークに対応するのも難度は下がります。(フレームワークとは設計の思想でもありますから、似たような設計思想であれば根幹は同じになります) ※CakePHP は Ruby on Rails に触発されたのが開発契機の一つなので、似通っているのは当然です