カテゴリ別表示

全体

最近の日記

年末
6時〜6時
蕎麦
大盛況
代休

最近のレス

Fine (9/29)
なおき (9/29)
Fine (9/29)
なおき (9/21)
かい (9/21)

日記アーカイブ

2008年
1 2 3 4 5 6 9 10 11
2007年
1 2 3 4 5 6 7 8 9 10 11 12
2006年
1 2 3 4 5 6 7 8 9 10 11 12
2005年
1 2 3 4 5 6 7 8 9 10 11 12
2004年
1 2 3 4 5 6 7 8 9 10 11 12
2003年
1 2 3 4 5 6 7 8 9 10 11 12
2002年
1 2 3 4 5 6 7 8 9 10 11 12
2001年
1 2 3 4 5 6 7 8 9 10 11 12
2000年
4 5 6 7 8 9 10 11 12

管理人
naoki   [HP]
RSS FEED
149553
2002年3月の日記

2002/03/02(土)
無題
「これだけかよ!!」

と思わず叫びそうになりました(笑)。
昨日の深夜にやってる「チェキラ」って番組で
アンリミのPVが流れるっていうから見てみたらこれ。もともと5分番組ってことで期待はしてなかったんだけど、
予想をはるかに裏切る短さでびっくり。

ミュージシャン5組のPVがランキング方式で放送されるっていう
「カウントダウンTV」みたいな感じで
しかも1組当たりの放送時間は20秒くらい。
賞味1分強の番組を5分枠でやること自体も凄いけど
これじゃあまりにも寂しすぎる。

まぁいいや。今度ちゃんとPV買って観ることにしよう。
1500円だし(←ちょっと宣伝)。
あ、でもライブ会場行かないと売ってないんだよな、確か(←つまり宣伝になってない)。

そんなわけで。

2002/03/03(日)
無題
今日は珍しく昼間から出かける。
仕方無いとはいえ、日曜のこの時間に車乗るのは好きじゃない。
「なんでこんなに混んでるんだぁ?」と嘆きつつ運転。

で、今日は何しに来たのかと言うと。
そろそろ新しいスーツ買おうと思ってね。
とはいってもどれがいいのかようわからんので
店員さんに適当に選んでもらう・・・いや、一応自分でもある程度は見たけど。

と、ここで問題発生。
どうやらカードを家に置いて来てしまったらしい。
どうしよう?とちょっと焦ったけど、
スーツは後日受け取りなのでとりあえず前金いくらか渡しとけばOKらしい。

う?む、とんだドジをしでかしてしまったぜ。
そういやこの前インターネットで買いものしたときにカード番号使ったんだっけ。

帰りにコンビニに寄る。
で、ご飯買うはずだったのに何故か一緒にチーズまで(笑)。
というわけで、まだ夕方なのに酒飲みながらスポーツ観戦onビデオ。
なんか1年前はよくこんなことやってたな?。
まぁ今日は日曜だからいいのだ!←と、自分に言い聞かせてみた

が、結構飲んでしまったので寝てしまった。
で、起きたのが夜の12時。うむむ・・・これで明日会社行けるのか?

しばらく寝れそうもないので、しょうこりもなくLinuxの勉強。
今日は色々なライブラリを落としてきてインストールした。
動的にjpegやpngを作成できるGDっていうのがあって、
これは結構便利そうなので使うことにした。

PHPではうまく動いたんだけど、Rubyではどうもうまくいかない。
やっぱりここらへんの対応はPHPの方が進んでるね。
もちろんRubyでもちゃんと設定すれば動くんだろうけど、
そのための資料も無いし、とりあえず今回はRubyから使うのはお預け。

そんなことやってるうちにもう3時だ。
そろそろ寝よう・・・じゃ。

2002/03/07(木)
無題
よ?し、今日は朝から日記書くぞぉ!(in会社)

昨日は仕事終わってから会社の人とミーティング・・・と称して焼肉屋へ。
今の現場の期限が3月いっぱいなのでこの先どうするのかちょっと話し合う。
僕個人的にはもう今の現場でやってくつもりは無いから
来月からは多分別のところで働くことになると思うね。

「やりたいことは何?」とか聞かれたけど、別にそういうのは無いんだよなぁ。
それよりも重要なのは「環境」。
ただ、仕事内容っていうのは入る前から大体のことはわかるんだけど
こればっかりは入ってみないとわかんない・・・
というか、人手が足りなくて困ってるところが「うちの環境は最悪です」
みたいなこと言うはず無いもんね。
やっぱ面接のときに自分で見抜いていくしかないのかも。

4月からは新入シーズンだっていうのに、
派遣なんか取ってる会社はロクなとこが無いんじゃないだろうか?
な?んていう不安も少しあったりして。

それにしても、会社で使ってるツールは遅くて腹が立つ(前にも言ってたな、こんなこと)。
全てAccessで作ってるからかも知れないけど
今日なんか編集しようとしてキーボード叩いた瞬間、約30秒処理が止まった(マジ)。
一体その30秒間にAccessは何をしてたのか知りたいね。
ほんともう、勘弁してくれ。

ではここで気を取り直して。Rubyよもやま話?(←またか)

Rubyは完全なるオブジェクト指向型言語だ。
「オブジェクト指向」ってよく聞く言葉だけど、じゃあ「オブジェクト指向って一体何だ?」
という質問をすれば実に様々な答えが返ってくるだろう。

