2005年11月12日 土曜日

David and Leigh Eddings / 女魔術師ポルガラ 2 「貴婦人の薔薇」

女魔術師ポルガラの視点で語られるベルガリアード前史 Polgara the Sorceress の2冊目。とりあえず出版されたので購入。即読了。最近の文庫本は高いと思いつつ、読み終わるまでがあまりにも早すぎるのはどういうことか。
前巻からの引き続きでアレンディアの騒動の顛末をつける所からスタートし、微妙なバランスでアレンディアをコントロールしつつ、アレンディアの新しい女公爵・エラト女公爵として長らくアレンディアの歴史に関わることになった話が前半部分。アレンディアとエラト公国を元に育てたセンダリアに深い愛着をベルガリアード本編で見せるのはこういうことだったのかと少々理解が前進。
中盤では「魔術師ベルガラス」でさらっと語られたオントローズとの恋愛と別れ、ポルガラを助けるキレーンとその一族との交流と別れ、リヴァの後継者達との生活と別れ、ベルガラスの足跡とは異なって、ポルガラの足跡は人々と深く結びついているだけに、死によって愛しい人たちと別れなければならない、永遠の時間を生きる彼女の悲しみが痛い一冊なのである。
ベルガリアード前史も残り一冊。ポルガラの話はどうベルガリアードに続いていきのか目が離せないのだが、来月までが異様に長く感じる。

2005年11月07日 月曜日

第162回 NTT東日本 N響コンサート

「炎のコバケン」こと小林研一郎指揮で、NHK交響楽団のコンサートに行ってきた。コバケンさんは一昨年の大晦日のジルベスターコンサートで、カウントダウンにベルリオーズの「幻想交響曲」の第5楽章を予告通り9分31秒で指揮して、きっかりカウントダウンを終わらせたのを見て以来(実はリハやってなかったらしい)、お気に入りの指揮者である。ホールは東京オペラシティコンサートホール タケミツメモリアルホール。
コバケンがN響をどう乗せるのかと思って聴いてみる。1曲目はベートヴェンの「エグモント序曲」。曲はコンサートの導入には最適な長さではあるけど、重い雰囲気の名曲。しかしながら早速観客とオケを引きずり込む素晴らしい演奏であった。
2曲目は高木綾子さんをフルートソロに迎えて、モーツアルトのフルート協奏曲。コバケンさんは控えめに、高木さんのノリノリな演奏にこれまた引き込まれてしまった。よく演奏会の2曲目はフルート協奏曲を聴くことが多いのだが、古典な退屈さを感じることがあって、気持ちよくなり、挙げ句の果てにうとうとしちゃうことが多い(気分が良くなるのもいいことなのだ)のだが、これまた息をつかせぬ演奏で、目の覚めるような感じだった。高木さんのCDを買ってみようかなと思うくらい言い演奏だったと思う。
今日のメインディッシュという3曲目はドボルザークの「新世界より」。編成が大きかったこと、音が良くなっていたこともありますが、全休止の時にはぴたっと音が止まり、パフォーマンスも演奏もダイナミックでした。後半はあっと言う間に終わってしまったと言うくらい息を付かせぬ演奏だった。コバケンさんも「鳥肌が立つような感覚だ」とおっしゃっていたが、期待通り以上の演奏だったと思う。
アンコール曲はスラブ系の曲で来るだろうと思っていたら、僕が管弦楽曲で一番気に入っているブラームスの「ハンガリー舞曲第1番」でした。この曲は録音ではまとまった演奏になっちゃうのだが、アンコール曲の定番で、熱狂に包まれて深いロマンシズムとダイナミックさを兼ね備えた演奏が多くて好きな曲である。コバケンさんが「アンコールにハンガリー舞曲の1番」と言った瞬間に「やったー」と思ったのは言うまでもない。興奮の中でコンサートは無事終了。そんなわけで見に行って良かった・・・

2005年10月27日 木曜日

何でもかんでもPowerPoint症候群

