読者です 読者をやめる 読者になる 読者になる

Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

フレームワークを採用する理由

id:hrkt0115311こと、どんジレさんのつぶやきに答えてみる。

hrkt0115311 PHPの場合、テンプレートエンジンのSmartyを使って、ロジックとデザインを分離される意義は分かった。でも、フレームワークZend FrameworkとかCake PHPとか)を使う理由って何だろう。 link
hrkt0115311 単純作業から解放してくれるのかな。コーディング仕様が決まるからチームで開発する時に便利なのかな。それとも、大きなプログラム作る時に、保守が楽になったりするのだろうか。 link

僕は今CakePHPを採用してアプリケーションを作っている。フレームワークを採用する理由とCakePHPを採用した理由はまた別になるので、分けて書きます。

フレームワークを採用する理由

最大の理由は、アプリケーションに秩序ある構造を持たせる為です。

「画面にSQLの結果を吐き出すだけの簡単なお仕事」をする割にはキチンと秩序を持たせようとすると各々のレイヤーが疎結合でなくてはならないのが、Webアプリの難しい所です。もちろん1つのPHPに画面吐き出しのロジックからビジネスロジックからSQLやら書いても動きますけど、修正が大変ですしテストもやりにくいですしアプリの構造が無駄に複雑になる(グダグダになる)ので、いいことありません。保守が楽ってのはアプリの構造が秩序あるものであるってことに大きく関係します。「そこだけ直せばいいよ」っていう状態を作るのは、設計するひとのお仕事です。すげー難しいんだけど。

もう1つの理由は、楽をするためです。フレームワークが提供してくれている各種機能を使うことで恒常的に使用する機能を再開発しなくて済みます。また、複数人で開発していると当然ムラがでてくるものなのですが、そこもフレームワークが吸収してくれたりします。しなくてよい苦労をする必要はどこにもありません。技術者の白痴化という意味ではマイナス面もありますが(フレークワークが構造的に複雑なところを簡略化しているため、本来知っておくべきことを知らなくてもよいままにさせることがあるため)、用法容量を守って正しく使えばとても有益な武器になります。

CakePHPを採用した理由

  • 環境を選ばなかった
  • 携帯・PC問わず稼動実績があった
  • 自由度が高かった
  • ソースコードが入手できた
  • ドキュメントが充実していた

こんなところかなー。

直近は間違いなく「Webサイトにちょっと動的機能を付与したもの」で充分だったり、Webサーバを持っているかどうかもわからないお客さんの為に仕事をするケースが増えます。その時に重要なのが環境を選ばないことです。最近はどうか分かりませんが、色んなレンサバで動いてくれることが重要でした。レンサバと契約しているよーというお客さんもいらっしゃったし。その点PHPは強いです。それ以外の強みはよくわからないんだけど。Cakeは悪名高いPHP4もサポートしているので、それもポイントでした。

稼動実績がかなりあるのも魅力でしたし、携帯用の情報も豊富にあったのがCakePHPを採用するもう1つの大きなきっかけになりました。

自由度が高いといっているのは、CakePHPの場合フレームワークが提供している骨組みの上に、自分たちが解決したい問題を解決する枠組みを載せることができるという意味です。Cakeは全てがその方向に向かって作られていると思います。「あーゆーことやりたいなー」で何かアプリを作った時に、Cakeで作ったものを資産として再活用できるような仕組みがあるのが大きかったです。また、Cakeは画面吐き出しも全部PHPコードをかいてやるんですが、僕は1人しかいないので全然OKです。全部ひとりで組んで解決できるっていうのが大きかった。分業はやりにくいかもしれないけど、そんなの今はどーでもいい。Smartyとの連携も可能だし。

あと、ソースコードを追いかけることができたのも大きかったなー。CakePHPは良くできているし、僕のようなPHP暦が浅い人にとってCakeのソースコードは格好の勉強材料になるわけなんです。問題解決に寄与&PHPの勉強の2重の意味でCakePHPがよかった。ユニットテストとかもサポートしてくれているし。

CakeのOfficialのドキュメントは充実していますし、各種様々なコードが公開されているし、ユーザーフォーラムもあるし、CakePHPに関するブログも多かったしと、人脈もお金も無い環境でも、自助努力によって色んな非公式ネットワークによるサポートが受けられそうだというのも、大きかったですね。

僕が経験ある言語があまり少なかったので、やったことがある言語の中でPHPが最適だった、というのもホントは大きいんだけどね。

そんなところで。