世にオブジェクト指向を広めたのは紛れも無くC++だ(SmallTalkという説もあるが)。
が、「高級アセンブラ」とも言われるCをベースにしている以上
C++は純粋なオブジェクト指向言語ではない。

オブジェクト指向言語C++では、「抽象化」「隠蔽」といった技術がキーワードだと言った。
しかし、これらは単に大規模な作業をする上で便利にするために作られた副産物であり
オブジェクト指向という言葉とは直接関係のない事柄のように思う。

オブジェクト指向・・・実にわかりやすい言葉じゃないか。
オブジェクト、日本語で言えば「物」が中心の言語。ただそれだけだ。
過去の言語は、明らかに「物」が中心では無かった。
中心になっていたのは「処理」、つまりCでいうところの関数だ。

例えば、あるプログラムの中で「ボールを動かす」という処理をするとしよう。
Cで記述すれば、こんな感じになるだろう。

move(ball_1);

ここで「ball_1」とは一つのボールを表し、moveとはボールを動かす関数を表す。
では次に。同じプログラム内で「車を動かす」という処理を追加するとしよう。

move(car_1);

一見正しいように思える。しかし、これでは不完全なのだ。
よく見てみよう。ボールを動かすときも車を動かすときも同じ「move」という関数を使っている。
しかし実際には、ボールと車の動かし方は全く違う。
ボールならば手で押した程度で動くだろうが、車ではそうはいかない。
キーを差し込んでエンジンを動かし・・・といった一連の動作が必要になる。
つまり、先程の例はこう書かないといけなかったのだ。

move_ball(ball_1);
move_car(car_1);

このように、動かす物に応じた関数(move_ballとmove_car)を別々に用意する。
しかし、やや面倒だ。
他にも色々な物を動かしたい場合、それぞれに関数を用意しなければならないからだ。
一方オブジェクト指向言語、例えばRubyならこうなる。

ball_1.move
car_1.move

Cの例と似ている。しかし、両者には明らかな違いがある。
1行目のmoveと、2行目のmove。
これらは一見同じもののように見えるが、全く別のものを指している。
なぜか?それは、それぞれのmoveが別々のオブジェクト(ball_1とcar_1)に結び付けられているからだ。
つまりCでは「動かす→何を?→ボールを」という手順だったのに対し
Rubyでは「ボールを→どうする?→動かす」という手順を踏んでいるのだ。

両者の1番初めの手順を見比べてみよう。
Cでは「動かす」、Rubyでは「ボール」。
そう。前者は「処理」、後者は「物(オブジェクト)」だ。
オブジェクト指向とはつまり、こういうことである。

確かに、CではなくC++を使えばこの程度の記述は可能だ。
しかし、こんなのはまだ初歩。
「完全なるオブジェクト指向言語」Rubyが目指すものは、こんなものじゃない。

もう一つ例を挙げてみよう。
「100人の中から車を運転できる人を探し出し、その全ての人に車を与える」
・・・かなり強引な例ではあるが(笑)。まぁ例ということで許してくれ。

まずC++で記述してみよう。
ここで、100人のオブジェクトはboys[]という配列(HUMAN型)に格納されているものとする。
for (int i=0 ; i<sizeof(boys)/sizeof(HUMAN) ; i++) {
if (boys[i].isDriving()) {
boys[i].giveCar();
}
}

こんな感じだ。
100人それぞれについて車が運転できるかどうかチェックし(isDriving関数)、
チェックが成功したらその人に車を与える(giveCar関数)。
では、これをRubyで書いてみよう。
boys.getDrivingArray.each {|boy| boy.giveCar }

嘘みたいだが、たったこれだけだ。
boysに関連付けられたgetDrivingArrayメソッド(Cの関数と区別するために敢えてこう呼ぶことにする)
により、運転できる人の集合(これもオブジェクト)が与えられる。
この集合の各要素毎にgiveCarメソッドを適用する。
eachは集合を個々の要素に分割するメソッドだ(ここでは分割された各要素をboyとして扱っている)。

なぜこんな事が可能なのか?それはもちろん、Rubyが純粋なオブジェクト指向言語だからである。
C++では、配列boys[]に対して関数を定義することは出来ない。
配列個々の要素boys[i]はオブジェクトだが、配列boys[]はもはやオブジェクトでは無いからだ。

Rubyでは、boysという「配列そのもの」が「配列オブジェクト」として扱われる。
メソッドの戻り値も全て何らかのオブジェクトだ。
C++よりオブジェクト指向性が高く、今やC++からその地位を奪おうとしているJavaでさえ
数値などの極めて基本的なものは「プリミティブ型」といってオブジェクトではない。
つまり、100という「数」に対して「動け」などという(無茶ではあるが)命令は出すことが出来ない。
Rubyではそれすらも可能だ。
数値も、文字列も、そしてnil(CでいうNULL)ですら!全てオブジェクトである。
これこそが、Rubyが「真のオブジェクト指向言語」と呼ばれる所以なのだ。

う?む。相当熱く語ってしまったぜ(笑)。
これで俺もそのうち「Rubyist」の称号がもらえるかも・・・

そんなわけで。
今週も残りあと2日だ。頑張ろうっと。

2002/03/08(金)
無題
さぁ?て、今週も今日で終わりだ。
昨日に引き続き今日も会社で書き書き。
なんか今日は仕事場がバタバタしてる。そして、呑気にそれを眺めてる俺(笑)。

