そもそも、Web2.0を積極的にやろうという意気込みで始めたプロジェクトだったので、LAMPの採用は必然的だったのだけど、MySQL、とりわけPHPの経験が乏しく正確に評価できてなかったこともあり、基幹システムを作るにはかなり冒険的だった。なので、更新系や連携部分などの重要な部分だけは、Javaで作られたReflex(これはこれで実験といわれてもしょうがないが)を採用することにした。こうすることで、安全性というか、安心感が高められることになった。なぜJavaだと安心かというと、稼動実績や情報が多いこと、歴史が長く安定していること、それから、最後の最後は自分の経験。どんなにトラブっても自身でFIXできる自信があったのが一番大きい。また、ついでにPHPを勉強して、Javaとの比較もできる。まあ、とりあえずやってみようということで、ハイブリッド形でやることにした。
プロジェクトでは、サービス志向を取り入れた次のポリシーで開発した。
- 画面系はPHP(JavaScript)で作成する。プロバイダに対してはXMLかJSONでアクセスする
- プロバイダはReflex(Java)で作成する。JSPなどの画面は一切なし。PDFはReflex iTextで作成する。
- バッチはJavaもしくはPHPかシェル
同じ言語を使えば、画面とビジネスロジックがシームレスになる分、何かメリットがあるように思えるが、逆にこれが画面とビジネスロジック開発の分業を阻害した要因になっていると思う。(結局は同じ人が画面もビジネスロジックも両方作ってるんじゃない?だから画面依存のコードになってしまって生産性を下げているんだよ。)どうせなら異なる言語で分かれた方がスッキリするし、そうすれば、PHPを知らないJavaの開発者は画面に触れなくなる。逆もまたいえる。こうなってはじめて並行開発は可能になるものだと思う。
JavaとPHPの両方を経験してみて言えることだが、Javaをどうひいき目に見ても、画面開発には向かない。もちろん、Javaにはよいところもあり、PHPより勝る点は多くある。例えば、先ほども述べたが信頼性・クオリティの点は勝ると思う。機能的な点でも、PDF出力などは、Reflex iTextを使えば、XMLから簡単にPDFを作成できるので、納品書や請求書などの出力に利用している。これはこれで便利な機能だ。それに、私は最も初心者向けの言語はJavaであると思っている。
これを含め、Javaの本領発揮する場面は後日述べたいと思う。
0 件のコメント:
コメントを投稿