バージョン - みる会図書館


検索対象: 月刊 C MAGAZINE 2000年4月号
31件見つかりました。

1. 月刊 C MAGAZINE 2000年4月号

ジを見ると , どう見てもサイズも同じ , フ ァイル名も説明のバージョンもほしかった プログラムそのもの , という感じがする。 そうなったらヤルしかない , というわけで , 試しにダウンロードして , それを実行して こういうことをすると , システ みたのだ。 ムが全破壊ということになっても誰も責任 を取ってくれないから , みなさんはこうい う無謀なことはまねしないでください。 運よく , BIOS のバージョンアップはう まくいったのである。結果オーライ。これ というと , 少しは で問題が解決したカ 進歩したのだが , なぜかまだ 8G バイトし か認識してくれない。 実は , あとから SoIarisFAQ とか見たと ころ , そもそも OS が E-IDE のドライプは 8G バイトまでしかサポートしないと書い てあった。なんじゃそりやと思ったのだが これはどうも本当らしい。 こで 8G バイトといっているの は , OS ではなく BIOS レベルでの認識の話 だから , ちょっと困ったものである。 までということで白旗をあげ , IDE のドラ イプはほかのマシンで LINUX にでも使う ことにして別の方法を考えることにした。 が濃くなるのは・・ IDE がダメなら SCSI である。なんでじゃ , と思われるかもしれないが , 勢いというの は恐ろしいものだ。実は SCSI の外付けド ライプはちょっと高い。といっても , 最近 は 20G バイトで 3 万円程度だ。何となく衝 動買いしたのである。買ってきたのは BUF FALO の Ultra SCSI HDD , DSC-UGTV とい うモデルである。この籀にはセキュリティ・ ロック機能搭載とか書いてあるし , ドライ プを 3 分割できるとか , 対応 OS が Windows とか MS-DOS と MacOS 8.6 対応とかなって いるが , UNIX の U の字も出てこない。こ のドライプ , Sola ⅱ sx86 に使えるのだろう か ? しよせん SCSI だ , と強気な態度に 出て買ってしまうのである。 さっそく箱を開けたら , 「 DSC-UGTV シ リーズの対応 SCSI インタフェイス」という 紙が入っていて , SCSI インタフェイスの 対応一覧表が書いてある。私が使っている のは Adaptec の AHA-2940U というものだ いちおうメジャーだと思ったのだが , 表に はズバリそれがないのだ。 AHA-2940AU と いうのが書いてある。ちょっと違う。でも 似ているからイケるだろ , と思ったわけだ が , 注釈に気になることが書いてある。 SCSI BIOS のバージョンの欄が 2 種類に分 かれていて , Ver. 1.23 以前の場合は Windo ws 95 でフォーマットできる容量が 8.4G バ イトまで , とかいうのである。 Ver. 1.32 以 降なら OK らしい。さっそくバージョンを 調べたら , しつかり " 1.23 " だった。 まったくもう前途多難としかいいようが ないのだが , Windows95 じゃなくて Sola ris だから大丈夫か・ ・・とも思ったが , さ すがに Ad 叩 tec のサイトにバージョンアッ プのプログラムはあるだろう。はい , あり が , はて , 私の AHA -2940U っ て何物 ? その型番が見当たらない。 AU と U というのは同じなのだろうか ? 念の ためと思って基盤を見たら「 -2940U + 」 とか書いてある。プラスって何 ? どんど ん謎が増えてワケがわからない。 SCSIBIOS のバージョンアッププログラ ムは , 対応するポードごとに違っているか ら , へタに違うプログラムを使ったらえら いことになるような気がする 。こういうと きも , 本来はメールで問い合わせてみるの こは一気にやってしまえ , が筋なのだが とダメモトでやることにした。 ところで , So-net に「 Jong Plugged 」とい うオンライン対戦麻雀サービスがある。イ ンターネット麻雀として , 有名なのが東風 荘だ。以前はよく対戦したものだが , フリ ーで使える反面 , 深夜はとても混雑してい て接続するだけでもまず難しい。接続して からも反応が遅いとか , 途中で落ちるとか , Fig. 1 s 。 is インストール後の状況 トラブルはけっこうあったのだが , Jong Plugged のほうは , 深夜でもスカっと接続 できるし , ゲームもサクサクという感じで 気に入った。ただ , こちらの運が原因で , 5 面待ちが単騎に負けてしかも一発でツモ られたりするのだが。 それはさておき , こは全ツッパリ即リ ーの気分で SCSI BIOS 勝負に出たわけであ る。裏目に出たら SCSI ポードを買う程度 の覚悟がないとやれないので , みなさんは 絶対に真似しないように。ちなみに いう勝負していると , 当たり前だが麻雀の ほうは成績はいまいちだ。 して夜明け ? で , これまたうまい具合にバージョンア ップ成功。やったね。しかし , 勝負はゲタ を履いてもわからない , というのが個人的 な格言である。 SoIaris はこのドライプをち ゃんと認識してくれるのだろうか ? オー ラスの勝負はまだ終わっていない。でも , こまできたらもう流れがきているから ( って何が ? ) , こういうときはうまくいく ものである。ちゃんと Sola ⅱ s は 19G バイト を認識してくれた。 インストール終了後 , いろいろフリーソ フトを入れた状態で df - k の表示は Fig. 1 の ようになった。見てもらうとわかる人には わかると思うが , /usr に 2Gバイトも割り 当てることができると猛烈に楽ができる。 / expo れ / home で 162774K バイト使っても使 用率が 1 % というのも楽しくてしようがな い。しかし , たぶん , ちょっと油断すると これが " file system full " になってしまうの かもしれない , と思っている今日このごろ である。 ( フィンローダ @ⅲ再, FPROG SYSOP) ファイルシステム /p 「 OC /dev/dsk/c2tOd0s0 /dev/dsk/c2t0d0s6 fd /dev/dsk/c2t0d0s7 swap kbytes 0 498271 2061938 0 16557601 546044 使用済み 0 45450 740374 0 162774 1 2 使用可能 0 402994 1259706 0 16229251 546032 capacity 0 % 1 1 % 38 % 0 % マウント先 /proc /usr /dev/fd /export/home /tmp 1 % 1 % フィンローダのあつばれご意見番 167

