検索の話題ではないが、Webのテクノロジ関連なので開発言語について書こうと思う。c|netに次の記事が出ており、楽天のシステムについて簡単に触れている。「要は使い方次第」:楽天、PHPを語る
巨大オンラインショッピングモールとして知られる楽天では、サイト構築にあたって多数の言語やDBMS、OSを使用している。1997年の創業時からトライアル&エラーを重ねつつ徐々にサイトを拡大していったことや、数多くの企業買収を重ね、買収した企業が使っていたものをそのまま使用していることなどがその多彩なシステムの背景としてあるわけだが、その中にはPHPやMySQLなどオープンソースのものも含まれている。複数の会社を買収した場合には、確かに元々その会社が使っていたアーキテクチャを引き継ぐ形となるのはやむを得ない。 買収に伴うアーキテクチャ移行はやったとしても非常に時間と人とお金がかかる。最悪、サービスを一時停止しなければならないかもしれない。しかし、移行しないと複数アーキテクチャを運用しないといけなくなり逆に運用費が高くつく。ようはトレードオフの関係になっている。 エキサイトは幸いにも他の会社を買収したことがない。逆に親会社のExcite@Homeがつぶれたときには、実質的に伊藤忠商事に買収はされたが、伊藤忠は商社なのでアーキテクチャ的には全く変更はなかった:) やはりJavaだろう PHPは色々なサイトで使われている優れた言語である。非常に迅速に簡単にアプリケーションの開発が出来る。必要なものはなんでもそろっている。しかし、適用できるのはやはり小規模なサービスに限定されるだろうと考える。 PHPではやろうと思えばスクリプト中でなんでも出来るため、他の人が引き継げなくなる恐れが大きい。また、1人~3人程度で開発している分には良いのだが、複数人数での開発は厳しい。へたをすると、ロジックとプレゼンテーションを切り分けるという大原則さえ簡単に破られる。(そんなこと気にしたことない人は、これを機会に考えてください。)小規模で十分シンプルなサービスなら適用できるというのが私の考えだ。 しかし、アプリケーションが複雑になり、開発者数が多くなり、メンテナンスが頻繁に必要なサービスの場合には、やはりPHPで書かない方が良いと思う。 同様のことがPerlにも言える。私は個人的にPerlは大好きなのだが(正確に言うと「だったのだが」)、何でも出来る便利さゆえ他の人が見ると全く分からないプログラムになる。他の人の中に半年後の自分も含まれるから困ったものだ。 開発期間とメンテナンス期間を比べた場合、圧倒的にメンテが長いわけだから、明らかにメンテナンス性に優れた言語を採用するべきだというのが私の意見だ。 それには出来るだけ制約が多いほうが良い。制約というと語弊があるかもしれないが、誰が書いてもほぼ似たようなプログラムになるものほど、メンテナンスが楽になるのだと思う。 そういう意味で言えば、Javaで書くのが一番よろしいと個人的に考えている。基本的な機能は全て言語側でサポートしているため、APIとにらめっこしていると少ない行数で動くアプリケーションが出来上がる。また、C/C++のような自由度、不明度がない。Javaで書く分には個人差はあまり発生してこないと思う。イコール、メンテが楽、引継ぎが楽、ということになると思う。 メンテナンスフィーは無視できない ポータルなどは本当にたくさんのサービスがあるので、サービスごとに違うアーキテクチャを採用しようと思えば出来る。しかしそれをやってしまうと「統一してよ」と運用部門(Operation)が怒るのは目に見えている。 また、サーバーを買うからには同じアーキテクチャでそろえた方が、余分な作業なしに使いまわしが出来たりして、足りない部分に簡単に振り分けられるので資源の有効活用が出来る。エキサイトのようにハードウェア投資にシビアな会社は、こっちはPHPで書いたので別のサーバーを買うなんてことはしない。 出来るだけ同じアーキテクチャで統一し、どのプログラムがどのサーバーでも動くようにしておいた方が、冗長性があるというものだ。これはハードウェア購入だけでなく、ラックスペースに払う金額もセーブできる。 大規模システムの運用はスケーラブル性、メンテナンス性、コスト、冗長性、パフォーマンス、などがキーになる。 エンジニアというのは、新しいものを試したがる性癖があり、またそのような遊び心が非常に重要なので、色々なアーキテクチャで作ってみるのは構わないが、最後はやはりビジネスとして最適かどうかという尺度で判断するべきである。 -inoue
はじめまして、dev です。
用途に応じて、というのはさておき。
PHPって一応クラスとか使えるんですけども、やはりきちんとしたOOPやるには言語仕様として向いてない部分が多々あるかと思います。
例えば、型チェックがないという側面。
デリゲートととかって型チェックがあることを前提にしたものかと自分では思っているのですが、これがないのはどうかな?と思います。
それから実際問題、クラスまで理解した技術者自体がそんなにいないのも問題かと思います。
ちょろっと書ける人なら沢山いるんですけどね。
メンテナンス性の高低は
「その言語を知っている技術者をどれだけ容易に確保することが出来るか?」
ということもあるのではないでしょうか。
投稿情報: dev | 2004/01/06 13:25
私の上記のコメントから2週間経っても連絡・コメントがないので、「名無しさん」のコメントを削除させていただきました。
他の皆さんは是非自分の意見を自分の名前で述べて下さい!そのような場にして行きたいと思いますので、よろしくお願いします。
-inoue
投稿情報: inoue | 2004/01/05 15:12
>JAVAマンセーな人って
>棲み分けができないのか?
>押し付けは止めれ!!
自分の意見を述べているだけで、全く押し付けておりません。
PHPは小規模向きで良いと思います。実際によく使っています。Perlも非常に良く使います。ケースによって制約条件が変わりますので、判断すればよいと思います。
また、意見を述べるときには今後、必ず名乗ってください。
自分の名前で意見をいえない方のコメントは削除させていただきます。
-inoue
投稿情報: inoue | 2003/12/22 08:37
typepadにお願いして、UTF-8以外のtrackbackも正常に処理できるようにしてもらいました。SJISは試したらきちんと動きました。EUCは試していないので、どなたかEUCの方trackbackしてみていただけませんか?
BTW, typepadのカスタマーサポートの対応は非常に良いです。同じコンシューマーサービスをしている会社として見習うべきものを持っていると思います。
-inoue
投稿情報: inoue | 2003/11/17 11:03
お初に。古と申します。
なんとなく面白そうで興味のあるネタなので、コメントなんぞを。
「ロジックとプレゼンテーションを切り分けるという大原則さえ簡単に破られる」
とありますが…。私が多くの現場を見ている限りでは、
・JSPの場合にはやはりよく破られている(Javaとあるのが、サーブレットなのかJSPなのかがもう一つ不明だったので)
・というか、どんな言語を使ってもその原則は破られている(というより認識すらされていないことが多い)
というのが、悲しい現状です。一応、ある程度大手(日本人なら誰でも名前を知ってるよねぇ、程度)から中小零細まで、いろいろお仕事で見ているのですが。
この辺の現状から思うに、とりあえずまず「プログラマのお仕事とデザイナのお仕事をきちんと切り分けられるようにしたいねぇ」という話の浸透が先なのかなぁ、とか考えてしまいます。はい。
個人的に、PHPは確かに「ロジックとプレゼンテーションを切り分けるという大原則さえ簡単に破られる」という危惧が非常に大きな言語であるとは思っているのですが。
他の言語でも十分に危険なのではないかなぁ、とか思ってみたり。
結局のところ、言語以上に重要なのは「プログラム規約と設計」なんだと思います。
ちなみに個人的には、C++が一番楽ですねぇ。CGI組むのには。とはいっても、STDとClassがある程度で、あとはほとんどCのような組み方をしてますが(そういう意味では「better C」として使ってる程度ですね :-P)。
Javaは…言語的には嫌いではないのですが、「便利なクラスの裏では大変にヘビーな処理が行われている」事を認識していない初心者を相手にして、ちとトラウマが残ってます(^^;
投稿情報: ふる | 2003/11/17 10:47
はじめまして ぷーえいちぷー と申します。
>ロジックとプレゼンテーションを切り分けるという大原則さえ簡単に破られる。
とありますが、PHPでもMVC型フレームワークを使う事で、
メンテナンス性の低下も防ぐ事ができ、複数人数での開発も問題なく行う事が出来るでしょう。
JavaでいうVelocityの様なテンプレートもPHPでいくつか公開されていて
開発者、デザイナーの開発作業の切り分けも可能です。
フレームワークといってもまだ主要な物は出てきていませんが、
いくつか公開されていてPHPでのMVCのやり方等ほぼ固まってきています。
PHPはクラス等あるのでオブジェクト指向的な作り方が出来ます。
やり方次第でJavaと変わらないくらいメンテナンス性を確保する事が出来ます。
ただバージョンアップで言語仕様が大きく変わるのはどうかと思うが・・・^^;
まだまだ、これからの言語、熟成されていくと言う事で良しとしよう。
まぁ現状でも十分使える言語ですよ。
投稿情報: ぷーっえいちっぷーっ | 2003/11/15 21:07
naoyaさんからtrackbackを頂きましたが、文字化けしているので削除させていただきました。
typepadにはUTF-8以外のtrackbackもきちんと受け付けるように依頼しておきます。
-inoue
投稿情報: inoue | 2003/11/14 13:25