前にも言った通り、ここのアプリケーションはIE上で動くんだけど
処理の実行にはVC++で記述したDLL(動的に読み込めるプログラムのことね)を使用している。
DLLの良いところは、処理の度にプログラムを起動する負荷を減らせるというところ。
Apacheで使用するmod_rubyなんかも動的モジュール(WindowsでいうDLLと同じもの)だ。

ただし、何らかの不具合が起きてDLLが異常終了する(「落ちる」とも言う)と
サーバごと立ち上げ直さなきゃいけない。
仕事場だと普通、専用サーバっていうのは別で用意されてるから
いちいちそのマシンまで歩いていってサーバ立ち上げ直すのは結構面倒なんだよね。

通常DLLっていうのは処理毎に分けて作る。
ここの現場もそう。で、DLLから別のDLL呼び出したりすることもある。
このとき、その呼び出してるDLLが落ちてると当然呼び出した側のDLLも落ちてしまう。
いや、本来はその箇所にエラーチェックを入れれば済むはずなんだけどね。
それが出来ないのかやらないのか知らないが、とりあえずここではそういうチェックは入れてないので
一つDLLが落ちるとそれにつられて他のDLLもバタバタ落ちる。

今なんかまさにそうで、こうなると他のところのせいで自分が影響受けたりする。
「じゃあローカルサーバでテストすればいいじゃん」と思ったあなた。
まさにその通り。が、ここみたいに多数のDLLとASPを使用してる環境だと
ローカルで全てを再現させるのは結構面倒なんだよね。
もちろんちゃんとした手順を踏めば可能で、僕は常にそうしてるけど。
あまり仕様を理解しないで使ってる人もいるから、こういう事が起きちゃうんだよなぁ。

やっぱプログラムを作る上で、
「自分が作ってるプログラムがどうやって動いているか?」っていうのを知らないと
苦労すること多いよね。
前の現場でもそうだったけど、大きいプロジェクトだとそこら辺を把握してる人が少ない。
とりあえず自分のとこだけやっとけばOK、みたいな。
でもそんな「その場しのぎ」的なやり方だと、プログラムの「核」の部分で問題が起きたときに困る。

「どうして?」「なんで動かないの?」
そんな言葉を発したまま、そこから先へ進めない。

例えば今使っているVC++。これにはデバックモードとリリースモードという2つの構成があって
デバッグモードで開発していればプログラムのデバックがし易くなる。
一方、リリースモードで作ればデバッグはできないがプログラムの高速化が図れる。
基本的に「両モードの動作そのものには違いは無い」ということになっている。

が、実際には必ずしも同じではない。
例えば領域を確保したとき。デバッグモードならばその領域が何らかの値で初期化されることがある。
初期化し忘れたある意味「不正な」プログラムに、
エラーが起きないような対処をコンパイラ側で入れてくれるのだ。
こういった初期化処理を入れることによって
プログラムのエラーが減ることはあっても、増えることはない(もちろんごく一部の例外はあるが)。
だからコンパイラは「親切」にこういった事をしてくれる。
しかし、あくまで「ことがある」だ。プログラマはこれを信頼してプログラムを組んではいけない。

一方、リリースモードで最適化の指定をしているとそういった処理は省かれる。
それが少なからずプログラムの低速化につながるからだ。
だから、先程の「親切」なコンパイラの処理に頼ったコーディングをしていると
リリースモードにした途端にプログラムは異常を引き起こす。

ここで、初心者が言う。
「なんでリリースモードにすると動かないの?」
なんで、じゃない。動かないから動かないのだ。
理由はさっき書いた通りだが、ここではその理由よりも
「エラーが起きた」という現象の方が大事だ。

つまり彼の言い分はこうだろう。
「両モードでの動きの違いは無いはずなので、リリースモードで動かないのはおかしい」
そう。ここで重要なのは「動きの違いは無いはずだ」という意見。
これはあくまでコンパイラ側が説明した一つの「解釈」に過ぎない。
「リンゴは木から落ちる」といった「自然理論」とはわけが違うのだ。

それを「こうなるに決まってる」「こうならないはずがない」
みたいな言い方をするのは、プログラムを何もわかっていない証拠。
「プログラムは思った通りに動かないが、作った通りには動く」
というマーフィーの法則にもあったように、所詮プログラムなんて作った通りにしか動かないのだ。
だから、そのプログラムがどんな仕組みで動いているかを理解していれば
バグが発生したってそんなに慌てる必要は無い。

もちろん、使用する環境やライブラリが肥大化する現在、
全ての内容を理解することなど不可能だし、そんなことをしても無駄な労力になるだろう。
だけど、最低限知っておかないといけないこともある。
少なくとも、自分(自社)で作った(保証の無い)プログラムは
その内容を理解しないまま使ってると必ずと言っていいほど問題が起きる。

そんなとき、そのプログラムの設計書があればそれを信頼して読めばいい。
が、そんなものは存在しないのがこの業界における暗黙の了解。
プログラムを「読む」力、やっぱりこれが一番重要だ。現場で働いてみて改めてそう思う。
でもその読む力を鍛えるには、自分でプログラムを「作る」しか方法が無いんだよね。

さてさて。こんな堅っ苦しい話は置いといて。
明日は新庄(ジャイアンツ)vsイチロー(マリナーズ)の初顔合わせ。
楽しみだなっ!

2002/03/10(日)
無題
もう春だね。
急に暖かくなったし、家の近くでも梅なんか咲き始めてるし。

さて、季節は確実に変化してるのに
僕の生活はほとんど変わってない(笑)。
今週末はFLASHが手軽に作れるMingというものに手を出してみた。

手軽とは言っても、便利なツールが用意されているわけではなく
PHPで「ゴリゴリ」プログラムを書いていく必要があるから
凝ったもの作ろうとしたら結構大変なんだけど、
ちょっとしたFLASHムービー作るだけならすぐに出来た。

で、早速アンリミのロゴみたいなのを作ってトップページに置いてみた。
う?む・・・まだしょぼいね、このままじゃ。
ちなみに、これでファイルサイズは10K程度。
これを大きいと見るか小さいと見るかは人によって違うとは思うけどね。

あとはMingを使った高機能アプリケーションが出てくれれば
言うこと無しなんだけど、Ming自身がフリーソフトってこともあるし難しいのかもね。

眠・・・もう寝よっと。
ちなみに、今が月曜日の朝7時だということは他言無用ということで(笑)。

2002/03/12(火)
無題
う?む、困った・・・

どうも今の現場、もう少し続ける羽目になりそうな雰囲気。
向こうの人の話を要約すると
「あと1ヶ月くらいで開発環境を変えるのでもう少し待ってほしい」
ということらしい。

まぁ別にこんだけ適当に仕事しててちゃんとお金貰えるんなら
続けてもいいんだけど。
先月は120時間くらいしか働いてなかったから、普通だったら給料減らされるよね。
とはいえ今日話した人も給料出す側の人ではないので
もしかしたら給料減らされてるかもしれない。それだったら迷わず辞めるね。

僕があんまり仕事行かなかったのは、別に仕事が嫌だったわけではなく
ただ単に「やることがなかった」から。
会社行って8時間近くもぼ?っとしてるのは疲れる。
「会社なんだから毎日出勤するのが普通だろ」という意見もあるかもしれない。

でも僕の仕事は受付とか電話番とかじゃないんだ。
決まった時間に行って、決まった時間まで働くことに何の意味も無い。
僕は本当は、この暇な時間を利用して少しでも今作ってる商品の質を上げたいと思ってる。
でもこの現場にはそこまでの余裕が無い。
自分で良いプログラムを作っても、それを公開する場所が無い。
そんな現場は、僕はもう嫌なのだ。

でもとりあえずもう少しだけ居ることにする。
その人の話がうまくいけば、
今作ってるプログラムの開発をこの現場から譲り受けてグループ開発することが出来るらしい。
そうなれば多少僕の言い分も通るし
出来の悪い人間の書いたソースを眺める機会も減るかもしれない。

いや、でも結局大差は無いのかな。少なくともあと1ヶ月以上は。
色々会社同士の繋がりも大事らしいから、
今すぐに辞めるというわけには行かなそうだ。
ふぅ・・・

2002/03/13(水)
無題
久々に面倒な仕事が回ってきそうだ。
また新機能追加するらしい。

いつも思うんだが、ここって一応パッケージ開発のはずなのに
いつまでたっても安定した動作すらしないまま新機能の追加が続く。
こんなんで本当に使ってる客は満足してるんだろうか?

というより、もはやこれじゃパッケージとは呼べないね。
製品として出した後も、ず?っとその対応に追われてるんだから。
僕が今作ってるやつも5月発売とは言ってるけど、
おそらくその後も延々とバグ修正が続くんだろうね。
まぁ客側が納得してるんならそれでいいんだろうけど・・・
そのうち「ガタ」が来るね、これじゃ。

そういや朝のニュースでやってたね。
「ハード系からソフト系」への社内再就職っていうのがあるんだって。
要するに、今まで重要だったハード系技術者に代わって
今はソフト系技術者が必要とされてる。
でもその技術者がいない。じゃあどうする?というわけで
「リストラ最前線」(っと、言いすぎかな?)にいる社内のハード系技術者をソフト系に転換させようっていう寸法だ。

まぁこれでうまくいく人もいるだろうね。
まるっきり畑の違う仕事をするわけでもないし。
その会社(NEC)の社長も言ってたように「やる気がある人間」ならばOK、というわけ。

僕の仕事もある何十年かしたらそうなってしまうんだろうか・・・
可能性はあるよね。まっ、僕は臨機応変にやってくつもりだけど。
いつの時代だって、本当に必要なものは変わらないもんね。

んじゃ。

2002/03/14(木)
無題
面白いページを見つけた(もちろん仕事中に)。
http://mono-ki.hoops.ne.jp/diary/txt/computer/debugpatern.html
プログラムの「デバッグパターン」について書かれてるんだけど、
開発をしていて遭遇する様々なバグと、それをデバッグする人の特徴には
パターンがあるってことだね。

開発の現場にいる僕には「そうそう!」なんて思わず納得できるのが多かった。
例えば、前に書いたけど「バグが足りない」ってやつとか。
「テスト5件につき1件のバグがある。これは過去の統計から出した信用できる数字だ!」だって。
この人も書いてるけど、この統計っていうのはCOBOLから来てるらしい。
そういやあの人もCOBOLやってたって言ってたなぁ。

「無駄な残業アンチパターン」っていうのもあった。
今の現場なんかまさにそうだな・・・

もう一つ見ていたのが「XP」という開発スタイル。
これは「Windows XP」とは何の関連も無い(というよりWindows XPの方が後に出てきた)。
特徴は「顧客の様々な要求の変化に柔軟に対応できる」ということ。

