tohokuaikiのチラシの裏

技術的ネタとか。

[*]言語とかフレームワークとかエディタとか、どういう環境で何を作らなければいけないかに依存するだろう。だから、そこの話から始めよう。

私は、PHPフレームワークEthna一辺倒なのですが。
2008-05-01 - kunitの日記

んで、「お前らどういう理由でフレームワークを選んでるんだ!」ということももうそろそろ真剣に語ってもいいかなぁと。
...zip...
もうそろそろフレームワークは開発方法論とセットで語らえるべきかと思いますよ。(Mapleは当初からそういってたんですがね・・・私の努力不足でそこまでたどり着けませんでしたよ。すみません・・・)

開発方法論というより、その手前に案件が何か?っていうのがあるべきで。

  • どういうレベルの大きさのWebサイトで
  • 予算と納期がどれくらいあって
  • 何を到達目標とするか(要件定義)
  • その後のメンテナンスはどうするのか?

というのが決まっていないと開発方法として何を採用するのかが見えない。このあたりって、勉強会出てたりしていまいちなところでもある。結局「何をどういう条件で作っているか」が全然わからないから何でそんなものが必要になってくるかがいまいち。まぁ、勉強会で実案件の話を言うわけにはいかないからそりゃそうなんだけどさ。

ただ、開発方法として何をとるのかは、まさにそれ(=案件)に依存するのに。


私なんかは(会社にしてるけど)2人でやってるというのもあって、その後のメンテナンスとかはスポット対応になりがちだし、相手も「じゃああと5年やってね」という感じではまず見ない*1

もちろん、レベニューシェアなんて形態ではまず請けられないし、要請もされない。


弊社で請けるのは、

  • とにかく短期で
  • だけど、要件はギリギリまで変わるかもしれないよ
  • デザインがメインでプログラムはそれを補助する程度
  • でも、変更があったらすぐに対応してね
  • だから、サーバはレンタルで月額3000円とかまででお願い

って案件が多い。


その中では、結局プログラムも1人、デザインも1人でこなす。こんなの分担してたら余計手間だし、取り分も減る。



私は複数人で開発とかほとんどしたことないけど、

  • それって本当に複数人必要なのか?
  • 全員エディタはVimじゃないと、あるいはSDKじゃないとダメなのか?
  • その後のメンテナンス性のためとか言って、本当に初期導入のコストをまかなえるだけのメンテナンス性を維持できているのか?

とか思うわけです。
前、派遣やってたときもえらい長大なプログラム見てたけど、結局「明日までにここ直して」って動けばいいって感じでエディタが〜〜とかライブラリのコメントが〜〜とか全然教えられなかったしな。


で、思うのは、プログラマ1人・デザイナ1人程度の案件(要するに2人月)ではやっぱり慣れてるのを使えばいいんじゃないかっていうことです。その後のこととかあまり考えないでよろしい。Rubyで書きたければRubyで書いてもいいし。


複数人のこととか全然良くわからないんだけど、私が参加しているXOOPSCubeの開発者(本職はゲームのミドルウェアプログラマ)であるminahitoさんのブログ
sunday-lab 日本語版: The future plan of XOOPS Cube (3)
ですごい示唆深いというか、「へぇ」ということが書かれてた。ちょっと長いけど引用

私は、言語の違いはハードウェアの違いより差が小さいと考えている……とくにウェブアプリケーション開発はそうだ。我々がウェブアプリケーション開発のために使うことができる主要な言語は、 C#JavaPerlPHPPythonRuby 、及び、 VB がある。しかし、これらの言語は、大きな差異を持っていない。なぜなら、ウェブアプリケーションは、ウェブブラウザ上で動くからだ。どのような言語を選択しようとも、ウェブブラウザができないことは、我々にもできない。

たとえば、 PHP では AJAX が使えず、 Ruby では MySQL に接続できないといった実現機能上の明確な違いがあれば、私の考えはこれと異なるだろう。しかし、事実として、すべての言語はウェブアプケーションが提供する仕様にとって平等である。

ま、minahitoさんがこう言うのは、

あなたが経験したものは、あなたがどのようなプログラミング言語を使うことができるかより重要である。私は、前のエントリにおいてそれを書いた。

という考えがベースになっているというのもある。要するにもともとの能力のベースが私より5段階くらい上なので、あんまり参考にならないという気もする・・・・。



更に引用

言語にこだわる必要がないから、今は PHP 環境に固執するのである。そして言語にこだわる必要がないから、将来 PHP 環境に固執しないのである。
繰り返すが、ブラウザができることが我々にできることである。もし Ruby でプログラムすればブラウザ上でプログラマブルシェーダが動くというのであれば、私はいますぐ Ruby に移るだろう。しかし、ブラウザにできないことは我々にできない。私達のプログラムはテキストをブラウザに送信しているだけに過ぎない。それだけである。だから、よりポピュラーな環境を選択するのである。

日本のウェブアプリケーション開発における言語論争からも、その証拠を見つけることができる。言語間に実現機能に関する違いがないため、言語論争は、「プログラミング言語論争の最終段階」からいきなり始まり、各言語を用いるプログラマの人格や人間性を主題とする。例えば、(以下略)

まさに、至言であると思う。

Rubyが、Perlが、Vimが、Emacsが、Frameworkが・・・・というのではなく、「いま、そこにあるものを、居る人が、使えるもの(モノ・者)を使って作ればいいじゃん」というそれだけのコト。

オレはPHP使ってるからRubyの仕事はできないんだよ・・・じゃなくて、「じゃあ、Rubyの仕事が来たらRubyを覚えます。やってることは、Webアプリケーションですよね。デバイスドライバ書いてるわけじゃないですよね」ってこと。


じゃあ、お前は世間にあまたある、エディタの使い方からプロジェクトの進行管理から含んだ開発手法を否定するのかっていうと、そうではなく、その前に作るべきものが、なさなければならないことがあるでしょうという簡単な主張。それをなすために、言語やエディタやFrameworkにとらわれるのはおかしいと思う。

理想論であることはわかっているのだけど、そういう心持は持ちたいなと。

アムロ...『本当の敵はザビ家では無いのか!』

*1:とはいえ、最近は長期スパンの仕事もちらちらと入るようになって来たのだけど