使ってみよう! Windows Live SDK/API

第7回 Windows Live Writer ―― プラグインの作成 Part I

この記事を読むのに必要な時間:およそ 4 分

メソッドの記述

貼り付けたURLを元にWebページのタイトルを取得する処理を記述します。URLプラグインではURLが貼り付けられたときCreateContentFromUrlメソッドが呼ばれます。このメソッドをオーバーライドし処理を追加します。

Public Overrides Sub CreateContentFromUrl(ByVal url As String, ByRef title As String, ByRef newContent As String)
End Sub

メソッドの引数は次のものがあります。

url 貼り付けられた・引用されたURL
title 「このコンテンツの引用」により引用された場合,そのWebページのタイトル
newContent 記事に挿入されるHTML文字列

titleとnewContentは参照渡しになっていますので,メソッドの内で変更した内容が記事へ挿入時に反映されます。

SDKにはプラグインの作成時に役立つヘルパークラスがいくつか用意されています。その中にWebへアクセスするためのPluginHttpRequestクラスがありますので,このクラスを利用して処理を書いてみます。PluginHttpRequestクラスは,コンストラクタ引数にアクセスするURLを渡し,GetResponseメソッドによりそのStreamの取得ができます。メソッドにタイムアウト値(ミリ秒)の指定も可能です。

まず,PluginHttpRequestクラスとStreamReaderクラスの変数宣言とWebページのタイトルを格納する変数を宣言します。タイトルには初期値としてurlを指定しておきます。

Dim request As PluginHttpRequest
Dim reader As IO.StreamReader = Nothing
Dim webTitle = url

次にStreamReaderのオブジェクトを作成します。ここではエンコード形式をUTF-8に固定にしています。Streamから順次 文字列を読み取り,<title></title>で括られた部分がないか正規表現を用いて探します。見つかった場合は読み取り処理を終了し,webTitleにタイトル部分を格納します。

Try
    request = New PluginHttpRequest(url)

    Dim html = New Text.StringBuilder
    reader = New IO.StreamReader(request.GetResponse(3000), Text.Encoding.UTF8)

    Do While reader.Peek <> -1
        ' WebページのHTMLを1行読み取り
        html.Append(reader.ReadLine)

        ' <title></title>で括られた部分があるか探す
        Dim match = Text.RegularExpressions.Regex.Match(html.ToString, "<title>(.*?)</title>", Text.RegularExpressions.RegexOptions.IgnoreCase)
        If match.Success Then
            ' タイトル部分を格納後,ループ処理を抜ける
            webTitle = match.Groups(1).Value
            Exit Do
        End If
    Loop

Catch ex As Exception
    ' Ignore
Finally
    If reader IsNot Nothing Then
        reader.Close()
    End If
End Try

最後にnewContentにハイパーリンクのHTMLを指定します。

newContent = String.Format("<a href=""{0}"">{1}</a>", url, webTitle)

以上でメソッドの記述は完了です。より実用的なものにするにはWebページのエンコード形式の判別や,URLが画像や圧縮ファイルなどの場合を考慮した処理が必要でしょう。

プラグインの実行

ビルドしてできたDLLファイルをWLWのPluginsフォルダにコピーした後,WLWを起動しましょう。プラグインが有効になっているかどうかはWLWのオプションウィンドウのプラグインで確認ができます図6⁠。

図6 オプションウィンドウ

図6 オプションウィンドウ

適当なURLを貼り付けてWebページのタイトルのハイパーリンクが挿入されれば成功です図7⁠。図はhttp://gihyo.jp/を貼り付けたときの結果です。いかがでしたでしょうか。

図7 作成したプラグインの実行結果

図7 作成したプラグインの実行結果

今回はここまでです。次回もまたプラグインを作ります。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp