CodeGear C++Builder の property

気になったので CodeGear C++Builder 2007 で試してみました。

// THoge.hpp
#ifndef THogeHPP
#define THogeHPP
class THoge
{
private:
int f_count;
void set_count(int n);
int get_count();
public:
THoge();
~THoge();
void doSomething();
// __property int count = {read = f_count, write = f_count};
__property int count = {read = get_count, write = set_count};
};
#endif
// THoge.cpp
#include "THoge.hpp"
THoge::THoge()
{
f_count = 0;
}
THoge::~THoge()
{
//
}
void THoge::doSomething()
{
f_count ++;
}
void THoge::set_count(int n)
{
f_count = n;
}
int THoge::get_count()
{
return f_count;
}
// Unit1.h
// (omitted)
private:	// ユーザー宣言
THoge *hoge;
// (omitted)
// Unit1.cpp
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
hoge = new THoge();
hoge->count = 100;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
hoge->doSomething();
int c = hoge->count;
AnsiString s;
s.sprintf("hoge %d", c);
Edit1->Text = s;
}

というようなものがちゃんと動きました。

__property という予約語は自分で勝手に作ったクラスで使える、ということのようです。Visual C++ の CLI でも property が使えるそうですが、CodeGear だと .NET じゃない Win32 でこれが使えるわけですね。

THoge クラスで予約語 __published: を使おうとしたらコンパイルエラーになったので、こちらは VCL 関連のクラスを継承していないとダメみたいです。

CodeGear RAD Studio の Help にはほとんど書かれていない C++ の property 拡張ですが、ここに説明がありました:

GalateaTalk と ISTC の今後

ISTC総会では音声認識、音声合成、顔画像合成の各グループの成果報告と次年度の目標なども伺いました。ISTCは情報処理学会の下で活動してきましたが、現在の計画では2008年度が最終年度となっています。

私は Galatea Dialog Studio に加えて Linux 版の統合作業を担当していますが、統合作業のほとんどの部分は GalateaTalk の統合作業になっています。

GalateaTalkは多くの構成要素から成り立っていて、それぞれの構成要素が独立した開発プロジェクトとしての側面を持っています。要素ごとにライセンスや配布許諾などの立場の違いもあります。

そして各プロジェクトは、それ自身が一つの研究プロジェクトでもあり、研究プロジェクトとしてのミッションで開発方針を決めておられる場合もあります。

結果的に「各パーツは公開されておりすべて入手可能だが、組み合わせてブラックボックス的に使うとなると手軽ではない」という事態になっているように感じます。

最近話題になった「島根県CMS」はシステムの一部として GalateaTalk を組み込んでオープンソースプロジェクトとして配布をしておられます。バージョン 1.0.2 のソースを私が確認してみたところ、ある過去の段階での GalateaTalk(信号処理エンジン)とChasen(形態素解析結果の後処理モジュール)に、別途 debian のパッケージとしての chasen, ipadic, kakasi などを組み合わせて使用されていることがわかりました。現在 ISTC が配布している GalateaTalk の最新版とはかなり異なったシステムになっているわけです。

こういった現状を考えると、ISTC があと1年で活動を終えてしまって、本当に大丈夫なのだろうか、という不安を感じます。

久しぶりにワインバーグ「コンサルタントの道具箱」をめくっていたら

  • 「鉄道の逆説」サービスがひどいから、サービス向上の要求が拒否される
  • 「鉄道の逆逆説」サービスがよすぎると、評判が聞こえてこないため、提供側がサービスを取りやめることがある

というのが目に入りました。ISTCのサービスはよすぎるとは決して言えないのですが、ひどいのかと言われると。。。

ISTCの中にいると「成果がどう受け入れられているのか見えない」と感じる反面、音声認識や音声合成のフリーソフトに対するニーズはそれなりに高いとも感じています。最終年度のISTCでどんなことができるのか、いろいろ考えていきたいと思います。