読んでみると、今ある通常の開発スタイルとはかなり違う。
重要なのは「顧客の要求を出来る限り満たしながら開発を進める」っていう点。
一般的にはプログラムの知識が0の人間(顧客)と、いかにしてコミュニケーションを取っていくか。

例えば、通常の開発の流れはこうだ。

1. 顧客が求めるものを文章で書いて、それを開発側に渡す
2. 開発側はそれを基にプログラムを組み、決められた納期までにそれを完成させ顧客に提供する

しかし、これでは明らかに問題が発生する。
ほとんどの場合、?が終わった時点で顧客は提供されたものに満足出来ず、

3. 顧客は「ここを直して欲しい」「こんな機能を追加して欲しい」という要望を再び開発側に提示する
4. 再び2.に戻る

という流れになる。
これでは顧客が満足するものが出来上がるのはいつになるかわからない。
その結果、仕方なく顧客は妥協をして商品化する・・・
こんな状況が往々にして存在するらしい。

それを解消するべく生まれたのが、XPである。
XPの開発現場では、1日単位でその時点での「完成品」が出来上がる。
つまり1日単位で顧客側に「開発中」の製品を提供することが出来る。
毎日顧客からの要望が変化したとしても、何の問題も無い。
顧客は望むものを提示できるし、もしそれ以上に機能を追加したかったら
開発期間を少し延長してもらえばいい。

こうやって書くといいことばかりのように思えるが、もちろんいいことばかりではない。
XPが推奨するのが、「ペア・プログラミング」。
2人1組で1台のPCに向かって開発をするというのが、XPによる開発スタイルの大前提なのだ。

これには疑問の声も多いと思う。単純に考えて、作業効率が1/2になってしまう。
しかしメリットもある。
まず、2人でコーディングすることでバグを未然に防げる。
わからないことがあったら、片方の人間がWebや文献を調べる余裕もある。

色々なメリット/デメリットがあるが、
XPは一つの有効な開発スタイルだと思う。
ただ、全ての現場に使える方式では無いね。
なんでかって・・・まぁ説明するのは面倒なので省略するけど(笑)
さらに言えば、俺には合ってないスタイルかな。ペアっていうのはどうもねぇ・・・
可愛い女の子ならいいけど(笑)

さぁ、日記も書き終わったしそろそろ帰宅するか(笑)。
じゃ!

2002/03/15(金)
無題
どうしてこんなにも読みにくいプログラムを書くのか。

働き始めてから常にある悩みがこれだ。
僕は昔からプログラムをやってきたからそう思うのかもしれない。
確かに僕も始めた頃のプログラムなんか、今見たらひどいもんだと思う。

かつてはプログラムと言えばBASICだった。
そして、そこから様々な言語が発達していった。
Cが登場したとき、人々は皆(僕を含め)その先進的な記述法に感心したものだった。

CとBASICは何が違うのか?
それを代表するのが、関数というものだと思う。
BASICによる記述では、プログラムは一本道だった。
どんな処理をするにも、上から下にプログラムが流れ、実行される。

しかしこれでは、大きなプログラムを組んだときに無理が生じる。
大きなプログラムでは、処理の内容一つ一つの大事だが
それよりも、その概要を掴むことが重要になってくる。

例えば、家を建てる処理をプログラムで組んだとしよう。
従来の記法では、どんな小さな処理もプログラムに順番に記述しなければならない。
まず家の骨組みを作るにしても、
「木1を切る」「木2を切る」「木1と木2を組み立てる」
などの動作を一つ一つ順番に書いていく。

これは実際に作業をする大工にとってはわかりやすいかもしれないが、
全体の流れを把握するのは非常に難しい。
例えば「2階のある部屋にバルコニーを作りたい」
などの要望があったとする。
プログラマは膨大な量のプログラムからその部屋を作る箇所を見つけ出し、
適切な箇所に追加するプログラムを記述しないといけない。
おそらく、その箇所を見つけるだけで何時間も掛かってしまうだろう。

これでは不便だ。
そこで関数を使えば、これらの処理をまとめて一つに記述することができる。
「土台を作る」「壁を塗り固める」などの大まかな作業を一つの関数とする。
そしてその関数から「白のペンキを用意する」などの細かい作業を関数で呼び出していく。
こうすることによって、
「全体を見渡せば大まかな流れ」が、そして「一部を見渡せばより細かな流れ」が
わかるようになる。

「木(ツリー)構造」、これが全ての原点だ。
これをプログラムで実現したのがCであり、関数という概念だった。
関数には流れをわかりやすくするだけでなく、
同じような処理を一つにまとめられるという利点もある。
プログラム内では多々、同じ処理を繰り返すということが起こる。
そもそも、「同じ事を繰り返す」というのはコンピュータの最も得意な処理の一つなのだから。

そしてプログラム言語は発展を遂げ、C++などが誕生した。
C++はCをさらに使いやすく、そして読みやすくする。
しかしそれも、適切な使い方を知っていないと達成することは出来ない。
「オブジェクト指向」とかいう言葉ばっかりに気をとられて
プログラムの基本もわからずにC++を使うから、
そこには読みにくい「腐った」プログラムが出来上がってしまう。

あるプログラムを評価するとき、いくつかの項目が存在する。
まず第一に「ちゃんと動くか」。
これは当たり前で、正常に動作しないプログラムなどもはやプログラムとは呼べない。
次に重要なのが「読みやすいか」。
なぜこれが重要なのか?
一回作って「はい、おしまい」というのであれば、別に読みやすいプログラムを組む必要は無い。

