VS2010 と MFC

Visual Studio 2010 CTP の C++ に関する英語フォーラムを見ていたら、”MFC improvements in VC 2010 ??” というスレッドに MFC の行く末を案ずる投稿がされているのを見つけました。 その回答として VC++ 開発チームのメンバーが、あるビデオを紹介しています。それは 10月末に LA で開催された PDC で、Damien Watkins が実施したテクニカル セッションでした。 この中では、Damien が Visual Studio 2008 SP1 と Visual Studio 2010 CTP の MFC の新機能について、分かりやすくデモを交えながら紹介しつつ、今後のC++ 製品の開発ポリシーについても言及しています (残念ながら英語のみの提供です)。 ビデオの中では、Visual Studio 2008 SP1で MFC に追加された新機能の紹介部分は、ほぼ MSDN ライブラリの「新機能 (MFC Feature Pack)」のおさらいになっています。VS2010 については Application Recovery…


Visual Studio 2010 Community Technical Preview (CTP) を公開しました

はじめに Visual Studio 2008の次のバージョンである Visual Studio 2010 と .NET Framework 4.0 の初めての英語版 CTP を本日リリースしました。今回はセットアップ プログラムはなく、Virtual PC 2007 SP1上で動作する Virtual PC イメージです。 Visual Studio 2010 および .NET Framework 4.0 CTP 英語版ダウンロード 一番の目的は新機能の仕様評価 このCTPの目的は、開発者の皆さんから「Visual Studio 2010 の新機能の仕様」についての評価をいただくことです。 今後ベータが開始される時期には、開発チームとしては新機能の仕様改善よりも製品の総合的な安定化に少しずつ重点が移っていきます。安定化を重視する時期には、仕様の変更は多くの場合製品品質の不安定化要因とみなされるので、かなり厳格に制限されますが、まだ製品の安定化よりも新機能の追加を重視しているこの時期は、製品仕様に対するフィードバックをもっとも受け入れやすい時期でもあります。反対に製品の安定度や日本語処理等に関する評価は、ベータの提供をお待ちいただきたいと思います。 CTP の機能評価用ドキュメント ただし実際に Visual Studio 2010 CTP を使って評価を行う側としては、動作が安定しないソフトウェアを試すことは楽しい作業ではないと思います。そこでそういう方の手助けとして、今回 Walkthroughs (ウォークスルー) と言う CTP の機能評価用ドキュメントを用意しました。ウォークスルーは、Virtual PC 内の Visual Studio 2010 の Start…

4

Visual Studio の便利な使い方を毎日お届けします

今週より、英語ブログで非常に人気が高かったサラ フォードの “Visual Studio 2008 Tips of the Day” の日本語訳の提供を開始しました。サラ フォードのブログ “Visual Studio 2008 ワンポイント” このサイトでは、Visual Studio の便利な機能を一日一つずつご紹介していきます。Visual Studioをかなり使いこなしている皆さんでも、「これは知らなかった!」と思うような便利な使い方がたくさん出てくると思いますので、ご期待ください。 またサラのブログの特徴として、毎日の記事の更新をデスクトップに通知してくれるガジェットの存在があります。これも日本語記事専用のガジェットを用意していますので、Windows Vista をお使いの方はぜひ試してみてください。Visual Studio 2008 ワンポイント ガジェットのダウンロード ここでひとつ業務連絡があります。今回は MSDN ブログサイトを使ってサービスを開始しており、コメントも受け付けるようになっています。ただ残念ながらサラは日本語が読めません。また一つ一つのコメントを、すべてサラに英訳して届ける体制にはなっておりませんので、その点ご了承ください。 とはいえ、サラは今回日本の皆さんに自分のブログをご紹介できることを非常に喜んでおり、皆さんの反応にも大変関心を持っています。そのため、当分はみなさんの反応を確かめに、頻繁にコメントをチェックすると思います。ひとこと it’s nice. とか、this is very helpful. とか英語でコメントを入れていただくと大変喜ぶと思いますので、よろしくお願いいたします。 [4/11] 追加情報です。 サラのインタビュー ビデオが Channel9 サイトでご覧になれます。興味のある方はこちらもどうぞ… Sara Ford – “Katrina Survivor: This box is all that is left…