前の職場は_何でもかんでもExcel_という会社であったが、今の職場はさらに何でもかんでもPowerPointで資料を作る風潮がある何とも言えないところだ。ちょっとした打ち合わせの資料(はっきり言ってグラフだけだったら、不満はあるにせよExcelやDelta Graphのグラフだけで十分)から業務引継まで、何でもかんでも呆れてしまうくらいPowerPointなのである。たしかにプレゼンするときはPowerPointの資料は凄くすっきりまとまって良いのだけど、いかんせんまとまりすぎちゃうのである。 特に業務引継をPowerPointでされちゃうと、あとで見ると項目しか残らないのである。 欲しい情報は項目ではなくて、その詳細なのだがどうして文章を書かないのだろう? 全く持って泣けてくる話である。
Wordを使いこなせとは言わない。どうせ今まであった人で僕以上にWordをちゃんと使いこなしている人を見たことがないので。せめて報告書や引継関係の書類はめんどくさがらずに、テキストファイルでいいからきっちり文章を書いて欲しいのである。
ビジュアルな物にだまされちゃいけない。学生の頃に「ワープロで書くと文章の校正能力が落ちるんだよ」といわれたことがある。綺麗な外見にだまされて中身のチェックがおろそかになるぞという教訓であろうと思うのだが、なんでも綺麗なプレゼン資料にするという傾向はおかしいという状態を越えて、すでに病的であろうと思うのである。(文章のことは人のことを言えるようなレベルには全然到達していないわけだけども。)

写真をアップ

ポートレートのコーナーに長らく編集中としていたナツメさんRANさんのアルバムを掲載。春先忙しかったこともあって手をつけられられず、気が付くと春も通り過ぎて冬の写真を掲載しにくくなっちゃったので、ようやく時期を見て公開できそうになったので、まとめて公開。10月22日のシホさんのアルバムも公開。残りの分は来週までにはアップしたいと思います。(こちらは一応日記には掲載しているのだけども。)

もっと読む

2005年10月26日 水曜日

Visual C++ ToolkitでSTLPortとBoostを使えるようにする

まず最初に、お手軽にBoost+STLPortを使うなら、断然Debianでapt-getすることをお勧めします。apt-getさえしたら自動的に使えるようになります。それにもかかわらずVC++2003 Toolkitをインストールしてみた理由は、_VC++2003の方がC++98の準拠度が高そう_という単純な理由だったりする。Boostのサンプルプログラムを何個かgcc4でコンパイルしてみたのだけど、コンパイルできない物があったので、リファレンスとしてもう一つコンパイラが欲しくなったというわけだ。

そんなわけで、役立つかどうか知らないけどインストールのメモ。基本的にドキュメント通りインストールすればいいのだが… いろいろ落とし穴はある。

準備する物

楽しく遊ぶにはまず道具から。

Microsoft.NET Framework Ver 1.1 Residtributable Package

そもそもVC++ Toolkitをインストールために必要。日本語化のパッケージも入れておくと良いかも。

Microsoft.NET Framework SDK Ver 1.1

何個かのコマンドとスタティックライブラリが必要(msvcrt.libとか)

Visual C++ Toolkit 2003

これがないとはじまらない。

Microsoft Windows Server 2003 SP1 PlathomeSDK

なんとnmakeはこれにだけ付属している。あとWindowsSDKのヘッダが必要なときはこれがいる。

STLPort

STL自身は入れ替えなくても良さそうな気がするけど、GCCの環境に合わせることにする。日記執筆時の最新は2.6.2。

Boost

今日のメインディッシュ。Boost本体とbjamをダウンロードしておく。

下準備

インストールは.NET Framework関連 → .NET SDK → Plathome SDKの順番でインストール。特に説明すべきことはない。インストーラーでデフォルトのままでインストール後、コマンドライン・コンパイル環境を設定するためのVC++Toolkitについているvcvars32.bat(C:\Program Files\Microsoft Visual C++ Toolkit 2003にある)に環境変数を書き足す。以下のディレクトリをフルパス名で指定。デフォルトでインストールすれば以下のような物となるだろう。

  • 環境変数 PATH
    • c:\Program Files\Microsoft Visual C++ ToolKit 2003\bin
    • c:\Program Files\Microsoft Plathome SDK\bin
    • c:\Program Files\Microsoft Plathome SDK\bin\WinNT
    • c:\Program Files\Microsoft.NET\SDK\v1.1\bin
    • c:\windows\Microsoft.NET\Framework\v1.1.4322
  • 環境変数 INCLUDE
    • c:\Program Files\Microsoft Visual C++ ToolKit 2003\include
    • c:\Program Files\Microsoft Plathome SDK\include
    • c:\Program Files\Microsoft Visual Studio.NET 2003\Vc7\include
    • c:\Program Files\Microsoft.NET\SDK\v1.1\include
  • 環境変数 LIB
    • c:\Program Files\Microsoft Visual C++ ToolKit 2003\lib
    • c:\Program Files\Microsoft Plathome SDK\lib
    • c:\Program Files\Microsoft Visual Studio.NET 2003\Vc7\lib
    • c:\Program Files\Microsoft.NET\SDK\v1.1\lib