しかしそうじゃない。プログラムというのは、常に修正されるものなのである。
さっきも書いたように、「どこでどんな処理をしているか?」ということは
プログラムを修正する上で非常に大事だ。
特に大きなプログラムになると、その修正をするのが作ってから1ヶ月後だったりすることもある。

そういうとき、読みにくいプログラムを書いていると
その修正を始めるまでに何時間もかかってしまう。さっきの例と一緒だ。
C++で書いていたって、常に読みやすいプログラムになるわけではないのだ。

そしてもう一つ。「修正しやすいか?」
これは先程の「読みやすいか?」に関連する。
読みにくいプログラムは大抵の場合、修正もしずらい。
例え何時間か掛けてそのプログラムを読み直せたとして、そこから先も修正するのが非常にやっかいなのだ。

これにはいくつかの原因がある。
が、一番の原因として「修正を見越した作りになっていない」事が多い。
「その場しのぎ」で作られたプログラムだと、こういうことになる。
ちょっとした修正をしたいだけなのに、プログラム全てを作り直す羽目になることすらある。

本当は「ちゃんと動く」プログラムを作った後で、
「読みやすく、修正しやすい」プログラムに直していかなきゃいけない。
でもその為の時間が無かったりすると、「作りっぱなし」のプログラムになってしまう。
それが何回も繰り返されれば・・・結果は見えてるよね。
文章書く業界で使っている「校正」っていう作業が、プログラムでも必要なのだ。

コピー&ペースト。これが低質なプログラムが出来上がる元凶と言われている。
流れを追ってみよう。

プログラムをほとんどわからない人間が修正を任される

何をやっていいかわからないので、とりあえず他の人のプログラムを見る

そのプログラム内で、今回の修正に似たような箇所を見つける。「あっ、ここ使えそうだ。これ使おう」

そのプログラムをコピー&ペーストする。そしてそれを修正する

そう。おわかりのように。
コピー&ペーストした元のプログラムが低質だった場合、
新しく出来上がったプログラムも当然低質になってしまうわけだ。
しかも、そういう人間は元あったプログラムになるべく手を付けずに修正したがるので
結果として今回の修正では必要ない(=削除して構わない)部分まで残ってしまう。
それが繰り返され・・・う?む、また同じだ(笑)。

会社として将来を考えた場合、
こんなこと繰り返していてはいつまで経っても社員が成長できない。
だから、年に1人入ってくる(かもしれない)優秀な社員が多大な責任を負い
他の人は一生コピー&ペースト。
本来なら1年くらいは研修期間を設けて、その間は勉強しながら
ある程度の技術が付いてきたらプログラム修正、そして上の人がそれを見てレビューする必要があるね。
レビューという過程が存在しないから、初心者は自分のプログラムの悪い部分がわからない。

仕事に追われていては、プログラムを勉強しようなんて気すら起きないのは当然。
「とりあえず使えればいいや」的な考えでは、プログラムの質はいつまで経っても上がることなど無いのだ。

ここでちょっと話を変えて。
よく、「手作り」の対極として「機械」という言葉が出てくるよね?
じゃあ「プログラム」とは、果して「機械」的なものなのだろうか。

答えは「ノー」だ。
CやC++などのコンパイラは「プログラム言語」と呼ばれるのはご存知かと思う。
そう、「言語」とはある目的を達成させるために必要な「ルール」の集まりでしかない。
使う人によって、全く別のものになったりもする。

コンパイラは「機械」そのものだが、コンパイラを使って書くプログラムは「手作り」なんだ。
芸術家が筆を使って絵を描くのと一緒。
同じ筆を使ったって、描く人によって絵は全然違うよね?
プログラマーは、作品を作るという意味では立派なアーティスト(芸術家)だと思う。
そう。つまり。

良い作品を作るには、良いセンスが必要だ・・・

2002/03/18(月)
無題
何週間ぶりだろう。月曜日にちゃんと会社行ったのは(笑)。

今週は間に祝日が入るから、さすがに月曜まで休んじゃうとどうかな?
と思って今日は頑張ってみた・・・「それが普通だよ!」という突っ込み、ちゃんと入れてくれた(笑)?

まぁ今日はそれだけが理由じゃなくて、珍しくやることがあるから
っていうのもあるんだけど。
しかも結構大変そう。でも話聞くと期限は来週一杯ってことらしいからそんなにきつくは無いと思うな?。

「開花宣言」したらしいね。にしても早い。まだ3月中旬だっていうのに。
これじゃ入学式のころには「桜散る」って感じだろうね、恐らく。それも悲しいぞ。

よ?し、今週はあと2日頑張って4連休でも取ろっかな?(結局それかい!)

2002/03/20(水)
無題
世界フィギュアスケート選手権

オリンピックから1ヶ月もしないうちに、再び世界の舞台が長野にやってきた。
今回はTBSでしかやってないので、仕方なく民放を観る。
で、早速だけど一言いっていい(笑)?

司会のキャスティングおかしいんちゃう?

まぁモー娘のなっちはいいとして(をぃ)、和泉元彌・・・なぜ?
NHKの紅白歌合戦で司会やったときも「誰よお前?」って感じだったけど
今でも大して変わんないよな?。

「オリンピックでもおなじみのコンビ・・・」って言われても
俺はBSでしかオリンピック観てないからちっともおなじんでないぞ(笑)。
二人揃って台本丸読みの進行は、はっきり言って無駄以外の何物でも無い。
どーもこの局はやることがわからんぜ。