2

特別インタビュー & Exective E-Mail

今回は、ちょっと趣向を変えて最近弊社より発信された情報へのリンクをいくつかご紹介させていただきます。   まずは、CLR, Silverlightなど、弊社ランタイム系の開発チームの統括をしているスコット・ガスリーが先月来日したときのインタビューです。ランタイムのことだけではなくVS2008の新規機能についても語ってもらいました。(日本語訳付きです。再生にはSilverlightが必要となります。) http://www.microsoft.com/japan/msdn/events/vs2008/scott/interview.html   もうひとつは、Server and Tools Businessのチーム全体を統括しているシニアバイスプレジデントのボブ・マグリアから先月お客様向けに発信されたレーターのサイトです。仮想化(Virtualization)技術についてのお話をさせていただいています。   http://www.microsoft.com/japan/mscorp/execmail/2008/080121_bobm.aspx (日本語版はこちらです)   http://www.microsoft.com/mscorp/execmail/2008/01-21virtualization.mspx (英語の原文はこちらです)   仮想化技術の日本語のサイトはこちらです: http://www.microsoft.com/japan/virtualization/default.mspx   お時間のあるときにでもぜひこれらのサイトを訪問してみてください。  

1

KanaConverterの使い方

前回は、KanaConverterと、その基盤になっているTransliteralConverterの作成のいきさつに関して紹介をさせていただきました。抽象的な話でしたので、難しく感られた方も多いのではないかと思いますが、実際の機能は、手間を省いていただくことが目的ですので、簡単に使っていただけるようになっています。しかし、なにぶんbetaでもありますから行き届かないところがあるのではないかと思いますので、今回は具体的に使い方を書いてみようと思います。 作業をはじめる前に、Visual Studio International Pack Beta 1 (vsipk1betaというZipファイルになっています)をダウンロード後に展開し、JPNKanaConv というインストーラ パッケージのインストールを行ってください。実行の結果はUnicode固有の文字を含みますので、コンソール アプリケーションでは、上手く扱うことができません。今回はUTF-8が既定値であるWeb のプロジェクトを使います。Windowsフォームを使っていただいてもかまいません。今回は、Visual Basic言語を使います。 JpnKanaConvHelper.dllへの参照をソリューション エクスプローラから追加してください。このDLLはインストール先のフォルダにありますが、私の場合は既定のフォルダにインストールしていますので、Program Files以下の “Microsoft Visual Studio International Pack(Beta)\Japanese Kana Conversion Library” というところにあります。JpnKanConvHelperが依存しているJpnKanaConversion.dllや日本語用のリソース、IntelliSense用のXMLファイルなどもbinフォルダにコピーされます。 簡単にレイアウトのために2X3のテーブルをひとつ作成したあと、Labelを3つ置き、以下のImport文を vb側のコードに書きます。 Imports Microsoft.International.ConvertersImports Microsoft.VisualBasic ハンドラを追加したあと、コードは下のようになるものを書いてください。Label などは適当ですが、フォームに添ったものにします。 ひらがなをカタカナに変換するものですが、Charの型にある、ConvertFromUtf32を使っていくつかの文字をStringに変換しています。 13行目にある&H309B は独立の濁点である、 KATAKANA-HIRAGANA VOICED SOUND MARK、&H3099は複合のために濁点である COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK です。また、15行目のStrConv関数に渡されている &H411 は日本のロケールIDを表す 1041 の16進数です。ひらがなをカタカナに変換するコードの比較です。   上はIE7を使った表示です。   今回は、Visual Basicを使って、簡単にVisual Studio…


KanaConverterとTransliteralConverter

