nt_init を持っています。このメソッドは ev al でメソッドを実際に定義します。メソッ ドは形式に合わせて 3 つのパターンに分類 されていますが , これらのパターンは HT ML の種類に依存しないのでここでは定義 されません。 1908 行目の HtmlExtension モジュールは 前の行で定義された要素メソッドのコール バックを定義します。これらのコールバッ クによってメソッドごとに異なる引数の処 理が定義されます。 ・・ HTML ごとのモジュール ( 1719T763 行目 ) Htm13 , Htm14 , Htm14Tr , Htm14Fr は H TML の差異を表現するためのモジュール で , いずれも d 。 ctype と要素メソッドを定 義しています。 List15 に抜粋します。 形式的には HTML は SGML アプリケーシ ョンなので DOCTYPE という識別子が要求 されます。これをメソッドとして定義した のが doc pe です ( 1721 ~ 1723 行目 ) 。単に 決まった文字列を返すだけです。 1725 ~ 1761 行目は要素メソッドを定義す るためのメソッドです。まず TagMaker モ 同様に Htm14 , Htm14Tr , Htm14Fr も eleme 759 : end d した Htm13 モジュールで定義されています。 1907 行目の element_init は則の行で exten 呼ぶことにします。 れています。これらを以下では Htm13 系と しては Htm14 , Htm14Tr, Htm14Fr が用意さ り替えられる部分です。ほかの HTML に対 こだけが initialize の引数 pe で切 です。 固有の要素メソッドを定義するためのもの 1906 行目の Htm13 モジュールは HTM ロ .2 t 14 ) 。 って組み込むモジュールを決定します ( Lis TML の種類を指定します。この種類に従 先ほど見たように CGI : : new の引数には H ・・ initialize(1891 ~ 1925 行目 ) にコードを見ていくことにしましよう。 理解するために , 以下では実行される順番 やや混み入ったこの定義のシーケンスを す。 に雛形の雛形まで用意し 2 段階で生成しま は共通する部分がたくさんあるので , さら 生成するというものです。ただし , 雛形に るモジュールを extend したうえで , eval で ェクトを生成するときに in ⅲ alize で該当す ジュールとして用意しておき , CGI オプジ の HTML に対応するメソッド群の雛形をモ cgi. rb で採用している方法は , それぞれ onal には 65 個の要素があります。 ML 4.0 Strict には 55 個 , HTML 4.0 Transiti るのはたいへんなことです。たとえば HT 数の要素があるので , これをうまく表現す なります。それぞれの HTML にけっこうな って用意するかということが 1 つの問題に L の種類に合わせた要素メソッドをどうや ジュールを extend するところからこのメソ ッドは始まります。次の節で見るように T agMaker モジュールはパターンごとに nn element def, nOE element def , nO ele ment_def という 3 つのメソッドを定義して いて , これらは実際にタグを作るためのコ ード片を文字列として返すメソッドです。 List 15 では {nn_element—def を呼ぶ部分を 抜き出しています ( 残りのパターンは 1741 ~ 1759 行にあります ) 。 element_init は要素ごとに def 文を文字列 として作って , 最後に eval するだけですが , def 文を作るところでヒアドキュメントが利 用されています。さらに , ヒアドキュメン トで挟まれる定義の中身の部分は TagMak er モジュールのメソッドで作られます ・・ TagMaker モジュール ( 995 ~ 1053 行目 ) このモジュールは Htm13 系のモジュール に extend するためのものです。タグのパタ ーンに応じて要素名からタグの生成に使わ れるメソッドのコードを 3 パターンぶん定 義しています。タグのパターンは DTD 注 2] での要素宣言におけるタグ省略の可否と宣 0 List 747 : 748 : 749 : 750 : 751 : 752 : 753 : 754 : 755 : 756 : 757 : 758 : メタ変数をアクセスするためのメソッド 746 : fo て env in "'[ AUTH-TYPE CONTENT-TYPE GATEWAY—INTERFACE PATH—INFO PATH_TRANSLATED QUERY—STRING REMOTE. _ADDR REMOTE_HOST REMOTE—IDENT REMTE—USER REQUEST—METHOD SCRIPT—NAME SERVER—NAME SERVER—PROT(Æ)L SERVER_. SOFTWARE HTTP—ACCEPT HTTP—ACCEPT-CHARSET HTTP-ACCEPT_ENCODING HTTP—ACCEPT—LANGUAGE HTTP—CACHE—CONTROL HTTP—FROM HTTP—HOST HTTP_NEGOTIATE HTTP—PRAGMA HTTP_REFERER HTP_USER_AGENT ] eval ( くく -END ) def #{env. sub(/AHTTP-/n, env-table["#{env)"] を ) . downcase) end END List 623 624 625 626 627 628 629 637 649 650 デレゲーションを使っている Cookie require "delegate" c lass Cookie く Simp 厄 D 引 egator def initia lize ( name = , *value) options = if name. kind—of?(string) { = > name, "valuen else @value = Array(options["vaIue"J ) super(@value) => value ) List メソッドによる HTML の表現 # ! ん sr/local/bin/ruby require "cgi" cgi = CEI: : れ e ” ht 4 ” ) # add 日 T generation methods cgi ・ ou 日 ) d0 CGI: :pretty cgi. html{ cgi. head{ cgi. 缸目eドtit尾つ ) 十 cgi ・ body{ cgi. hl { "under construction") 十 cgi . p{ SO てて y , no に avail ab 厄 . cgi ・ a("href" = > ″ end 1 1 8 C MAGAZINE 2002 3
namc ロ 開発スタッフ大募集。 ナムコ史上ほとんど初めての大規模な開発スタッフ公募です。 あなたは今、ご自分のゲーム制作環境・開発結果に満足していますか ? ゲームの歴史をつくるゲーム、ゲームの世界を変えるゲーム。 そんなゲームを開発するためナムコに参加する方を求めています。 ■職種・待遇・応募要項などの詳細はナムコホームページ fhttp://www.namco.co.jp/] をご覧ください。 ■プログラマー、企画のご応募は同ホームページよりエントリーを受けつけています。 ・デザイナーのご応募は、郵送でエントリーを受けつけています。 ■問い合わせ先 : 株式会社ナムコ人事課 CM 係担当三上・正田・平井 ■〒 1 4 6 - 8 6 5 5 東京都大田区矢ロ 2 ー 1 ー 2 1 ( 職 0 3 ー 3 7 5 6 ー 8 7 0 7 E-mail RC-master@www.namco.co.jp) 0 職種 : プログラマー / 企画 / デザイナー 羊しくはナムコ HP http://www.namco.co.jp/ ONAMCO LTD. - 三 0
Ruby? 第 cgl•rb 後藤謙太郎 http:″www.notwork.0「g/ gotoken/mag/cmagazine/ 回 Ruby で作成したスクリプトを CGI として利用されている方も多いと思います。今 回は CGI の作成を支えている cgi. 「 b について解説し , そこに使われているテクニッ クを紹介します。 Ru y の C ライブラリ Ruby には cgi-lib. rb と cgi. rb , cgi/session. rb の 3 つの CGI 関連ライプラリがあります cgi-lib. rb と . rb は CGI を抽象化するもので , cgi/session. rb はセッション管理を支援しま す。 cgi-lib. rb は廃止されることになってい て , 現在はメンテナンスさえされていませ ん。 cgi - lib. rb について相談されたら「使わ ないでください」と答える風潮になってい ます。 cgi. rb が cgi-lib. rb の後継者というわけ です。これらのうち今回はまず cgi. rb を読 むことにします。 C の予備知識 本稿の目的はライプラリを読むことにあ るのですが , まずは CGI について確認して おきましよう。 Common Gateway lnterface すなわち CGI とは HITP とサーバ側のプロ グラムを結ぶインタフェイスのことです サーバと CGI のメッセージの流れに関する 関係を Fig. 1 に示します。この図のように CGI スクリプトは HITP アプリケーション ですが , ソケットを使った通信はサーバが 行うので , CGI スクリプト自身はソケット を扱いません。 こが , CGI が人気となっ た 1 つの理由でしよう。 余談ですが , CGI に人気があるもう 1 つ の理由として UNIX では # ! でインタブリタ 1 14 C MAGAZINE 2002 3 が選べるのも大きな要因だと思います。 W eb の初期にちょうど成熟してきた Perl が選 べたからです また AR フ uby で書いた WEBrick という サーバを使って WindowsMe などのいわゆ る 95 系の Windows で CGI を試みています が , まだうまくいっていません。この原稿 がみなさんに読まれるころにはできている とよいのですが ・・ H 幵 P サーバと CG 以クリプトの関係 Ⅳ I 丁 P サーノヾ側のプログラムは CGI の用 語でスクリプトと呼ばれます。クライアン トから送られる HTTP リクエストはリクエ ストヘッダとリクエストボデイからなりま すが , スクリプトが用いる情報は CGI で規 格化されていて , 環境やリクエストに関す る情報が文字列として与えられる「メタ変 数」と , とくに POST リクエストでペイロー ドとなる「リクエストメッセージボディ」か らなります。 CGI においてサーバとスクリ プトの通信路は標準入出力です。スクリプ トの標準入力にリクエストメッセージボデ ィが渡され , レスポンスへッダを含む結果 は標準出力に書き出します。ただしメタ変 数は環境変数としてサーバからスクリプト へ渡されます。 スクリプトの返す結果には parsed Heade r output と Non-Parsed Header ( NPH ) output の 2 通りの形式があります。 NPH が利用で きるかはサーバの種類や設定によって決ま ります。 cgi. rb ではこれらの違いは CGI # out の引数 に "nph' = > true を含めるか否かで対処します。 ・・ C 引の抽象化 さて CGI ライプラリに必要そうな機能に は次のものがあげられます。 ・メタ変数の提供 ・レスポンスの設定と送信 ・マルチパート ( mu は i - pa ) の解析 ・クッキーの支援 ・セッション管理 メタ変数はその変数名から値を取り出す ものなので , メソッドかハッシュふうのイ ンタフェイスを与えるのが自然でしよう。 一方レスポンスのヘッダは H"ITP で定めら れたものだけを送るとは限らないので , ハ ッシュ的なインタフェイスも必要です。ま た Content-Length のようにボディの内容か ら自動的に計算できるヘッダの値は , ライ プラリによろしく計算してもらいたいもの です。めんどうなのはマルチパートの解析 です。クッキーの支援とセッションの管理 はどういった API にするかでいくつもの選 択肢が考えられます。 こういった点を念頭に置いて , cgi. rb を 始めから読んでいきます。今回は Ruby 1.6. 6 リリース版のものを利用しました。 cgi. 市 cgi. rb は標準添付ライプラリの中では行 数でもバイト数でも 2 番目に長く , 全部で 1947 行あります [ 注 1 ] 。 cgi. rb はコメントによ
小型専用機、 NIC の 2 枚差し、 IFD など常時接続時代に必須のルーター運用を徹底解説 ! UN Ⅸ / Linux ユーザーのための活用情報誌 2 0 0 2 特別付録 CD ・ RO 2 ⅱ x2 日本語版 GNU アーカイプ集 2002 年春版 http://www.unixuser.jp/ UNIX ユーザーから見た低価格ルーターのメリット / デ盟ッド 低価格プロードバンドルーター UNIX USER サ 7ヾー導 Pragmatic UNIX ・「 outed の設定 Setting Up FreeBSD ・通信経路を安全 $6TPsec とま So 「 is 道をゆく・ squid を使用した Web キャッシゴサー / ヾ whatis UNIX ・新世代ファイルシステムの利用と注意点 GCC プログラミングエ房・セクション配置のからくり 愉快痛快 Ky ⅱ x ・スレッドを使った音声の録音と再生 practical Java Lesson ・ JDK 1.4 の新機能 = = 第。イま 特別定価 1380 円 び S E 大特集 特別企画 好評連載・ ~ ※予告なくい内容を変更する場合があり一ます。 広告主のホームペ - シを探すなら、こちら http://www.aqut.net/から . 表 4 http://www.aquaplus. CO. jp/ … 105 http://www.hOS.co.jp アクアプラス . 工イチ・オー・エス オーバス http://www.opus. CO. jp/ . 表 2 見開き http: 〃 www.zipc.com/ キャツツ . http://sun. CO. jp/se 「 vice/education/ サン・マイクロシステムズ .. http://www.namco. CO. jp ナムコ .
Enjoy Perl Programming モジュレを活用はう YukiWikiMini/TempIate の改良 結城浩 前回に引き続き , 不思議な掲示板システム Wiki を取り上げます。 前回作成した CGI に動的にページのスタイルを変更する機能や 更新情報を RSS 形式で出力する方法を実験してみます。 こんにちは , 結城浩です。今回は , 前回 作成した YukiW1kiMini/TempIate を改良し てみます。今回は次のような改良を行いま す。 ( 1 ) 最近更新されたページの一覧を表示 今回は「 YukiWikiMini/TempIa te の改良」 する機能 してくれるモジュール」です。詳しくは前 プログラムが持っている変数の内容に置換 れている貧 MP ー VAR > のような擬似タグを , 言でいえば「テンプレートファイルに含ま ML 文書を作成するためのものです。ひと モジュールで , テンプレートを使って HT ar く sam@tregar.com/ 氏によって作られた HTML::Template モジュールは Sam Treg HTML. :Template モジュール しておきます。 今回の内容に関連した Web ページを紹介 読み進む前に 回扱うモジュールを Table1 に示します。 ジュール Yuki : : RSS を作成してみます。今 とくに ( 3 ) に関しては , 自作の小さなモ ( 3 ) 更新情報を RSS 形式で出力する機能 機能 ( 2 ) 動的にページのスタイルを変更する 回の本連載記事および以下のページをご覧 ください。 ・ HTML::TempIate のページ http://sourceforge.net/projects/ html-template/ ・ HTML: Template の CVS サーバ(S0u℃ eForge http://sourceforge.net/cvs/ ?group_id=1075 ・ HTML::TempIate モジュールの解説 (Hi PP02000 さんの翻訳 ) http://member.nifty.ne jp/hipp02000/ perltips/html/template. htm Wiki, YukiWiki, YukiWikiMini など Wiki( ウイキイ ) というシステムは , 世界 中の誰でも , すべてのページを自由に変史 TabIe 1 今回扱うモジュール 名前 することができる CGI です。オリジナルの Wiki システムは Ward Cunningham 氏が作 ったもので , そのコンセプトを生かして独 自に実装された CGI が無数に存在します。 それを W1ki クローンといいます YukiW1ki は筆者が作成した Wiki クローン です。 YukiWikiMini は Wiki クローンの一種 で , 機能を最小限にしばったものです。 詳しくは以下のページを参考にしてくだ さい。 ・ Wiki のページ http://c2.com/cgi/wiki?WikiWikiWeb ・ YukiWiki のページ http://www hyuki.com/yukiwiki/ ・ YukiWikiMini のページ http://www.hyuki.com/yukiwiki/ ykwkmini. html 解説 HTML::Template HTML のテンプレートを取り扱うモジュール Yuki::RSS RSS 1 .0 形式の XML を出力するモジュール ( 今回自作 ) Table 2 YukiWikiMini/ffempIate で使うテンプレートファイル一覧 名前 dO 「 ead. tmpl do_index. tmpl do_edit. tmpl do—write. tmpl dO e 「「 0 「 . tm head. tmpl fOOt. tmpl 解説 通常のページを表示するとき 一覧ページを表示するとき 編集ページを表示するとき 書き込み直後のページを表示するとき 工ラーを表示するとき すべてのページの共通ヘッダ ( 直接 CGI からは呼ばれず , do_xxxx. tmp17 アイルから TMPL 」 NCLUDE される ) すべてのページの共通フッタ ( 同上 ) Enjoy PerI Programming モシュールを活用しよう 107
が複数個連続した文字列のことを WikiNam クをたどると , Fig. 12 のように RecentC 新規機能の解説 e と呼びます。これは , Wiki クローンでは hanges の内容が RSS で表示されます。 Yuki 自動的にサイト内のほかのページへのリン WikiMini/Template の画面の遷移の様子は クとみなされます。ページがまだ存在しな Fig. 13 のようになります。 ければ「 ? 」というリンクが表示されます。 Fig. 8 MyPage へ書き込む そのリンクをたどると編集モードに入りま す。 ( 6 ) 存在するべージ MyPage を作ると FrontPage の「 ? 」は消える MyPage の編集画面で FrontPage という 文字列を含むテキストを人力し , 匿ぎ込み ボタンを押します (Fig. 7 ) 。すると , Front Page の部分がリンクになっているのがわか ります (Fig. 8 ) 。 このように WikiName で表されるページ が存在していれば , WikiName 全体がリン クとなります。 ( 7 ) 最近の編集ページ 「最新」というリンクをたどると , Fig. 9 のように , 最近編集したページの一覧 ( Rec entChanges) が表示されます。 スタイルの変更 画面の右下に「スタイル : 1 , 2 , 3 」という Fig. 12 日 SS の出力 リンクがあります。これはこの CGI が 3 種 類のスタイルをサポートしていることを表 ファイル ( E ) 集 ( 印表示おこ入り ( ツール (I) ヘルプ ( 印 しています。同じ内容のコンテンツを 3 種 追む 類のスタイルで表示することができます アドレス 0 引 h ゆノ / Www}-.y歓 / 叩 / 14 / 川„紅 x (Fig. 10 , 11 ) 。 く ?xml version = い 1.0 ” encoding= ” Shift_JlS" ? > ・ - <rdf:RDF x 「司 ns : rdf = " h は p : / / www.w3.0 / 19 り 9 / 02 / 22 ィ df - syn い x - ns # " x n 三 = " h は p : / / p リ日 .0 / 門 5 / 1.0 / い > RSS の出力 - く ch nn 引 rdf:about= ・ http://www.hyuki.com/ep/14/ykwkt.cgi" <title> YukiWikiMini/Template</titIe> く link>http://v•ww.hyuki.com/ep/14/ykwkt.cgiく.tlink> <deSCflPt10n>YukiWikiMini/TempIate</description> サイトの情報を提供する化文書として , - く ltems> ー・ <rdf:Seq> く rdf:li rdf:resource="http://www.hyuki.com/ep/14/ykwkt. C0レ RSS (RDF Site Summary) という形式があり MyPage <rdf:li 「 df : 田 50u 代 e = http://www.hyuki.com/ep/14/ykwkt.cgi? ます。 FrontPage / > く /rdf : Seq> く /ltems> 今回作成した CGI では , RSS の 1.0 に対応 </channel> ー <ite 「 n rdf:about—"http://www.hyuki.com/ep/14/ykwkt.cgi?MyPage した出力を行うことができます。 く tItle>MyPaqe く /tltle> く link>http://www.hyuki.com/ep/14/ykwkt.cgi?MyPage く /link> く / em > 通常は RSS の出力は人間ではなくプログ ー <ltemrdf:about— http://www.hyuki.com/ep/14/ykwkt.cgi?FrontPage く t1tle>Frontpaqe</title> ラムが見るものですが , XML に対応した く link>http://www.hyuki.com/ep/14/ykwkt.cgi?Frontpage</Iink> く / ltem > プラウザなら直接表示させることも可能で </rdf:RDF> す。 CGI の画面左下にある「 RSS 」というリン 以降では , 前回の CGI に新しく追加した Fig. 10 表を使ったスタイル 2 ファイル 0 表示叨おこ入り⑧ツールヘルブ ネーム ~ 印新サイズ 工ンっード アドレス 0 淋 / / - 血 / ep. 4 / ) tc 町一 p 22 同ロ 言同ロ。 ファイル編累 ) 表示 ( お知こ入りツールヘルプせ ホム印サイズ 工ンコード アドレス 0 / / 司贏 00 印ハ 4 / , “ i MyPage FrontPage ー自分のべージを当りとして作ってみます。 阯迂 0 ェへ農るにはどうするかなを Yuk れ M i/Te 愴 02001 旦を豆 : 」リ辷 スタイル : し気 0 Y を物れノ T を mpla 02001 とえ 2 せ」」 」冫 Fig. 9 最近編集したページの一覧 ファイル 0 編表示お知こ入り内ツールヘルプ 木ーム , 印サイズ ード アドレス (Q) ″物い物 h 31V 印 / 1 4 / yk 朝甲 Ch ”引 RecentChanges Fig. 11 テキストを中心にしたスタイル 3 ファイルの集 0 表示おこ入り住 ) ン一ルヘルプせ 中止 ホム印サイズ 工ンコード アドレス 0 h p ノ / 物物員い石 co 宿ノ中 / 1 4 / 外純 ? p 興物 & 3 第 Fron ー % 自分の - ぐージを当むとして作ってみます。 Vi'ikiMini/Tælate ・ 2001 山き」」ユ 国同ロ 料同ロ - い賴い 50 しにドを ) 0 い , を 0 ド 0 トを : . にれ ! き′を・コ 010 い一 ! ~ 行 0 に一当 - 200 トに・ 25 ・もゼ ~ ムま - 200 ト - 25 ・シ望「受 E 型」ⅸニ覧ーまニムーー量鉱 れ k M のノ Tempia 0 2001 旦ーり & スタイル : もえミ ・津い / / 響 hyukl.com/ep/14/ykwktxml - は 0SOft lnternet Explorer 言同ロ ページが表示されま 1 10 C MAGAZINE 2 2 3
提供しています。 XML::RSS を使えば , 各 サイトが提供している RSS 情報をマージし ーユースポータルサイトを比較的楽に構 築することができます。 Yuki::RSS では RSS 情報を読むことはでき ませんが , XML::RSS を使ってうまく Wiki を連係すると , おもしろいサイトが作れる かもしれません。 Wiki Wiki クローンは , 遊び心や発想を刺激さ List encoding = > $hash{ encoding } , version $hash{version} , my $se げ = { my ($class, %hash) = ②ー・ sub new { # The constructor. Yuki::RSS モジュール (ー部 ) return bless $self, $class; items = > [ ] , channel = > { し my $dOC = くく″ EOD ″・ my ( $se げ ) = ②ー・ sub as—string { return $ se げー > { items push(@{$self->{items}}, *%hash); my ($self, %hash) 2 ー・ sub add-item { # Adding item. return $ se げー channel $self → (channel } → { $ 」 = $hash{$-); foreach (keys %hash) ( my ($self, %hash) = 2 ー・ sub channel ( # Setting channe l. <rdf:RDF く ? 灯 ll version="l. 0″ encoding="$self → {encoding}" ?> れるソフトです。 バッギング関連モジュールについてご紹介 次回は趣を変えて , PerI スクリプトのデ 次回は「デバッギング」 ざまな実験を行っています。 も YukiWiki や YukiWikiMini を通してさま いろな活用の可能性がありそうです。筆者 も , また個人の情報整理の場としてもいろ 多数の人のコラボレーションの場として List 2 可 OY PerI Programmmg モジュレを活用はう します。 もし , ご意見やご質問がありましたら , 本誌綴じ込みの編集部へのはがきでお知ら せくだされば幸いです。また , ご遠慮なく 結城浩 <hyuki@hyuki.com/ へメールをお 送りください。本連載に関するメールには 表題に [EP] という文字を含めてくださる です。 http://www.hyuki.com/ep/ 本連載に関する U 糺は , と助かります。 x 耐 ns : て df = ” ht セ p : / ん w3.0 て g / 1999 / 02 / 22- て df - syn し ax - ns # ” List Yuki : : 日 SS を利用するサンプルスクリプト ( samp 巨 pl) use strict ー use Yuki: :RSS; # Yuki::RSS オブジェクトの作成 my $rss = new Yuki: :RSS ( version め ' 1.0 ' encoding = > 'Shift—JIS' # ch 聞 n 引の設定 $rgs->channel ( title = 〉、響W. TEXTFILE. org , link "http://www.textfile.0てg/% description ″テキストとプログラミングの寡黙な情報集″ xmlns="http://purl .org/てss/1.0 だ く channel rdf:about="$self->{channel) →い土nk}”〉 く title>$self->{channel ト > { t 土凵 e}< 代土 e> く link>$self → {channel ト > い土 nk } く / link> <description>$se げー > { channe け - > {description } く /description> map { く /channe l> く / 土セ ems > く /rdf:Seq> } @{$self->{items)) qq{ く rdf: は rdf:resource="$—->{ link)" / 〉 } map ( く rdf:Seq> <i tems> $rss->add-item ( # em の追加 は = > "http://www.hyuki.com/ep/", title = > ″新 joy perl programming", $rss->add—item ( # 辻の追加 List 3 EOD </rdf :RDF> } @{$self->{items)) く / 土し em > く link>$--> { link } く / link> く title>$—->{title) く /title> く item rdf:about="$—->{ link)"> Enjoy PerI Programming モジュールを活用しよう close (FILE) print FILE $rss-»as—string ー open (FILE, ”〉 sample. xml") or die; # として出力 link = 〉”h鴕P://げ和W.hyuki.com/pb/" , title = > ″「 pe ⅵ言語プログラミングレッスン」入門編″ 1 1 3
T 叩 ic MONTHLY HEADLIN 米 Microsoft/MSDN 会員向けに Visual StudiO . NET の最終 リリース版を提供へ 米 Microsoft は VisuaI StudiO . NET の最終リリース版を MSDN 会員向けに 1 月 1 7 日より提供を開始した。米国では 2 月 13 日に $ 2499 ( アップグレード版は $ 549 ) で一般向けに発売される予定。 また , 無償ツールキット「 NET Framework Software DeveIopm ent Kit 」やドキュメントの提供も行っている。 ・ http://msdn.microsoft.com/vstudio/ 米 Qu comm / アプリケーション開発プラットホーム「 BREW 」 の日本語版 SDK を公開 米 QuaIcomm は , 携帯電話 ( 国内では KDDI()u ) が販売してい る cdmaOne/cdma2000 方式のものに採用 ) などに使われるソフ トウェア実行環境「 BREW 」の日本語版 SDK 「 BREW SDK Ver. 1. 0.2 」を無償で公開した。この SDK により C / C + + で BREW を搭載 した携帯電話向けアプリケーションが開発できる。 ・ https://brewx.qualcomm.com/developer/sdk/download.jsp Products グレープシティ /LEADTOOLS 円 ug - を発売 グレープシティは , 同社の画像処理ツールキット「 LEADTO OLS 12. OJ 」と組み合わせて使用することにより , J P EG 2000 やバーコードなどの画像処理を行うプラグイン製品「 L EA DT OOLS 曰 ug ヨ n 」の各製品を 2 月下旬に発売すると発表した。次 の 6 種類が提供される。 〇 JPEG 2000 PIug-In( 日本語版 : 予価 140 , 000 円 ) JPEG 2000 フォーマットによる画像操作を提供。 JP2, J2K の各フォーマット , J PEG 2000 圧縮された TIFF ファイルを それぞれ扱うことができ , これらで 8 ビットグレースケール , 24 ビットカラー画像 , 非可遡可逆圧縮をサポートする。 〇 Barcode Plug-ln( 日本語版 : 予価 198 , 000 円 ~ ) 1 次元バーコード ( J 旧で制定されている 5 種類のバーコード ) , 2 次元バーコード ( 川 M で制定されている CODE One と PDF41 7 ) の読み書きや処理操作を提供。 2 次元バーコードのみ「種類」 と「読み込み」「書き込み」それぞれの組み合わせで別パッケー ジとなる。 〇 FIashPix 曰 ug ヨ n ( 日本語版 : 予価 140 , 000 円 ) FIashPix フォーマットで画像の一部の読み込みと保存機能を 提供。 〇 Vector View 曰 ug ヨ n ( 英語版 : 予価 1 14 , 000 円 ) 2D, 3D べクタフォーマット (DWG, DWF, DXF, EMF, W MF, CGM, DGN, DRW, HPGL, P ℃ T, VEC ) の表示 / ラス タライズ機能を提供。 〇 PDF P 旧 g ヨ n ( 英語版 : 予価 205 , 000 円 ) PDF, PostScript, EPS フォーマットの処理機能を提供。 〇 OCR 曰 ug ヨ n ( 英語版 : 予価 270 , 000 円 ) 欧米 1 2 か国語 ( 英語 , フランス語 , ドイツ語 , イタリア語 , ノルウェー語 , ポルトガル語 , ロシア語 , スペイン語 , フィ ンランド語 , テンマーク語 , オランダ語 , スウェーデン語 ) に対応した OC 日機能を提供。 ・ http://www.grapecity.com/japan/leadtools/ ・ http://www.grapecity.com/japan/support/database/P0 144 1 0272 News. htm 1 54 C MAGAZINE 2002 3 Products Events メトロワークス / CodeWa ⅲ O 「 for MIPS Ver. 4. O を発売開始 メトロワークスは , 2001 年 1 月 15 日から「 CodeWa ⅲ 0 「 fo 「 M IPS Ver. 4.0 」の発売を開始した。価格は 1 ライセンスが 598 , 00 0 円 , テクニカルサポート 1 年間が 119 , 600 円 , 他ターゲット C PU 用の CodeWarrior for Embedded Systems ユーザ向け特別価 格であるマイグレーション価格が 358 , 800 円 , 旧バージョンの 登録ユーザ向けのアップグレード価格が 179 , 400 円。なお , 3 か月以内に Ve 「 . 3.7.5 を購入した登録ユーザには無償で Ver. 4 が提供される。 同製品は , Windows 98 / 2000 / NT4.0 をホストとし , M 旧 S32 旧 A に加え , IDT 32300 RlSCore, LSI EZ4103 , NEC V 「 5432 , PMC-Sierra 日 M7000 といった幅広い M 旧 S プロセッサのコード をビルド , デバッグできる。また , ターゲット接続には MIPS 標準の EJTAG 2.5 をはじめとした JTAG と京都マイクロコンピ ュータの PARTNER-ETII および PARTNER-J を利用できる。 ・ http://www.metrowerks.co.jp/ ウェブゲインジャパン / St 「 uctu 「 eB ⅶ de 「発売開始キャンペ ーンを実施 ウェブゲインジャパンは , 同社の Java 開発ツール「 WebGain StructureBuiIder 4.5.4 Enterprise Edition 」の発売開始キャンペ ーンを 1 月 10 日 ~ 3 月 31 日まで実施すると発表した。キャンペ ーン期間中は , 同製品をキャンペーン特別価格 98 , 000 円 / 1 ライ センスにて購入できる。 同製品は U M L べースでの We b アプリケーション開発支援ツ ール。作成したクラス図と Java コードは動的 / 自動的に同期さ せることができ , XMI を完全にサポートしている。ほかのモテ リングッールで作成されたダイアグラムをインポートし , ソー スコードの生成ができるほか , OpenAP 陸利用することで同 社の Java 統合開発ツール「 WebGain Visua ℃ afe 」やそのほかの 開発ツール , 構成管理ツール , バージョン管理ツールと統合し て利用できる。クラス図べースでの EJB 開発 , コンポーネント の再配置などを自動的に行う「 EJB デブロイ機能」などを提供し ている。 ・ http://www.webgain.co.jp/news and events/press_releases/ 020110 1 . html ウェブゲインジャパンⅣ isu Cafe Expert Edition 特別価 格キャンペーンを実施 ウェブゲインジャパンは , Java 統合開発ツール「 Visua ℃ afe Expert Edition 」の特別価格キャンペーンを 1 月 10 日 ~ 3 月 31 日ま で実施すると発表した。キャンペーン期間中は , 同製品をキャ ンペーン特別価格 36 , 000 円 / 1 ライセンスにて購入できる。対象 となるのは , Symantec Visua ℃ afe 全バージョン , 他社 IDE , WebGain Visua ℃ afe 4.1Expert Edition の各ユーザ。アップグレ ード版の申し込みは下記 Web サイトを参照のこと。 ・ http://www.webgain.co.jp/news and events/press_releases/ 020110 2. html Sun Tech Days が開催 サン・マイクロシステムズは 3 月 13 ~ 15 日にパシフィコ横浜 -n 議センターにて , Java, Jini, Solaris, XML, セキュリティ など最新開発情報を解説するセミナー「 Sun Tech Days 」を開催 する。参加費は事前申し込みで SDC 会員 / 18 , 000 円 , 一般 / 24 , 0 00 円など。下記の Web サイトにて申し込みを受け付けている。 ・ http://sun.co.jp/developers/techdays/
コフ 6 電気工作からソフトでの信号処理へ 昔でいう「ラジオ少年」を , 真空管でなく トランジスタに置き換えてやっていたのが 筆者です。振り返ってみると , 小さいころ に父親 ( 真空管ラジオ少年だったらしい ) に見てもらいながらさんざん遊んだラジオ やオーディオの電気工作の知識が , 本稿の ような分野を扱ううえで少なからず役立っ ているように思えます。ハンダゴテを握り , 電気部品を組み合わせて昔はハードでやっ ていたことを , 今はそっくりそのままソフ トで「工作」していることになるのでしよう。 もっともテスターは Mathematica に変わ り , ハンダゴテは Visual C + + になったため , 火傷の心配はなくなりましたが。 そうした状況やツールは変わっても , 小 さいころ工作していたさまざまな経験がデ ジタル処理でも「実体験に基づく現象の把 握」というかたちで予備知識として役に立 っていることが少なくありません。 IIR フィ 1 月号拙稿 ) といった二種の神器 ( ? ) とでもいうような 各次元での操作方法すべてが手に入りまし た。あとは応用しだいです。想像力をはた らかせて , ぜひみなさんなりの用途を考え てみてください。こうしたマニアック ( ? ) な要素技術がどんなものに応用できるかを 考えているだけでも , とても楽しいもので す。 本特集では PC 上でのソフトウェアによ るオーディオアプリケーションを念頭に置 き , すぐに応用ができそうな各種の信号処 理技術を見てきました。信号処理というと 最近は MP3 などの圧縮系の技術に目がいき がちですが , 今回特集したような基礎技術 もたいへん重要なもので , 本格的なオーデ イオアプリケーションを作るためには欠か すことができないものです。もちろん今回 紹介したものはその中でごく一部にすぎず , オーディオ向けのデジタル信号処理にはま だまだ多くのものがあります。今回紹介し きれなかった部分についてはいずれ別の機 会に譲りたいと思います。 最後に ルタなどはその典型で , 電気部品でやって いたことをそっくりそのままソフトウェア に置き換えただけです。アナログ回路の恐 るべき現象 , 「発振」ですら起こるのですか ら。アナログ回路の体験なくいきなりデジ タル信号処理から入ると , こんな現象はわ けのわからない怪奇現象に映るかもしれま せん。しかしアナログ回路の経験があると 「発振しているな。過剰にフィードバック がかかっているのかもしれない。ちょっと 理論計算してみよう」という発想が生まれ , トラブルにすばやく対応できます。何しろ , アナログ回路で聞き慣れた「あの音」が PC のスピーカから聞こえるのですから。 こうした経験から , これからデジタル信 号処理をしようと考える人は , オーディオ 系の電気工作にもぜひチャレンジしていた だきたいと思うのです。きっと新しい発見 があるに違いありません。 以前はデジタル信号処理は専用 DSP ( Di gital Signal Processor) の独壇場だったので すが , 近年のマイクロプロセッサ技術のお かげで , 家庭用の PC でもソフトウェアで気 楽に実装できるようになってきました。添 付のサンプルアプリケーションでぜひ実際 に体験してみてください。 日本では PC 上のオーディオアプリケー ションという観点からの文献や資料は海外 に比べるとまだまだ少なく , 寂しい思いが します。今回の特集が読者のみなさんにこ うした分野への興味を持ってもらうきっか けとなれば幸いです。 ・参考文献 ・全般 Digital Signal Processing Second Editi0 n ,Sanjit K. Mitra , McGraw-HiII Higher Education ・「ディジタル信号処理の基礎』 , 三上直樹 著 , CQ 出版 ・ PARTI ・「ディジタルフィルタと信号処理』 , 谷萩 隆嗣著 , コロナ社 ・「 C 用ディジタル信号処理』 , 小畑秀文 / 幹 テフ材尠 康著 , コロナ社 ・「ソフトウェアで実現するディジタルグ ラフィックイコライザの設計と実装」 (TI nterface 』 2000 年 12 月号 ) , 小川要著 , CQ 出版 ℃ 00kb00k formulae for audio EQ biquad filter coefficients" (http://www.harmony- central.com/Computer/Programming/A udio-EQ-Cookbook. txt) , Robert Bristow- Johnson 著 A Digital Signal Processing Primer", Ke Ⅱ Steiglitz 著 , Addison-WesIey Publishing ・ PART2 ・『デジタルフーリエ変換ビギナーズ』 , 中村尚五著 , 東京電機大学出版局 ・「 FFT ( 高速フーリエ・コサイン・サイン 変換 ) の概略と設計法」 (http://momonga. t. u-tokyo. ac.jp/-ooura/fftman/index. html), 大浦拓哉著 'Stephan M. Sprenger's Audio DSP Page s" (http://www.dspdimension.com/) , S tephan M. Sprenger ・ PA RT3 ・「サンプリングレート変換によるスロー / 早送りアプリケーションの理論と実装」 ()C MAGAZINE 』 2002 年 1 月号 ) , 小川要 著 , ソフトバンクパプリッシング High Quality Tme Scale Modification fo r Speech" (Proc IEEE lnt. Conf. Acoustic, Speech, Signal processing, VOI. 1 (pp. 493 -496 ) , March 1985 ) , S. Roucos, AM. Wi lgus 著 Fast T1me ScaIe Modification using Enve lope-Matching Technique (EM-ISM) , " (P roc. of 1998 IEEE lnt. Sym. on Circuits & Systems(ISCAS) , vol. 5 (pp. 55 553 ) , M onterey, CA, USA, June 1998. ) , J. 、 v. C. W ・ ong, 0. C. Au, P. H. 、 v. Wong ・そのほか有用な www リソース Harmony Central@-Audi0 Programmin g , http://www.harmony-central.com/C omputer/Programming/ ・ music-dsp , 信号処理関連 ML ( 英語 ) , http://shoko.calarts.edu/%7Eglmrboy/m usicdsp/music-dsp. h加11 特集 1 デジタルフィルタソフトウェアによるオーティオデジタル信号処理のレシピ 41
http://www.aqut.net/ 上 0 NET [ アキュトネット ] 0 0 AQUTNET とは ? 2001 年 4 月 16 日にスタートした登録会員制アンケートサイトです。 オープン後 6 ヶ月で会員数 1 5 , 0 0 0 名を突破しました。 アンケートを使ってみんなの声を集め、新しいものやサービスに つなげていきます。アンケートに答えると NAGY ( = ポイント ) が 貯まり、貯まった N A G Y はプレゼントに交換できます。 もちろん、登録は無料。チャンスはたっぷり ! 今すぐ登録しよう ! !