で、フィギュアの演技間にやたらナレーションが入るのも勘弁。
ただでさえCMで時間削ってるんだから、こういう無駄も出来る限り排除して欲しいところ。
メディアも含め、世間では恩田さんに注目が集まってる(←日本の中では)
らしいけど、やっぱり彼女はまだトリプルアクセル跳ぶには早い気もするなぁ。

もちろんジャンプはフィギュアの華だけど
それだけじゃ上位には入れないことはオリンピックでも証明済み。
もし彼女がトリプルアクセルを成功させたとしても
現段階ではメダルを取ることさえ厳しいだろう。

今日は女子の予選、村主さんはまあまあの出来だったかな?。
恩田さんもトリプルアクセルは失敗したもののグループ3位に入って良かったと思う。
まだこれから先、ショートプログラムとフリーの演技が残ってるからね。
楽しみにしよう。

ふぅ・・・なんか急にやることが増えて困った。
と、仕事の話ね。一応断っとくと(笑)。
今回はある機能を大幅に改造するってことなんだけど、
元からあるソースを見る度にうんざりしてくる。
とにかく何やってるのかがわかりにくい。
プログラムの冗長さ、統一感の無さ、コメントの少なさ、など
どれをとっても質の低いプログラム(しかも大量)を読むのは嫌になってきた。

だから今回は今まであった部分は使わずに新しいプログラムを自分で作ることにした。
元々、今開発してるVer.3すらもVer.2のプログラムを流用した作りになってるから
多分使ってない箇所もたくさんあるんだと思う。

でも、下手に消して問題が起きても困るので
そのままにして放置してある、というのが現状なんじゃないかな。
とにかく、ここの現場はやろうとしてる事と開発スタッフの技術力の格差がありすぎる。
早いうちに思い切った決断しないといずれ痛い目見るよ、これは。

とか言ってるけど、一応ここの会社のソフトはそれなりに客に使われてるらしい。
まぁ確かに、使う方からすれば内部のごちゃごちゃした作りは関係ないからね。
でも外部(つまりインターフェイス)だけ見ても、決してレベルの高い製品じゃ無いんだよね。
おそらく客側も「使いにくいけど、手作業でやるよりは遥かにましだ。仕方ないけど使おう」
って感じなんだろうね。

これじゃ、せっかくの高性能コンピュータが泣いてるぜ。
もちろん、こういった業務用商品には「優れたインターフェイス」よりも
むしろ「多機能」の方が求められてるのは解るけどね。

さてさて。明日は休みだ。
この前の日記では4連休かも・・・なんてこと書いたけど
どうもそんなに休んでる場合じゃなさそうだ。
まだやること腐るほどあるからね。
まっ、金曜に会社行くかどうかは明日の過ごし方次第かなっ!

2002/03/22(金)
無題

今、長野が熱いのだ。

そう、世界フィギュアスケート選手権。
先日は本田武史が銅メダル、そして今日は女子シングル。
ショートプログラムを終えた時点で村主が2位、恩田が4位。
地元開催とはいえ、上位6位まで(つまり最終グループ)に
日本人が2人入っているというのは過去例が無いそうだ。
それだけに明日のフリー演技に期待が掛かる。

なんてったって、村主さんがミシェル・クワン(3位)の上にいるんだから凄いよね。
つまり、フリー演技での順位がほぼそのまま最終順位になるってことだから
明日の演技次第では自力で金メダルが狙える位置まで来ているのだ。

ただ、やはりフリー演技で世界のトップに立つのは難しいよね。
この前のオリンピックでもご承知の通り、
フリーではある程度のミスが得点の大幅低下につながらない。
過去の実績から大体の点数が決まってしまう事が多いようだ。

そうは言っても、村主さんには銅メダルを取れる可能性が大きく残っている。
クワン・スルツカヤという強豪の次に入ることが出来ればいいんだ。
恩田さんは、ちょっとメダルには厳しいかもね。
でも、トリプルアクセルを決めることが出来ればもしかして・・・という期待も出てくる。

話は変わって。
サッカー日本代表の試合が始まった。
今年第1戦の相手は、ウクライナ。
ホームゲームでありながら、1?0という最低限の結果にちょっと不満もあるけど
それなりに良かったんじゃないかな。

それにしても、柳沢にはホントがっかりだね。
「これ決めないでどうする?」っていう場面でのシュートミスには落胆したよ。
確かに、FWとして「シュートまで持ち込む」動きについては彼は天才的かもしれない。
でもそれ以上に大切な「シュートを決める」事が出来ない。

一言で言えば、彼には闘志が足りない。
もし鈴木なら、あの場面決めていただろうと僕は思う。
ゴールへの執着心。これが大事だ。
代表的なのは、中山だよね。彼の全盛期を超えるストライカーが、まだ日本には現れない。

というわけで、休日にはさまれた今日は当然のようにお休みです(笑)。
明日は花見かなっ!


2002/03/25(月)
無題
ふぅ・・・なんだか最近だるいんだよね。
別に風邪ひいたわけじゃないんだけど。どうも疲れ気味。

そうそう、ちょっと遅れたけど。
やってくれたね。フィギュアスケート。
村主が見事銅メダル。
恩田はトリプルアクセルに果敢に挑み失敗。
それでも相当高い技術点が出たのは、それだけ彼女が難しい技にチャレンジしてる証拠。
これで、来シーズンの世界選手権では日本に3人の出場枠が与えられた。

