追っ手から逃れるシステム

小さい簡単なシステムでも、工夫次第で追っ手から逃れることができるという良い例が目の前にある。
とりあえず、手法として取り入れやすいものをあげておこう。

ドキュメントは残さない
基本です。手がかりを与えてはいけません。
ドキュメントにうそを混ぜる
契約上ドキュメントを作らざるを得ない場合、実際とは違う記述を織り交ぜておきましょう。その場合でも、全体像がわかるようなドキュメントは書かないこと。
単純な処理でもテンプレートメソッドパターンなどを使って複数のクラスに分散させる
複数のクラスを見る必要があるため見通しがわるくなり追っ手から逃げやすくなる。さらに、一部の変更がどこに影響があるかわかりにくくなるため、変更も行いにくくするという効果がある。
ちょっとした処理は15行ルールの名の下、メソッドを分割する
このとき別のクラスにメソッドを置くようにすると、さらに効果的。上から下に順に読めばいいようにしてしまうと、すぐに把握されて修正変更やりやすくなってしまう。ただし、センスがないと逆に見やすく追いやすくなってしまう。
似たようなパッケージを複数作って似たような処理を分散させる
ある処理がどのパッケージのどのクラスに書かれているかわかりにくくすることで追っての目をくらますことができる。
データベースの機能は使わない
シーケンスや制約などのデータベースの機能を使わず、名前の一致でデータを関連させたり、プログラム中で連番を振ったりすることで、データ構造が把握されてしまうことを防ぐことができます。
区分などはコード中に持たせる
区分コードの意味を把握しづらくして、データの種類が把握されてしまうことを防ぎます。定数を定義する場合は、なるべくその定数を使わないことでいっそう追っ手の追及から逃れやすくなります。
手法は複数組み合わせると効果が大きい
これらの手法を組み合わせることによって、「なんとなく関係ありそうなところをいじったら修正ができた」とか「なんとなく追ってたら全体が把握できた」などという甘ったれた姿勢のプログラマを遠ざけることができます。ソースコードのすべてを一字一句読まなければ変更できないようにすることで、システムに精通した強いプログラマにしかさわれないようにするのです。こうしてシステムを変更や修正から守ることができます。あなたが作ったオリジナルのプログラムが保ち続けられるのです。

こういう工夫を自然にやれるところにセンスを感じます。泣きそう。

JavaIDEのこれから

Eclipse3.1の正式版が出たようで、ダウンロードできない、っていう書込みが目に付きます。
LanguagePackはいつでるの?とか。
で、ステキ機能がイカスっていう書き込みは見当たりません。
Eclipseはその性格上、プレーンな機能を提供するだけなので、ステキ機能は搭載されないんですね。
ステキ機能はプラグインとして別に提供されます。


これが、マーケティングとしてはマイナスに働くと思うんですよ。
NetBeansの場合は、4.0→4.1→4.2と、派手な機能がゴンゴン搭載されていってます。
ところが、Eclipseの場合は、バージョンアップしても地味に変わるだけ。
さらに、それまで使ってたプラグインは、新しいバージョンに対応するまでしばらくおあずけ。
つまり、Eclipseって、バージョンアップしたときのメリットが、マーケティング的に非常に弱いと思うんですね。


NetBeansは、まぁ、プラグインをドンドンバンドルしていけば、なんかバージョンアップして高機能になったように見せれるわけです。
Eclipseの場合、ステキ機能がプラグインとして用意されたり、プラグインにステキ機能が搭載されたりしても、それは、+αの部分が変わるだけで、Eclipseの印象へはあまり貢献しないと思います。
ぼくのこの文章を読んでいるような人は、最新のプラグインの存在とそのよさを追っかけれると思うんですが、そうではない人の多くにとって、Eclipse本体を追いかけるのがやっとで、プラグインのバージョンアップまでは追えないんですね。新しいプラグインなんかは存在を知られること自体が少ないと思います。
Eclipseというだけで雑誌や書籍が売れる時期は過ぎていると思うので、WTPも状況として不利です。


NetBeansEJB3対応を見ると、MSのように決め事+ツールを新仕様として出すような姿勢もSunに見えます。
今までは、コードを書くこと前提で補助的にツールがあったわけですが、ツール=仕様のように変わっていきそうです。
来年から再来年にかけて、IDEのシェアが大きく動きそうな気がします。さすがに今年はまだ目に見えた動きは出ないでしょうけど。で、それに伴って、Eclipseマーケティングしやすく変わっていくでしょうね。この文章を見てる人にとっては、好ましくない変化かもしれません。
でまた、そういう動きはMSのツールにも影響を与えるので、ごちゃごちゃといろいろな出来事が起こるのでしょう。例えばBorland・・・。