未分類

フレームワークを使うか?

フレームワークを使うか否か。

フレームワークを使わず、ゼロから PHP でシステム構築も可能。ライブラリを使えば、部分的には簡単にできるが、コーディング量は多くなる。

フレームワークを使うと、簡単に作れるが、融通が利かない部分がどうしても出てくる。

メリット、デメリットはあるが、開発コストを抑えるためにはフレームワークを使うのがこれからの常識となると思われる。Java で Web システムを構築する場合でも Struts を使うのが一般的だ。

これからの時代は早く安く作って開発効率を上げていく。

フレームワークを使ったがゆえにどうしても開発が困難になった場合は、ケースバイケースで問題をつぶしていくしかない。しかし、そのようなケースがどれほどあるかというと少ないと予想される。お客様と交渉し理解を得られるような方向性で考えるのが良い。このような問題は CakePHP を使ったからというわけではなく、どのフレームワークを使っても、他の言語を使っても起こりうる問題であると考えよう。

従来はお客様の要望に合わせてどんなものでも受託で作る方式であった。今後もその方式は残るが、よほど大規模・特有のところのみに限定しないと、開発コストが多大にかかる。逆に言えば、開発コストはかかっても構わないので、とにかくお客様の要望を優先する場合に限られると思う。これからは、フレームワークを使うといかに簡単にできますよという方式にお客様の御意有無をなるべく合わせてもらう方式になると思う。ほとんどの場合、合わせても何も問題はないと考えられる。

一般的なシステム開発は、自由な命名規則を使って、自由にテーブルを構成して構築する。しかし、フレームワークの開発では厳密な命名規則があり、その規則に従うと、CakePHP が自動的にシステムを作ってくれるようなものである。最後の最後でどうしても融通が効かない点が出てくるかもしれないが、大幅なコーディング量削減が可能である。例えば、テーブルの項目名の場合、id と命名した項目は自動的に Primary Key となり、モデル名_id と命名した項目は自動的に Foregin Key となる。この場合、同一テーブルに同じテーブルを参照する Foregin Key があった場合にはどうするかなど技術的な問題が出てくる。このような問題を一つ一つ解決していく。最初のころは大変だが、慣れるにつれ、開発効率が上がっていく。もし、このような問題が発生するのを嫌い、自分で一つ一つリレーションを張るようなことをしていると、将来システム開発のたびに毎回作業することになる。フレームワークを使った際の不明な特徴を早めにつぶしていけば、あとは楽になるだけだ。

お客様から要求された仕様をフレームワークに沿って作るのが困難な場合は、思い切って仕様を変更できないかを伝えてみるぐらいの気持ちが必要かもしれない。案外それでOKをもらえたり、逆によかったりするケースもあるだろう。

フレームワークを使った統一的なシステムを構築し続ければ、使う方は操作が統一していて簡単、作る方は作り方、メンテンナンス方法が統一していて簡単になる。

ここまで書いたデメリットや心配事は、開発経験者が抱くものです。では、これから開発を行う方、初めてウェブシステムを開発する方、または Windows クライアントアプリ、スマートフォン・タブレットアプリ、ウェブサイト構築など多種多様な開発を行っている方はどうでしょうか?

本当の意味では完全にスクラッチな状態からウェブシステムを構築するのが理想です。ウェブシステムを専門に開発している方ならそう思うでしょう。しかし、上記のような人たちはとにかく簡単に作りたいと思うはずです。昨今は、お客様からいろいろな要求が上がってきます。必ず答えなければいけない要求を除いて、妥協できる点は妥協しないと開発が進みません。そういう意味でもフレームワークを使うことは理にかなっていると思います。

もし、スクラッチから Web システムを作るとしても、結局は何らかのライブラリを使い、共通処理はクラスを作って共通化し、という感じで自分なりのフレームワークもどきを作っていくことになります。自分で作れば全体像がつかめるので自由自在に操れますが、すでに CakePHP で提供しているようなものまで作ることになりかねません。しかもそれらの大部分は誰が作っても同じだったりします。そう考えると、フレームワークを最初から活用するのはありです。

結局のところ、スクラッチから作った場合でも共通処理を作ったり、社内で汎用的に使うことができるようにひな形を作ったりという考え方になります。開発が進んでいけば、自然とそうなります。であれ、やっていることは既存のフレームワークづくりと同じことです。自社で作れば完全に思うようにできるというメリットはありますが、既存のものと同じようなプログラムまで作ることになります。しかもそのような作業は結構時間がかかります。

自分で各コードは、お客様から受けた要望に対するもにできるだけ限定したいものです。そのほかの処理はフレームワークやライブライを使って簡単に済ませたいものです。

すべて CakePHP の規約に沿って書かないと絶対に作れないのか?そんなことはないと考えている。例えば、table1_id と書けば、自動的に table1 テーブルの id 列に対する外部キーとなるが、その定義は、モデルの中に書かれている。自動的に作成されるのは、bake という自動ソースコード生成ツールによるもの。この定義を手作業で書き換えれば、規約に反していてもシステム構築が可能。システムによっては、一つのテーブルからあるマスタに対して2つの外部キーが必要になることもある。そんな時には bake による自動生成はできないが、ある程度 bake で作った後、手作業で書き換えることができる。

-未分類