2. 月刊 C MAGAZINE 2000年4月号

02. す .. ~. -- 、 H EAD Ⅱ E VisuaI Studi0 の次バージョンが一部公開される Products 2000 年 2 月にサンフランシスコで開催 された VBITS (Visual Basic lnsiders Tec hnical Summit) のキーノートセッション において , 米 Microsoft の新 CEO である S teve B 訓 me 「氏から , 次バーションの Vis ual Studio の一部の機能が紹介されまし た。すでに VCDC (Visual C + + Develope rs Conference) で紹介された ATL Server を含めて , VisuaI Studio がどのように進 化していくのかを探ってみましよう。 今回発表された機能はおもに Web ア プリケーション構築を促進する機能で す。従来の Visual Studio は VisuallnterD ev という Web アプリケーション開発用 のツールを搭載していましたが , 次バー ジョンの Visual Studio では Visual C + + や VisuaI Basic でも / ヾフォーマンスの高い Web アプリケーションを容易に構築で きるようになる予定です。 VB げ S で発表 された新機能は , ・ Web Forms ・ Web Services ・ Visual Basic lnnovations の三つです。 Web Forms と Web Service s は Visual Basic と Visual C + + から使用で きます。 Fig. 1 は新規プロジェクトの作成ダイ アログです。これに見られるように , つ いに VisuaI C + + と VisuaI Basic の開発環 境が統合され , ひとつの開発環境で C + + と Visu 引 Basic を扱えるようです。 Web Forms ASP + Web Fo 「 ms と呼ばれる新しいテ クノロジでは , Web アプリケーション を VisuaI C + + やⅥ su Basic から容易に 作成することができます。 Fig. 2 は Vis ual Basic から Web Forms を使用してい る画面です。この図にあるように , 次の 手順で Web アプリケーションを構築で きます。 て , 必要なコードを書く 4. コントロールをダブルクリックし トする 3. コントロールのプロバティをセッ 2. HTML デサイナの上にドラッグする ールを選択する 1 . ツールポックスから HTML コントロ では , 提供が予定されている Web Fo 「 して Web Fo 「 ms を構築できます。 生産性を上げるために好みの言語を使用 じ Web のテクノロジを使用するので , の搭載されている言語のプロダクトで同 配信されます。 Visual Basic や C + + など 換のドキュメントとしてクライアントに ァイルはサーバに置かれ , HTML 3.2 互 され , 実行形式になります。これらのフ フォーマンスを上げるためにコンパイル されます。ソースファイルは実行時のパ イベントに対応するコードによって構成 Web Forms ページは視覚的な内容と 築できるようになります。 様の手順で Web アプリケーションを構 sual Studi0 では , VisuaI C + + からでも同 合と同一の手順です。次バージョンのⅥ 築したり , VisuaIInterDev を使用する場 通常の Windows アプリケーションを構 この手順は , Visual Basic を使用して ms を使用するためにどのような準備を するべきでしようか。米 M icrosoft は , まず多階層のアプリケーションを構築 し , ビジネスロジックを中間層のコンポ ーネントとして作成することを推奨して います。すなわち , Windows DNA(Dis tributed interNet AppIications) アーキテ クチャに沿ったアプリケーションのこと です。そして , それらのコンポーネント 間を ASP を使用して連結します。スク リプトを使用する際は , なるべく最小限 の記述にとどめるようにします。このよ うな Windows DNA を採用したアプリケ ーションであれば , 将来 Web Forms が 登場したときでもスムーズに Web F 0 「 ms の威力を使用することができます。 Web Services と XML 新しい VisuaI Studio では , Web アプリ ケーションを構築する鍵となる XM L を 全面的にサポートする予定です。 Visual Designer と Wizard によって複雑な XML データを自動的に作成できます。これら により , 多階層アプリケーションのクラ イアント層 , 中間層 , テータストレージ 間のデータ交換を XM L を通じて行った り , XML データを Web'N—ジや Windows アプリケーション上で表示することが簡 単に行えるようになります。 ATL Server ATL Server は次バーションの VisuaI C + + に含まれる ATL (Active TempIate Li b 「 ary ) の拡張セットで , IIS(Internetlnf ◎ URL http://msdn.microsoft.com/vstudio/nextgen/ 156 C MAGAZINE 2000 4

3. 月刊 C MAGAZINE 2000年4月号

