Java - みる会図書館


検索対象: 月刊 C MAGAZINE 2001年9月号
41件見つかりました。

1. 月刊 C MAGAZINE 2001年9月号

プログラミング技術情報誌・ C マガジン SEPTEMBER 2001 Cover 刀 / ″ s な 0 〃 0 〃 . 秋山育 /Design 持田哲 C 0 N T E N T S Enter The 3D Programming く第 12 回 > 当たり判定 ( 後編 ) 久保裕一郎 / 宇治社中 技術を知って実践しよう ネットワークプログラミングのアトリエ 107 く第 4 回 > AP4 の仕組みと実装方法鴫原厚博 真紀俊男のローテク講座 Low Technique Course 113 く第 67 回 > 解放できないの巻 Linux Programming Tips 118 く第 12 回 > スモール Web サーバの実装吉井一友 Windows Programming Tips 122 く第 21 回 > メッセージのフック ( Pa 4 ) データの共有 tatsuya Java Programming Tips 126 く第 14 回 > Java Nativelnterface(JNl) その 2 松浦健一郎 ( ひぐべん工房 ) 40 最新開発環境レポート 132 Borland JBuiIder 5 松浦健一郎 ( ひぐべん工房 ) 最新開発環境レポート 137 Borland JBuilder 5 fo 「 Mac OS X 真紀俊男 142 MONTHLY HEADLINE 148 C MAGA B00kends 150 学問のススメ千言万語く第ノけー語 > a Ⅳ cc きだあきら 152 フィンローダのあつばれご意見番く第 111 回 >iisforlnteger C マガ電脳クラブく第 126 回 > 開き直り数吉柄員樹 154 156 READERS' ROOM 158 CD-ROM Contents 160 EDITORS' ROOM ・本記事中のプログラム名 . システム名 . CPIJ 名は一般に各メーカーの登録商標です。とくに事情 かない限り . 本文中では TM. ⑧マークは明記していません。 ・本誌および付録 CD - 日 OM に掲載されたすべてのプログラムは著作権法上 . 個人で使用する目的以 外で無断で複製することは禁じられています。 Windows プログラマへ贈る Linux プログラミング 10 の作法 那賀樹一郎 各 OS の生い立ち開発環境としての Linux 実行環境と しての Linux Linux プログラミング G Ⅲアプリケーシ ョン開発ツール今後の課題移行のススメ 。 = , 最新システム開発技法 XML データベース + Web アプリケーション 原忠司 , 加藤賢之 , 坂口良 ( ( 株 ) メディアフュージョン XMLLab) PS2 LinuxKit プログラミングガイド吉野智興 プログラミング相談室くインクルード , 式と文〉毛呂宗夫 46 Get lnto C World ! ! ー c 言語入門講座 47 く第 6 回 > データ型変換と変数のスコープ・記憶クラス小薗三典 / 中井信会 C プログラマのための C + + 入門 実践 C + + ゼミナール く第 6 回 > 文字列クラスの実装 ( 1 ) 演算子のオーバロード吉野智興 スタートアップ Java-Java 言語事始 58 く第 6 回 > メソッドとバッケージ毛呂宗夫 65 Standard C/C + + 「 C + + ライプラリ標準適合性のテスト」 P. J. P 加 ge 「 / 熊谷典大訳 8 なー 0 て叮叮のオブジェクト工房 71 く第 6 回 > CppUnit を使った XP 流プログラミング Enjoy PerI Programming モジュールを活用しようく第 8 回 > k と G Ⅲ Ruby マスターへの道 く第 5 回 > イテレータ前田修吾 アルゴリズム 5 プログラミングの宝箱 く第 5 回 > 再帰呼び出し春日伸弥 / 紀平拓男 画像処理を極めるアルゴリズムラボ く第 24 回 > 画像圧縮アルゴリズム③日 ias 符号化と算術符号化 昌達 K'z 101 特集 1 22 Report 54 結城 77 BorIand JBuiIder 5 PersonaI(Windows/Linux/SOIaris 版 ) VisuaIBasic から DeIphi/KyIix への移行ガイドブック (jYggdrasiII 1.0 体験版 江ーブルコマース 3. OJ 評価版 (Windows NT 版 ) 【 jUForms SDK Ver. 2.5 デモ版 BorIand C + + CompiIer 5.5.1 CMAGAZII 、 VE Publisher: アös 0 lnaba R ノ朝 S わ / ng D 『 e び・ TakefumiArai Ed 虍 - / h - C わ詹 Jun-ichi Watanabe Editoria/and Business 〇 ees : 4-73-73 , Akasaka, Minato-ku, ア OKYO, 70 / -0052. JAPAN E 釀 0 た Phone ( 03 ) 5549-7 743 Sales: P わ one ( 03 丿 5549 ・ 7200 A け肥ⅵ g. ・ P わ one ( 03 丿 5549-7220 Cop ⅵ 9 な◎ 2007 S0ftbank RJbIishing /nc, TO 取 0 勾 s se Ⅳ e グⅣÖm e / ⅵ物 / Sp し励 C 訓曾旧 y わ e p 「 oduced , / h Ⅳわ 0 / eo 「わ pa な . の any わ〃刀ル藺 0 ア pe 「 m / Ss / On. PrintedinJapan. 4 」 9 -3 8 8 一 9

2. 月刊 C MAGAZINE 2001年9月号

