Microsoft

最近、自分の中ではMicrosoftがかなり好印象に変わってきた。Windows MeとOffice XPが出たころは最悪で、WindowsXPには大きな期待と失望を感じた。この変化は4年間新しいOSを出さなかった勇気によるのかもしれない。でも、僕はすでにWindows2003やOffice2003の時点で、Microsoftは改心したんだと信じていた。そして、せっかく待ち望んだその成果が今リリースされたというのに、身の回りの人がOffice最悪だからOfficeクローンのどれかにしようだとか、Linuxにしようだとかごねてる。会社でOffice2007を使える日は来そうにない。まぁ、僕は業務じゃないからそんなにOffice使わないからいいけど。でもOfficeを使えないのに代替ソフトに変えたらより難しくなると思うんだけど。

素人プログラマの不安

うちの会社に元プログラマの人だけど、「オブジェクト指向ぎらい」を自称する人がいる。オブジェクト指向って物事を自然に表現するための工夫だからそんなに毛嫌いする事もないと思うんだけど。
ただ、大学で専門的にオブジェクト指向について勉強したわけではなく、なんとなく先輩の見よう見まねでやっている自分としては、よく不安になることがある。
これがクラスと呼べるのか?もっと別な枠組みでクラス設計すべきだったんじゃないのか?これくらいならクラスにする程のことはないだろう、だけど、後から後悔しないかな?など、不安は尽きない。素人がプログラマなんてなるもんじゃないなぁ。などと思ったりすることもある。そして本を読みあさる。
しかし、2年たって振り返ってみて、一番成果が上がったときというのは、ただひたすら同じアプリケーションのコードに取り組んでいるときだった。ちなみに一番進まないのは、もっと綺麗に書けるはずだと、えらい人のサンプルはないかネットで探してるとき。
うちは3人しかプログラマがいないので、たいていアプリケーションは一人でつくる。人に引き継ぐコードを書こうと思う場合は、いろんな事例を参考にすべきだと思うけれど、今作ってるやつはすでに人に見せられるような状態じゃない。すでに稼動しているので、思い切った変更ができず、初期にどうしようもない作りこみをしてしまった部分はもはやどうしようもなくなっている。別の仕事が割り込んで2週間コードを見なければ、もう一度見たときに確実に頭が混乱する。それでも2,3日コードを追っていると何とか頭の中にマップが描かれてくるようで、何をするにはどこを見ればよいか、ここのコードを変更した場合、どれだけの深さの影響があるのかが、イメージできるようになる。それまでがものすごくストレスなわけだけれど、何とかはなる。

こんな記事を見つけた。

オブジェクト指向のススメ
http://blogs.itmedia.co.jp/tamaki/2006/06/post_57ab.html
開発のスキルをUPさせるためには、とにかく、コードを書くこと。寝ても覚めてもコードを書くことです。そうしているうちに、いつの間にか、オブジェクト指向も身に着く(というか、その本質が何かに気づく)でしょう。

まさにその通りだと思う。とかく、不安になると知識に走る私を正しくプログラマに導いてくれた、現場25年の上司に感謝。
けど、Rubyのコミュニティを傍観していると、いつかRubyの開発者の1人になりたい、美しいコードを追求したいという願望もでてくる。きっと現場バリバリのプログラマではRubyを生み出すことは出来なかっただろうとか、もともと学者にあこがれていたものとしてはそうはなりたくないなぁなんて思ったり。
そういうのは、人間として未熟だからだという声が聞こえてくる気がする。

私はプログラマーですと言うのはまだ自信ない。

これがエンジニアのデフォルトだ!?<診断ツール付>/Tech総研
http://rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=001010

はてなキーワード プログラマーとは
http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DE%A1%BC
これを見て、自分の年収と労働時間から時間給を計算してみると750円だった。
まぁ、土日休みだから死にはしないけど。

こっちはもっと本質的な内容だと思う。
デスマーチ
http://iwatam-server.dyndns.org/software/devintro/deathmarch/deathmarch/index.html

これに限らずこの人の文章は参考になるなぁ。
http://iwatam-server.dyndns.org/software/

