2003-02-27 (木) [長年日記]
■ [Ruby] DP/TemplateMethod
つーわけで、たどたどしくも実装。
# Template
class Language
private
def initialize() end
# to be inherited
protected
def first() end
def second() end
def third() end
# Template Method
public
def count
puts "=== #{self.class} ==="
first;second;third
end
end
# English
class English < Language
def first
puts("ONE")
end
def second
puts("TWO")
end
def third
puts("THREE")
end
end
# Japanese
class Japanese < Language
def first
puts("いーち")
end
def second
puts("にーい")
end
def third
puts("さーん")
end
end
# Client
eng = English.new
eng.count
ja = Japanese.new
ja.count
ええとですね、言語っていうクラスがありまして、そいつを継承している「英語クラス」「日本語クラス」がありまして、そいつらに「数を数えろや!」って言ったら、「1、2、3の順番で」数を数えます。
合ってるかどうかよく分からん。以下の点も不明やし。
- Languageクラスをどうやったら抽象化できるんかな
- オーバーライド不可(Javaでいうfinal)ってのはあるのかな
- Clientの動作はコレでいいのかしらん
- initialize()はデフォでprivateだったという罠
- だからLanguageのprivateは意味ナシ
- クラス別にファイルを分割したら、"uninitialized constant" というエラーが。これなんだろか。
整理してからwikiに移そう。
■ 動的言語と静的言語(2)
たださんからのツッコミですが、『Rubyアプリケーションプログラミング』に、まつもとさんのコラムとして載っていました(p.479)。
これによると、
「動的」とは「プログラムの実行時に決まる」という意味で、「静的」とはその逆、つまり「プログラムを実行しなくても、そのプログラムを見るだけで決定できる」という意味です。
とあります。
これだけではちょっとよく分からなかったんですが、静的言語のJavaも明示的なキャストをする局面が多くあるという記述を読んで、なんとなぁ〜く分かりました。
■ オーディオBlogとMoblogが普及のきざし
今週のTVブロスに割と面白い記事が載っていて、それは、blog界隈には「一次ソースってのが少ないよね」というものでした。「あのサイトおもしろいぜー」つってぐるぐる廻るだけで、けっこう「狭い」と。その点、実際にやってみることでちゃーんと一次ソースになってるデイリーポータル Zは面白いよねーつってるんだけど、たしかにね。あれは面白いですよねー。
ただ、一次ソース「だから」面白いなんてこたぁーないってことに気をつけておかないといかんよね。例えば上記のオーディオBlogなんて、んー、どうなんだろ。たしかに一次ソースだが、んなもんおもしろいか? 中にはおもしろいものもあるかもしれんが、おそらく大部分はおもしろくないだろ?
tDiaryを使ってればよく分かるんだが、一次ソースうんぬんよりも、ツッコミツッコマレってのが重要なんじゃないかなあ? 日記コミュニケーションを加速するって、ほんとウマいこと言ってると思います。そこに「オモシロさ」があるような?気がするYO。
■ 日経テレコン21、機能・デザイン刷新
メモです。
■ [Java] Jakarta Commons - Components via textfile.org
Javarなひとたちは口をそろえて「Commonsいいよ!」とか言ってますよね。時間をみて見てみようっと。
■ [ゲーム] 怪盗スライ・クーパーの広告
おもしろいっすね。こういうのって、楽しいね。オヤジビジネスを超越した企業間の融合にこそ、勝機がありですよ。きっと。どうですか。コンサルタントさん。
■ [Ruby] DP/FactryMethod
家に帰ってから結城さんの本を読もう。でもとりあえず。
# Product
class Book
def getName
return self.class
end
end
# ConcretePrduct
class EnglishBook < Book
end
# Creater
class Language
def create
return prepare
end
protected
def prepare() end
end
# ConcreteCreater
class English < Language
def prepare
EnglishBook.new
end
end
# Client
lang = English.new
book = lang.create
puts book.getName
えとですね、TemplateMethodの続きみたいにしてて、英語クラスを作ったら、そいつに「作れ」って投げると、英語本が返ってくるという感じです。細かいところで間違い多いと思われ。
で、今日気づいたのは、Clientの動作の部分。昨日は、英語クラスが返ってくるから「eng」なんていう変数を用意していたんだけど、そうじゃあなくて、「lang」って変数名にすると、なんかこう、抽象的でよくね?
同様に「eng_book」じゃなくて「book」に。これで親クラスが無いよぉー!つって泣かなくて済みそう。
■ [本] 個人と組織のナレッジイノベーション
会社に置いてある販促品なんですが、午前中に時間があったのでパラパラと。で、読んでみてビックリ。けっこう良い。これ。でも、薄いし(物理的に)、2001年発行なんでちょっと古いし、値段も高いのよね。たぶん自分では買わないと思う。
以下、メモ
- SECI理論:よく企業が間違えるのは、いきなりCに飛んじゃうのよね。
- MSはBSCを導入している
- HPのガレージのルールはかなり良い:荻窪のHPに行った時、壁に貼ってあったよ。
- 機能分化よりもプロセス(もしくはプロジェクト)分化:ナレッジはプロセスに宿るんだって。これって、手続き型からオブジェクト指向へっていうのと似ている気がする。
■ 略語
前の部署では、マーケティング担当のことを「MKT」と略していたんだけど、ここでは「MRK」と略されている。ここの略のほうが正しいと思う。
■ Amazonのオススメ機能はエピファニーという会社の製品
マジっすか。製品なんすか。あれ。スッゲエなあ。

「動的」と「静的」の違いの説明がとても分かりやすかったので、引用・リンクさせていただきました。http://programmer.exblog.jp/816461/