September 20, 2008
ここ最近、はてブ経由でRubyとかRailsネタをすっかり見なくなってしまった感が。
さわり始めた人が普通に使い始めたからネタがなくなったのか、ちょっといじってみて飽きたのか、どっちなのかが気になる。定着してれば良いんだけどね。
で、こんな話が久しぶりに。
こういうネタがあると注目される点がわかりやすく覚えられたりするので、こういうのも結構楽しいし、何よりはてなっぽいし。
Webにおいてプログラミング言語に求められていることに大した違いがないというのはポイントか。
結局は、Apacheから入力が渡ってきてWebからのリクエストを受け取って、DBとSQLやりとりして、アウトプットを整えてリターンするのに使われる部分ですから、使い勝手と、その辺のセットアップと管理のしやすさと、一番、大事なスケーラビリティが確保できれば最低限OKかなと。
(追記:記述に誤解を有む表現があったのでちょい修正しました。うちも普通にPHPでバッチ処理動かしてますし。全体的には用途はいろいろあると思いますが代表的には上記が中心ということで。)
どこかの言語で作られた優れたライブラリは誰かが移植してくれたりして、便利な世の中です。
ということで、どれ使っても大してビジネスに影響を与えないので、作る側ではなく使う側にとっては、どんぐりの背比べ的に言語仕様とか割と細かいところで争うことになったりしてるから、好きだの嫌いだの、決定的な生産性には寄与しないレベルで、使いやすいだの使いにくいだのという細かいところに差別化要素が集中しているという基本的な構図は無視しちゃいけない。
例えばデザイナーのコダワリがあったとして、僕等から見てFireworksを使おうが、Photoshopを使おうが、Gimpを使おうが、アウトプットとなるデザインが優れていて、画像ファイルがキレイに出力できていれば、どうぞお好きにしてくださいというのと似てる。
ただ、画像ツールはJpegという汎用フォーマットを出力するからOKなのであって、プログラミング言語の場合は、開発した後のメンテナンスがあるから、主役のエンジニアがもっとも生産性高く使える言語にするか、人材確保を重視して、最悪ゼロから育てるときに(確保する人材、年収含めた出自を踏まえて)一番有利な言語はどれだろう?ということで、最適な言語は決まるかなぁと。
もし、どんなに素晴らしいと言われる言語だったとしても、東大生しか使えません、新卒で年収800万円以上くださいという言語だったら流行るわけがない。もちろんその競争力で、遙かに高い売り上げが上がるなら、それを狙う会社は多少は出てきてしかるべきでしょう。まさしくGoogleがそんな感じでしょうし。
結局はビジネスモデルが一番大事だったりする。
こだわり強くして優れた人材を集めてくるためのフィルタリングの方法としてプログラミング言語を使うという話もちらほら聞くけど、あくまで「スペシャリスト利益モデル」のような差別化要素だから、他人が真に受けたらいかんと思う。
逆に今イケてる言語に絞って自社ブランディングするところもあると思いますが、それと同じですね。
個人的には、サーバのスケーラビリティ、事実上の性能面、サーバセットアップのしやすさもろもろ、PHPでなんら問題がないので、今のところ、どうしても短時間で何かやろうと思ったらPHPになっちゃうね。
受託ならイニシャル開発の生産性は重要だけど、サービスは一度作ると、同じ事書かないし、DBのカラムだってほいほいいじらないから、大事なのは一度限りのコードの生産性じゃないのでRailsの優位性ってあまり感じられない。その割に重いとか、そっちのネガティブ要素がまだまだ気になる。あと、一台のサーバで、それなりに負荷を与えるphpとfcgiが共存するのがなんかキツイなーとかね。(mod_railsまでは達してない。メモリ食う云々などはどうなったんだろう)
(追記:あ、PHPってのはCake PHPとかZend Frameworkぐらいは使ってること前提としてます。)
PHPに関しては、ネガティブに言われてることが自分がコントロールできることであればどうでも良い話ですね。そういう指摘を読んで、そうならないように学べば良いし。技術選択上の問題は、性能や仕組み、開発体制の優劣に論点を絞るべきで、それ以外は自分たちの能力の問題ですよね。
ていうか、ネガティブな点がはっきりしてるのが良い。Railsの本当のネガティブってあまり見ないけど、どうなん?とか。バージョンアップしたらどこかしら動かなくなるとか、そういうのはみんな賢いから気にしてないのかなーとか。いきなりこれやって結構ハマったっすよ。
PerlにせよPHPにせよ気に入らない記述法が選択肢の一つにあるからと言って、そこをあげつらっても意味のないことだなぁと思いました(ついやるけど)。
ネガティブキャンペーンのネタには良いですが、気に入らないなら使わなければ良いし、それが勉強の障壁になるなら、まぁそうなんでしょうね、誰か教えてあげられると良いですね。でも大した問題じゃない。
僕は記憶力が悪いのでPHPの関数の9割以上覚えてないので、命令のエレガントさより何より大事なのはphp.netのドキュメントの検索性だったりします。(あと、eclipseプラグイン)
phpのような関数の羅列だからこそ覚えられないってのはありますが、どっちにせよそんなに覚えてないので、まぁ割とどうでも良いことです。
ちなみに、この手の作業が開発環境という面で一番優れているのはVBですね。あれを超えるものは存在しない。とりあえずCreateObjectして、.で入力補完出してみて、どんなメソッドあるのかなーってIDE上でトライアンドエラーで何ができるかを学ぶってのはVB(つかcomか)は最強だったと思う。オブジェクトブラウザとかもね。
てなこと言ってますが、別にPHPにこだわりがあるわけじゃなくて、もちろん言語を使えば方言は吸収して生産性とリスクが変わらず、速度が10倍で、サーバ増設速度が半分で済みますってのなら絶対その言語使う。
理由はコストが安く済むから。
コストは絶対的な価値です。自分たちが頑張って手を動かせば良い範囲であれば、いくらでもそうすれば良いので。もちろん、そこのコストが無駄と判断されない限りですが。
よくパートナーのお客様と連携したキャンペーンなどを行う時に、「(広告費などの)お金は出せないけど、自分たちの作業で済むならいくらでも」って言ってますが、ベンチャーってそういう感じじゃないかなー。
逆に、現状にマッチしないのに、この言語じゃないとダメですってエンジニアがいたら、確実にお願いする側の障壁が高くなるわけで。それマッチングしてないし。
ただ、一点だけ重要なのが、このコストの面でも学習曲線でも、やっぱり日々使って、その言語やコミュニティにコミットしてる人ほど早く吸収できるってのがあって、この辺がねー。
特にベストプラクティスや良いライブラリがどこにあるか?なんてのは、昔ながらに言われていた、「エンジニアたるもの必要な案件にたいして必要な言語を使い分けるべき」に対する参入障壁になってるのが、痛し痒しといったところで。やっぱり日々のコミットは必要だということで、エンジニアとしてのセルフブランディングとしての言語選択は必要だということになっちゃうよね。
これも市場経済の一つと言ったところか。。。例え会社が必要としていなくても、あなた自身には、「利益増殖モデル」を追求する価値があるってことでしょうね!
以上、『ユーザー』としてのWebプログラミング言語のお話でした。