碧落にて気まぐれに一言

2011/04/17

「一太郎2011 創」の初使用

Filed under: 未分類 — タグ: , , — Suguru Yamamoto @ 22:47

本日「.NETでドラッグ&ドロップ」という記事を公開しました。

この記事には名前の通り.NET上でドラッグ&ドロップを実装する場合の話を書いてあるのですが、合計4種類のGUIフレームワークを比較しつつドラッグ&ドロップAPIの考え方や使い方を記してあります。まあ、どちらかというと説明というより自分用のメモ書きを、他人でも読めるように整えたものですので不親切な部分も多々あるかもしれません。

私にとっての本記事、もう一つの価値は「一太郎2011 創」を初めて使って書いたことです。モリサワのフォントを使えるということで、一つぐらいは技術記事を新しく書いてPDF形式で公開したかったのです ;)

そんな不純(?)な動機もあって、今回はPDF版が用意されています。PDF版では、モリサワフォントの美しさもお楽しみください :)

(暇があったらヒラギノフォント版も作ってみたいなぁ…)

2011/01/17

備忘録: マウスクリック関連イベントの流れ

Filed under: 未分類 — タグ: , — Suguru Yamamoto @ 00:14

久しぶりのハッキングメモです。タイトル通りの内容で.NET FrameworkもといWindows.Formsフレームワークの仕様を掘り下げた記録です。
(続きを読む…)

2010/08/08

Windows Phone Developer Tools(β版)を試してみました

Filed under: 未分類 — タグ: , — Suguru Yamamoto @ 18:06

Windows Phone Developer Toolsのベータ版を試してみました。一番の目的は、Windows Phone 7がどんな感覚のOSになるのかをエミュレータで知った気分になることです :)

まずはWindows Phone Developer Toolsをダウンロードし、インストールしました。Windows Phone 7アプリを作るのに必要なツール類(Visual Studio 2010 Express for Windows Phone、Expression Blend for Windows Phoneなど)も同梱されており、インストール後にVisual Studio 2010 Express for Windows Phoneを起動すると初期画面にチュートリアルのウェブページへのリンクなどが表示されます。とりあえず、そのチュートリアルに従ってSilverlight for Windows Phoneのお試しアプリを作ってみたところ、非常に簡単に作成できました。なお作成したアプリだけでなくエミュレータでOS自体の使用感を確認しましたが、個人的には良い印象です。ただ開発用のエミュレータだからか、IEぐらいしかアプリが無く、電話帳などもありません。電話機としての使用感や「ハブ」というモノの使用感を試してみたい!と期待していた私的には少し残念でした…もちろん勝手に期待する方が悪いのですが ;)

さて開発の話です。Windows Phone 7用アプリは基本的に二種類に分類されます。Silverlightアプリか、XNAアプリです。後者はゲーム用フレームワークなので、ゲーム向けです。その他のアプリについてはSilverlightで作るのが基本となります。Windows Phone 7向けのSilverlightはVersion 3をベースに専用の機能を加えたものらしいですね。ということは、Silverlight 4の新機能であるクリップボードアクセスとローカルファイルアクセスは使えないということでしょうかね。まあ、特に前者はずいぶん前から言われていたことなので驚くことも無いですが。

ところで、今頃になって知ったのですがMSDNには次の記述があります。

WPF での表示はすべて DirectX エンジンによって実行されるようになっています。

なるほどWPFのサブセットで描画しているSilverlightがあれだけなめらかなアニメーションを表示できているのは、やっぱりハードウェアアクセラレーションが効いているからなのですね。そしてGDIではなくDirect X。納得です。コンピュータ画面は96 dpiしか無いと考えて良かった昔はピクセルを描画基準にしているGDIで何も不自由ありませんでしたが、高いDPIを持つデバイスが増えている今、描画単位がピクセルでは正直厳しいと思っていました。急速に、GDIは過去の遺物になりつつあると感じてしまいますね。まあピクセルが描画単位になっている上に事実上ハードウェアアクセラレーションが効かないGDI+に比べれば、GDIは素晴らしいモノですが。

…まったく、AzukiでGDI+ (System.Drawing.Graphics) を使わなくて本当に良かった… :|

2010/06/12

犯人はATOKだったのか…というボヤキ

Filed under: 未分類 — タグ: , , — Suguru Yamamoto @ 19:36

Advanced / W-ZERO3 [es]でAzukiのサンプルであるAnnを動かしていたところ、なにやら怪しい挙動が出てきました。Ctrl+BackSpaceで単語単位で削除を行おうとしたところ複数の単語が削除され、最後に入力した日本語が再入力されるという意味不明な動作です。

本日、これはAzukiのバグだろうと勘違いして解析していたのですが、結論としてはバグではなく「ATOKを無効化する」ことで現象が発生しなくなることが分かりました。Windows Mobileが悪いのかATOKが悪いのかは分からず釈然としないのですが、とりあえず「現象は起こる」、「Azuki側で対策できない」、ということでこの問題は放置することにします。以下に詳細を記します。

(続きを読む…)

2010/04/18

Spartを試してみました

Filed under: 未分類 — タグ: , — Suguru Yamamoto @ 00:41

今日、SpartというC#のライブラリを試してみました。

Spartはパーサジェネレータの一種で、元々はC++のboostライブラリに含まれているSpiritというライブラリをC#に移植したモノです。このライブラリで面白いのは、これを使ったコードの「見た目」です。次に、apple、orange、grapeの3単語を空白で区切られた文字列を解析し、見つけた単語を順番にコンソールへ表示する簡単な例を記してみます。非常にいい加減な例ですが。

// セマンティックアクションを定義
ActionEventArgs writeToConsole = delegate( object sender, ActionEventArgs e ) {
    Console.WriteLine( e.Value );
};

// 文法を定義
Rule sentence = Ops.OneOrMore(
    Ops.Sequence(
        Prims.Str("apple")                     [writeToConsole]
        | Prims.Str("orange")                  [writeToConsole]
        | Prims.Str("grape")                   [writeToConsole]
        , Ops.ZeroOrMore(Prims.Whitespace)
        )
    );

// パース
sentence.Parse( ... );

C#のコードなのに、文法規則を定義するコードがBNF風になります。特にセマンティックアクションをインデクサのオーバーロードで記述する、というアイデアはすごいなぁと感心しました。私には考えつかないですね(苦笑)。

ここ一年ぐらいパーサジェネレータを探してきましたが、見つけたモノの良し悪しは結局使ってみることでしか分からないんですよね。そうと分かっていながらも、時間などの都合で手がナカナカ出せていなかったなぁと思います。今日は久しぶりに(自分にとって)新しい技術に触れる機会が得られて良かったです。

Powered by WordPress