フリーランスPHPerである私がフレームワークを使わなかった理由、使うようになった経緯

2014年7月2日

こんにちは、榊原です。
PHPをさわりはじめてからずっとフレームワークを使わずにいろいろなシステムを作っていたのですが、この度フレームワーク導入を決めました。
phpをさわりだしてから約10年。本格的なシステム開発をはじめてから早2年。使わなかった理由も、導入を決めた理由もありますので、簡単にまとめます。

フレームワークを使わなかった時代

1. htmlの延長線上でPHPを覚えた

私がphpを覚えたきっかけは、htmlを書いてて、ヘッダーやメニューをコピペすることにうんざりしたことでした。更新するごとに、全てのhtmlファイルを変更していくことなんて許せない!そこで、phpのinclude(); に出会いました。もう目からウロコでしたね。すばらしい。
なので、私にとってphpはhtmlの拡張版だったのです。だから、フレームワークナニソレ状態。会社でphpを覚えた、学校で覚えた、という人は結構「フレームワークありき」で覚えるそうなのですが、私はhtmlの延長線上でPHPを覚えたので、htmlファイルを作るがごとく、phpファイルを量産していました。

2. オレオレフレームワーク化

で、そんなことをしてたら、次はphpファイル間で似たようなコードを書くのが億劫になってくるんですね。コードを再利用というか、呼び出したい、と。
そこで、いつも使うPODのメソッドをまとめたものとか、セキュリティ系コードとかを集中管理するようになりはじめました。そしてそんなことをしてると、viewとmodel部分もphpファイルから分離したいなー、と思いだしまして、model部分はクラス化して別ファイルで管理するようになりました。稚拙ながら、オレオレフレームワークが出来上がっていきます。

3. オレオレライブラリの整理

それが突き進むと、次にオレオレライブラリも整理しはじめます。DBの構成をshowで見に行って、自動的に表を作るライブラリとか。それに書き込み上書きができるようにするライブラリとか。ログイン周りもそうですし。アンケートフォーム作成ライブラリとか。
で、多分ここらへんでフレームワークの存在を知ったのです。しかしながら、こういった資産があるからこそ、なかなか移れない。
まぁいいか、で受託案件も自社案件もオレオレライブラリでこなし、更にオレオレライブラリが拡張されていきます。
 

フレームワークを導入した理由

1. 分業体制に向けての業務フロー変更

じゃあ、オレオレでがんばり続けたらいいじゃん、という話になるのですが、2014年あたりに仕事量がキャパオーバーしました。htmlコーディングからcore開発まで全てひとりでしていたのですが、それじゃ仕事が回らなくなりはじめたのです。
 
reef

しかしながら、オレオレフレームワークだと、分業はかなり困難です。構成、細部を知ってるのは私ひとりで、ドキュメントすらありません。じゃあドキュメントを作れば、というのもひとつだったのですが、ライブラリ細部はちょこちょこバージョンアップを重ねていて、システム毎にライブラリが違う、ということが起きてたので、現実的ではありませんでした。
それらを全て手を入れなおしてドキュメントを作って、更に協業してくれる人にオレオレフレームワークを覚えてもらって!
 
いや、無理無理。なので、もうフレームワークを導入して、オレオレライブラリも刷新するか、と思ったのがひとつ。

2. htmlコーダーとも分業したい

そして、言ってPHPerは単価が高いのでちょっと協業は難しい部分があるかもしれませんが、htmlコーダーは単価は安いです。これは、仕事量というよりも、仕事の専門性が低いという部分があるんでしょうね。
で、私はhtmlコーディングからcore開発までしていましたので、htmlコーダーと協業できるようにするのも必須だな、と。そう考えた時に、拡張子がhtmlで読めるテンプレート開発環境、ということも必要になりました。まぁ、smartyとかいろいろテンプレートエンジンはあるのですが、それを導入するなら、一気に変えてしまおうかと。

3. ついでにセキュリティもちゃんとしたい

今までセキュリティについて手を抜いてたということはないのですが、session_start()も普通に使っていましたし、そこあたりが独学なので弱い部分がある可能性がありました。けど、フレームワークはそこの部分最初からしっかり作りこんでいるということで、導入するだけでセキュリティが強固になるなら全然ありだな、と。
 

フレームワークを導入した感想

言ったら、私にとってフレームワーク導入は、「過去の資産←→分業体制とセキュリティ」のトレードオフでした。それに見合っただけいいことがあったかどうか?!と言われると、ちょっと悩ましいですね。
 
まず言っておくと、フレームワークを導入したから開発速度が向上したかと言われると全くそんなことないです。ある程度オレオレを作ってたらフレームワークを使わない方が開発は早い。ついでに、いろいろな呼び出しは最小限なので処理速度もオレオレの方が早い可能性は高いです。しかもその上に、まだ分業体制を作ってる途中なので、最大のメリットであるはずの分業というものは享受していません(笑)
 
けれど、自分自身の幅を広げるという意味では、フレームワークをつかいはじめてよかったな、と思います。
フレームワークってある意味、先人の叡智の塊なわけでして、独学かつフリーランスという学びや刺激を受ける機会が極端に少ない環境に身を置いてる私としては、プラスだったんじゃないかなと。もちろんフレームワーク導入にともなってフレームワーク独特のルールや記法を覚えないといけなかったですが、それも含めてトータルでプラスになる可能性の高い投資だったのではないかと思っています。
 
また、フレームワーク選定についてなどは別途記事にしますね。
それでは、また。

slackチームに参加下さい

ng-onsenui2.slack.com

OnsenUI2(Angular2)について知見を共有する場です。Angular2に限ってOnsenUI2を議論できる場がなかったのでつくりました。これから使い始めるという方はぜひご参加ください。
https://ng-onsenui2.herokuapp.com/

Ionic2.slack.com

日本語情報が少ないのでこちらで知見を共有できればと思います。お陰様で参加者100名を超えました。ありがとうございます。
https://ionic2-ja.herokuapp.com