これらを見るとプログラマーの敷居は相当高い気がするけど、知らなければソフト開発なら何でも出来るような気がして安易にプログラマーを選んでしまうってのは結構あるんじゃなかろうか。時間の制約を考えると何でも出来るわけではないし、膨大な最新の知識を集めてちょっと優越感に浸ったところで、何らかの基盤のユーザーに過ぎなくて、オリジナリティとしては学者に劣る。

だれもそんなこと思ってないよといわれるかもしれないけれど、なる前はプログラマーが高尚な職業だというイメージを持っていた。そのイメージは打ち砕かれたけど、それでもいつか今の職業に誇りを持てるようになるだろうか。

「ActiveRecordデザインパターンのTclによる実装」

誰か作ってくれないかな。
こういう記事って一番じれったいですな。UMAを追えシリーズやピラミッドのなぞの特番みたいだ。
しかし、なにやらそういう動きがないわけでもないらしい。
http://openacs.org/forums/message-view?message_id=182169

ここにも。
http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/34141db42c10dd9b/5301351475ee8340?lnk=gst&q=tcl+activerecord&rnum=2#5301351475ee8340

Ruby on Railsが誕生したのが2004年7月で、Version 1.0のリリースが2005年12月。この話題が盛り上がっていたのが、2005年後半。Rails-1.0リリース以降は何の手がかりもないようだけど、この間、みんなRailsに流れていってしまったんだろうか。もしくは水面下で何かやってるのだろうか。

Rails使ってると実感するけど、途方もないノウハウの蓄積が惜しげもなく使われている。たとえActiveRecordのTcl版ができたとしても、Webアプリケーションの領域では当面は勝負になりませんな。

何でActiveRecordが欲しいかというと、Tcl/Tkの普通のアプリケーションでSQLite3を使いたいからだ。いろいろ調べてみたところ、SQLiteはTclハッカーが作ったらしいけど、国内唯一のSQLite本であるamazon:SQLite入門PHPJavaASPPerl, Rubyに対応しているにもかかわらずTclに対応してない。何でこんなに仲間はずれなの、Tcl。

データ型の抽象表現

マイグレーションを使うとデータベース固有のデータ型に依存しない表現でスキーマの定義ができる。MySQLであれば、実際にはこんな定義になる。

抽象表記 Ruby MySQL
:primary_key Fixnum int(11) DEFAULT NULL auto_increment PRIMARY KEY
:string String varchar(255)
:text String text
:integer Fixnum int(11)
:float Float float
:datetime Time datetime
:timestamp Time datetime
:time Time datetime
:date Date date
:binary String blob
:boolean Object tinyint(1)

MySQLではtimestamp型のカラムは、形式はdatetimeと同じだけど、レコードを新規作成した時間が自動的に挿入される特殊な型になっている。Railsではこの機能が他のデータベースでも使えるように、あえてMySQL依存の機能を排除して、自前でその機能を実現している。具体的にはカラム名をcreated_atにするとそうなる。カラム名には他にもRails予約語があって、マジックカラムなどと呼ばれてるようだ。では:timestampとするとどうなるかというと、実際にはdatetimeが定義される。
上の表のような変換は、native_database_typesというメソッドで定義されているのだが、
http://api.rubyonrails.org/を見ても出てこない(なぜか# :nodoc:になっているため)。

C:\ruby\lib\ruby\gems\1.8\gems\activerecord-1.15.1\lib\active_record\connection_adapters
の各種データベースの名前がついたソースファイルの中に定義されているので、
「def native_database_types」でgrepかけると全部見れる。

書初め

最近Railsで社内掲示板みたいなものを作った。
自分はMixiを数ヶ月に一回更新するくらいで、ブログというものを書いたことがない。
世の中では日記やらブログやらを毎日のように更新している人たちがいる。
そんなに書くのは楽しいのか?
紙の日記は三日で飽きたし、会社から支給された1万円以上するフランクリン・コヴィーの一年分見開きデイリーリフィルはたぶん10ページくらいしか使わなかった。書くのめんどくさい。
しかし、そんなに楽しいものなら、その楽しさを味わうことが出来たらすごく暇つぶしになるに違いない。
一週間のほとんどを仕事に費やしているので、興味があるのはプログラミング関係の話題だ。Mixiで書くには硬すぎる気がするし、Railsとかの人が結構使ってそうなはてなだったら自分にも書けるかもしれん。

何かいろいろ機能があるようだけど、めんどくさいからとりあえず文字だけ書こう。