さぁて、明日からはちゃんと会社行かないとね。
そんなわけで。

2002/03/27(水)
無題
呆れてものが言えないね。

さっきニュースを見ていて思った。
八葉グループだかいうサギ会社に騙されていた人が大勢いたという話だった。
会員になって150万円支払えば、確実に300万円は返ってくるという
「とってもすごい」システムらしい。

そして知り合いなどを新しく会員に誘うだけで30万円。
これって大昔からある「ねずみこう(←漢字わからん)」そのまんまじゃない。
今時こんなわかりやすいサギに引っかかるのがいるとはねぇ。
全国で5万人弱の会員がいたそうだ。

いつの時代も、人は金がからむと狂ってしまうのだろうか。
ニュースで見る多くの犯罪には、何らかの大金が関わっていることって多いよね。

ただ、今回騙されたその何万人という人達は
それなりに裕福な生活は送っていたんだろうね。
そうじゃないと、何の信頼も置けない会社にポーンと150万も出せないよ。
つまり、騙つ奴も騙す奴なら、騙される方も騙される方ってこと。
「自分の身は自分で守れ」。それくらい常識だよね?

さぁ、今日はサッカー。日本vsポーランドだ。
今回はアウェイ。相手ホームでの戦い。
前回と違い海外組も参戦する今日の試合は、日本の実力が試される一戦だね。
深夜0時からの生放送は痛いけど、頑張って観るぜいっ!

2002/03/29(金)
無題
今日も雨・・・しかも風も強い。
これじゃあ暖かくなる頃には桜も消えてるだろうなぁ。
まだ3月なのに。う?む、今年は猛暑になってしまうんだろうか?

それはそうと。この前のサッカー。なかなか良かったね。
ポーランド相手にアウェイで2?0の完勝。
ただ、向こうが弱すぎて見えたのはどうしたものか。
とても今年ワールドカップ出場決めてるチームとは思えなかった。

最近またnethackをやり始めてる。
本来ならLinux上で動かそうと思ったんだけど、どうもうまくいかないので
結局Win上でやってる。このゲームならテキストベースだから
Linuxにもってこいだと思ったんだけどな?。
それにこれだと会社でやっててもバレ・・・いや、何でもない(笑)。

で、やっぱり久しぶりにやると忘れてること多いね。
まぁそれがまた楽しかったりするんだけど。
昔やってたところまで進むにはしばらく時間がかかりそうだ・・・

で、またまた面白いサイトを見つけた。
http://www.geocities.co.jp/SiliconValley-SanJose/5667/
「真・プログラマになるには」。結構きついぞ、ここも。
これを読んだら、誰もプログラマになりたいだなんて思う人はいないだろうな(笑)。

まぁ、僕らみたいな派遣の人間は社員プログラマよりは待遇良いから
徹夜連チャンみたいなことは無いけどね。
道路工事の現場で働いてる人よりよっぽど過酷な労働強いられてる人も多いらしい。

てなわけで。
今週も終わりだ。休み中は良い天気であってほしいなぁ。

2002/03/30(土)
無題
いや?、それにしても昨日は参ったね。
会社から帰るときは雨がパラパラ降ってる程度だったのに、
地元帰ったら凄いどしゃ降り。埼玉地方は東京よりも雨が多いのか!?
これで完全に埼玉の桜は散ったろうね、おそらく。

プロ野球がもう開幕したらしい。
年々日本の野球人気が落ちる今、各局も視聴率アップに必死の様子。
試合内容は良かったらしい(よく見てないから知らない)けど、
「やっぱり野球って面白いですよねぇ」っていういかにも言わされてる台詞が気にくわないね。

実況、解説、さらにはゲスト(某ジャニーズ)まで口を揃えて同じこと言ってる。
そうやって視聴者を洗脳するつもりかどうかは知らないけど
俺は日本のそういうシステムが大嫌いなんだ。
ヒーローインタビューでも、リポーターは選手を褒めまくり。
で、図に乗った選手もそれにつられて話してるから世話無ぇぜって感じだ。

僕は「尊敬してる人物は?」とか聞かれても「別に・・・」っていうタイプなんだけど、
尊敬してる職業ならある。
それが「アスリート」(ちなみに、競技者って意味)だ。

自分の能力を極限まで高めるその生き方は、決して他の人には真似が出来ない凄みがある。
でも、日本のプロスポーツ選手の大半は僕から言わせれば「アスリート」じゃない。
「芸能人兼スポーツマン」、そんなイメージかな?
試合後のインタビューでも、まるでアスリートって感じがしない。

いつもこういうときアメリカスポーツの話を掛け合いに出すのもあんま好きじゃないんだけど、
僕にとってはそれが最高のスポーツなんだからしょうがない。
彼らはれっきとしたアスリートだ。
自分自身に誇りを持ってプレーするスタイルは、観る人に感動を与えるよね。

というわけで、やっぱり僕は今年もプロ野球はそれほど見ないでしょう。
BSではメジャーリーグの放送がますます増えるはずだから、僕はBSに着いていきます(笑)。
あ、でも今年はワールドカップにかなり放送取られちゃうのかな?
こればっかりは地元開催だからしょうがないよなぁ・・・
な?んて、そう言いながら結構(W杯を)楽しみにしてるところもあるんだけどね、実は。
じゃ。今日はこのへんで。



Limyweb