中小企業で社内システムを発注するときに、
パッケージか独自設計か、独自設計なら何かフレームワーク使うのかなどなど、
いろいろ悩むところです。
今回僕は、勤務している農業機械店の顧客管理システムを移管するにあたり、
PHPフレームワークのCakePHP3を使って実装することにしました。
現役エンジニアや、ITベンチャーの方々に聞くと
最近はLaravelかRailsに決まってるでしょ? と言われそうですね。
はたまた Django かもしれません。
実際、比較の際に自分で使ってみても、Railsはスマートで感動しましたし、
Laravelも必要な機能の大方がフレームワークの中に用意されていますし、
細かいところも柔軟にできて素晴らしいと思いました。
ですが、「小さな会社のIT担当(雑用係)」として忙殺される今、
CakePHP3はかなり「アリ」な選択でした。
今回はその理由をご紹介します。
理由1、格安レンタルサーバー(月1000円未満)でも実用速度で動いた
フレームワークの選定のため、試しにDBテーブル3つを用意して
LaravelとCakePHPで簡単なCRUDを作ってみました。
当初はレンタルサーバー上で運用する予定でしたので、
手持ちの4つくらいのレンサバに乗せて、速度を比較してみました。
その結果・・・、
Laravelは2つのサーバーで、もっさりなら動く、
残り2つの格安サーバーでは動かない。
CakePHPは1つのサーバーで使えるレベルで動く、
2つのサーバーでは、もっさりなら動く。
残り1つの格安サーバーでは、動かないという結果でした。
もちろんSSH接続してComposer入れてごにょごにょして、
設定を諸々いじれば、Laravelもバッチリ動くんでしょう。
でも、そういうのに時間かけたくない面倒くさがり屋です。
とにかくレンタルサーバーにアップしてすぐ動く、
これは小規模開発では大変重要です。
(面倒くさがり屋なので)
最終的には、社内LAN上のLAMPに置くことになりましたが、
10年以上前の化石みたいなPCでもCakePHP3は快適に動いています。
Laravelは、まぁ遅いけど使えるね、くらいの感じでした。
エンジニアとしては、Laravelの方が今っぽくていいのでしょうが、
雑用係としてはやはり、ごにょごにょする時間もないので
とりあえず動くCakePHP3を使う方針にしました。
理由2、bakeコマンドで「動くCRUD」画面がすぐできる。
CakePHP3には「bake」というCRUD自動生成コマンドが用意されています。
コマンドラインに「bake cake (ケーキを焼く)」と入力すると、
一瞬で「実際に使える画面」がすぐできます。
実際の開発でも、テーブル設計したら「bake」して、
出来上がった各CRUDの見た目をチョイっといじれば
ハイ完成! この流れは助かります。
もちろん、Laravelでも似たようなCRUDを生成するために
プラグイン等がありますが、標準機能で用意されているの嬉しい。
おそらくゴリゴリUI作り込むようなプロジェクトには
CakePHPのBakeは邪魔くさいかもしれません。
ですが今回は、たかが帳票系のシステムです。
オシャレなUIは勿論不要ですし、複雑な結合もありません。
それなら標準機能だけでパパっと作れるほうが
現在の私にとってはありがたいです。
理由3、CakePHPは外部のエンジニアさんに依頼しやすい
CakePHPには、特徴の1つに「設定より規約を優先」という思想があります。
これは外注SEさんに依頼するときに結構威力を発揮しました。
もちろん、作ろうとしているモノが簡素なモノという事もありますが、
概要設計だけ伝えれば、他の細かい打合せはほぼ不要でした。
これもこちらの時間削減におおいに役立ちました。
SE時代やフリーランス時代に、自由度の高いフレームワークで
小規模プロジェクトやった時は「そのプロジェクトでの設定(規約)を決める」ために
膨大な打合せと工数を割いた覚えがあります。
基本設計だけ渡せば、内部処理をあまりつめなくても
思った通りのソースが届く。
変なソースのバグ取りしなくてよい。
ありがたや。ありがたや。
おわりに
以上、「とにかく手早く、動くものを作りたい!」
そんな要望を満たしてくれる、CakePHP3を選択しました。
大規模な既存システムの置き換えや追加開発の場合は
CakePHPの思想に合わせにくい場合もあるでしょうが、
運用開始からほぼ2年がたち、自分でも結構システム追加や
修正をしていますが、毎回この「お手軽さ」に救われています。
今回はCakePHPで正解だったと思います。
追伸
勉強するならCakeとLaravelどちらですか?と
何度か質問されました。
「どちらでもよい」が正直な想いですが、
あえていうならこれもCakePHP3です。
理由はCakePHPに標準でついてるデバッガーがめちゃめちゃ優秀だから。
なんかエラーが起きると、エラーメッセージを読んで
キーワードで検索かけると大抵解決します。
あと、上述したBAKEで動く画面が即席で完成するのも、
「フレームワークを使った開発って何をするのか」
を理解する上で、学習コスト削減に一役買ってくれると思います。
CakePHPでちょろっとなんか作った経験があれば
LaravelやらRailsやらになっても理解するコストは低くなります。
いずれにしろ、フレームワークを使うと、MVCとはなんぞやとか、
フレームワークがやってくれているバリデーションやらなんやらが
実際どういうモノなのか分からないままになりますので、
そこは別途勉強してく感じかと思います。
それでは今日も、よい1日を。