昨年は、International Pack ということで、東アジア圏の地域向けの機能を追加させていだくベータを出すことに成功したのですが、そのなかから「仮名」の変換をする機能のKanaConverterと、その基礎になっている状態機械を使ったTransliteralConverterに関して、この場を借りてご紹介をさせたいただこうと思います。 これらを作成に至った経緯には、私どものblogにも幾度か投稿させていただいた、「仮名文字」という日本語の基礎的な要素の処理を使って、日本語や日本文化に親和性の高い機能ができるのではないだろうかという考えがございました。私どもは国際化の仕事に携わる関係から、英語文化圏との比較をよく行うことがありますが、その中で、英数字表記をコミュニケーションの中心とした文化と、日本語のように多くの文字種の表記を扱う文化の間では、やはり使い勝手や操作性などに差があります。 .NET Framework は、英語文化圏や他のアジア、ヨーロッパ、中東文化圏に対応するシナリオと日本でのソフトウェアの使用シナリオの整合性を取った上で、それぞれの文化圏のシナリオに対応可能なよう設計をさせていただいていますが、その過程で特定の文化圏にのみに依存した機能の追加が困難となる場合もあります。その結果として、日本向けのアプリケーションをお作りいただく過程で作りこみの作業が発生し、追加のご負担をおかけしている点を少しでも改善できれば良いのではと考えておりました。 また、私たちの日常的なシナリオを考えますと、IMEによる仮名漢字変換やUnicodeなどによって多くの種類の文字が入出力可能になっているとともに、読み仮名や索引などで「ひらがな」や「カタカナ」を扱う局面も多くあります。そこで、新規、既存を問わず「仮名」のデータを活用する場面に何かお役にたてていただけるものを作りたいと思い、仮名文字を処理する機能を作成いたしました。 KanaConverter クラスには、既存の関数のような、簡単に文字列を変換する静的メソッドをUnicodeの仮名文字に合わせて集めてみました。また、限定的な用途だけではなく、複雑な要求にもお応えできるように、状態機械と構成ファイルを使ったTransliteralConverterを仕組みとしてご用意させていただいております。こちらは処理の遷移過程でのイベントの発生や、変換の割り当てを構成ファイルによって変更が可能になっています。用途は限定はしていませんが、仮名やローマ字を使った対話型のUI、日本語が表示できても英数字しか入力できないような海外の端末での補助的な入力手段、特殊な仮名文字の正規化などにお使いいただけるのではないかと考えております。 日本語を扱っても生産性が高く、さらに機能的なアプリケーションの作成にお使いいただければ幸いと考えております。また、お使いいただいたご感想やご要望などをMSDN フォーラム、もしくはこちらの投稿へのトラックバックにて、お聞かせいただき、将来に向けての、機能の向上、改善にご協力いただければと存じます。 長くなってしまいましたが、今回は、International Packの中のKanaConvertersとTransliteralConverterを作った経緯を紹介させていただきました。付属のドキュメントには簡単なサンプル コードを掲載させていただきましたが、もし機会がありましたら、近いうちに簡単な使用方法の説明をさせていただければと思います。

1

String.Normalizeとカタカナの複合文字

.NET Frameworkの2.0からですがStringクラスにNormalize というメソッドが付いたことをご存知の方も多いかと思います。Unicodeの文字列を正規化するものですが、日本語にも若干影響があるので、確認の意味を含めてカタカナでの半濁点の動作を検証してみようと思います。コードは簡単に以下のようなものだとお考えください。string[] sa = { “ポ”, “ホ゜”, “ホ\u309a”, “ポ”, “\u333d” }; foreach(string source in sa) { string normalized = source.Normalize(); Console.Write(“{0}\t”, normalized); foreach(ch in normalized) { Console.Write(“U+{0:x4} “, Convert.ToUInt16(ch)); } Console.WriteLine(); } いろいろと問題はあるかと思いますが、とりあえず、簡略するために仮想的に上のようなコードだとお考えいただくことにします。 ここで、一般的な表記として、カタカナにはいわゆる全角と半角があるのは、ご理解いただけると思いますが、ほかにも複合文字用の半濁点(U+309A: COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK) や独立した半濁点(U+309C: KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK)などを組み合わせると上記のような配列で良いかと思います。引数をもたないNormalize() メソッドはFormCという正規化を行い以下のような出力が得られます。 ポ U+30dd ホ゜ U+30db U+309c ポ U+30dd ポ U+ff8e U+ff9f…


.NET Frameworkのソースコード とシンボル ファイル

手元のメモを見ますと最初に日本のお客さまからのフィードバックを受け取ったのが2003年の秋ですから、約4年です。ずいぶんとお待たせし、個人的にはなつかしい気もいたします。何度かCLRの上層の方とミーティングを行ったときにリクエストは出していましたし、ほかの国からも同様な要望がありましたが、昨晩、.NET Frameworkのソースコードがシンボル ファイルと共に公開される話がアナウンスされました。   改変やリビルドはできないのですが、みなさんの開発のお役に立てていただければ幸いです。