.net SDKに付属するVC++2003関連のディレクトリにパスを通すのを忘れると何個かのスタティックライブラリがリンクできないので注意。(まぁ気が付くと思うけれども。) ここまでインストールして足りない物はlib.exeですが、linkコマンドに/LIBスイッチを指定すれば同じ動作をするので、Makefileを書き直せばよろしい。あと足りないライブラリはmsvcprt.libとmsvcprtd.lib(標準C++ライブラリっぽい)。これはlinkのオプションで/nodefaultlibで読みにいかないように指定する。

STLPortのインストール

基本的にドキュメント通り。

  1. src\vc_common.makを書き換える。書き換えは先に説明したことであるが、LDFLAGS_COMMON に/nodefaultlib:msvcprt.lib /nodefaultlib:msvcprtd.libを書き足す。FLAGS_COMMON に -Zc:wchar_t -Zc:forScope を書き足す。(いろいろ見たところBoost::Regexのためっぽい。)
  2. nmake -f vc71.mak
  3. インストールしても良いのかもと思うけど、STLPortのバージョンが変わったら無駄なく入れ替えたいので、INCLUDEとLIBにパスを書き足しておいた方がよいと思う。

Boostのインストール

  1. tools\build\v1\msvc-tools.jamのactions together vc-Linkとかいう関数のなかにリンカオプションの設定ができるので、/nodefaultlibにlibcpmt.libとlibcpmtd.libとmsvcprt.libとmsvcprtd.libを書き足し。(これ他で書けると思う。)
  2. コンパイルする。凄く時間がかかる。コンパイルはbjamにやってもらう。コマンドライン指定は下を参照。(1行で入力で改行をスペースで置換。)
  3. インストールしても良いのかもと思うけど、Boostのバージョンが変わったら無駄なく入れ替えたいので、INCLUDEとLIBにパスを書き足しておくこと。LIBはBoost_1-33_0\stageに通せばよい。
    bjam "-sTOOLS=vc-7_1-stlport" "-sMSVCDir=[VCToolkit2003のインストールディレクトリ]"
     "-sSTLPORT_PATH=[STLportのヘッダーのあるディレクトリ]"
     "-sSTLPORT_VERSION=4.6.2"
     "-sBUILD=debug <stlport-iostream>on <native-wchar_t>on" stage

これでおしまい。基本的にWindowsのCプログラムでも同様だけども、何個か足りないライブラリとコマンドがあるので、ひたすら怪しいディレクトリにパスを通しまくったら、Boostがコンパイルできたっぽい。終わったらテストしたくなるのは人情というもので、気軽に試せそうなPreprocessを使う以下のサンプルをプリプロセッサ(コンパイルしないのかい!)に通してみよう。

#include <boost/preprocessor.hpp>
#define PRED(r, state) BOOST_PP_TUPLE_ELEM(2,1,state)
#define OP(r, state) (BOOST_PP_ADD(BOOST_PP_TUPLE_ELEM(2,0,state),BOOST_PP_TUPLE_ELEM(2,1,state)), BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(2,1,state)))
#define SUM(n) BOOST_PP_TUPLE_ELEM(2,0,BOOST_PP_WHILE(PRED,OP,(0,n)))
// 1から10までの和
SUM(10)

以下のようにして実行する。(このプログラムをコンパイルするとエラーになりますので。)

cl /EP hoge.cpp

