トップ «前の日記(2004-09-14) 最新 次の日記(2004-09-16)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2004-09-15

_ Firefoxカキコ

さて、どうなることか。

_ 素晴らしい

いや、会社が提供しているっていうか、MSが提供しているって言うかOutlook Web Access(OWA)ってのがあるんだけど(OutlookのようなUIをWebで提供するっていう多分ExchangeServerのアドオンか何か)、こいつと来たらSafariでも、Mac IEでも歯が立たないという難物。

・Safari ログインできるけど受信トレイを読もうとするとエラーになる。新規メールは作成できるけど日本語は?に置換されてしまう。

・Mac IE はなからログインできない

というわけで、仕事アクセス用に結局、Windowsノートパソコン買うしかないか……と考えてたんですね、これが。

でも、ふと思い立って試してみたらこれがばっちりだ。確かに、IEのかわりにどうぞと言うだけのことはある。

ちなみに0.9.3だけど。

#なぜかスラドに1.0prが出たとかのトピックが立ってるし、なんか同じように0.9.3入れた人がいたりとかするのが不思議ではある。

_ ここはいやかも

Safariに慣れたせいか、タブのクローズボタンはタブに欲しいな。

_ むむ、

caminoなんてのもあるのか。まあ、いいや。

_ おお

久々(arton.no-ip.infoにはFirebirdが仕込んであるから、そこを使ってる場合ってことだ)に天泣記も読めた。

_ こないだ聞いたのを思い出した

聞いた内容を再構成:

ソフトウェアの工業化という言葉をみなさん、口にされますね。

工業製品と比べてソフトウェアはどうした……というようなやつです。

ブァカですか?

工業製品とソフトウェアを比較すれば、よっぽどソフトウェアのほうが不良品発生率は少ないですよ。

ソフトウェアが工場のラインに乗るという状態、これは、CDにプレスして箱に入れることに相当するんじゃないですか? CDという共通規格があり、CDケースのような汎用部品があるという意味でも工場のラインとの比較ではソフトウェア産業のほうがうまくやられているように感じますね。まあ、開発ー構成ー出荷ー納入というフェーズを考えてみても工業製品の工場での処理と比較するのであれば構成の段階ですね。

ソフトウェアの開発フェーズを工業と比較するのであれば、CAD/CAMで設計したり流体テストしたり、素材強度をテストしたりしている状態に相当すると考えるのが妥当でしょう。

再利用? CADエンジニアは図面を起こすときそんなことは考えません。デザインは常に進化することを顧客も望んでいますからね。

デスマーチ? キャンセル? もちろんあります。当然です。新車開発プロジェクトなんて、それは大変なものです。属人性の固まりのような作業ですからね。それに、Mさんみたく設計にバグがあるのを承知で納期に間に合わせるために出してしまうということもありますし、潜在バグもありますね。

したがって、ソフトウェアは工業化すべきだなんて寝言だと考えるべきでしょう。なぜなら、すでに完全なまでに工業化されているわけですから。

_ CheckStyle

こいつが最悪なのは、デフォルトで

Test.java:8:25: Parameter t should be final.

みたいなくその役にも立たないメッセージを出すことだ。

引数にfinal付けて意味があるのは唯一無名インナークラスで参照する場合だけだ。

というのは、Javaは値渡しなんだからメソッド内でどういじろうと知ったことないし(プリミティブ型の場合)、クラスの場合代入できるかどうかは実は関係ない(メソッドシグネチャーでメソッドの内部実装について示す意味は無いだろう)。

public void safeMethod(final Foo foo) {

foo.destroy();

foo.close();

foo.blabla();

}

中身が破壊できるわけで、C++でのchar* strcpy(char* dst, const char* src);みたいなものとは全然異なるからだ。

というわけで、Javaの仕様がわかっていれば意味がないことはわかるし、そうでなければ逆に誤解を招きかねないことになる。constの意味で捉えられると、ミュータブルクラスにfinal付けるってのは逆に危険だからだ。

ただしフィールド宣言では意味がないわけではない。

final Foo foo = new Foo();

public void killFoo() {

foo.killYourself();

}

finalフィールドを実装したオブジェクトの生存期間中、同一のインスタンスを利用するというドキュメンテーションとしての意味が重要。(持続性の問題とも言える。メソッド内での持続なんて知ったことではないが、インスタンスの寿命と一致するというのはインパクトがある)

で、はじめに戻って、引数のfinalチェックなんてやめてくれ(ということからこのメッセージは日本語化されてないのかな?)

あと、デフォルトでは、privateやパッケージスコープのメソッドなんかにまでJavadoc書けとうるさいこととか。

importでクラス名を指定するのは基本的には正しいと思うけど、java.io.*とかjavax.sql.*みたいに使うとなったらimportだけで20行近く書かなきゃならないようなのもヤだね。でも、そういうクラスは少ないから例外規定をちゃんと作っとけば良いかな?

って言うか、lintといい、どうしてこういうツールを作りたがる連中っているんだろうか? どうせ作るんだったら

・有無を言わさぬ整形ツール(引数にfinalを付けなければ)

・FindBugsみたいに真に意味がある問題指摘ツール

にしたほうが良いだろう。

っていうか、デフォルトでは使い物にならないな。

/**

*/

public class Check extends Bla {

/** */

String str;

/**

* @param s aa

*/

public void setTest(String s) {

s = str;

}

}

ここまで妥協してやっても

Check.java:5:12: 変数 'str' は private とし、アクセッサメソッドを持つべきです。

Check.java:9:5: メソッド 'setTest' は拡張するように設計されていません - abstract か final か空である必要があります。

Check.java:9:25: Parameter s should be final.

Audit done.

とか言い出す。setTestが、Blaで実装されているメソッドだったらどうよ? abstractやfinalや空じゃまずいでしょ。

あと、なんでもprivateって厨房じゃあるまいし(publicやprotectedならわからんでも無いが)。つーか、パッケージスコープがデフォルトでしょう(もっとも、C++みたくデフォルトのスコープは違うかもみたいな言語もあるけど)。

#こういうソフトウェアは嫌いだから文句をつけるだけ。建設な方向は整形ツールにするかFindBugsみたいにすることだけだからだ。

_ 綴りは違うんだけどさ

やっぱこれがマッキントッシュだよね。

カタカナとして最初に見たのは中学くらいのころパルコ出版のなんかの本(ったってそりゃバウハウスかなんかについての本に決まってるわけだが、ふと思い出したがサンボリズムの本とかどこへ行ってしまったんだろう)だったり。

本日のツッコミ(全3件) [ツッコミを入れる]
_ KM (2004-09-15 09:43)

ソフトウェア工場,って言うと,私の場合「日立」という名前が脳裡に浮かびます... 「"ソフトウェア工場" site:ipsj.or.jp」でぐぐると,四半世紀程前から存在してたようですが

_ むらまさ (2004-09-15 11:44)

「タブブラウザ拡張」というのがあります。これを使えばタブごとに閉じるボタンを付けたりできます。<br>http://white.sakura.ne.jp/~piro/xul/_tabextensions.html<br><br>問題点として、FireFoxの動作がかなり遅くなるというのがあります。

_ arton (2004-09-15 13:47)

ありがとうございます。「かなり遅くなる」を体感してから使いつづけるかどうか決めることにして、とりあえず入れてみます。 >むらまささん<br>日立ですか……。白物家電の雄のあそこにこそiMac G5みたいなプリウスを作ってほしかったかも。真っ白レッツノートでも良いけど。シャープのノートがそんな感じだけど。全然関係ないけど。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|

ジェズイットを見習え