「プログラム」カテゴリーアーカイブ

動的な妥当性検証とスキーマ版管理

「ヒント: パーサにどこでスキーマを探せばよいかを教える」
IBM DeveloperWorks 2003年11月11日記事。
この記事には注目すべき点がある。XML文書の妥当性検証に使用するスキーマをプログラムが決定できるということである。
XML文書を処理するプログラムに機能追加を行う場合を考えてみる。おそらくスキーマの変更があるはずだ。そのプログラムは複数の相手からXML文書を受け取ることができるように設計されており、受け取るXML文書のスキーマは相手に依存する。そしてスキーマ毎に機能を変更しなければならないとしたらどうだろうか。
記事の方法を使用するなら、プログラム内にスキーマの版管理機能を持たせることによって、自動的にXML文書がどの版のスキーマで記述されたものなのかを判断できる。このことは古い版のスキーマをサポートしなければ状況において有効だ。
続きを読む 動的な妥当性検証とスキーマ版管理

コメント・アウトする裏に

プログラムの一部をコメント・アウトするということは、プログラマなら一度はやっていると思う。コメント・アウト(無効化する)する時ってどういうときだろう。

  1. 人が書いたコードをそっくり置き換えれるとき
  2. 明らかなバグだと思えるとき
  3. 将来つかえるかもと思ったとき

その他にもありそう。
そんなこんなで、なぜ、「明らかに不要」なコードを残すのだろう。

1, の場合
a) 書いた人に遠慮してる
b) いつでも元にもどせるように
2, の場合
a) ここにバグがあったぞという証拠として
b) バグだと確信できないで、とりあえず残す
3, の場合
a) おもしろそうなコードなので残しておきたい
b) 楽しい技だ

主観的なのでまたもや他にもでてきそうだが。
では、コメント・アウトされたコードを見る側で考えてみる

  1. コメント・アウトされたコードを読むとプログラムの歴史が見えるなぁ
  2. コメント・アウトされたコードを復活できるかも
  3. 前任者の考えが読める
  4. あぁそうだ。まちがいなくこれはバグだ。このプログラムはバグFIXできてるね

これも読む人千差万別。
さて、ではコメント・アウトされたコードが無いコードを目の前にした時はどう感じるか。

  1. プログラムの歴史がみえないなぁ
  2. 過去に書いたコードが無いから、参考になるコードがないよ
  3. 前任者は何を云わんや
  4. ああぁ。どっかにバグがあったとおもったのだけれど

さて、ここまできて非常におかしなことになってると思う。

1, は、
そんなこと考えながらプログラミングする人は居ないと信じたい
2, は、
参考になるコードは自分が編集しているファイル上になくてもいいよね
3, なんて、
これから編集するコードの結果は前任者には関係ないし(近くにいるとして)
4, いたっては
えっ!バグが無いことはいいことでないの?

こう考えると、コメント・アウトされたコードってプログラミングの邪魔になっているとしか思えない。プログラマの実現すべきはテストを通って仕様を満たすプログラムだ。その実現を目指して書くのだから、昔のことや、バグあっただの無かっただのは関係ないし、さらに、前任者にこれから実現すべきことを説明する余裕があるだろうか。唯一役に立ちそうな過去のコードやテクニックを参考にするという目的は、他の方法で実現が十分可能だ。

そこで、プログラマは自分が抱える本当の目的を達成するために、いつもコメント・アウトされたコードは削除してコードを極力きれいにしておくのがよいと思う。特にプログラム編集者が複数になり、さらに、何度も何度も編集を繰り返す場合は。そして以下のようなメリットを享受することができるのではないか。

  1. プログラムを読むとき、実際に動くコードの流れに集中できる。
  2. 改訂を入れ終えたとき、再度仕様と照らし合わせてコードを読む。その時にコメント・アウトコードに目移りしない。
  3. ある関数がテストに通ったとき、その関数には完全にバグが無いことと、バグの痕跡さえも無いこと、復活するコードのかけらさえなく。唯一自分が改訂したコードがあり、それが動くと証明できる。
  4. なにより、改訂対象となったコードの全てを掌握した気持ちになれるし、結果、そんなアナタの書いたコードは一辺の曇もなく明解で、見た目もきれいであるに違いに無い

そして、結局のところプログラムの質を維持することに貢献し、結果、ユーザに喜ばれる。これはプログラマにとっても喜ばしいことだと思うのだが。(※)
続きを読む コメント・アウトする裏に

Eclipse応援

オラクルの元幹部がオープンソースのEclipseが初代事務局長に
CNET Japan 5月31日記事。Eclipseはアプリケーション開発統合環境。特に Java & WEB 開発で威力があるようだ。個人的にもEclipseのグラフィックライブラリであるSWTをつかったアプリケーションを作成するためにインストールしている。(※)
Eclipseの良いところは Emacs に似てプラグインによって拡張が可能なところ。現在でもCVSを使用できるようにしたり、UMLドキュメントを書けたりと、開発サイクルに必要なツールがそろっている。また、開発言語も選択できる。Javaはもちろんのこと、PHP、C、C++、C#、Ruby、さすがにVisualBasicは無いようだけど、一通りの言語は使える(※2)
開発環境なんて好みの問題といわれるけれど、プロジェクト規模が大きくなればチーム開発せざるを得ないため、開発環境の統一は開発コスト削減の重要なファクタだ。Eclipse の今後の成果によっては選択の第一候補になりうる。
続きを読む Eclipse応援

AwsAsinてすと

柴田(ひ)さんは、AwsAsinというMovableType用 Amazon.co.jp の書籍等データを引っ張って来るPluginを作成した。ネギ師匠がHNS用に作成したものを移植したものだ。以下の様な出力ができる。

Amazon.co.jp のデータベースにある商品ならASINコードを指定するだけで書籍でもDVDでも引用紹介が可能となった。柴田(ひ)さんネギ師匠に感謝。
続きを読む AwsAsinてすと

HORB

最近HORBにはまっている。最初はDocumentオブジェクトをサーバからクライアントへ単純に転送したいだけだったのだったが(*1)、ソースコードとは別途に定義など書かずにオブジェクトを分散できるところの凄さにいろんなシステムで利用できるなと思いを広げている。
メソッドの同期、非同期呼び出しや、非同期実行時のメソッドの完了調査、コールバックメソッドの登録などを若干のお約束に従えば簡単に記述でき、分散オブジェクトのメリットを十分に受けることができる。
今はちょうどサーバ側のイベントをクライアントがどうやって受け取るかを調べている。これが可能ならばいま進めている仕事に利用可能だ。
HORB日本語のホームページ
続きを読む HORB