ちゃんと55と表示されるはずである。あとは…

  • shard_ptrでBoost的Smart Pointerの恩恵を受けて見るも良し
  • オーソドックスにGeneric Programmingに勤しむも良し
  • Boost::MPLでメタプログラミングに目覚めて見るも良し
  • Boost::Preprocesserでマクロの深淵を見るも良し
  • Boost::lambdaやBoost::bindで遊んだ後にFC++で関数型プログラミングにチャレンジして見るも良し
  • Boost::Spiritで字句解析・構文解析に励むも良し
  • Boost::uBlasでTemplate Expressionによる計算に目覚めるも良し

まぁいろいろである。C++なんて古い言葉だよとか言っちゃいけない。マルチパラダイムな世界を突っ走っているだけあって、ここ数年のC++の進化は劇的です。なんて言ったって_C++って関数型言語だったのね_。だれかSICPをC++で読み解くという人はいない物か。

まぁここまで準備すれば、一応Windowsのプログラム(Meadowとか)もちゃんとコンパイルできるだろうと思います。試してないけど。

もっと読む

2005年10月22日 土曜日

今日は撮影に出かける

今日はあいにくの空模様だったのだけれど、ののさんより「蕎麦を食べつつ撮影してみませんか?」という蕎麦好き僕にとって嬉しい撮影会に誘われたので、行って来ました。今日のモデルはシホさんです。肌寒い中がんばっていただいたおかげもあって、気が付いたらメディアをほぼ使い切っていました。これまでこんな勢いで撮影したのは無いかもしれない。
今回の撮影ではポートレートを取り始めた頃のような初心に返った撮影をしてみたんですが、最近こういう撮影を忘れていたなあと楽しさを再発見しました。素敵な表情をくれたシホさんに感謝です。楽しい一日でした。よく考えたらシホさんと長時間話をするのは今日が初めてっぽい。
シホさん その1シホさん その2
今日の昼ご飯は深大寺でお蕎麦をいただいたのですが・・・ 田舎蕎麦を頼んだのに細打ち麺の方がきてしまったじゃないですか!まったく、もぅ。 まぁ食べてみたところ蕎麦の香りはこっちの方が強く感じたので、_結果オーライ_ということで良しとしよう。ここは良い感じのお寺さんなんですが、駅から遠いので1年に1回くらいしか行けません…
いつも撮影に誘ってくださるののさん、TOSIさん、肌寒い中がんばってくれたシホさん、今日は1日どうもありがとうございました。

稲葉 一浩 / Boost C++ Library プログラミング

最近数値計算とか多量のデータ処理しかしないけど、すっかりC++モードになってしまったこともあってSTLはよく使うのだけど、C++といえばOOPだけじゃなくて、templateをばりばり使ったGenericなプログラミングだよなと思いBoostを少しずつかじっているのだけど。この本を書店で見つけたときからいつ買おうかと悩んでいた物である。著者はLet’s Boostの稲葉さん。ここのサイトの内容を凄く肉付け(特にPreprocesserとboost::spiritあたり)されているので、数少ないBoostの日本語で読める本なので買って置いても良いだろう。
最近いろいろと思うのだけど、純粋にOOPを叫ぶようなものはJavaとかRubyに任せてしまって、C++はC++にしかできない_マルチパラダイムな世界を堪能しないともったいないじゃないか_と思うわけだ。Template MetaprogrammingはCコンパイラを、Preprocessor MetaprogrammingはCプリプロセッサをインタープリタと解釈して、コンパイルタイムにプログラムをいじっていくようなイメージなのだが、なかなか楽しい。でも見落とせないのはBoost::bindとかBoost::lambdaから広がる_関数型プログラミングの世界_だろうな。誰かC++でSICPを読み解くとか言う企画をやらないものかねえ。それにしても_そもそも何でもあり言語_だったC++だけど、ここまでくると凄い物があるなあ。(これもtemplateの特殊化とかいった仕様がなせる技なのだろうか。) しばらくこの本からスタートして、C++を眺めていくこととしたい。(すぐに使えそうなBoost::threadとかBoost::uBlasとかもあることぁ世掘目下の問題は_ちゃんとコンパイルできるC++98への準拠度が高いC++コンパイラの導入_だろうな。

もっと読む