パスワードを忘れた? アカウント作成
1208165 story
PHP

あなたはどのWeb開発プラットフォームを選びますか? 166

ストーリー by hylom
親しみやすい宗教か、信者が多い宗教か 部門より
headless 曰く、

本家/.「Ask Slashdot: Which Web Platform Would You Use?」より。

自分のWebサイトで使用するアクティブコンテンツ(データベース駆動、Webサービス)を初めて開発しようとしている。個人的にはPHPが良いかと思い始めているが、開発プラットフォームは他にも数多くある。また、PHPを馬鹿にする人々もいるようだ。私は/.erが選ぶプラットフォームとその理由に興味を持っている。本格的に開発を始める前に、皆さんのご意見を得るとともに実際的な問題を少しでも多く知っておきたい。PHPを使うべきでない理由は何だろうか。

本家/.では各自おすすめの開発プラットフォームを挙げているほか、「どの宗教が一番良いかを尋ねるようなものだ」という意見もみられる。/.Jerのご意見はいかがだろうか。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 「使うべきでない理由」を欲しがってる時点で、タレコミ人はPHPを使いたくないと思ってるんじゃないか?
    だったら使わないのが幸せだと思うよ。
    • by Anonymous Coward

      そうだなーPHP は empty() とかマジでやばい
      "0" の文字列は true を返すとか、
      empty()は実は関数じゃなくて、関数の戻り値をそのまま渡すとダメとか。
      http://php.net/manual/ja/function.empty.php [php.net]

  • by gonta (11642) on 2012年01月05日 20時33分 (#2076369) 日記

    ターゲットによる?

    Java屋なのでJSP/Servletを推したいんだが、ケータイゲーム?ソーシャルゲーム?をやっているヤツからすると、PHPの方がいい。PHPがいい理由は
    ・初学者教育のレベルが低くてすむ=次が見つけやすい
    ・memcacheやら何やら、で高負荷でも処理する環境/動作実績がそろっている。
    なんだそうで。確かにそれをいわれると、JSP/Servletはちょっと落ちるのかな?とも思ってしまいます。

    --
    -- gonta --
    "May Macintosh be with you"
    • Re:やっぱり (スコア:3, 興味深い)

      by goji (949) on 2012年01月05日 21時29分 (#2076386) ホームページ 日記

      典型的なWebアプリケーションのロジック部分の性能はDBがボトルネックになることがほとんどで、
      Javaの最も有利な点の一つであるVMの底力を発揮する機会が少ないですよね。
      あとは、静的型付けによる生産性とかあるけど、若者は重いIDEよりテキストエディタでサクサク書くのが楽みたいですね。
      後はEJBやStrutsの呪いとかの不幸な歴史もマイナスだな。

      親コメント
      • by Anonymous Coward

        WebアプリとVMの底力の関係について具体的な説明をお願いします。

        • by goji (949) on 2012年01月06日 21時06分 (#2077003) ホームページ 日記

          底力と書いたのは、ベンチマーク的なコードの実行性能の意味。
          Java VMで実装された言語処理系はCなどのバイナリと比べても10倍遅い程度で、処理の種類によってはJITが効いてバイナリを凌駕する事もある。
          PHPあたりだとさらに10倍遅い感じでしょうか。
          だけど、一般的なDBにCRUDを発行するのが主な仕事であるWebアプリではそんな性能はそれほど重要じゃない。

          Javaの性能を活かす分野はウェブサーバだったり、テンプレートエンジンだったり、アプリケーションフレームワークだったり
          エンジン的なものだと思います。

          親コメント
  • Joel曰く (スコア:2, 興味深い)

    by Anonymous Coward on 2012年01月05日 20時50分 (#2076375)

    言語をめぐる論争 - The Joel on Software Translation Project [joelonsoftware.com]

    1. 世界中の人々が、.NET、Java、PHPを使ってひっきりなしにWebアプリケーションを作り続けている。彼らの誰も、テクノロジーの選択の故には失敗していない。
    2. これらの環境は大きく複雑なものであり、あなたの選ぶ環境での開発を本格的にやった経験があるアーキテクトが少なくとも1人必要となる。そうでなければ間違ったやり方をすることになり、ぐちゃぐちゃになって作り直す羽目になるだろう。

    C#、Java、PHP、Pythonの中のどれを選んだらいいのだろう? 本当にある違いというのは、あなたがより良く知っているのがどれかということだ。Javaでいくつもの大きなシステム構築に成功しているJavaのグルがあなたのチームにいるのなら、C#よりもJavaで成功する可能性がずっと高いが、それはJavaがより優れた言語だからではなく(Javaの方が劣るが、その違いは問題になるほど大きなものではない)、彼がより詳しいからなのだ。

    • by Anonymous Coward

      私もこれに近い意見で、今まで使ってきた言語かそれに近いものを使うのが一番マシな気がする。
      「今どきの言語」ってだいたいどれも定番のフレームワークとかがありますよね。
      それぞれのフレームワークの出来に、言語の「慣れ」によるメリットを捨てて乗り換えるほどの生産性の差はあるんですかね?
      全くの未経験者です!とか転職につなげたい!とか言うんならまた別ですけど。

  • by Anonymous Coward on 2012年01月05日 21時36分 (#2076389)

    まあ情報量とか実績からすればPHPなんでしょうけど。
    敷居が低いが故、なんちゃってPGが多いから煙たがられるんでしょう。

    言語仕様的にはPHP5.3以上で作れば問題ないかと。
    問題になるのは知識不足によるセキュリティホール量産とかでしょうか。
    それもフレームワークを前提にすればある程度勝手に解決されるんですが。

    これから覚えるのであればRubyを押しますがね。
    サーバもVPSが安いので自分でインストールすれば済みますし。
    ただredmineをインストールした時に細かいバージョン差異で動いたり動かなかったりでイライラしたのが引っかかります。

    • by Anonymous Coward

      言えてますね。
      プロダクトの行く末は、初期段階における基礎設計の良し悪しに左右されると思いますが、
      その段階で「良い設計」について熟知している人間が居ないと、致命的な選択ミスを犯す危険性が高くなる。

    • by Anonymous Coward

      「使ってみる」程度で適正に評価できるとは思えないけどなあ。
      「ほげ」言語のパラドックスの呪縛で「なんだか意味のわからない機能がついてる」で終わるとかありがち

    • by Anonymous Coward

      使ってみた結果、これだけはハッキリ言えるが、言語としてのPHPはクソ。
      豊富なライブラリも含めると、でっかい糞。
      そこに初級へたっぴ開発者もあわせると、相乗効果で巨大糞スパゲッティコードのできあがり。

      仕事で初心者にPHPを書かせるんなら、最後まで自分の尻ぬぐいもやらせろよな。
      それができないからって人に泣きつくんじゃねえ。
      自分の書いたコードの尻ぬぐいをやれるようになって、ようやく犯人前だ。
      できねえ奴はプログラマー失格だ。

  • by hatenage (45165) on 2012年01月05日 21時42分 (#2076394)
    Perlはmod_perlが強力だけどHTML::TemplateとHTML::FillInForm的なのがあれば特に困らないのでRubyとかPHPでもかまわないよ。
  • by Canalian (19238) on 2012年01月05日 22時25分 (#2076405)

    PHP+unixODBC+NVARCHARフィールドという組み合わせで、Unicode処理の不整合で罠に嵌ってしまった。
    フィールドサイズの1/3しか取り出せない(T_T) (書き込みはフルサイズ可能)

    Perl+unixODBC+NVARCHARフィールドでも同じ問題が発生したが、こちらはDBD::ODBCモジュールを改造して
    自前パッケージを作ることで回避できた。

    PHPの場合はPDO内部の処理に該当するので、そこだけ改造してパッケージ化というわけにもいかない。
    現在PHP環境でのこの問題は放置状態。どうしたものやら。

  • by Anonymous Coward on 2012年01月05日 23時31分 (#2076424)

    PHPは生産性、メンテナンス性が悪すぎ。
    PHPでできるWebアプリなら、Python/Ruby使えば良いのに、なぜいまさらPHPという感じだ。

    こういう主張をいうと、大抵PHPのほうが人が集めやすいからと言うんだけど。
    Webアプリ開発の敷居の低さはわかるけど、そんな人材取って、ほんとに役に立つの?
    「PythonやRubyはやったことないけど、PHPなりなんなりをマスターしてるし、たぶん大丈夫ですよ」
    っていってくれる人の方が、PHPできるって触れ込みで来る人よりよっぽど役に立つのだが。

    さくっと検証ページとかページ遷移だけ確認するページとかをPHPで作ることは良くあるけど、
    Symfonyを使うくらいならDjango使った方がよっぽどマシなんだが。

    なお、大規模チームが必要なら静的コンパイル言語を選ぶ。

    • by Anonymous Coward

      おまえな、PhthonやRubyがどれほどのものだってんだ?
      伝統的なHello,WorldをPHPより簡単にかけるようになってから言えよ。
      PHPはな、

      Hello, World

      たったこれだけでHello,Worldなんだよ。分かるか?この気高き1文が。
      便器にしか興味のない掃除のおばちゃんじゃなければ分かるはずだ。

      • gorubyなら

        h

        たったこれだけでHello,Worldなんだよ。分かるか?気高き一文字が。
        …いや、仕事で使わないでくださいorz

        親コメント
      • by Anonymous Coward on 2012年01月06日 0時28分 (#2076454)

        これはもうPHPのdisに加担してるんだか、反発してるんだか判断つきかねます

        親コメント
      • (私は PHP を応援したり、逆に PHP を否定したりするつもりもありませんが)

        このスレッドの投稿者が「PHPは生産性、メンテナンス性が悪すぎ」と言っているのは、おそらく、HelloWorld のような簡単な事例ではなく、おそらく、もっと大規模なシステムを構築する場合について、言っているのかと思いました。

        たとえば、こう考えてはどうでしょうか?csh では 「echo Hello, World.」 で HelloWorldプログラムをかけるのに、Java 言語では「public class HelloWorld {public static void main (String [] args) {System.out.println ("Hello, World")}}」 と、比較にならないぐらい長い、からといって、csh の方が生産性が高く、Java 言語は生産性が低い、とは必ずしも言えないように思えます。HelloWorld に関しては確かに、csh の方が生産性が高いかもしませんが、より大規模なシステムを構築する場合は、Java 言語の方が、生産性が高いかもしれません。(恐らくそうでだと思いますが。)

        もっとも、この例は、ここでの論点をはっきりさせるための極端な例であって、PHP が csh と同程度だとか、Python や Ruby が Java のように高機能だとか、いうつもりではありませんし、私自身の、PHP と Python と Ruby の生産性についての考え方を表すものでもありません。私が言いたいのは、

        • ●このスレッドの最初の投稿者は、HelloWorld よりも規模の大きいシステムを念頭に、生産性・保守性について書いているのではないか。
        • ●また、私の主張として、HelloWorld プログラムでは、実用規模の生産性について考察するのは、難しいのでないか。

        ということです。いかがでしょう?

        親コメント
      • by Anonymous Coward

        そういうとき俺ならHTMLを使うね

    • by Anonymous Coward

      >PHPでできるWebアプリなら、Python/Ruby使えば良いのに、なぜいまさらPHPという感じだ。
      これって「PHP」と「Python/Ruby」を入れ替えても通じるよね。
      結局、言語云々じゃなくてそもそもの要求定義次第だと思うんだけど、違うかな?
      言語有りきのPGM論って結論でないから不毛だよ。

      • by Anonymous Coward

        > これって「PHP」と「Python/Ruby」を入れ替えても通じるよね。
        >結局、言語云々じゃなくてそもそもの要求定義次第だと思うんだけど、違うかな?
        違うよ。

        「PHPを使うのは糞」というのが、プログラマーの共通認識としてあるんだよ。
        その常識を持った上で読めば、逆が無理だって分かるでしょ。

      • by Anonymous Coward

        ああ通じますね、日本語の文法的には。
        ただ、ここは国語の勉強をするところではないのですよ。
        せめて「今更、Python/Ruby」という説明を付け加えてくれませんと。

  • by Anonymous Coward on 2012年01月05日 20時03分 (#2076356)

    C教徒の私としてはC言語をお勧めします。
    理由はC言語だから。宗教だし。

    • by Anonymous Coward on 2012年01月06日 2時18分 (#2076480)

      こんな人は偽教徒です。皆さんご注意ください
       関数の第1引数の名前を_thisにしてしまう。ただし、thisが予約語なのかわからないから"_"をつけてしまう
       大して速くも出来ない癖に__asm__ __volatile__を唱えてしまう
       コンパイラの型付けを信奉し、引数以外の変数を拒み、再帰してしまう
       GoFを2,3ページ読みかじった感じのコードをCで書いてしまう
       Cを高級アセンブラとか抜かす
       templateとvoid*の違いを知っている
       strtok()を使ってしまう

      親コメント
    • by Anonymous Coward

      いくら異教徒とはいえ、自らに苦行を科す姿を見るのはいたたまれない気持ちになりますね。

  • by Anonymous Coward on 2012年01月05日 20時15分 (#2076361)

    個人的にはC#かな。Windowsに依存していまうが、一度覚えると非常に非常に生産性が高い。IISや.net、visual studioなどを無料で使えるあたり、とっつきやすい。

    Javaでも、いいかもしれないが、Windowsベースの方が初心者にはとっつきやすいと思う。

    PHPは、別に悪くはないが、CGIベースの開発がメインで少し古いような気がする。
    新たにWEBの世界に来るのであれば、できるだけ最新技術で勉強を始めた方が良いと思っている。

    • by Anonymous Coward
      最近C#を勉強し始めたんだが、どこが生産性が高いのか理解できない。さらに、.NET Frameworkの使い難さ・貧弱な機能が足を引っ張っているし。
      • by matlay (32743) on 2012年01月06日 13時49分 (#2076736) 日記

        当面の仕事はC#、ただしWebアプリではないんだけど、

        ぐたぐたな構造にしようと思ったらいくらでもできそうなところはまずいと思う。
        partialとかget,setとか。

        個人的には get;set; が一番気持ち悪い。使うけど。
        あれはマクロとして考えればいいのか何なのかよくわからない。

        --
        #存在自体がホラー
        親コメント
      • by Stealth (5277) on 2012年01月06日 15時42分 (#2076835)

        とりあえず Generics と LINQ と Visual Studio の楽さに慣れると果てしなく楽ですよ。
        その上で VB.NET は (最新版でかなり楽になったとはいえ) C# よりもやっぱりちょっと書きづらいところがあります。ラムダ式とか。

        Visual Studio などがある場合、IntelliSense が強烈に働いてくれます。さらに ReShaper、Code Contracts、Pex and Moles 他などを突っ込み始めると、どんどん効率が上がっていって他言語/環境で作業するのが苦痛になっていきますね。

        レガシーコードをテストでカバーしていく作業とか、他言語ではやりたくなくなるくらい楽ですし。

        親コメント
      • by Anonymous Coward

        使いにくいところ、貧弱な機能を具体的にあげてもらえませんか。
        実際に環境を選ぶ時に参考にしたいので。

        • by Anonymous Coward

          勉強し始めの奴に聞くなよ。
          文字通り理解できていないんだよ。

          • by Anonymous Coward
            C#の非常に非常に生産性が高い所、とっつきやすい所も具体的に教えて欲しいな。
            • by Tsann (15931) on 2012年01月06日 10時28分 (#2076582)

              C#というか、IE+IIS+Visual Studioだと、単一のIDEで全部デバッグできる。ブラウザー側のJavaScriptもWebサーバー側のASP.NETも。加えてバックエンドのサービス部分もC#なら。更にSQL Serverも…とMicrosoftは囲い込みしてる。
              これは他にはない生産性の高さと言えないかな?

              親コメント
              • by matlay (32743) on 2012年01月06日 13時39分 (#2076725) 日記

                言えないんじゃないかなあと思う

                1.IE+IIS+SQLServerという縛りがある
                2.IDEが単一である事自体の利点がいまひとつない

                IDE内のそれぞれのデバッグ機能を使うのと、デバッグ対象別にそれぞれのツールを使うのは大して変わらないような気がする

                生産性というと漠然とした言い方になるけど、IDEが単一である事が利点と言えるのは

                1.開発環境がプアで多くのツールを同時に使うのが難しいので単一のアプリですませられる方がよいような気がする。
                  でも、高機能なIDEもそれなりに重くなるような気がするなあ。というよりその場合、テキストエディタ最強になるかな。
                2.開発に使用するツールは購入しなければならないという縛りがあるので、必要なライセンスは少ない方がいい。

                という条件下での優位性になる気がする。

                あと、各層を横断的に同時にデバッグしなければならないとしたら、設計自体を見直した方がいいんじゃないかな

                --
                #存在自体がホラー
                親コメント
            • by Anonymous Coward

              ネットからサンプル拾ってきてつなぎ合わせるだけでアプリが完成だー

              • by Anonymous Coward

                > サンプル拾ってきてつなぎ合わせるだけ

                コピペ・プログラマwww

                c#一票なのですが、.NET Frameworkはc#だと物足りなくて
                使いにくいけど、VBだとやたらとウザくて萎えるのですよ

              • by Anonymous Coward

                VB だと萎えるけど、(物足りなさを解消できて)満足ってこと?

        • by Anonymous Coward

          偏ってるがC++"だけ"の場合と比べるなら、メモリブレークポイントが使えない、vs2008 64bitではマネージドとnativeコードの同時デバッグ実行ができない。個人的には流行りものを何でも取り入れてるC#の節操のなさが嫌い、けどそこが好きだという人もいるかも。

  • by Anonymous Coward on 2012年01月05日 20時17分 (#2076363)

    どのフレームワークを選ぶ(or フレームワークを使わないという選択をする)かも大事な気がするけど。
    Symfony?
    Cake?
    Rails?
    Django?

  • by Anonymous Coward on 2012年01月06日 1時00分 (#2076464)

    PHPは何でもアリな感じが面白いね
    マシン語を直書きしてた頃に比べると時代が変わったなと思うよ
    でもプログラマの範疇のプログラマがPHPを嫌うのは何となく分かる気がする

    • by Anonymous Coward

      そりゃ変数定義必要なしで型宣言もなくて基本的には自動的に変換してくれるからね。
      だからこそPHPには比較演算子として「==」だけではなくて型チェックまでする「===」なんていう比較演算子まである始末。

      ただPHPの連想配列は型宣言が必要ないのでJavaの連想配列に比べてめちゃくちゃ便利。(Javaの連想配列はいまいち使い勝手がよろしくない)

      • by firewheel (31280) on 2012年01月06日 8時38分 (#2076523)

        >PHPの連想配列は
        せめてハッシュテーブルって言ってよ。

        >型宣言が必要ないのでJavaの連想配列に比べてめちゃくちゃ便利。
        は?

        なんかスゲーバカっぽい発言。
        型が無いからPHPコードはバグの温床になってるのに、それが便利って言っちゃうのは
        「自分はバグを大量生産する初心者下手糞プログラマーです」
        と自白してるようなもんですよ。

        親コメント
        • by epgrec (43527) on 2012年01月06日 11時25分 (#2076630)

          便利だからバグの温床にもなるんでしょう。fgetsを皮切りに便利さがバグの温床になった
          例はPHPに限らず枚挙いとまがないですからね。
          PHPでも型を意識したコーディングはできますよね。便利であるという意見表明に対して
          馬鹿であるとか下手なプログラマであると罵声を浴びせるのは如何なもんかなあ?
          大人気ないと言うか。

          もっとも型を意識して安全性に考慮したコーディングをしても
          型変換がアンドキュメンテッドな動きをしたぞとか、PHPのバージョンを換えたら型変換が
          微妙に変わったとか、そういったことは起こりえるかもしれない。ブラックボックス化が進むと
          便利になるがバグの温床にもなると。
          言語の仕様はキツくして、OOPとかで抽象化して便利にするという、良くある方向が
          安全ってことなんでしょうかね。

          親コメント
        • by retardee (44536) on 2012年01月06日 15時35分 (#2076830) 日記

          PHPって知らんけど、連想配列の実装がハッシュテーブルとは限らんのでないの?
          PHPはどうなのか知らんけど、型の無いのと動的型付けなのは違うんでないの?

          親コメント
          • by epgrec (43527) on 2012年01月06日 16時44分 (#2076865)

            一般に型がないと言われる言語はPHPを含めて動的型付けですね。
            PHPは代入時に型が決まって、型変換はルーズな言語だけど
            型を強制するsettype()とか、C言語風のCastで型変換を強制できるので、変数型を意識した
            コードも書けないことはないと。

            静的型付けの言語からやってくると、このルーズな変数型の扱いは最初は気持ち悪いんだけど
            楽だなと思えるようになる。楽に慣れ過ぎると落とし穴にハマるかもしれないので、適当に
            形を意識しつつ書くって感じですか。

            動的型付けの言語の言語がバグの温床だというのは極論すぎると思うけど背景には
            型を意識しないルーズなコードを書くプログラマを量産してるんじゃというのもあるのかも
            しんないですねー。

            親コメント
  • by Anonymous Coward on 2012年01月06日 1時13分 (#2076469)

    ・「~という言語は糞」というヤツに限ってその言語の特性をほとんど理解していない。
    ・「~というフレームワークは糞」というヤツに限ってそのフレームワークの使い方をあまり理解していない。

    PHPの比較演算子を2項しか知らない、Perlのヒアドキュメントを知らない等、
    だた知らないまま批評じみたことをしてご満悦の様子。実に微笑ましい。
    そのくせ指摘すると自分のスタイルに合わないだけなのに、あたかも客観的な
    意見のようにご高説を賜る栄誉を頂ける。実に幸せそうだ。
    libphpを一度ダミーに差し替えたら「何を実行してもphpinfoが出る!」って
    アワ食ってた。実に楽しそうだった。

    # 自分の書いたコードを真っ先に疑え
    # 次にミドルウェアの設定や環境を疑え
    # 他人を疑うのは最後だ

    # でも犯人は俺

typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...