« 2008年5月 | トップページ | 2008年9月 »

2008年6月14日 (土)

Expression Web 2の第一印象

Expression Web 2を使ってみました。

Expression Web 2は昔のFrontPageの後継ソフトで、要するにhtmlやWebサイトなどを手軽に作るツールです。ワープロ感覚でhtmlファイルを作れるのがこの手のツールの特徴で、私が運営しているVisual Basic 中学校の記事はFrontPage 2003で作成しています。

FrontPage2003→Expression Web→Expression Web2という流れになっています。これとは別にOfficeに収録されているSharePointDesignerという製品もありますがほとんど同じ機能です。というかExpression WebとSharePointDesignerのどこが違うのかわからないくらいです。

さて、Expression Web2は画面の雰囲気は他のExpressionシリーズの製品と統一されて黒っぽいおしゃれなものになっています。

1_2

でも、見ればわかるようにそれ以外は旧Expression Webと目立った違いはなく、言うなればFrontPage 2008という感じです。

新機能の話や変更点などの情報発信はマイクロソフトにお任せするとして、ここでは相変わらずVB2005、VB2008との相性が悪いという点指摘します。

以前Expression Webが出た時もこのブログで触れたのですが、たとえば、VBで「今1時です。」という文字列をコピーしてExpression Webに貼り付けると全角文字がすべて抜け落ちて「1」だけになってしまうという現象がありました。VBからのコピー&張り付けを重視する私としてはこれでは使い物になりません。

メモ帳などからの貼り付けでは問題ないのですが・・・。

この現象がExpression Web 2では治っているかと思ったのですが相変わらずでした。

以前調査してこの現象の原因はProgram Files\Common Files\microsoft shared\TextConv¥HTML32.CNVの問題であることまでは突き止めています。

このファイルの更新日付はExpression WebとExpression Web 2でまったく同じでした。改善されていないわけです。

前回同様、Frontpage2003に付属していたHTML32.CNVに置き換えたところ現象は治りました。このファイルの更新日付は2005/03/25 16:43です。Frontpage2003を持っていなかったら手が出ないところです。

Expression Webのときは、他にも貼り付けたテキストを複数行まとめてマウスで選択するとスクロールバーの位置が突然先頭に戻ってしまうという現象もあり、使用を断念したのですが、この点はExpression Web 2では改善されているようでご機嫌です。

これでうまく動いてくれるのなら使い続けたいと思います。

なお、付属のVBのバージョンは6.5でした。

| | コメント (0) | トラックバック (1)

2008年6月 9日 (月)

VB2008ではインターフェースにメソッドを実装できます

VB2008には言語自体に新機能がたくさんあるので、いまだに新しい発見をします。

先日、インターフェースにメソッドを定義する方法があることを発見しました。次のコードは有効なコードです。

Dim s As INullPulg
s.Say()

もちらんINullPulgはクラスではなくインターフェースですよ。インチキはしていません。

上記コードを動作させるために全体のコードも紹介します。

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim s As INullPulg

        s.Say()

    End Sub
End Class

Public Interface INullPulg
End Interface

Public Module ExtensionModule
    <System.Runtime.CompilerServices.Extension()> _
    Public Sub Say(ByVal plug As INullPulg)
        MsgBox("こんにちは!")
    End Sub
End Module

Windowsフォームアプリケーションにこれだけ書けば実際に試せます。

要は拡張メソッドを使っているのですがインターフェースにも拡張メソッドを持たせられるということがちょっと驚きです。このことがどう影響するか今後じっくり考えてみたいです。

この例ではINullPlugを実装したクラスにも自動的にSayメソッドの「実装」が備え付けられます。内部的にはどういう仕組みになっているんでしょうか?一度ILを解剖してみたいです。

このことに気がついたのはLINQで使用するメソッド(LINQの演算子)がIEnumerable(Of …)の拡張メソッドであるという話をよく考えてみたことがきっかけです。

| | コメント (1) | トラックバック (0)

« 2008年5月 | トップページ | 2008年9月 »