2005-03-02(Wed) [長年日記]
■1 「車輪の再実装は善」
arton師父特派員*1によるお言葉。関連して、mixiにて「jakarta-commonsはエロ画像を拾ってくるのと変わらん」と喝破。カッコいい。commonsがエロ画像であるならば、Mavenをわーいわーいと言いながら使っている私はさしずめダウソ厨。
補足
コンテキストを漂泊して部分だけ抜粋するのはよくないと思うので、元の発言をコピペ:
僕は、jakarta-commonsとか拾ってくるやつは余り信用していない(っていうかいるわけだが)。その程度のコンポーネントは作るべきだ。探して拾って使い方調べる手間は、それほど役に立つ経験にならんが(極論すればエロ画像を拾ってくるのと変わらん)、自分でこさえれば確実に経験値として蓄積される。
とは言え、いきなりStrutsの規模のものを作り始めたら怒ると思うが。ようは規模感と工数は意識しなければならんわけで。
すぐにmaven.ozacc.comで検索してdependencyに追加しちゃう私ではあるが、志はかくありたいもの。「書こうとする間にソース(とテストコード)読んで使っちゃえ派」からいつまでたっても脱却できませんが。ヘタレだなあ。
まあ、ヘタレはヘタレなりに、インターネットを使って自分の力をいくらかでもレバレッジしている、ということで。commonsも然り、kakutani.comも然り。
*1 使用禁止令が出たので「特派員」にしてみる。けど、日経ITProの連載の続きはまだなのかなー
■2 Dependency Injection が"(スコア-1:フレームのもと)"なのは、
オブジェクト指向の基本技術だからであり、「オブジェクト指向」がいまだに(スコア-1:フレームのもと)だからなのだろう。totoさんの興味深い疑問に私が咳さんに代わってお答え!……しようと思ったのだけれど、力及ばず。
マーキテクチャ的な話も絡んでくると、いまの私には文章で巧く説明できない。いずれ、もっとスマートで頭の良いひとがちゃんとした文書を書いてくれることに期待。
それはそれとして、自分じしんでも思考と実践は重ねていくつもりだし、まとまった考えができれば何かは書くつもり。自分で「つもりつもり」と書いていることはきちんとやれた例がないけど。
DIが要らない言語っていう話なら、グローバル変数っていうみんなで使える場があって、変数の型によらず名前でメソッドが呼び出せる言語だと、Javaほど必要性は高くないですよ。
きしださん><br>う〜ん,DIの意義を根本的に取り違えています。グローバルなオブジェクトを楽に取得したいのじゃなくて,オブジェクト間の依存関係をソースコードから独立させて取替え可能にする。依存するオブジェクトの取得をできる限りソースコードから取り除くというのが味噌なのです。<br><br>私はおっしゃる特性を備えた言語であるPerlでずっとシステムを開発していましたけど,DIの意義はすぐに分かりましたよ。グローバル変数とかmod_perlで安易に使うと死にます。もうこれで体壊したようなものなので。
そうか、そう抜き出しちゃうとcommonsまるまる全部みたく見えるな。個々の細かいやつということね。
マーキテクチャって、typoじゃなくて、marketing + architecture で合ってる?
たしかにそうなんですが、前段階としてグローバルなオブジェクトが取得しやすいというのはあると思います。<br>型に頼らない言語の場合は、Javaほど依存性も高くならず。<br>DIのありがたみを感じ始めるタイミングが遅れるということです。<br>mod_perlの場合は「グローバル変数というみんなで使える場」がないと言えるわけで。
あまり建築に例えたくないんだけど、再利用しようとしてるのは様々な建材や、その利用方法じゃないかな。<br><br>B2Cアプリとかは、不特定多数の人が使うような建築でいうとビルだと思うんですよ。ビル建てるのにいちいちその材料を自作するというのはコストもかかるし、その部品に対する品質とかどうするよ?って話があると思います。<br>ビル作る人はセキュリティに関しては綜警とかに任せちゃったりしますよね?そういう部分とかを自分たちで何とか仕様とすること自体が傲慢のような気もしています。(なんか話し逸れた・・・
DI未経験のくせに「DIってDelphiのFormファイルだよね」と言い切った漏れは馬鹿です(^^;。<br>//優秀な軽量言語はしばしば設定ファイルとしても秀逸(例:GroovyMarkup)で、<br>下手(?)したらScriptのほうがXMLより快適なので、<br>Java+設定ファイル(XML)でDIするよりもScript+ScriptでDIするほうが快適であり、<br>そこまでやっちゃうと、それって単に同一言語内でサブルーチンやObject作成手順を別ファイルに分割するのと何処が違うんだ?<br>と突っ込まれそうな気がしています(^^;。<br>相変わらず未経験なので山勘ですが、「ダイコン要らねぇ言語」ってのはそういうことでしょうか?