2006-02-27

C++/CLIによるインターフェイスクラスの使い方  [by miyachi]

以前にC++でboost::shared_ptrを使ってインターフェイスクラスを書くと言う事を書いたが、今回はそれのC++/CLI版。C++/CLIでは新たに interface が導入されJavaライクなインターフェイスが定義できるようになっている。またC++/CLIのマネージコードではガベージコレクションされるので gcnew と生成すれば破棄は自動的に行われるのでboost::shared_ptrも不要だ。早速サンプル。

// インターフェイスクラス
interface class IName {
public:
 virtual String ^ getName();
};

// 実装クラス
ref class Name : public IName {
public:
 Name( const std::string name )
 {
  a_name = gcnew String( name.c_str() );
 }
 virtual String ^ getName()
 {
  return a_name;
 }
private:
 String ^ a_name;
};

// ファクトリー関数
IName ^ makeName( const std::string name )
{
 IName ^ name_ptr = gcnew Name( name );
 return name_ptr;
}

// 使い方
void printName()
{
 std::string myname = "miyachi";
 IName ^ name_ptr = makeName( myname );
 Console::WriteLine( "Name = " + name_ptr->getName() + Environment::NewLine );
}


C++/CLIのマネージコードの世界ではStringを使う。内部はJavaと同じくユニコードになるので単純にcharポインタには変換できないので注意が必要。charポインタを使って初期化は出来る。

サンプルを見ると判るが、インターフェイスクラスにはinterfaceを付けて宣言をして、実装クラスにはrefを付けてマネージコードである事を宣言しておく。ただ細かくは実装クラスのメンバメソッドにもvirtualを付けなければいけなかったりする。

このサンプルを見るとC++/CLIと言うのはもう従来のネイティブなC++とは別物だと判る。コンソール出力もstd::coutだと.NETのStringが使え無いのでConsole::WriteLineを使わねばならない。

C#はマネージコードだけで済むなら便利だ、C++/CLIはネイティブコードとマネージコードの混在が可能なのが便利だ、ただしいずれにせよC++な世界とは言えないので移植性面では多大な問題があるだろう。C#やC++/CLIがどこまで広まるかが鍵となるが、.NET環境以外でこれらの言語を使えるようになるのだろうか?ちなみにMacOSの世界だとまた別言語となるObjective-C++なんてものもあるんだが… 困ったもんですねえ(^^;
2006-02-27 12:56:15 - miyachi - - [プログラミング] -

2006-02-24

iTMSが10億曲達成  [by miyachi]

「iTunes Music Storeで10億曲目購入のユーザー発表」