ースで仕様が完成するまでの間は , 自分の 性のほうが高くなるのではないかと期待で 位互換性が保証されている。つまり保守リ クラスのなかでこのインタフェイスを実装 リースの間では ( バグに依存している部分 きる。 Java のメリットであるアーキテクチ するのは避けるべきである」と明示されて ャニュートラル性とは , Java の実行環境は を例外として ) , どのバージョンでコンパ いるのである。であるから , いうまでもな すべて同じアーキテクチャであるかのよう イルしたバイナリを , どのバージョンの実 くこれは SMI を責めるべき問題ではなく , に働くことを意味しているはずであり , 行環境に持っていっても正常に動作する。 「避けるべき」とされたことをしているのが れがまったく真実であれば , どんなプログ 一方 , 異なる機能リリース ( 1.1. x , 1.2. x な 問題なのである。ただ , Java の言語仕様で ど ) の間では , バイナリレベルの上方互換 ラムもどんな実行環境に持っていっても動 はこういったことも起こりうることを知る 作するはずである。しかし現実には , この 性は保証されるものの , 下位互換性は保証 ための例としてここで取りあげた。 点についてもそうはいかない。 されない場合がある。つまり , 低バージョ まとめると , ソースの互換性については たとえば , J2SE に付属している「 Java2S ン ( たとえば 1.0. x ) でコンパイルしたバイナ 次のようにいえる。 DK 旧バージョンとの互換性」という文書に リは , 高バージョンの環境での正常な動作 ①コンパイルする環境に応じて , その環 よれば , Fig. 15 に示すような内容のことが が保証されている ( これまた , コンパイラ 境が提供している機能だけを使う。具 記されている。そして一般的な原則として のバグに依存している場合を除く ) が逆に 体的には言語仕様の拡張と , クラスラ は , 保守リリース ( 1.1.1 , 1.1.2 など ) の間で 高バージョン ( たとえば 1.2. x ) でコンパイル イブラリの機能変更について注意する。 は , バイナリレベルの上位互換性および下 したバイナリは , 必ずしも低バージョン ( た Java 2 の A 曰仕様書には「 Since( 導入さ lSt JDK 1.1 だけがコンバイル可能 ( JDK 1 .0 , SDK 1 .2 でもコンバイルできない ) れたバージョン ) 」として表示されてい る ( 場合が多い ) のでこれを参考にする とよい。 ②インタフェイスやアブストラクトクラ スを実装した場合 , 元のインタフェイ スやアブストラクトクラスに対して , 後のバージョンで機能追加が行われた 場合古いソースがコン / ヾイルエラー になる可能性がある ( 上記 Shape インタ フェイスのケース ) 。 ava の バイナリ互換性 次に , ノヾイナリ互換性について調べてみ よう。 Java の特性を考えると , ソースの互 換性よりもバイナリの互換性のほうがはる バイナリの互換 かに重要であるとともに Fig. 15 SDK 1 .2 と旧バージョンとのバイナリ互換性 ①バイナリレベルでの上位互換性は保たれる すなわち , JDK 1 .0 または 1 . 1 のコンバイラが作成したクラスファイルは , SDK 1 .2 の環境で正常に動作する。ただし , JDK 1 .0 あるいは 1 . 1 のコンバイラにバ グが存在していて , それが SDK 1 .2 では修正されている場合には , 動作が変わったり , あるいは動作しなくなる場合もありえる。 ②バイナリレベルでの下位互換性は一般に保証されない SDK 1 .2 で新しく定義された A 曰を使っている場合 , JDK 1 .0 あるいは 1 . 1 の実行環境では動作しない。 SDK 1 .2 で新しく定義された A 曰は使用せず , JDK 1 .0 ま たは 1 . 1 で定義されている A 曰だけを使っている場合 , それそれ JDK 1 ℃あるいは 1 . 1 の実行環境で動作するが , これは完全に保証されていない。コンバイル時に -target 1 .2 を指定すると , JDK 1 ℃あるいは 1 . 1 の VM では動作せず , SDK 1.2 ( 以降 ) の VM 専用となる。 5 import )ava. awt. * ー public c lass List5 { / / Shape は JDK 1.1 で導入されたが、 / / その仕様は SDK 1.2 で拡張されている。 interface I nterface extends Shape { pub lic String whoAreYou ( / / 内部クラス c lass MyNestedCIass implements MyInterface { public string wh0AreYou( ) { return getCIass( ) . getName( 潺 } public RectangIe getBounds ( ) { て eturn new Rectangle( 潺 public List 引 ) { / / 内部クラスのインスタンス MyInterface myClass1 = new MyNestedCIass( / / 上記内部クラスの無名サブクラスのインスタンス MyInterface myClass2 = new MyNestedCIass( ) { / / それぞれのオブジェクトのクラス名を調べる system. out. println( nmyC lassl : 十 myCIass1. whoAreYou( ) system. out. println( "myc lass2 : ″十 myCIass2. whoAreYou( ) public static VOid main( String[ ] args ) { List5 my = new List5( 70 C MAGAZINE 2000 4

4. 月刊 C MAGAZINE 2000年4月号

これは List 1 ~ 4 の例を見れば明らかなよう らのプログラムは , 先に示した List 1 , 2 の に移植性に注意している言語であるとはい え , ある開発環境で新たに仕様変更を受け 例とは違って , JDK 1.0 の言語仕様の範囲 に成立しない。したがって原則としては , 古いバージョンの環境でもコンパイルでき た言語機能やクラスライプラリを利用した でコーディングされていて , 構文的には List るようなソースを記述するのであれば , 新 場合には , そのソースコードは古い開発環 3 , 4 がコンパイルできない理由は見当たら しいバージョンで追加された機能を用いて ない。これらのソースがコンパイルに失敗 境ではコンパイルできない。具体的な例と はならない。それが言語の構文 ( たとえば して , 仕様変更のあった言語機能を使った するのは , JDKI. 1 あるいは SDKI. 2 で新し 内部クラス , 無名クラス , 無名配列 , イン くクラスライプラリに追加されたクラスあ List 1 , 2 をご覧いただきたい。 List 1 では るいはインタフェイスを利用しているため スタンス初期化子 , s ⅲ c など ) であれ , Li JDK 1.1 で導入された無名配列という機能 である。 Java の場合 , ソースのなかで参照 st 3 , 4 のようにあるバージョンから付け を使っているため , JDKI. 0 の開発環境で 加えられたクラスやインタフェイスであれ , はコンパイルできない。また List2 では SDK しているクラスあるいはインタフェイスが あるいはあるバージョンから付け加えられ 1.2 で導入された s ⅲ c というキーワードを コンパイル時に解決できなければ ( 見つけ られなければ ) , コンパイルエラーとなるの たメソッドやフィールドを参照するだけで 使っているため , JDKI. 1 以前の開発環境 ではコンパイルできない ( もちろん , も下位互換性は成立しなくなる。また , 同 だ。 こで s ⅲ c を使っていること自身には深い意味 これらの例の特徴をまとめると , いずれ じ SDKI. 2 というバージョンであっても , J2 はない ) 。 もソースレベルにおいては上位互換性は成 EE に固有のクラスライプラリを利用したソ 別の例として , 仕様変更のあったクラス 立するが , 下位互換性が成立しないサンプ ースは , J2SE の環境ではコンパイルできな いし実行もできない。これは SMI の純正処 ライプラリを用いているために古いバージ ルであった。ソースの上位互換性とは , 古 理系環境にかぎらず , ほかのべンダがリリ ョンではコンパイルできなくなる List 3 , 4 いバージョンの環境においてコンパイルで を示そう。 List 3 は JDK 1.1 以降でなければ きたソースは , 新しいバージョン ( 上位バー ースしている言語環境でも同じである。べ コンパイルできず , List4 は SDKI. 2 以降で ジョン ) の環境でもコンパイルできること ンダ固有のクラスライプラリを利用した場 合 , ソースレベルでもバイナリレベルでも なければコンパイルできない。しかしこれ を意味する。下位互換性はその逆であるが , ほかの環境に対する互換性はなくなる。 ist SDK 1 .2 以降でないとコンバイルできないソースプログラム 2 ソースレベルの上位互換性が c lass List2 { 成り立たない場合 public static VOid main(string[ ] args) { int n = (args.length = lnteger. parseInt(args[O] int k = (args.length く 2 ) ? 2 lnteger. parselnt(args[l] 「古い環境でもコンパイルしたければ , 新 system. out. println( fractions(k) [n] 規の機能 ( それが言語の構文的なものであ れ , クラスライプラリであれ ) を使っては / / strictfp のキーワードは SDK 1.2 で導入された。 static strictfp d0 厄 [ ] fractions(int k) { ならない」とか「べンダ固有の機能を使えば , return new dO 面厄 [ ] { 1.41421356 * k, 1.7320508 * k, 2.1474836 * k, ソースの互換性がなくなる」というのは , い わばあたりまえである。これはべつに Java SDK 1 .2 以降でないとコンバイルできないソースプログラム / / Comparab 厄というインタフェースは SDK 1.2 で追加された。 class MyCaIendar imp lements comparable { String str; MyCaIendar(String s ) { s セて = 町 } pub lic int compareTo(Object 0 ) { return の } public VOid heIIO( ) { system. out.println(str) , JDK 1 . 1 以降でないとコンバイルできないソースプログラム 1 import java. beans. ヨ / / Beans クラスは JDK 1.2 で追加された。 C ー ass MyBeans extends Beans { String str; MyBeans ( string s ) { super( str = 町 } 3 public VOid he Ⅱ 0 ( ) { System. out.println( s して ) 1 class List3 { public static VOid main( string[ ] args ) { MyBeans my = new MyBeans( "he Ⅱ 0 , world" my. hello(); public class List4 { pub lic static void main( string[ ] args ) { MyCaIendar my = new MyCaIendar( "he Ⅱ 0 , world" my. hello(); 68 C MAGAZINE 2000 4

5. 月刊 C MAGAZINE 2000年4月号

特集 2 Java の変遷と互換性を探る が特殊なわけではなくて , どんな言語であ っても , あるバージョンで機能拡張が行わ れ , その新機能を用いてソースを記述した 場合には下位互換性が成立しなくなる。プ ログラマならば誰でも承知のことだ。とこ ろが , Java の場合ちょっと気をつけるべき は , ソースレベルの上位互換性が常に成立 するとはかぎらない点である。つまり , あ るバージョンではコンパイル可能であった ソースが , それよりも新しいバージョンで はコンパイル不可能になるケースがあるの だ。それも旧バージョンのコンパイラにバ グがあったからといったことではなく , 後 のバージョンで機能が拡張されたことが原 因で古いソースがコンパイル不能になるこ とが起きるのである。具体的には List5 をご 覧いただきたい。何の変哲もなさそうなプ Fig. 13 JDK 1.1 のインタフェイス Shape の定義 pub lic interface Shape ( ログラムである ( とはいえ , 説明のために かなり作為的にコーディングしているので , インタフェイス Sh 叩 e の本来の意味からす れば明らかにおかしい使い方になってい る ) 。 List5 の問題は , Sh 叩 e というインタフェ イスを利用していることにある。インタフ ェイス Shape は , もともと Graphics オプジ ェクトのクリッピング機能を強化する目的 で JDK 1.1 で導入されたものだ。 JDK 1.0 で は , 描画の際にクリッピング領域 ( 何らか の理由から表示したくない領域 ) を設定す ることは ( メソッド cIipRect を用いて ) できた ものの , 一度設定したクリップ領域を保存 しておくことができなかった。そこで JDK 1.1 では「任意の形状」を表すためのインタフ ェイス Sh 叩 e を導入し , このオプジェクト / / インタフェイス Shape を implements するには , / / このメソッドだけを実装すればよかった。 pub lic Rectang 厄 getBounds ( Fig. 14 SDK 1 .2 のインタフェイス Shape の定義 public interface Shape { 〃インタフェイス Shape を imp lements するには , / / 以下のメソッドをすべて実装する必要がある。 public Rectangle getBounds( public Rectangle getBounds( public RectangIe2D getBounds2D( public boolean contains (double x, d0 厄 y); public boolean contains (double x, double y, double w , d0 曲厄 pub lic bO 引 ean contains ( Point2D p public boolean contains (RectangIe2D て public boolean intersects(double x, d0 面厄 y, do 厄 w, do 面厄 h); public boolean intersects(Rectangle2D て pub ー ic path I に e て atO て getpathl terator ( Aff ineTrans form at public PathIterator getPathIterator(AffineTransform at , double f latness); を用いてクリップ領域を保存したり , あと からまた同じ Sh 叩 e を用いてクリップ領域 を再設定できるようにした。 ところが , JDK 1.1 ではこのインタフェイ スに定義されているメソッドはただひとつ だった ( Fig. 13 ) 。しかし SDK1.2 では , Java 2D パッケージの導入に伴って , このインタ フェイスが大幅に拡張され , オーバロード されたものも含めて合計 10 個のメソッドを 備えることになった (Fig. 14 ) 。 その結果何が起きるかというと , List5 に 示したソースでは , Shape を implement して いるにもかかわらず , 実装を与えているメ ソッドは getBounds だけであるため , SDK 1.2 でコンパイルした場合には残り 9 個のメ ソッドの実装が不足していて , クラス MyN estecCIass は abstruct クラスにならざるをえ ず , そのインスタンスを生成することはで きなくなる。インタフェイスを実装してイ ンスタンスを生成できるクラスにするため には , そのインタフェイスが定義している すべてのメソッドの実装を与えなければな らないことを思い出していただきたい。し たがって , List 5 のソースは SDK 1.2 ではコ ンパイルに失敗する。つまり , SDK 1.2 で は JDKI. 1 に対してメソッドが追加されたた め , それらを実装していない List5 のソース はコンパイルエラーになってしまうのだ このことはべつに筆者の発見というわけ ではなく , JDKI. 1 の API ドキュメントには ちゃんと次のように警告されている。 This interface will be revised in the upcoming Java2D project. ーー中略 Since may su 「 s 0 「 expanded in the future, developers should avoid implementing this interface in their own classes until it is completed in a later release. つまり , 「将来の Java2D プロジェクトに おいてこのインタフェイスは見直される予 定である。ーーー中略ーーこのインタフェイ 特集 2 Java の変遷と互換性を探る 69 るかもしれないので , 開発者は , 後のリリ スは将来拡張されたり置き換えられたりす

6. 月刊 C MAGAZINE 2000年4月号

M02 す HEADLINE ormation Server) 用の Web アプリケーシ を用意します。この . SRF ファイルには まとめ ョンを構築できます。 ATL Server は ISA HTML で記述しますが , そのなかに { { T Ⅲ 今回発表された機能は , 次バージョン 円を通して IIS にネイティブにアクセス e } } のようなニ重の中括弧でくくった単 の Visual S 扣 di0 に予定されている機能の 語を用意します。 ATL Server を使用し するクラスを提供します。 なかでもおもに Web アプリケーション て作成した DLL は , この単語をキーワー アクセスが集中すると予想される We 構築を促進する部分です。この先 , 3 年 ドとして何らかのアクションを起こした b サイトでは , 処理を行うコンポーネン 後 , 5 年後を考えたときに , Web アプリ り , この単語自体を書き替えることがで トのパフォーマンスの低さがネックにな ケーションの重要性は Windows アプリ きます。現時点では米 Mic 「 0S0 負は He 恥 る場合があります。また , 現在の VisuaI ケーションを超えているかもしれませ C + + でこのようなコンポーネントを作成 WorId と書き替えるような例しか提示し すると , インプリメントすべきコード数 ていませんが , 使い方によっては HTML ん。マイクロソフトは Windows DNA ア ーキテクチャを推奨していますが , Win に多彩な表現を加えることが可能になり がかなり多くなります。 ATL Server は dows DNA に準拠したアプリケーション このようなアクセス数の多い Web サイ そうです。 であれば容易に We b への展開が行えま トや , 複雑な処理を行うためにトランザ Visual BasiC lnnovations す。このようなインターネットのさらな クションごとの対応時間がかかってしま る普及を見越して , 次バージョンの Visu Visual Basic の文法にも手が加えられ うと予想される場合に威力を発揮しま Studi0 はより Windows DNA に向けて ています。 Visual Basic 6.0 まではでき す。 進化した開発ツールになるもようです。 なかったクラスの継承やメソッドのオー また , ATL Server Application Wizard 気になる発売時期についてはまだ先 バロードなどや try ・・ が用意されるので , 作成された雛型にコ ・・ catch ・・・・・ finally で , どうやら 1 年の発売になるようです。 ードを埋め込むだけで ATL Server アプ といった例外処理など , C + + でサポート なお , 今回紹介した内容は , まだ開発途 しているオブジェクト指向の文法が反映 リケーションを構築できます。 中であり , 発表されている機能や開発環 されています。現行バージョンでもコン では , 具体的に ATL Se Ⅳ e 「でどのよ 境のスクリーンショットは変更される可 パイラバックエンドは Visual C + + のコン うなことができるか見てみましよう。 A 能性があります。今後 , 日米で開催され パイラバックエンドと同様のものを使用 TL Se rve 「で構築した D LL ファイルは , る TechED, VCDC などでさらに新機能 Web サイトごとの旧 A 曰 DLL として使用 しているので , より Visual C + + のコンパ イラを活用できる形式に文法が進化して が発表されると予想されます。 されます。この DLL のほかに . SRF ( サー ( 田中らば ) フと読みます ) という拡張子のファイル います。 Fig. 1 新規プロジェクト作成ダイアログ Fig. 2 公開された次バージョンの Visual Studio の開発画面 ! W 新 F 復ー A を 日 on Te 日 0X1 團玳ル 01 み ロ , 日 5 ⅱーヨ恒矼一ヨ F2J i ( ー P ー・ ct ・ 3 ー山 W ・ bB tonf OnCIick(< し oa 、畩ト凱総 ( セ d. 当 d localho 、 t 洋、 1 、一 0 「 k 、 2 - M に「 0 、 Ott H 谷、に一 d を丨月 、に w P ロリに ( を ゴロ : 5 洋 M 0 : 2 ・い国 0 物・ 日 0 明いト、 2 D設飜 . xrd ーに黻 60 ー 5 ッ女ィれ . A . W 吐 ( れ , 釜ー、地 ( + + 円 0 第 ( ・ロ、物 FO メ 0 。し : ー合 01 ロ 5 物 [ 川 0 炊 ts 0 」い ves ーい一・ entprice CurrentVdlue い「いド、 物 # # を第ツ # を を・ま Cre 00 「旧 wW ⅸ 8 翁第取にトム。求加 店 0 と 20 試最 : ′め炉呶曾ⅸ e ・ WeE 新研冊廴 ( 回 0 ド : ″ 3 MONTHLY HEADLINE 157

7. 月刊 C MAGAZINE 2000年4月号

Java 環境の変遷と現状 Java は短期間で成長してきたプログラミング言語である。互 換性が重要課題となっているプログラミング言語では , その 変遷を知ることはとても大切である。この章では現状の Java 環境がどのように成り立ってきたのかを紹介する。 Java 実行環境の TabIe 2 Java 各系列の正式版のリリースの経緯 別な環境向けの API セット ) の仕様が定めら るサプセットとでもいうべき実行環境 ( 特 本流の JDK 以外に , さまざまな環境に対す 修正を施すという姿勢を通してきた。また ートや改善の提案を受けてシステムの拡張 , ネット上に公開し , ユーザからのバグレポ ルバージョンに至るまで積極的にインター 滝レベルからファイナ きた。それも , 。 る開発ツールも一貫してフリーで提供して ではなく , コンパイラ処理系をはじめとす SMI は , Java 言語の仕様を公開するだけ れてきた。各バージョンについて , リリー スされた時期と内容を Table 2 に示す。この なかには , 処理系の正式版のリリース時期 を記したものと仕様の最終版のリリース時 期を記したものがあるので注意してほしい。 ここで示したのは , いわゆるメジャ なお , ーバージョンアップに相当する部分である。 これ以外に , たとえば JDK 1.1 と SDK 1.2 の 間には , 1.1.1 , 1.1.2 ・・・・・・ 1.1.7 , 1.1.8 といっ た具合に , おもにバグフィックスが目的の マイナバージョンアップが行われているの だが , 煩雑になるため割愛した。さらに正 式版の公開に先行して , 住版や滝版が公開 されるのが常であるが ( 原稿執筆時点では 評価用として SDKI. 3 滝が公開されている ) , 最初の JDK の正式リリース これについても省略した。 こでネーミングについて少々注意して おきたい。当初は , 開発システムを JDK ( Ja vaDevelopmentKit) と呼んでいた。しかし 1.2 については , 最初のころは JDK 1.2 と呼 んでいたのだが , 途中で名前が変わり , 現 在では Java 2 SDK( Software Devel 叩 ment Kit) 1.2 といっている。しかも , ややこしい ことに Java2Pla 面 rm という表現も使われ ている。 SMI の定義によれば , 「 Java プラッ トホーム」とは Java VirtuaI Machine および Java コアクラスから構成されるもので , そ れが動作しているオペレーティングシステ ムには依存せず , 「 100 % Pure Java プログラ ム」 ( Java の実行環境のみに依存することで , 説明 リリース時期 1996 年 1 月 1996 年 1 0 月 1997 年 2 月 1997 年 9 月 1997 年 1 0 月 1998 年 7 月 1998 年 11 月 1998 年 1 2 月 1999 年 1 月 1999 年 6 月 1999 年 11 月 1999 年 1 2 月 1999 年 1 2 月 58 C MAGAZINE 2000 4 JDK 1 ℃ バージョン JavaCa 「 d API(Spec) JDKI . 1 PersonaIJava 1 .0(Spec) JavaCard 2.0 APl(Spec) PersonaIJava 1 . 1 (Spec) EmbeddedJava 1 .0(Spec) Java 2 Enterprise Edition(J2EE) PersonaIJava 1 .2(Spec, public 「 eview) JavaCard 2.1 APl(Spec) Java 2 Mirco Edition(J2ME, Spec) EmbeddedJava 1 . 1 (Spec) Java 2 Standard Edition(J2SE) Sma 「 tCa 「 d 用の Java A 曰の最初のリリース JDK の最初のメジャーバージョンアップ ネットワーク機器用組み込み A 曰の最初のリリース JavaCard A 曰のメジャーバージョンアップ ネットワーク機器用組み込み A 曰の Ve 「 . 1 . 1 EJAE の改良版。 JDK 1 . 1 .7 べース SDKI .2 Standard Edition の正式リリース より小さい機器組み込み用 API(EJAE ) の最初のリリース 最初の Java 2 工ンタープライズエディション ネットワーク機器用組み込み A 曰 1 .2 Sma 「 tCard 用 Java API 2.1 組み込み用 Java の仕様。 KVM という小さな VM の仕様も含む

8. 月刊 C MAGAZINE 2000年4月号

特集 1 プログラミン % 禁じ手 ことにもなります。 いきなりキーボードを打つ これもべテランになればなるほど習慣に なるパターンです。ただし , 頭のなかでも んもんと考えても時間のムダになるので , 試作コードを作ってみるというのなら意味 はあります。 本当に困るのは , 単にめんどうくさいか らとか怠慢な理由で設計段階を省略するこ とです。複雑なプログラムを作る場合 , や はり事前に準備や設計が必要ですし , その フェーズで洗練させることで , コーディン グがスムーズに行えますし , バグも減りま す。筆者が見ていて情けないと感じるパタ ーンは , 自分は天才プログラマだと勘違い して , 思いっきをキーボードでダダダダッ と打ち込み , そこで失敗をしたらどこがま ずかったか反省もしないというものです。 しかも , 失敗したコードを破棄するのでは なく , もったいないからと流用をして , さ らにドッポにハマっていくパターンが少な くありません。 ある意味 , この人たちは , まともなお手 本を抜きに育った悲劇のなかにいるのです。 願わくば , 「どこがいけなかったのか , 自 分で悟ってください」といいたいところで すが , この手の人たちの辞書には「反省」と いう言葉はないようです 試作コードを本番にそのまま流用する 試作コードというのはとりあえず思いつ きや , プログラムのテストのつもりで簡単 に作成したコードを指します。しかし , た いていの場合 , 試行錯誤をしているため , やたら汚いコードですし , あとから保守 , 追加することを考慮せずに作っているため , 試作コードを改良するよりも一から作り直 したほうがマシだというようなものです。 企業の研究所と呼ばれる部署にいくと , この手のコードには不自由しません。気の せいか , 本番バージョンのコードを見ても 「試作品」の香りがします。ときにはコード を作ったプログラマたち自身が「試作品」で はないかと思うこともあります。 無意味な複雑さとテクニックに凝る これもある種の人たちの「趣味」で起きる パターンです。前述した「分量に関する禁 じ手パターン」は , こから発生するので しよう。 人間は他人に自慢をして優位に立ちたい という欲求を持つ生き物だといえます。そ れ自体は本能のようなもので , 仕方ないか もしれません。しかし , これを仕事上でも やられると , 結局は本人の自己満足に終わ ったり , 単にハタ迷惑なだけです。願わく ば , この手の人たちが 1 日も早く更生され んことを。「策士 , 策に溺れる」という有名 なことわざもありましたね。 工ラーチェックをしない ( バラメー タチェックをしない ) これは , 一種の不注意ですがチェックを かけると速度が落ちるからという理由で , わざと除去している例もあります。これは 実際に某大手企業で目撃したのですが「こ の関数ではパラメータチェックなどしてい ない。なぜなら , この関数を呼ぶ段階で正 しいパラメータであるべきだからだ」という 恐ろしい注意書きがありました。 筆者のような人間不信者は , 「この注意 書きひとつで世のなかを渡ってしまおうと いうのはよっぱど勇気がある人なんだな , うらやましいな」と感心してしまいました。 たとえていうなら , 家の玄関に「セールス マンお断わり。泥棒お断わり」という張り 紙をしている家を見かけますが , それに近 いのではないかと思います。 プログラマとしては「人間は確実にエラ ーをするもの」という前提を忘れてはいけ ないでしよう。また速度を理由にチェック を外す場合でも , できれば asse れのような マクロを利用して , デバッグバージョンで 十分にチェックをしたうえで , 本番バージ ョンで除去するべきでしよう。 「汎用」にこだわって 巨大仕様にする 特集 1 プログラミングの禁じ手 47 は , たいてい用意されているものです ( 固定 作する人がいます。基本的な操作に関して いる機能を利用せずに何でもかんでも自 すでに標準ライプラリとして用意されて ライブラリを使わずすべて自作する たりします。 情報にアクセスされることで支障をきたし のみを利用するべきなのに内部のよけいな したり , 本来は公開されたインタフェイス が使うべき必要な情報なのかわからず混乱 に , 何でもかんでも公開すると , どこまで ラムを作られてしまうことがあります。逆 でに同じものがあるのに似たようなプログ い勝手の悪いプログラムを提供したり , す ために , 外部に必要な情報を伝えきれず使 す。どこまで公開してよいのかわからない うのがハッキリしないというものがありま 公開し , どこまでを内部に隠蔽するかとい となるもののひとつに , どこまでを外部に チームプログラムをする場合に落とし穴 外部公開と内部仕様があいまい ム作りをするほうが得策というわけです。 ことで小回りがきき , 効率のよいプログラ 適正なバランスと適正なサイズに収める することもありえます。 定のない機能のために時間と労力をムダに 使いもしない仕様を抱えて , 結局 , 使う予 とになりかねません。あるいは , 最初から たプログラムの検証やバグ取りで苦しむこ プログラムが肥大化したり , その肥大化し 汎用にすることで , 巨大な仕様になり , ける危険を抱えるわけです。 美人を狙うために細かい部分で焦点がポヤ という落とし穴もあります。要するに八方 葉です。しかし , 「万能薬は効き目が薄い」 汎用というのは , ある意味 , おいしい言

9. 月刊 C MAGAZINE 2000年4月号

年料メールマガシン購読募集中 Tu 「 boList 、エンドユーサー様向け ) TurboNet(/<—トナー様向け ) 日本でトップシェアの L i n u ミいえば T u 「 b 0 L i n u x 。 が実現できるのです。開発環境からメールまでいろいろ揃った、使える L i n u x です。 T u 「 b 0 L i n u x ではひらめいた HIGH PER FFMANCE LINLJX ロ PERATING SYSTEM TLJ R 日ロし一 N 凵 X 日吾版 4. ロ 日本語版 4.2 TLJ R 日ロし一 N LJX スタンダードバージョン価格 9 , 800 円 ( 税別 ) オフィス・スイート &TurboLinux 価格 29 , 800 円 ( 税別 ) ・ ATOKI 2 SE ・ Wnn6 ver. 3 ・ RYOBI True Type ン Applixware 日本語版・ ATOK12 SE ・ Wnn6 ve 「 .3 ・ OSS ( PCI オプション付 ) ・ SystemCommander Lite ・日 YO 日 True Type フォント 5 書体 ・ OSS ( PCI オプション符 ) ・ SystemCommander Lite ・サポート ( 90 日間 3 インシデント / Web ・メール ) サポーに色 0 日間 3 インシデント / Web ・メール ) ノとひらく OS 、 TurboLinuxo P R ロ T LJ R 日ロし一しス 書体 T LI R 日ロしけ、し R 0 S ロ H ロ EDITI ロ N 日本語版 6 ふロ S E R VE R TLI R 日ロし一 N LIX SOHO バージョン価格 19 800 円 ( 税別 ) HDE LinuxContr011er fo 「 TurboLinux ・ RAID ・ UPS 対応 SSH ・ SSL ( 商用利用の際には、別途ライセンス料がかかります。 ) RYOBI True Type フォント 5 書体・ APC PowerChute Plus サポート ( 90 日間 3 インシデント / 電話・ Web ・メール ) TLI R 日ロし一 N リ X 工ンタープライズ / ヾージョン価格 29 800 円 ( 税別 ) ・ BRU ( バックアップソフト ) ・ RAID ・ UPS 対応 ・ SSH ・ SSL ( 商用利用の際には、別途ライセンス料がかかります。 ) ・ RYOBI True Type フォント 5 書体・ APC PowerChute Plus ・サポート ( 90 日間 3 インシテント / 電話・ Web ・メール ) S E R VE R TU 戸日ロ L ー N こ T 凵戸日ロ L ー N ら 1 SOHO Edition ターボリナックスシャパン株式会社 〒 151-0002 東京都渋谷区渋谷 3-3-5 モリモビル 5F w w w. t u r b 0 ⅱ n u x . c 0 . j p く資料請求番号 F04 〉 ◎ 1 9 9 9 - 2 0 0 0 T u 「 b 0 L i n u x J a p a n , K K . A Ⅱⅱ g h tS 「 e s e 「 v e d 米国における L i n u x の名称は、 L i n u s T 0 「 v 引 d s の登録商標です T し「 b 0 L i n u x の名称およびロゴは、 T u 「 b 0 L i n u x ヨ n c . の商標です 記載されている会社名およびロゴ、製品名などは 該当する各社の商標または登録商標です。 T LJ R 日ロ L N 凵 X 雑誌 14325-4 T 1 1 1 4 ろ 2 5 0 4 1 2 0 0 ◎ソフトバンクバブリッシング 凸版印刷 Printed in Japan

10. 月刊 C MAGAZINE 2000年4月号

ONTHLY HEADLINE Topic 米ⅲ p 「 ise / 米 Co 回と合併しコ nte 「 Base の事業部門を 別会社化 C + + BuiIder や DeIphi などの開発製品を販売していた p 「 ise を Cor が合併。旧 p 「 ise は Corel の 100 % 子会社となり , ー大 Linux 企業を目指す。日本法人の対応はまだ未定。また , RDB 製品 の te 「 Base の事業 / 開発していた部門を分離し , lnterBase 社を 設立した。 ・ http://www.inprise.com/ ・ http://www.interbase.com/ 米 Turb0 Linu BM の Java に関するライセンスを取得 旧 M の JDK fo 「 Linux に関してライセンスを取得。同社次期製 品より添付される予定。ほかのディストリビュータも追随する もよう。 ・ http://www.turbolinux.com/ GNUjdoc が GNU Project の Web サイトに掲載 GNU 関連のプロダクトに付属するマニュアルの日本語化を 行っている GNU 日本語ドキュメントバッケージ (GNUjdoc) が GNU Project の Web サイト内にある Softwa 「 e ページに掲載。 GNU Project に認識された形で活動が続けられる。 ・ http://www.gnu.org/software/gnujdoc/gnujdoc.html lnternet ExpIorer の Java VM に重大なセキュリティホール Java の情報交換を目的とした「 Java-House ML 」において , lnternet Explorer に含まれる Java VM のセキュリティホールが 見つかった。これは Java アプレットにファイルを読み出す命 令を 1 行書き加えるだけで , C ドライプ中に含まれるファイル やデスクトップ上のファイルを読み出せるというもの。簡単な コードで悪用ができるなど , かなり深刻なものと見られる。現 在 , マイクロソフトより修正プログラムを配布している。 ・ http:″java-house.etI.go.jp/mI/archive/j-h-b/030376.html ・ http://www.microsoft.com/japan/security/ Products Seminar products インプライズ / BO 「ね nd C + + BuiIder 5 に同社他製品 RAD ツールをバンドル インプライズは C + + 言語開発環境「 Bo 日 and C + + Builder 5 日本 語版」を 3 月 24 日に発売する。詳細については前号の速報を参 照。製品のラインナップは「 BO and C + + BuiIder 5 Learning ( 20 , 000 円 ) 」「 Borland C + + BuiIder 5 P 「 ofessionaI()8 , 000 円 / 乗 り換えキャンペーン ( 後述 ) は 38 , 000 円 ) 」「 BO and C + + Builder 5 Enterprise ( 360 , 000 円 ) 」の 3 種類。 Learning 版以外には , 同社 の RAD ツールである Borland JBuilder 3 や Borland Delphi 4 がバ ンドルされる。これらは Borland C + + BuiIder 5 とまとめてひと つのライセンスで提供され , 作成したプログラムの再配布も認 められている。添付される BorIandDe ゆ hi4 は現行のものより もひとつ古いバージョンだが , BorlandJBuider3 は現行バージ ョンとなっている。 また , インプライズ製品では初めてという乗り換えキャンペ ーンも行われる。 6 月 24 日までの期間限定で , 日本語版「 Visu C + + 2.0 」以降 , 「 Visual Basic 4.0 」以降 , 「 VisuaI studi 0 」の各正規ユーザは , Web サイト「インプライズストアー」か らキャンペーン価格として、 P 「 ofession 引版が 38 , 000 円という 半額強の値段で購入可能。これは Web 上の販売のみ。 ・ http://www.inprise.co.jp/ 160 C MAGAZINE 20 4 米 Inprise/BorIand C + + CompiIer 5.5 を無償配布開始 BorIand C + + BuiIder 5 に装備されている最新のコマンドライ ン版コンパイラ (bcc32. exe) を中心に STL や標準ライブラリ , make や t ⅱ b など各種ツールをまとめたもの。 API レベルの Wind ows プログラムや Di 「 ec Ⅸ 7a SDK を使用した D ⅳ ectX を利用す るプログラムもコンバイル可能。日本語版の配布は 3 月中旬ご ろになる予定 (C MAGAZINE にも次号収録予定 ) 。まな JBuild e 「 Foundation のオンライン配布も行われている。 ・ http:.com/unity.borland.com/ ・ http://www.inprise.co.jp/jbuilder/foundation/index.html インプライズハ nte 「 Base 5.6 を発表 RDBMS の新バージョン。 Windows 版と Linux 版をそれぞれ 用意し , データベースの互換性を実現している。 3 月 2 日に出 荷開始。 1 サーバ / 1 クライアント ( 4 セッションまで接続可能 ) の ライセンスで 49 , 800 円。 ・ http://www.inprise.co.jp/ メトロワークス /Discover Programming fo 「 Macintosh の新版を発表 CodeWarrior P 「 ofession 日本語版リリース 5 と同い DE やツ ールを収録し , プログラミングに関する学習書籍のオンライン 版を添付する。 3 月 17 日より発売。価格は 28 , 000 円。 ・ http://www.metoroworks.co.jp/ ニチメンデータシステム / デバッグッールの新バージョ ンを発表 BoundsChecker 6.2 は自動工ラー検出ツールの新版。価格は 148 , 000 円。 Windows 2000 に対応させたのがおもな内容。ま た , 同社の SmartCheck, DevPartner Studio シリーズも Ve 「 . 6.2 にバージョンアップされる。乗り換えキャンペーンも行わ れる。それぞれ 3 月中旬に発売予定。 ・ http://www.nichimen-nds. CO. jp/products/boundschk/ 米 Red Hat / 組み込みシステム向け開発ツールを発表 「 Red Hat T00 fo 「 Embedded DeveIopers (RHTED) 」と呼ば れ , Linux 上で動作す剳 DE を備える。 Red Hat にかぎらず , ど のような Linux システムでも組み込み関連の開発を行える。 3 月 1 日に出荷。価格は 599 ドル。 ・ http://www.redhat.com/ ソフトボート /StorageCentraI&Web トレンドのふたっ のセミナーを開催 2000 年 4 月 13 日に東京都千代田区神田小川町の同社セミナー ルームで開かれる「 StorageCentral セミナー」は , Windows NT サーバのストレージ管理ツールである同社製品「 Sto 「 ageCent 「 alJ 「 QuotaAdvisor 」「 DiskAdvisor 」の実践的なセミナー。参加者 にはトライアル CD と Sto 「 ageCentral ファミリの特価販売が行 われる。また , 同じく 2000 年 4 月 13 日に東京都世田谷区用賀の サン・マイクロシステムズ社内セミナールームにて , 「 Web ト レンド導入セミナー」が開かれる。同社製品の Web トレンドに よる web サーバなどのログ分析といった各種機能やその使い 方が解説される。いずれのセミナーも参加費は無料だが , 事前 に申し込みが必要。詳しくは下記の Web サイトを参照。 ・ http://www.softboat.co.jp/events/index.html