外部サイトにブログを持っていた時、ブログ投稿用のクライアントアプリを使っていました。一つのWriterソフトで Movable Type, fc2 等 に投稿できました。どうしてこんなことできるのかなぁと調べてみると 各ブログのXRM-RPCエンドポイントにXRM-RPC 仕様に従った API 呼び出すことで実現できているらしいです(ブログ引っ越し機能が各ブログサービスにありますしずっと前からある機能でしょう。私がしらなかっただけで)。例えば metaWebLog API を使用して wordpress や fc2 にブログを投稿したり編集できるみたいです。

ブログに投稿するプログラムを作ってみようと思ったのですが、すでに 下記URLの XRM-RPC.NET というのがあるらしい。

XRM-RPC.NET
http://xml-rpc.net/index.html

XRM-RPC仕様や metaWebLog API は次のURLが参考になります。

XRM-RPC.COM
http://xmlrpc.scripting.com/default.html
MetaWeblog API リファレンス(MSDNのWindows Live Spaces)
http://msdn.microsoft.com/ja-jp/library/bb259697.aspx
RFC: MetaWeblog API
http://xmlrpc.scripting.com/metaWeblogApi.html

記事作成時点で XRM-RPC.NET では安定版がhttp://xml-rpc.net/download.htmlページ内にxml-rpc.net.2.5.0.zipという名前で公開されています。公開されているソリューションは Visual Studio 2008 の .NET 2.0 用のソリューションです。

今回.NET 4.0 以降で使えるようにしたかったので .NET 4.0 で使えるようにした手順を記載します。

検証環境

  • Visual Studio 2012 Ultimate 版で .NET 4.5 用にアセンブリをビルド

1. ソリューションをVIsual Studio 2012 用にアップグレード

手順は簡単です。基本的に Wizard に従います。まず、ダウンロードした zip ファイルを展開します。 src フォルダの xrmlpc.sln フォルダをダブルクリックします。Visual Studio 2008 がインストールされている場合は、 Visual Studio 2012を起動して、ファイルメニューからソリューションを開く必要があるかもしれません。

しばらくすると プロジェクトとソリューションの変更をレビュー画面が表示されます。 OK ボタンをクリックします。

検証環境は .NET 2.0 も Visual Studio 2008 もインストールされていなかったためか、次の"プロジェクトのターゲット フレームワークがインストールされていません" という画面が表示されました。ここでは、 Visual Studio 2012 の .NET 4.0(4.5) をターゲットとしてビルドしたいので、下図既定値(ターゲットを、.NET Framework 4.5 に変更する。)のまま OK ボタンをクリックします。

IEが起動して変換レポートが表示されます。xmlrpcCFとういプロジェクトでエラーが発生しますが、今回必要のないプロジェクトなので無視します。レポート画面を閉じます。

以上でウィザード完了です。 Visual Studio 2012 のxmlrpc プロジェクトの AssemblyInfo.cs を開き、次のコードをファイルの最後に追加します。

// 参考:http://stackoverflow.com/questions/7249951/difficulty-building-xml-rpc-net-client-to-use-with-moodle
[assembly: SecurityRules(SecurityRuleSet.Level1)]

上記手順を設定しないでビルドしたアセンブリを他のプログラムで使用すると、 次のエラーが発生します。

メンバー 'CookComputing.XmlRpc.XmlRpcFaultException.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)' のオーバーライド中に、継承セキュリティ ルールの違反が発生しました。オーバーライドするメソッドのセキュリティ アクセシビリティは、オーバーライドされるメソッドのセキュリティ アクセシビリティと一致している必要があります。

準備ができました。ソリューションエクスプローラー上で xmlrpc プロジェクトを右クリック → ビルド をクリックします。

ビルドが成功すると、下図んもように CookComputing.XmlRpcV2.dll が作成されます。

作成された dll をターゲットが .NET 4.0/4.5 のプロジェクトで参照して使用できるようになります。

2. まとめ

今回の説明は以上です。

自動でブログ投稿用に XRM-RPC 仕様を実装するライブラリを使用したかったので、.NET 4.0 以降で使うための方法を覚書として記載しました。別の記事で MetaWebLogAPI を使用して WordPress に記事を投稿するサンプルを記載したいと思います。