SI 血 P. J. Plauger 熊谷典大訳 C 幵ライプラリー性のテス 標準 C + + ライブラリが存在する今となって 告のページではない。ここでの私の目的は , 9. クラス (Classes) は , どのライプラリが標準に適合している 標準 C + + ライプラリのある程度の詳細と , 10. 派生クラス (Derived classes) かを判断する方法を知る必要がある。 テストするということには何が含まれるか 11. メンバアクセス制御 ( Member acce の 2 つを説明することだ。前回述べたよう ss CO ntrol) はじめに に , ますます多くの企業が C + + 標準準拠を 12. 特殊メンバ関数 ( Spec 回 member fu INTRODUCTION 主張し始めている。なにせ , C + + 標準が安 nctions) 前回の私の記事は , プログラミング言語 定してから 2 年以上経つのだから。標準 C + + 13. 多重定義 (OverIoading) がさまざまな標準に適合していることをテ ライプラリはかなり大きいし , かなり新し 14. テンプレート (Templates) ストする商売の話題から始まった。とくに い。この文脈での「適合」の本当の意味が何 15. 例外操作 (Exception handling) 対応する ISO 標準に対する C / C + + 言語処理 かを知る助けになるだろう。 16. 前処理指令 (Preprocessing directive 系のテストを中心にした。わが社の Java ラ s) ー C + + 標準 イプラリが標準に適合しているかどうかの また , 補遺 5 は「識別子のための国際文字 THE C + + STANDARD テストにも商業的な関心を持っている。し 名 (UniversaI character names) 」を定義して かし , 「 Java 標準」というものはまだまだあ C + + 標準の公式の定義は , ISO/IEC1488 おり , これもまた標準扱いである。 いまいなところがある ( 2001 年 5 月号参照 ) 。 2 : 1998 の文書である。 ANSI から 18 ドルで これらの章のいくつかは , 比較的単純で おおまかにいえば , それらの記事で , いく 機械可読形式のコピー全体をダウンロード ある。字句規約 , 標準変換 , 式 , 文の各章 つかの検証スーツ商品は適合性の客観的な できる (http://webstore.ansi.org/) 。 C + + 標 は , ごくわずかな部分を指しているが , ほ 基準を提供するものだと説明した。 準は 27 章と補遺 5 つからなる。補遺のうち とんどが C 言語標準に由来するものである。 今回は , 話題の対象を , 標準 C + + ライプ 2 つは標準扱い , つまり , 規格合致処理系 Kernighan&Ritchie の古典的名作以来ずっ ラリが先ごろ承認された ISO 標準に対して (conforming implementation) としてしなけ と C 言語標準はこれらの概念をほとんど変 適合しているかどうかのテストに絞ろうと 更していない。しかし , 多重定義やテンプ ればならないことが書かれてある。残りの 思う。過去 8 年間で私は ISO 標準に対するラ レートなど , ほかの部分は C 言語時代をそ 3 つは参考扱いである。 イプラリと検証スーツの両方を書いたので , C + + 標準の最初の部分は言語固有の機能 うとう超えた発明を含んでおり , そうとう これは私にとって重要なテーマである。私 複雑でもある。これらの部分は , かなりの に焦点を当てている。次に各章のタイトル の会社である Dinkumware ,Ltd. は , 今や C , を示す。 量の定義を必要としている。プログラム言 1. 概要 (GeneraI) 語標準のすべての章が同じ長さでなければ C + + , Java のライプラリと検証スーツをラ イセンスしている。お客様が両方買ってく 2. 字句規約 (Lexical conventions) ならないという規約が ISO には存在しない ださればありがたい ( 検証スーツは移植し 3. 基本概念 (Basic concepts) のは幸運であった。 たライプラリが壊れていないことをチェッ 4. 標準変換 (Standard conversions) C + + 標準の 2 番目の部分はライプラリを定 クするのに非常に有益である ) のはもちろ 5. 式 (Expressions) 義している。次に各章のタイトルを示す。 んだが , 私たちは普遍主義者ではない。ど 6. 文 (Statements) 17. ライブラリ前書き (Library introducti ちらか一方でもライセンスさせていただ 7. 宣言 (DecIarations) on) く。しかし , これは技術系記事であり , 広 8. 言子 (DecIarators) 18. 言語支援ライブラリ (Language sup 65 Standard C ℃ + +

3. 月刊 C MAGAZINE 2001年9月号

Fig. 2 入力支援機能「 CodeInsight 」 、 r 印 12e (char. char) 、就 art 可 t ( 5 加 i れ切 、 st 、 t れ t 血 ( 5 む ri れ 4 ) 、 substring( 加こ ) 、 t .0 rc e ( ) 、 tol. mærCase(Loca1e) 、 tostring ( ) 、 toUpperCase ( ) substring(int, i11 ) 最新国口ロレポート ( 、」日 u 日 d 5 ーら / / u に 5 引叩・朝 / P に kL にた「 0 / こ om / ト第唇行 d た 1 にき / 朝メ p に k 廳な / F•に k し 5 に Fr ョ m 引 3 、乃 も円。靆 s トも kL sF ね m 日ト ile 旦 d は e 誂 ch 当日 ?roject. 区リ n Tearn W に町 d 引工 00 憘 &dow 旦引 p Fig. 3 GU 庁ザイナ String 本 b001e 田 1 b001e 田 1 String 山矼 [ ] St 【 1 れ 4 StringE: StEing ヤ 5 た E1n ロ ! : PickLists.jpx ー・ . com.borland.samples.dbswing. P忙純引S ; 田こ」 images 9 下忙 k 凵 s h ー PiCkLlStsAppjava し . Pick 凵 stsStatusListener.java サ com.borland.samples.dbswing.picklists.PickLiE Ⅲ旧 0 司をに卩 'Jt - = 作 ame 日 0 町 Layo 留 navToo 旧亂 ロ statusLabel 日ロ m npan 創但 0 国 8 儿 ayout) 白ロ optionsPanel (GridBagLayout) ・ mainBorderLayout 橋 optionsGridBagLayout lnnkllnQpti ラ 0 0 ! 、当け 白ロ lookupOptionsPanel (Grid 川膈リ Rb 一に・ fillSingleRb fillOptionsGridLayout 三一口 fillOptionsPanel (GridLayout) を ~ に。 picklistMultiRb 新 picklistSingleRb picklistOptionsGridLayo ロ picklistOptionsPanel (GridL 表示する。 弋 t 0r0 。面 lo 「 d ヨ cus 新”ね司 Address 凵 n 自 2 : Ad s 凵 n81 : na 旧 : Customer num: 0 「 d Oa 愴ー 0 「 d Number ackground ontentPane abled [ コ CO 血引 m 0 ・ Single column Multi•C01umn 円 c fil トⅲをラニ、 : 」デ = 9 冊 u ⅷ Myltiple columns Namelö0kup ? 信リは CloseOp.. HIDE 0 CL つべつのウインドウを表示する方式と , 単 独のウインドウの内部を機能別に分割して 使用する方式とに大別されるが , JBuiIder 5 は後者の方式である。 Fig. 2 のようなポップアップウインドウで に , 前方一致する名称を自動的に検索して , 変数名やメソッド名の一部を入力したとき 能も備える。 CodeInsight は , プログラマが また , 「 CodeInsight 」という入力支援機 できる。 ったソースコード上の構文要素を強調表示 とえば , キーワード / 文字列 / コメントとい して , さまざまな支援機能を提供する。た デイタは , Java/XML/HTML の文法を解釈 の例である。 JBuilder5 のソースコードエ Fig. 1 の内容ペインはソースコード編集 ンヘルプの閲覧などが可能である。 ンタフェイスや JavaBeans の開発 , オンライ の編集 , ビジュアルツールによるユーザイ 映される。内容ペインでは , ソースコード て加えた変更は , すぐに構造ペインにも反 イムに行われるため , ソースコードに対し A の IDL 定義などである。解析はリアルタ Java ソースコードのクラス構成や , CORB 析結果を表示する。解析対象となるのは , 構造ペインは , 編集中のソースコードの解 目的のファイルを素早く開くことができる。 る。ファイルをクリックすることにより , グラムに関連するファイルの一覧を表示す ナビゲーションペインは , 開発中のプロ が内容ペインである。 イン , 左下が構造ペイン , 右側の広い領域 えば Fig. 1 では , 左上がナビゲーションペ 造ペイン」「内容ペイン」などがある。たと 種類としては「ナビゲーションペイン」「構 る複数の領域に分割されている。ペインの AppBrowser の内部は「ペイン」と呼ばれ on age enu 日 locale reSiZabje ー State True ■ Biack 日 0 部 <default> True NOR dbSWin - Pic 20 純 st column ー Citf, P ′ 0 ⅵれ c ま 2 「 OP ・ dOW れ 厘 d e 00mb0 日 OX Order 計 : 、 a 川 le 飜 m を物 Od : Source Design Bean D00 村引 0 専 CodeInsight は単なる前方一致検索機能 ではなく , ソースコードの解析結果を元に したインテリジェントな入力支援機能であ る。たとえば「変数名 . ( ピリオド ) 」と入力 した場合 , CodeInsight は変数の型 ( クラス ) を解析して , その型に属するメソッドの一 覧の中で前方一致検索を行い , 検索結果を 表示する。解析の対象となるのは既存のラ イプラリクラスだけではなく , ユーザが作 成した独自のクラスも解析され , CodeInsi ght によって入力が支援される。 一スコード開発と ビジュアル開発の接続 JBuilder5 は , ソースエデイタを用いた 開発と , グラフィカルなツールを用いた開 発との間の , スムーズな接続を重視した開 発環境である。一般に Java プログラムの開 発には , ソースエデイタによるソースコー ドの編集作業と , 視覚的な GUI デザイナに よる GUI の構築作業との両方が必要である。 たとえば GUI の構築作業は , ソースコード の編集によって代替することが可能だが , 複雑なコンポーネント配置が要求されるプ ログラムにおいては , 視覚的な GUI デザイ ナで作業を進めるほうが効率的である。そ こで多くの統合開発環境は , ソースエディ タと GUI デザイナの両方を提供する。 で問題となるのは , ソースエデイタによる 編集と GUI デザイナによる編集との整合性 をいかに保つかということであり , 各社の 統合開発環境ともに苦心の跡が見受けられ る部分である。 JBuilder5 は , ユーザにとって非常に使 い勝手がよい方式で , この整合性の問題に 対処している。 JBuilder 5 は , Fig. 3 のよう な GUI デザイナを備えており , この GUI デ ザイナ上で行った変更は , すべてソースコ ードに反映される。 こで重要なのは , 逆 にソースエデイタでソースコードを編集し た場合にも , GUI デザイナ上に変更が反映 されることである。ほかの多くの統合開発 環境でも , GUI デザイナで行った変更はソ ースコードに反映されるが , その逆をサポ ートしている統合開発環境は少ない。 GUI デザイナが追加したソースコードに対して , ソースエデイタで変更を加えることが禁止 される場合も多い。 「 2Way-Tool 」と銘打たれたソースエディ 最新開発環境レポート Borland JBuilder 5 1 33

4. 月刊 C MAGAZINE 2001年9月号

べースアクセス機能を含む CMP(Container Managed Persistence) または BMP (Bean M anaged persistence) のエンティティ Bean を ビジュアルに作成する機能も持つ。 そのほか , 配布ディスクリプタを作成す るためのエデイタや , EJB へのアクセステ ストと Se Ⅳ let / JSP への組み込みに用いるク ライアント Bean の生成などの機能も持つ。 実行テストに関しては , ローカル環境の B orland AppServer を使用して , スタンドア ロン環境で EJB をテストできる。デバッグ については , 前述のデバッガを用いてプレ ークポイントの設定やウォッチを伴うソー スコードレベルのデバッグが可能である。 JBuiIder 5 では , 業界主要アプリケーシ ョンサーバへの対応を強化し , 新規に IBM の「 WebSphere 」をサポートした。そのほ Fig. 7 XML データの表示 、山 J 日Ⅲ旧 5 ー / 信 ng / に朝に 5 な印 1 事 3 / TutO ロ引 3 / XML / P sen t n / M Em ロ lDy ? をま x 旦 0 旦 ea 「 0 れ Ylew 旦「 02 は旦リ、 Te 旦 m WizardS 工 00 に dOW 旦引 p は谷 , 0 事 0 第を第き か , 「 Borland AppServer 4.5 / 4.1 」や「 BEA WebLogic 6.0 / 5.1 」など , 主要なアプリケー ションサーバ製品との統合機能を持つ。ア プリケーションサーバとの連携により , EJ B コンポーネントを統合開発環境の中でテ ストできるほか , 各製品の配布ツールを呼 び出すことにより , 完成した EJB を運用環 境に対して配布することが可能である。 そのほかの機能 Enterprise 版は , CORBA (Common Obje ct Request Broker Architecture) による分散 アプリケーションをサポートする。 JBuild er5 は CORBA2.3 に準拠し , Java2 プラット ホームに対応した CORBA ORB (Object Re quest Broker) 製品である「 VisiBroker for ・・三 p„肥 s ね恤 ntj し印 presentation.jpx Employees. dtd Employeesxml EmployeesLisMew.xsl EmployeeSTableVieWXSl MyEmployees.xml Presentation html 可 P 砌 0 は。 nt 酬 00 」 、当下 sen ね n 鬱 MYEtüPloyeeSl G:! 」 angJjbuilder5fsampleSJTutorialsD{MlJxslsfEmployeesTableViewx 引 List 0f EmpIoyees Emp_No Dept_No Extension Hire Date : 1 ・ 1 田 いに。四 3 。第 ~ 1 -121 お 9 [ [ 0 第い CEO•去、 Salary($) 1 〔 6 O 工裏旧 Code VPs Grade e 0 れ、 RobettA2 0 、 Bruce. 尸寘ロ Country リ SA En Source TransformView TransformViewSource 翩引 0 Ⅳ TabIe 1 Borland JBuilder 5 の動作環境とラインナップ HDD : 250M バイト以上の空き容量 メモリ : 128M バイト以上 ( 256M バイト以上を推奨 ) Windows プラットホーム Linux プラットホーム 最新ロロ住レポート Java 4.5 」を含む。 また Professional 版と Enterprise 版は , 大 規模プログラム開発のためのチーム開発支 援機能を備える。とくに Enterprise 版の JB uilder 5 では , 「 Microsoft V1sual SourceSafe 」 との統合機能が新たに追加された。そのほ か℃ VS 」などの主要なバージョン管理機構 を統合することにより , 大規模な開発チー ムにおけるソースコード管理を支援する。 おわりに JBuiIder 5 は , ProfessionaI 版と Enterpris e 版の充実した機能と無償で使用できる Pe rsonal 版の存在 , そして Delphi や C + + Build er などほかのポーランド製ビジュアル開発 環境から継承された操作性のよさが魅力的 な統合開発環境である。 フ回のバージョンアップは主に Professi onal 版と Enterprise 版における機能拡張で あり , 具体的には XML のサポート , アプリ ケーションサーバ製品への対応強化 , チー ム開発支援機能の強化という 3 点である。 今回 , PersonaI 版には目だった機能拡張 がないが , 操作性のよさと , ツール全体と しての見通しのよさは健在であり , Java 統 合開発環境を初めて使うユーザにもお勧め できる。ソースコード編集とビジュアル編 集との接続がスムーズなので , JDK による 開発を主体とするユーザにとっても , JBuiI der5 の GUI デザイナやデバッガは利用価 値があるだろう。最後に動作環境とライン ナップを Table 1 に示す SO is プラットホーム t PentiumII 233MHz 以上 , および CPU . ULTRA Sparc 2 以上 動作環境 ラインナップ CPU :lntelPentiumII 233MHz 以上 , および CPU 100 % 互換の CPU Microsoft Windows 98. 2000. NT4 ℃ OS ( SP3 以降 ) Windows 2000 または NT4.0 を推奨 OS BorIand JBuiIder 5 ProfessionaI 68 , 000 円 BorIand JBuiIder 5 Ente 「 p 「 ise 360.000 円 100 % 互換の CPU . Red Hat Linux 6.2 OS . S0后「 is 7 ( 2.7 ) または So is 8 ( 2.8 ) 4.800 円 (Web サイトからダウンロードの場合は無償 , 商用アプリケーションの開発には使用不可 ) BorIand JBuiIder 5 ProfessionaI アカデミック 30.000 円 BorIand JBuiIder 5 Ente 「 prise アカデミック 160 , 000 円 Borland JBuilder 5 Pe 「 sonal 1 36 C MAGAZINE 2001 9

5. 月刊 C MAGAZINE 2001年9月号

最新国ロロレポート [Wizards] → [Archive Builder... ] メニ それから余談ですが , DeveIoperTools を であろうと想像します。 [ 注 4 ] Profession 版以上でのみサポート。 で Archive BuiIder を呼び出します。 こで インストールした Mac OS X では /Develope Pe 「 son 版では用意されない は Archive type は Application を指定します r/Applications/MRJAppBuilder を使って , (Fig. 9 ) 。これでビルドされるたび , JAR JAR ファイルを単体で起動するアプリケー ファイルがプロジェクトのあるディレクト ションに変換できます。また , 昔の Mac O リに作成されます。幸い Mac OSX の場合 S でも M 碍 SDK に含まれている JBindery を 最初から Java 実行環境は埋め込まれている 使うことで JAR ファイルを単体で起動する PureJava で作成したメリットのせいか ので , 昔の MacOS やほかの OS のように アプリケーションに変換できます。いずれ Windows 版の JBuiIder 4 などを利用したこ JRE を含めて配布する手間が不要で , 単に もターミナルでプログラムを起動する習慣 とがある人なら , さほど違和感は感じませ JAR を配布するのみです。 になじんでいない Mac ユーザのための配慮 ん。もちろん Mac OS X の Aqua 調ですが それは見かけだけであり , 中身は完全に J アプリケーションクラスの main BuiIder そのものです。限られた誌面では J BuiIder の機能をすべて伝えきれないのが public static void main(String[ ] args) { try { 残念ですが , 従来の Mac 用 Java 開発環境と / /U IManager. setLookAndFee Ⅱ UIManager. getSystemLookAndFee に IassName ( ) ); UIManager. setLookAndFeeI(new javax. swing. plaf. metal . MetalLookAndFeel( ) 比較すると圧倒的に高機能で , なおかっ使 catch ( Exception e ) { いやすさや開発効率のよさにより , おそら e. printStackTrace( く Mac でも JBuilder 5 の人気が高まるだろ new Application1( ); うと筆者は予測します。 Fig. 7 例外時に E 日日 O 日表示をする 最後に List Fig. 6 デバッガ 朝疆日厄 Edit 5 代 h View P 「 0 」を口 Run W に町 ds Tools Window Help 0. 。 0 一 0- ーー一蹕 u 5 - 川 5 町 5 代れ町町」聖 ! 0 ( 4 p 引竺 0 叩 p 【を p け D は谷・い■・朝。、茎第きレ , , 印 p T ” t2 ル x は ト・叩 p を 2 . が 1 もが歌 IJ 観 a ー当学が歌 T に . ⅸ p 。代 5 ・ ・が改 1 、 App 1 ( ) applettest2. Appletl ep txcurred 面ⅱ ng event d•spatchlng: 卩 a 」 ang. 日 oa 朝 1 cim 代 a 山 aF m 誂 S び in 頃日 03 も ng [ 地 ( 面引 . va : 989 ) 靆声 3 」町 . D 」 b . v 謝 ueOf( [ 」 b va : 168 ) VOid buttonl actionPerformed(ACtionEvent 0 ) Doub1e theD2 = DoubIe. va1ueOf(textFie1d2 ・ 9 dO 設 b12 theD3 = theD1. doub1eValue( ) + theD2 1秘be11. setText(DoubIe. tOString(theD3) ) : 0 し 0 じト : む . リ : ーむ / ! こ : d : . 当 % じ以 : をトいし - 祐 : 1 ERRO R Fig. 8 Met 引調のアプリケー ション 0 0 0 Fig. 9 Archive Builder TOOls Ⅷ面ー H ↓ ( 加宿山国 - ル 0 地”・ PliC め 0 ・′ ( m ・ nd ・駅町 0 地 d 市 0 ヨ、第れ第健 鹵社一物・みールをは物物・ m 地ー物印・・ d れを第 A て v に Bu ⅱ鹿′ . 仁 Frame TitIe 123 127.56 十 4.56 凵 1 最新開発環境レポート Borland JBuilder 5 fo 「 Mac OS X

6. 月刊 C MAGAZINE 2001年9月号

[New] タブの Application の選択でアプリケ と同様 , Project Wizard が立ち上がり , 次 ーションを構築します。アプレットのとき に Application Wizard が立ち上がります。 TabIe 4 各処理に対して H p を検索して得た内容 処理 得た内容 TextF 回 d の内容の取り入れ TextFieId クラスの getText メソッドを使う 文字列の数値化 DoubIe クラスの vaIueOf メソッドを使う 数値の文字列化 Dou e クラスの toSt 「 ing メソッドを使う Labe に内容を書き込む LabeI クラスの setText メソッドを使う button1_actionPerformed の内容 void button1—actionPerformed(ActionEvent e) { DoubIe theD1 = DoubIe. vaIueOf(textFieId1. getText( ) 1 DoubIe theD2 = DoubIe. vaIueOf(textFieId2. getText( ) = theD1. doubleValue( ) 十 theD2. doublevalue( double theD3 labell. setText(DoubIe. t0String(theD3) ); ヨ これまたアプレットのときと同様に叩き 台となる空白のアプリケーションを作るプ ロジェクトができあがりますが , 今度は S wing べースで実装してみましよう。やはり 簡単な加算プログラムにします。ホタン をダブルクリックして , ハンドラに List 3 のコードを入力します アプレットのときと , ほとんど違いはあ りません。これだけではあまりおもしろみ がないので , アプリケーションクラスの m ain を List4 のように書き換えて実行します。 すると MacOSX 独自の Aqua 調ではなく M etal 調のアプリケーションのできあがりで す (Fig. 8 ) 。ちなみに JBuilder 自身も [Tools] → [ IDEOp ⅱ ons ] メニューを使って , ルック & フィールを変更できます。 ノブリケーションの配布 ところでアプレットと違い , アプリケー ションの配布はやっかいになりがちです。 というのも多数のクラスを配布したり , Ja va 実行環境のないユーザのために JRE を配 布し , 端末から Java アプリケーションを起 動させる指示も必要だからです。 このうち多数のクラスは 1 つの JAR 形式の ファイルにまとめてしまい , 端末から「 jav a-jar .jar 」と短いコマンドを人力するだ けの手間で済みます。しかし jar コマンドを あやつって JAR にまとめるのもちょっとし た手間になると判断したのか , ArchiveBu ilder という JAR ファイルの作成を補佐する 仕組みが JBuiIder に用意されています [ 注 4 ] 。 List 例外に対応したハンドラ void buttonl—actionperformed ( ActionEvent e ) { try{ DoubIe theD1 = DoubIe. vaIueOf(textFieId1. getText( ) DoubIe theD2 = DoubIe. vaIueOf (textFieId2. getText( ) = theD1. doubleValue( ) 十 theD2. doubleValue( double theD3 ね b 引 1. setText( Doub 厄 .toString ( theD3 ) catch ( Exception inE ) { ねb引1. setText( "ERROR"); jButton1 _actionPerfo 「 med の内容 void jButton1—actionPerformed(ActionEvent e) { try{ DoubIe theD1 = DoubIe. vaIueOf( jTextFieId1. getText( ) DoubIe theD2 = DoubIe. vaIueOf( jTextFieId2. getText( ) ); double theD3 = theD1. doubleValue( ) 十 theD2. doubleValue( jLabe11. setText(DoubIe. toString(theD3) catch(Exception inE) { jLabe11. setText( "ERROR" List Fig. 5 アプレットの実行 Fig. 4 COdelnsight est2/Applet1Java Run Project ↓ /**Get App1et information*/ p 収 b110 retu 、 setName(String) void △ 、 setSize(Dimension) void /**Get 、 setSize int, 土 n セ void pub1 ic setVisib1e(b001ean) void void 、 he ・・ b00 を & 登十 void 01d b 、 e ・←ト Dimension Doub f10a セ】 を TOP ALIGNMENT Doub 、 tostring( ) S セて土れ g を doub label V 0 土 d setText Strzn ) app 厄 es . AppIetJ 9 9 2 1 2 0 1 1 Aopkt1 ・扣 78 : 16 Modfied 気馳代 1 イ 0 C MAGAZINE 2 開 1 9

7. 月刊 C MAGAZINE 2001年9月号

MONTHLWHEADLLNE Events 第 10 回ソフトウェア開発環境展 SODEC が開催 の出展が目立っていた。 2001 年 6 月 27 日 ~ 29 日に東京ビッグサ たそのための製品も多く出展されていた。 次回は 2002 年 6 月 26 日 ~ 28 日に同じ東 イトにおいて「第 1 0 回ソフトウェア開発 ネットワークアプリケーションを作成す 京ビッグサイトで開催される予定だ。「今 環境展 SODEC 」が開催された。そのレポ るだけではなく , ネットワークそのもの どんな開発環境があるの ? 」という方は を利用した開発環境が多くなり , ツール ートをお届けする。 ( 霧島有香 ) ぜひ参加してほしい。 当日はさまざまなメーカーがいろいろ やサーバなどと開発環境の垣根がなくな な製品を発表していた。 UML モテリング ってきたように思えた。 Java を用いて 動作するソリューションも昨年と比べる ツールの Rational Rose がバーションア ップ版の発表をしていたかと思えば , ( 株 ) と格段に増えていた。 Web サービス自体 オージス総研から新しい UML ツール「 KO の話はまだそれほどではなかったが , 来 年には注目を集めていることだろう。 nesa 」が紹介されたりし同分野で競合 また , 併催の「第 5 回組込みシステム開 他社の製品が発表されるという形が多く 発技術展 ESEC 」では , 携帯電話などの端 見られた。 総じてサーバサイドも含めてネットワ 末が好調のせいか , RTOS や組み込み Li ーク関連のプロダクトが注目を集め , ま nux, CASE ツールなど開発関連ツール ◎ URL http://web.reedexpo.co.jp/SODEC/ ッフトウエプ ををツ ~ 開発環境展ー S00 部 ソテック スト 第 を Topic ダイナミック・ネイキッド・オーティオ ( 株 ) / 試作品を提供する「 p 「 ototypejp 」を発足 回の p 「 0 ype. jp ではこの経験を元にして ダイナミック・ネイキッド・オーティ 会員となるユーザは , その製品のサポ いるいきさつがある。 オ ( 株 ) はさまざまな試作品 ( プロトタイ ーターとなることができ , レビューをし プ ) を会員に向けて提供する事業「 p 「 0t0 て製品の方向性を与えたり , ハードウェ このビジネスモテルは , こうしたチッ プなどのハードウェア製品以外にもソフ ア / ソフトウェアの技術開発に参加する type. jp 」を発表した。 トウェア製品など , さまざまな製品で展 ことができる。そして市場に流通してい この prototype. jp では , メーカーが作成 開していく予定だという。 ないもっとも新しい製品を誰よりも先に しているさまざまな試作品を prototype. jp 現在のところ個人での入会登録費用に 手に入れることができる。 に登録している会員に買ってもらうこと 3 , 000 円 , 月会費に 300 円 , 法人の入会金 こうした意見のやりとりは用意されて によってビジネスモテルが成立する。 メーカーは , 試作品の売り上げ代金で として 50 , 000 円 , 月会費に 10 , 000 円かか いる Web サイト上で行うことになる。 る。入会登録費用の中から製品購入代金 製品を作成するための資金にしたり , 会 ダイナミック・ネイキッド・オーティ オ ( 株 ) は , 以前に三洋電機 ( 株 ) が試作し 員からの意見をダイレクトに製品へフィ とすることも可能にしている。 会員申し込みなど p 「 ototype. jp について た小電力 M P3 テコードチップを使った M ードバックでき , 完成度をより高めて一 詳しくは下記の Web サイトをご覧いただ P3 プレイヤを 300 台限定で作成し , それ 般に製品を出荷できるというメリットが ( 編集部 ) を会員に向けて発売した実績があり , 今 きたい。 ある。 ◎ URL http:″prototype.jp/ 1 イ 6 C MAGAZINE 2001 9

8. 月刊 C MAGAZINE 2001年9月号

MONTHLY HEADLßNE ( 株 ) オージス総研 / UML ビジュアルモデリングッール「 Konesa 」を発表 Products ( 株 ) オージス総研は , 米 CanyonBIue が開発した UM L のヒジュアルモデリング ツール Cittera の日本語版「 Konesa 」を 9 月 上旬より発売すると発表した。 Konesa は UMLI .3 をサポートしたビジュアルモ デリングッールで , U ML 図を書いていく ことでオブジェクト指向によるプログラ ム設計ができ , その UML 図を元にしたソ ースコードを出力することができる。 Konesa でもっとも特徴的な「コラボレ ーション」機能では、複数の開発者が 1 つ のプロジェクトを担当する際 , Konesa によりモデル情報を共有し , インスタン トメッセンジャー機能でコミュニケーシ ョンをとりながら開発を進められる。あ るユーザが Konesa の IDE 上でモデルを 追加した場合 , その変更情報はほかのユ ーザへ即座に伝わり , 設計画面は常に最 新の情報となる。変更された情報はログ として保存され , 変更履歴をトレースし ていくこともできる。 C + + /Java のコード生成が行え , Ratio nal Rose のモデルをインポートできる機 能を備えている。 このほかにキャツツ ( 株 ) が提供するリ アルタイムシステム CASE ツール「 Kone sa-ReaITime 」がある。状態遷移表をサポ ートし , 試験フェーズで実際に動作させ ると , モテル単位で現在動作している部 分を示すアニメータ機能を持つ。 価格は未定だが , ASP で利用 , サーバ をユーザ側に設置するイントラネット型 , コラボレーション機能がないスタンドア ロン型の 3 つの製品構成を予定している。 ( 編集部 ) 問い合わせ先 ( 株 ) オージス総研 e- ソリューション事業部 ビジネス開発部 Konesa 担当 TEL : 03-5440-4771 e-mail : info@otc.ogis-ri. CO. jp ◎ URL http://www.ogis-ri.co.jp/otc/products/konesa/ Products キャツツ ( 株 ) / 組み込み機器向け CASE ツール図 PC 2001 」を発表 キャツツ ( 株 ) は同社の組み込み機器向 け CASE ツールの最新版「 Z 旧 C 2001 」を 9 月下旬より出荷すると発表した。 ZIPC 2001 は携帯電話機や家電などに 使われる組み込みソフトウェア開発向け の CASE ツールで , 「この場面でこの値に なったらこの機能」というようにそれぞ れの場面で対応する処理を表状にして記 述する状態遷移表を持ち , 機能のもれな どが発生しにくいようになっている。通 常用いられている状態遷移図との相互変 換も行える。 アニメータ機能は Konesa-RealTime と 同じぐ試験時に動作しているモデルが ◎ URL http://www.zipc.co.m/ 1 44 C MAGAZINE 2 側 1 9 示され , これが移り変わっていく。この 状態遷移が実際に表示されて処理が移 ている。 くつかにまとめたモテルなども用意され 円。ツールごとの単体販売やこれらをい 価格は Professional Mod で 1 , 029 , 000 グラムのデバッグがそのまま行える。 機能を統合しており , Windows 上でプロ らリアルタイム OS のシミュレーション ある OSEK を新たにサポートした。これ 加えて , 自動車向けリアルタイム OS で また , ZIPC 2001 は従来のげ RON に モデルのデバッグが行える。 様子を目で確認しながら , ビジュアルに り変わる様子は , ぜひ一度見てほしい。 処理の流れが目で見えることなど , とて も感動できるはずだ。 価格 ( 編集部 ) ProfessionaI MOdeI 1 , 029 , 000 円 ( 単年度サポートの Single Pack の み , 次年度以降は Mu Ⅲ pack 版 343 , 000 円が必要 ) ほか 問い合わせ先 キャツツ ( 株 ) 営業部 TEL : 045-473-2816 FAX : 045-473-2673 e-mail : info@zipc.com

9. 月刊 C MAGAZINE 2001年9月号

オプジェクトをポイントしたいという用途 0 になったら解放を行う。この工夫で , た SampleClass オプジェクトは , TestSub を 重解放や解放忘れが起きなくなるというわ 終わる時点で ioMem という auto_ptr に所有 には auto 印仕は使いにくくなっている図。 権が移り , こでは解放されない ( Fig. 2 ) 。 けだ。 [ 注 2 ] 実際のところ , STL のコンテナと auto _ptr を併用するとうまく動作しないという問 この手法は C 言語レベルでは手 すなわち aut 。ー ptr を使う限りは「解放忘れ」 ただし , 題がある。そのため , 併用した場合わざとコ ンパイルエラーが起こるように実装している ちょっと冗談めいているが , 「不定値の解放」という事故が起こりにく 間がかかる。 とも聞く List 5 , 6 のようなプログラムがそうだ (Fi いわけだ。 g. 4 ) 。 •ut0 ー ptr の注意点 共有権付きポインタ theMem1 , theMem2 は , 共有権付きポ インタオプジェクトを指している。 sharep tr 型は , どうやら中身が謎の shareptr_stru Java のようなガべージコレクション機能 ただし , auto-ptr で言うところの所有権 がある言語と違い , C 言語や C + + は「手動の ct 構造体ポインタのようである。この構造 というのは , 「ある時点ではたった 1 つの a 体がどういう構成なのかは後でお見せする uto-ptr にしか所有権がない」という意味で ガべージコレクション」とでも呼ぶべき手 法で動的なメモリの共有を管理せざるをえ あり「共有権」ではない点に注意していただ として , ・ sp—new で shareptr オプシェクトを動的 なー注 3 ] きたい。 よく使う手は「参照カウンタ」を保持して たとえば List 4 のようなプログラムは , に確保する うまく動作しない (Fig. 3 ) 。なぜなら , 「 th おき , 共有したいポインタはカウンタを 1 ・ sp—assign で共有を指示する ・ sp—get で shareptr オブジェクトが抱え つ加算し , 共有をやめたいならカウンタを eMem2=theMem1 」の影響で , theMem1 の ている実際のポインタ値を得る (List 6 1 つ減算するという手法である。この参照 所有権がなくなったため , 山 eMem1 が抱え の例では malloc(ALLOCATE SIZE) で カウンタが 0 でない限りは解放されないが , ていたオプジェクトにアクセスできなくな 戻ってきた値 ) [ 注 3 ] ガべージコレクションのライプラリと ったからだ。 いうのも企画され利用されている ・ sp delete で shareptr オブジェクトを解 この性質があるため , 複数の配列で同じ auto-pt 「を使った例 0 所有権の移動の例 void TestSub ( auto—ptr く samp leC lass>& void Test(void) auto—ptr く Sampl eC lass> theMem; TestSub(theMem); std: :cout くく ntheMem->Inc( ) = ”くく theMem->Inc( ) くく std: :endl; void TestSub(auto—ptr<SampIeClass>& iOMem) std: :cout くく” * TestSub start * n ” auto—ptr<SampIeCIass> theAns(new SampleClass(l) ioMem = theAns; / * 所有権が移動する * / std: :cout くく” * TestSub end * n ″ #include <iostream> #include く memorp .. 中略 .. class SampleClass { int mNum; public: SampIeCIass(int inNum = 0 ) { std: :cout くく "SampleClass: : ctO て ( ” くくくく mNum = inNum; sampleClass( ) ( std: :cout くく "SampleClass: :dtor( ” くく mNu.m くく int lnc(void) { return 十十 mNum ー int 日 void ) const ( return mNum; void Test(void) auto—ptr く Samp IeC lass> theMem ー theMem. reset(new SampleClass(1) theMem. reset(new SampIeClass(2) lSt auto-pt 「がうまく動作しない例 void Test(void) auto—ptr く Samp IeC lass> theMeml; auto—ptr く SampI eC lass> theMem2; theMem1. reset(new SampIeCIass(l) theMem2 = theMem1; / * 所有権が移動する * / std: :cout くく "theMem1->Inc( ) = ″くく theMem1 → lnc( ) くく std: :endl; std: : ・ cout くく "theMem->Inc( ) = ″くく theMem->Inc( ) :endl; くく std: 1 14 C MAGAZINE 2001 9

10. 月刊 C MAGAZINE 2001年9月号

R E A D E R S R 0 0 プレゼント 読者プレゼントありがとうごさ います。毎月 , 本にかかるお金が たいへんなので , おおいに助かり ます。 小森真一 ( 群馬県 ) ☆当選おめでとうございます。 C MAGAZINE では多くの方に当たる ように , これからも素敵なプレゼ ントを用意していきたいと思いま す。また , 次号では毎年恒例の「秋 の読者モニタ大会」を実施する予 定です。今回もたくさんのモニタ を用意するため , 編集部員がドタ バタしながら各方面から収集活動 を行っている最中です。編集部で は「ボクはこれが個人的にレポー トしたいナア」なんて声があがっ ています。次号をお楽しみに ! ポインタ 1 56 C MAGMINE 2001 9 勉強 また最初から勉強し直そうと思っ せん。貴誌の購読をきっかけに をやっていますが , モノになりま 小さいころからプログラミング にしてみてください。 く提供していきます。学習の参考 らずさまざまな記事をわかりやす ります。これからもポインタに限 スターするうえでのポイントとな 率よく学習するかが , C / C + + をマ は多いので , この部分をいかに効 ☆ポインタで足踏みしてしまう人 野口哲也 ( 京都府 ) 憶の彼方です。 ったはずですが , いつの間にか記 ね。いろいろなところで何度も習 ポインタはやつばり難しいです ています。よろしくお願いします。 片桐純 ( 東京都 ) ☆プログラミングの学習は継続的 に行わないと身につかないですし , 学習するだけのパワーとモチベー ションを維持するのはたいへんで す。でも , 今回の再スタートを機 に , これまで以上のレベルに達す るようにがんばってください。ち なみに , C MAGAZI N E を買い逃 さないためには , 定期購読がお薦 めです。巻頭広告の案内にもある ように , 「定期購読 spb-direct. co m 」 (https://www.sbp-direct.com/ から直接申し込みできるので , ま だの方はぜひ購読してください ! イベント 北海道から研修で横浜にきまし た。せつかく , 近くにイベント会 場があるのに Linux などのイベ ントは平日しかやっていない・・ 大塚徹 ( 北海道 ) ☆ビジネス系のイベントは平日に 開催されることが多いので , どう しても一般の方が遊びにいくには スケジュール的に苦しくなってし まいます。ビジネス系のイベント を土・日曜日にまで開催して , ス ケジュールが合わないユーザが訪 問できるようなチャンスを期待し たいですね。 コンテスト BASIC STUDIO で作成したゲー ムのコンテストを開催してもらえ るとうれしいです。 磯邊直樹 ( 群馬県 ) ☆ 2001 年 7 月号と 8 月号で特集した 「 PIayStation 2 でプログラミング 遊ぼう ! BAS ℃ STUD ℃」は大好 評だったようで , さっそくゲーム 作りにチャレンジされる方がたく さんいるようです。 担当 : 「ヘンシューチョウ ! コ ンテスト開催の要望がありますが , どうですか ? おもしろいんじゃ ないですかあ ? 」 編集長 : 「おもしろそうだけど , コ ンテストが開催できるほどの応募 者数があるかなあ・・ ・。でも , 投稿 作品はウェルカムだから , 読者の 投稿がくるとおもしろいよねえ」 ということでした。素晴らしい作 品に仕上がりましたら , ぜひ編集 部までお寄せください ( ひょっと したら , 小学校の夏休みの工作の 宿題に『 BAS ℃ STUD ℃』を使って 作品を仕上げたお子さんがいるか もしれませんね ) 。 仕事 なんとか就職できました、 一日カ らやりたかったプログラマですが , 期待と不安が入り交じっています。 今までは個人で開発していました が , 仕事となると他人にも読みや すいプログラムを書けるようにな らないといけないので , 本当に自 分が書いたプログラムが読みやす いのかどうか , 考えながらプログ ラムしています。でも , なかなか 自分では実感しにくいですね。 長村善行 ( 大阪府 ) ☆就職おめでとうございます。 ごろは第一線でばりばりと働いて いるころでしようか。他人にも読 みやすいプログラムを作るのはと ても難しく , 最初の間は苦労しま す。でも , しだいに慣れてきます し , 先輩に「読みやすいプログラ ム」のコツを聞いて , テクニック を盜んでいくのもよいかもしれま せん ( 今の時期は体調を崩される 方が多いですから , お体には気を つけてお仕事をがんばってくださ い ) 。 PerI Perl からプログラムの世界に入 り , 現在は Java に熱中しています。 C は文法だけはわかるものの , あ えて C で組みたいものがないため に身につかないことが悩みです 木全哲也 ( 京都府 ) ☆ホームページを作成される方が 増えたため , 掲示板の設置などで CG 陸触り , その過程で Perl を覚 えられる読者の方も多いようです。 Pe はほかの言語に比べて理解し やすいので , perl からプログラミ ングの世界に入るのも 1 つの方法 でしよう。 プログラミングの考え方は C も Pe も大差ないので , Perl で得た 知識は他言語を学習する際にとて も役立ちます。また , 無理に C 言 語で組むことはなく , 自分自身の 中でヘストな言語を選んだり , 適 材適所で言語を切り替えて作成す るとよいでしよう。 初心者 始めたばかりなのでほとんどわ かりませんが , CMAGMINE を読 んで勉強したいと思います。 前田かなみ ( 島根県 ) ☆最初はだれもが初心者ですし , わからないことばかりで当然です。 でも , わからないことに興味を持 つのは重要なことです。入門者に 向けた記事もたくさん企画中なの で , これからも CMAGA 刀 NE をよ ろしくお願いします !