うわ~何を購入したかまで公表されちゃうんだ(^^; アニソンなんかダウンロードしている人だったら恥ずかしかったかもしれませんね。なお10億曲目をダウンロードした人に対しては20インチiMacやiPod60GBを10台(!)にiTMSの1万ドルプリペイドカードが貰えるとあって最後は急激にダウンロード数が伸びたそうで(笑)1秒あたり5曲売れているそうで。

私も10億曲目を狙った訳では無いがセブンイレブンで1500円プリペイドカードを買ってきて曲を購入してみた。アカウントはAppleIDのをそのまま利用。iTunesを立ち上げて…え~と「iTune Music Card」をクリックしろってどこに?あっ!あったあったずいぶん小さい字だな(^^; で登録するとめでたくiTunesの右上にアカウントと残り金額が表示されました。自宅でもどこでもアカウントが同じなら残り金額が表示されるので便利と言えば便利。試しに何曲か買ってみた。何の曲かは、ひ・み・つ。って単に古い曲なんで書くのが恥ずかしいだけって話ですが(笑) 確認のダイアログが出るだけで簡単に購入出来てすぐに再生も出来て便利。iPodへのコピーも簡単。便利だ。

iPod shuffle はアームバンドが欲しいなと思ってヨドバシで見てみるが… アームバンドってアップル純正しか無いのか… しかも3千4百円って… 本体が7千5百円くらいで買えるのに(^o^; もったいないのでスポーツ用のアームバンドでも今度探してみようと言う事に。で今晩はジムに行く予定なのでとりあえずポケットに入れて使ってiPodデビュー。

あとアップルは今月末に何か発表をするらしい。「アップル、またもや「謎の招待状」--28日に新製品発表へ」 IntelベースのiBookが発表されるのでは無いかとの予測もあるようですが、何が発表されるか楽しみに待ちましょう。それにしてもアップル元気やなあ…
2006-02-24 14:29:25 - miyachi - - [CG/MAC] -

2006-02-23

C#とC++/CLI  [by miyachi]

実は今C#を使ったプログラムを使っている。C#を使えばMSの世界にどっぷりハマる事は明確なのでこれまで正直言って避けていたのだ。しかし仕事とあっては避けてばかりもいられないので色々と勉強をしている(^^;

最初の難関はGUI部だ。Visual-C++でMFCを使った開発ならもう10年選手なのでお手の物。でもC#を使ったイベントドリブンなGUI開発は今更食指も動かないし細かなノウハウも使え無いのでパスしたいところ。ならC++(ネイティブコード)からC#(マネージコード)が使えれば良い。私のC#に関する知識はJavaの真似っ子と言うレベル。Javaはバイトコードと呼ばれる中間コードを仮想マシンVMで実行するが、C#はマネージコードと呼ばれる中間コードになるだけだろうと。JavaならJNIを使ってネイティブコードとインターフェイスを取るがC#だとDllImportを使えば良いのかと考えていた。ただ今回必要なのはネイティブコードから中間コードを使いたいので本当は逆向きだ。実はちょっと面倒だなと敬遠しかかっていた。

ところが先方から「Visual Studio .NET 2003のC++マネージ拡張」と言うのがあるがどうだ?とのメールが。チェックして見るとうわ~何だこれは(^^; .NET 2003ではC++マネージ拡張となっているが、最新のVisual Studio .NET 2005 を使えば C++/CLI と言うC++を拡張してマネージコードを吐ける規格が出来ているでは無いか。しかも1つのソースファイル中でも#pragmaを使ってマネージコードとネイティブコードが使い分けられる。さすがMS節操が無いぞ(笑) しかもフレームワークとしてもMFCと.NET Frameworkが同時に使えてしまう。何でもアリやなあ… Java環境だとネイティブのインターフェイスはJNIだけなので使いにくいがこれも色々理由があってそうなっているので、MSの実装が素晴らしいのかとんでも無いのかは立場によって異論があるところでしょう。

と言う事で細かな技術的な問題点はあるもののとりあえずネイティブコードとマネージコードの混在は可能なようだ。C++/CLIが使えるのは Visual Studio .NET 2005 からなので、これからは2005を中心に使うか。でも C++/CLI なんてのが動いてしまうと C# の立場はどーなる(^^;;

あと注意が必要なのはC++/CLIはC++の拡張であって上位互換しか無い点と、ソースはほぼ同じに見えるがC++/CLIだとマネージコードになるのでメモリ管理が従来のネイティブコードのC++とは全く別物になるので気をつけないとコンパイル時にエラーになる辺り。この辺りの注意点なんかはまた時間を見て書きたいと思います。とりあえず今日はこの辺りまで。
2006-02-23 13:51:21 - miyachi - - [プログラミング] -

2006-02-22

祝!M-V-8号機打ち上げ成功!  [by miyachi]

1日延期になって今朝になっていましたが無事に打上げ成功!これで今年前半の日本の打上げは全て成功と言う事になります。いや~良かったです。悪運は去年までで使い果たしのだと良いですね。

ただどんなに絶好調の時にでも失敗が出てしまうのが宇宙開発です。これからもガンガン打上げて少しくらいの失敗は許容する事が必要ですので冷静に見まもって行きましょう。「これで日本の宇宙開発技術は完璧だ」なんて言い出しそうなマスコミ報道を真に受けないようにと言う事で。

これだけじゃ何なので今回上がったASTRO-Fこと「あかり」に関するウンチクを1つ。リンク先でASTRO-Fの形状を見て太陽電池パドルで気が付く事が無いだろうか。そうパドルは本体部に直接固定されている。向きを変えたり回転したりする機構は付いていない。太陽電池パドルは太陽方向にある一定以内の角度で向いていないと定格の出力は出来ない仕組みだ。その意味でASTRO-Fが取れる姿勢にはその時の太陽の位置の関係で限界がある。

以前にISASの一般公開に行った時に説明されていた人にその事を聞いたら、その通りであってASTRO-Fが向ける方向には制限があるとの事だった。ただし気長に待っていれば太陽の位置も変化するしほぼ全天の観測が可能だそうです。さすがに天文の世界は気が長いと思ったものでした。それに良く考えたらそんなに頻繁に向きを変えていたら燃料が持たないですね(^^;
2006-02-22 09:50:00 - miyachi - - [宇宙開発] -

2006-02-20

祝!H-IIAの9号機打ち上げ成功!  [by miyachi]

先日の8号機に続いて9号機も無事打ち上げ成功!めでたいです!打ち上げられたのはMTSAT-2(運輸多目的衛星2号)です。名称はやはりひまわり7号となるようですね。詳しい情報はいつものようにSACの掲示板で。

さてMTSAT-2は国土交通省と気象庁の相乗り衛星です。予算的にみても国交省の方が沢山出しているのですが、一般に馴染みが深いひまわりの名称が結局採用されてしまい、国交省としては悔しいところでしょう。で国交省と言えばご意見番の猪俣氏が

「ひまわり6号」という呼称は、税金の無駄遣いを隠蔽するためではないかと怪しむのである

言っていたそうである。まあその前の日本自前の航空管制は必要か云々は検証の余地はあるにせよ、隠れ蓑にはしてないと思うぞ(^^; 逆に悔しいと思うのだが。

また航空管制機能は別にして(高額なので猪瀬氏らに検証して欲しいが)、アジアの気象観測衛星である「ひまわり」の存在価値は非常に高く、予備機の必要性は必須であったので、その意味では今回の打ち上げ成功は大きな意味を持つでしょう。問題は気象庁だけの予算で予備機打ち上げまでは出来なかった事実でしょう。

何はともあれS-310-36号機も含めると今年に入ってのロケット打上げは3連続成功中です。この調子で明日に迫ったM-V-8号機の打上げもぜひ成功を祈ってます!打上げは午前6時28分の予定…朝早く起きられるかな?(^o^;
2006-02-20 12:28:09 - miyachi - - [宇宙開発] -

2006-02-17

シャッフル シャッフル  [by miyachi]

と言う訳で安くなった「iPod shuffle 512MB」をゲット!うふふふふ… 使うのはジムでのトレーニング中なので512MBもあれば充分。ライブラリからテンポの良い曲を選んでみたが…まだ半分も埋まって無いなあ(^^;

常識なんでしょうがiPodは母艦となるiTunesマシンとの間で関連付けされているようで、昨夜自宅のPowerBookで初期化したのを会社のWindowsマシンに接続したらクリアするしかありませんでした。なるほどねえ。実はiTunesの母艦は仕事用Windowsマシンだったりするので会社で曲の入れ替えするしか無いですね。ついでにiTunesも最新の6.0.3に入れ替え。Windows版は一緒に入るQuickTimeがどうしてもタスクトレイに常駐したがる。もう慣れたので即座にオフにします(^^;

昨夜はPowerBookからiTMSもチェックしてたら結構欲しい曲があるなあ。しかも1曲150円。iTMSカードを買ってこようかと思ってます。Podcastも何か面白そうなのがあったし結構楽しいぞ!ああいかん!どっぷりとハマってしまいそうです(笑)

で肝心のジムは今週は設備点検の為に1週間お休みなのです。ジムで使うのは来週に持ち越しです。それまでに512MBを一杯にしときましょう。
2006-02-17 12:31:14 - miyachi - - [CG/MAC] -

2006-02-15

何だか色々と忙しい(^^;  [by miyachi]

公私共に何だかバタバタしてます。お仕事関係はちょっとまだ書けない事ばかりですが複数のお話なんかが急に動き出しそうな状況です。暇よりは良いので頑張りましょう(^^;

さてプライベートな方では先週土日に河口湖方面に1泊で旅行。目的はスキー&雪遊びです。河口湖近辺には2つの人工雪スキー場があります。1つは富士山麓にあるふじてんスノーリゾート(右写真)で、もう1つは甲府盆地側にあるカムイみさかスキー場です。我が家は3歳と10歳の子供がいて2人ともスキー未経験な状況です。従って半分以上は雪遊びが目的となります。どっちが良いのかなあと悩みつつ結局初日はふじてんへ2日目はカムイみさかに行ったのでした。日帰りだとどちらにするか悩まれている人もいるでしょうね。なのでちょっと情報をまとめておきましょう。

[ふじてんスノーリゾート]
駐車場代1000円もかかるしカムイみさかよりは各種経費はやや高めとなります。キッズランドはスキーゲレンデとソリゲレンデに分かれているし広いしとても充実しています。雪遊びがメインならふじてんの方がお奨めです。ただ人も多いです。土曜日に行ったのですが午前中は雪遊びをして午後からスキーをやらせようと思ったらお昼には全レンタルスキー貸出中で貸出停止!おい!そんな事でスキー場として良いのか!結局スキーは断念して雪遊びに専念しました(^_^;; リフトも混んでいたようですしスキーが目的だと色々大変かもしれません。ただ間近に富士山が広がっており景色も良いし施設も色々と整っています。

[カムイみさかスキー場]
河口湖から甲府の方にトンネル1本抜けた場所にあります。中央道の一宮御坂ICからの方が便利なようです。景色は富士山も見えないし近所の山だけで山間のひなびたスキー場と言う感じですしゲレンデ自体もふじてんよりやや狭い。キッズコーナーも広く無いようですし、初心者用ファミリーゲレンデがキッズコーナーと反対側で少し高い位置にあって両方使うにはやや不便。ただふじてんよりは空いているように思えます。こちらには日曜日に行ったので前日土曜日がどうだったかは判りませんが、この日はリフト待ちもほとんど無く快適に滑れました。ただ全般的に初級コースばかりなので中上級の方は不満かもしれませんね。私程度だと軽く足慣らし程度なので快適に滑れました。スキー目的ならこちらの方が良いかもしれません。駐車場も無料です。

結論としては雪遊びや子供メインならふじてんスノーリゾートが、スキーがメインならカムイみさかスキー場がお奨めです。

ちなみに泊まった宿は温泉旅館「若富士」です。前の週に子供のお友達の家が利用して安くて新しくて綺麗だったとの話を聞いて決定。1泊2食付で大人1人8,400円なので下手なペンションより安いです。食事も天ぷらや1人鍋等色々種類が出ましたし、狭い風呂場ながら温泉ですしお得感がありました。和室なのも家族連れには便利です。ただ富士山や河口湖が直接見える訳では無いので景観を期待してはいけません(笑)

この日は河口湖冬花火もあり、トイレは付いていないけど花火が見える部屋にしてもらったので花火を堪能しました。宿の方の話だとトイレ付で花火が見えない部屋と悩まれたそうですが、小さい子がいたので部屋から花火を見る事が出来て良かったです。ちなみに花火は30分くらい続いて見応えありましたし部屋からでも大きく見えました。宿の方も色々親切でした。また使いたいですね。

さてゴールド免許の私としては先日5年ぶりの免許更新に行って来ました。ただこの5年の間に更新手続きは色々変更されていたんですねえ。以前だと申請書を作成する必要があって試験場の周りには代書屋が客引きで大変だったんですが、今は窓口に更新のハガキと免許を出すだけで申請書をくれるようになってました。代書屋は半減してましたしガラガラでした(笑) 印紙を貼って目の検査して写真を撮って30分もかからずに講習です。優良は30分講習なので試験場に入ってから1時間ちょっとで新免許を受け取りました。早い!便利だ!ちょっと感動(^^; 次の更新は平成23年ですか…先だなあ… またゴールド免許貰えるように安全運転を心がけます!
2006-02-15 13:12:59 - miyachi - - [週末の出来事] -

2006-02-10

プルダウン付きのツールバー  [by miyachi]

え~先日から書いているWin32でのツールバーシリーズ(笑) 今日のお題はIEやFireFoxなんかでも使われているツールバーにプルダウンのリストなんかのボタン以外のパーツを置く方法。

MFCのツールバークラス CToolBarCtrl で標準で設定できるのは、ボタン(TBSTYLE_BUTTON)とチェックボタン(TBSTYLE_CHECK)とセパレータ(TBSTYLE_SEP)の3種類のみ。ではどうするかと言えばセパレータを1つ指定して横幅を変更してその上にプルダウン等のパーツ(例:CComboBox)を乗っけてしまう事で実現する。

この方法で問題は無いのだが、ベースになるのがセパレータなのでプルダウンの高さがツールバーより小さい場合は余計な縦棒が背景に表示されてしまう。これを防ぐ方法を検索したが見つからないので力技でツールバーとプルダウンの間に空のテキストウィンドウ(CStatic)を置く事でクリアした。
 CToolBarCtrl m_TBar;
 (ツールバーの初期化は省略/セパレータをcmdidで生成しておく)
 // セパレータの幅を変更する
 CRect rect;
 const int nComboWidth = 110; // コンボボックスの幅
 TBBUTTONINFO tbbi;
 ZeroMemory( &tbbi, sizeof(tbbi) );
 tbbi.dwMask = TBIF_SIZE;
 tbbi.cbSize = sizeof(tbbi);
 tbbi.cx = nComboWidth + 4;
 m_TBar.SetButtonInfo( cmdid, &tbbi ); // cmdidはindexとは違う
 // 縦棒を塗りつぶす為のテキスト領域
 CStatic m_Base;
 m_TBar.GetItemRect( index, &rect ); // ここはindex(何番目)で指定
 m_Base.Create( "", WS_VISIBLE , rect, &m_TBar, 0 );
 // コンボボックスの生成
 CComboBox m_Combo;
 rect.top += 4; // 適当に上からの位置を指定
 rect.left += 2; // 開始位置もずらす
 m_Combo.Create(
  CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VISIBLE | WS_TABSTOP,
  rect, &m_TBar, 1 );
 // 必要ならこの後でフォントやリスト文字列をセットする
以上参考になれば幸いです :-)

さて先日「1ギガiPod nanoが登場―shuffleは値下げ」のアナウンスが。512MBのshuffleなら7900円か…う~むジム用に買ってしまいそうな値段になったぞ… CDを2~3枚を買うと思えば買えなくも無い(^^;;
2006-02-10 12:52:04 - miyachi - - [プログラミング] -

伊福部昭 氏 逝く  [by miyachi]

あちこちのSFや特撮をネタにしているサイトでももちろん哀悼の意が述べられているし皆さんもご存知だとは思いますが、私が子供の頃のゴジラ等の映画で強烈に印象を残した音楽を作曲した伊福部昭氏が8日に亡くなられた。心からご冥福をお祈りします。

ゴジラや宇宙大戦争の曲が頭の中で蘇る。またちゃんと聴いてみたいと思ったら松浦さんが購入可能なCDなんかを紹介されている。「宙-伊福部昭 SF交響ファンタジー」を買ってみようかな。<先日アマゾン購入が楽だったので味もしめているらしい(^^;

何はともあれ子供時代の楽しい思い出をありがとうございましたm(_ _)m
2006-02-10 12:26:30 - miyachi - - [一般] -

2006-02-06

黒ヤギさんからお便り着いた  [by miyachi]

まず写真は今日のうちの事務所の前から1枚。2階以上へ鉄筋なんかを運び上げるクレーン車が「でえ~ん」と停車して朝から時々「ぐお~」とエンジン音を響かせております(笑)現在2階部分の作業中のようで水平方向からトントンカンカン音がします。

さて1通目のお便りはC社のKさんから。Kさんのお住まいの場所では「水曜どうでしょう」の新版が放送中。第7話はかつて無いバラエティー番組になっているとの事。「真っ暗な映像に文字のみ+会話」だとか…(^^;;;;; Kさん曰く「これを放送しようというTV局に、ある意味感動があります。」 全く同感であります(笑) やはりキー局で放映するには無理があり過ぎる番組ですね。「普通であれば、放送事故。」 いや全くその通りで。でもこの番組は普段から背景はサイコロの旅とかの車中な訳ですしディレクターは声はすれども姿は映らずだったりするし文字と会話だけで充分番組になるかも。

追記:後で考えたら上記文章はネタバレだな(^^; と言う事でフォント色を背景色と同じにしてしまったので知りたい方だけ文を選択してして読んでくださいm(_ _)m

千葉テレビで放映中のクラシックでは北海道の212全市町村を2泊3日で巡る旅が放送中。単に巡るだけでも時間が足りないと思われるのに、わざわざ全てカードにして引いたカード順に回ると言うどうでしょうらしい余計な縛りがあって2泊3日ではどう考えても無理。でも別に目的達成とかはどーでも良いんだよなあ、この番組の場合。と言う事で先日買った「1/6の夢旅人2002」を繰り返し聞いている(^^;

さて2通目のお便りは事務所近所で働いているOさんから。近所にある美味しいお蕎麦屋さんをメールで教えて貰ったので早速今日のお昼にOkaくんと行って来ました。私は蕎麦屋なのに掟破りの「穴子天丼」を食べた。朝仕込んでいるとかで穴子がプリプリで死ぬほど美味かった!他の客の食べている物を見てもどれも本当に美味しそう。それに加えてこの店なんか食器がフツーより一回り大きいような気が… 値段もそこそこはするが千円以下がほとんどなので内容を考えれば絶対お得だねこれは。また行こう。

他にも良く行く蕎麦屋が近所にあるんだけど、ここも今日行ったお店もお昼は11時半には満席に近い。地元の人が多いようなんだけど江戸っ子は気が早い?
2006-02-06 12:36:24 - miyachi - - [一般] -

2006-02-02

アマゾンでお買物  [by miyachi]

一昨日書いていた「わかりやすさにこだわった太極拳二十四式」をアマゾンで購入。ついでに「1/6の夢旅人2002 [MAXI] 」も買ってみる。「水曜どうでしょう」のエンディング曲だ。「1/6の夢旅人 二度目のありがとう [Maxi]」ってのも出ていてこちらは番組で使っていたものもそのまま収録してあるらしくて悩んだがCD-EXTRA映像「水曜どうでしょう 同窓会」に引かれて「1/6の夢旅人2002 [MAXI] 」の方にしてみた。注文したのは一昨日の夜だったりするんだけど、今日昼過ぎに届いた。早い!送料も無料だし着払い出来るしこれは便利だよなあ。本屋やレコード(CD)屋も大変な時代になって来ましたね。昔なら町内に1軒はどちらもあったものですが最近はバタバタと店じまいしているもんなあ…

なこたーどーでも良いってか。早速「1/6の夢旅人2002」を聴いてみる。えー歌ですなあ(^^; 水曜どうでしょうの場面が走馬灯のように浮かんできます(笑) で「水曜どうでしょう 同窓会」を見る。おお!これはまさしく「水曜どうでしょう」だ(爆) ファン(藩士)なら必見の1枚かな。これで1,350円(amazon価格)なら安いぞ。と言う事でCDどうでしょう。>C社のKさん :-)

ついでに買ったCDの方ばかりの話はこっちにおいといて、閑話休題。「わかりやすさにこだわった太極拳二十四式」は90%以上がパラパラマンガ風コマ送り写真で構成されている。重心の置き方も図示してあってたしかにわかりやすい(笑) DVDは套路(型)を通しで正面からと背面からで映したものと、各套路毎の解説もある。套路毎の解説は本の方と同じだがDVDの方が詳しいかも。勉強になるなあ。と言うかこれから勉強しますm(_ _)m
2006-02-02 14:56:48 - miyachi - - [一般] -