1

Windows PowerShell から WMI Object にアクセスする方法

WMI (Windows Management Instrumentation) は、Windowsの情報を集中管理する目的で、Windows 2000から導入されました。コントロールパネルの「管理ツール」から「コンピュータの管理」を実行すると、WMIの表示、コントロールを行うツールが起動しますので、どのような情報を管理しているのか一目でわかります。   しかし、このツールはGUIインタフェースの為、ShellユーザーはWMIが提供する情報を得ることはできません。WMIが提供する情報は有用なものが多いためこの情報を使いたいと思っていても、ShellユーザーにとってWMIが提供する情報を利用するためにはC++またはVBScriptでプログラムを書くしかなく、とても面倒なのでWMIが提供する情報を使うことに躊躇された方もいらっしゃると思います。   そのようなときには、Windows PowerShellをお使いください。Windows PowerShellを使用すればWMIが提供する情報を簡単に取得できるようになります。Windows PowerShellにはWMIから情報を取得する方法としてGet-WmiObjectコマンドレットが用意されており、WMIクラスのインスタンスを取得することが簡単にできます。コマンドの書式は以下のとおりです。   Get-WmiObject <Class Name>     インストールされているクラスのリストを取得するには以下のように入力します。 Get-WmiObject -list   たくさんのクラスが表示されたことと思います。Microsoftが提供する標準クラスに関するドキュメントは以下の場所に用意されていますのでご覧になってみてください。 http://msdn2.microsoft.com/en-us/library/Aa394554.aspx   ここで幾つか役立ちそうな例をご紹介します。   BIOSの情報を取得する方法 Command: Get-WmiObject Win32_BIOS Output: 私の環境では以下のように表示されました。 SMBIOSBIOSBersion : 6.00 PG Manufacturer        : Phoenix Technologies, LTD Name              : Phoenix – Award BIOS v6.00PG SerialNumber       : Version            : RS480…


Silverlight 1.1の基本クラス ライブラリにおける非ジェネリック系のCollectionについて

Alpha版で調査をなされていらっしゃるお客さまも多いのではと思いますが、Silverlightのランタイムにおいて非ジェネリック系のコレクション クラスを取り除く予定でございます。また、ジェネリックのコレクション クラスでもList を使っての追加実装が可能な、Queue, Stack, LinkedListも取り除くことになります。ジェネリック コレクション クラスと非ジェネリック コレクション クラスのマップはMSDN ライブラリにございますが、非ジェネリック系のコレクションでビジネス ロジックなどを組み上げられてしまわれSilverlightとの共有をなされるご予定であられた方にはご迷惑をおかけすることになると思います。この変更は、サイズの制限、ジェネリックによるコードの読みやすさ、ボックス化のない高パフォーマンスでタイプ セーフなライブラリといった点を考慮し、機能的な相似性などを考えた結果でございます。しかし、このあたりのことを考えるにあたっては、日本語になっている情報や、お客さまの違いからくる日本のシナリオにおいて上手くいくかどうかということが気になりました。非ジェネリック固有の機能をロジックの判定にお使いになられている場合、まだ、ジェネリックまで手がまわらない方々の場合、また、コレクションのクラス ライブラリの使用や拡張をするまでにいたっていらっしゃらない場合など、クラスの独自実装はやはり困難になるかと思います。書店やWebを見ても、このあたりのガイダンスをする情報がなかなか日本語では見当たりませんし、私どもも製品のドキュメントでは網羅しきれない部分であり悩ましいところではあります。このような懸念があることを担当のInbar Gazitにフィードバックとして返したところ、最近になっていくつかblogにて情報を公開しております。こちらの変更に加えて、Stack クラスのジェネリックを使った変換のサンプルや、ジェネリックによるコレクション クラスの動作の違いの注意点、スレッドの同期の懸念などを取り上げた内容もございます。残念ながら英語なのですが、有用なサンプル コードがいくつか紹介されておりますので、ご参考にしていただければと思います。

1