VoiceXMLとRuby on Rails

先日、音声対話技術コンソーシアム(ISTC)総会で、Galatea Dialog Studioについて御報告をして、表題の件についてこんなデモをお見せしました。

# voice_controller.rb
class VoiceController < ApplicationController
def state1
# counter をセッションで記憶する 
if !session[:counter]
session[:counter] = 1
else
session[:counter] += 1
end
@regions = {
'東京' => 'とうきょう',
'横浜' => 'よこはま',
'大阪' => 'おおさか',
'広島' => 'ひろしま',
'京都' => 'きょうと'
}
end
def state2
if params[:region]
@region = NKF.nkf('--utf8', params[:region])
end
end
end
# voice/state1.rxml
xml.instruct!
xml.vxml "version" => 2.0, "xml:lang" => "ja" do
xml.form :id => 'ask' do
xml.field :name => 'region' do
xml.prompt :timeout => '20s' do
xml.text! "#{session[:counter]}番です。"
xml.text! "天気を聞きたい地域を、"
@regions.each_key { |k| xml.text! k + "" }
xml.text! "から選んでください。"
end
xml.grammar :version => 1.0, :root => '#region_rule' do
xml.rule :id => 'region_rule' do
xml.tag!('one-of') do
@regions.each_key do |k|
xml.item do
xml.token :sym => @regions[k], :slot => "region" do
xml.text! k
end
end
end
xml.item do
xml.token :sym => "まいくてすと" do
xml.text! "マイクテスト"
end
end
end
end
end
end
xml.block do
xml.submit :next => (url_for :action => "state2")
end
end
end
# voice/state2.rxml
xml.instruct!
xml.vxml "version" => 2.0, "xml:lang" => "ja" do
xml.form :id => 'answer' do
xml.block :id => 'answer' do
xml.log "地域=#{@region}"
xml.prompt do
xml.text! "#{@region}の天気は曇りです。"
xml.break
end
xml.goto :next => (url_for :action => "state1")
end
end
end

VoiceXML処理系とRailsを組み合わせてフルスタックのアプリケーション開発環境を作る提案の最初のステップをお見せしたわけですが、RXML で VoiceXML を書いてみて、すっきりしたようなしないような、ちょっと中途半端な感じです。xml インスタンスにもうちょっと賢いメソッドを追加したら良いのかなあ、などと思案しています。

明日への遺言

映画「明日への遺言」が封切られてヒット中だそうです。私は昨年秋に、東京国際映画祭の特別招待作品として渋谷オーチャードホールで観てきました。映画祭に行くのも初めて、舞台挨拶も初めてで、あいにくの天気でしたが、貴重な「お祭り気分」を楽しむことができました。知人がエンドロールに名前を連ねていたのも嬉しかったのですが。

上映後、主演の藤田まことさんが挨拶の最後に「15秒や20秒でオチをつけなくてはいけない昨今、もっとゆっくりした時代に戻っていってほしい」といったことを言われました。監督の小泉堯史氏が、「来年3月の公開のときの観客動員が一番心配だ」と言っておられました。そのくらい「頑張らないと観てもらいにくい」映画であり、「頑張って多くの人に観てもらうべき」映画だと、制作者たちが自覚しているのだろう、と思って話を聞きました。

ひたすら「語ること」で物語が進み、「語ること」だけが観客の心を動かしていく、そんな映画です。戦争に関する映画なのですが、派手なシーンはなく、特殊な状況が言葉によって淡々と描写されていきます。

そして紡がれる言葉によって明らかになっていくのは、「法」や「組織」といったシステムの不透明で不気味な力です。「責任を取ること」を放棄した経営者や官僚たちが起こした昨今の数々の不祥事を思うと、複雑な気持ちになる。そんなことを考えながら映画館を後にしました。

あれから数ヶ月、相変わらず「責任の取り方」については不愉快なニュースが続いています。