More Related Content
More from Jun-ichi Sakamoto (20)
CLR/H第61回勉強会ライトニングトーク - DNS サービス Dozens の API を呼び出す .NET ライブラリを書いてみた
- 2. Dozens (ダズンズ) とは?
クラウド時代に対応した DNS サービス。
無料で12レコード利用可能な Free プ
ランあり。
月額 ¥1,000 の Basic プラン以降は
TTL を1分にも変
更可能で、ダイナ
ミックDNS として
の利用も可能。
- 3. REST API が公開されています
ゾーンやレコードの追加・取得・編集・
削除が可能な REST API (Web API) が
公開されている。
生の REST API を直接呼び出すコード
を書くのは手間なので、クライアントア
クセスライブラリの需要が。
Ruby 版が出現!
- 4. 負けじと Dozens API クライ
アントを .NET で書いてみた
Dozens API Client for .NET
CodePlex でオープンソース(Ms-PL)として公開
○ http://dozensapiclient.codeplex.com/
ソースコードは C# で記述。
バイナリは NuGet
にも登録済み。
- 7. C#
当然、VB.net でも同様に使えます。
NuGet から容易にプロジェクトに追加
可能!
using DozenAPI;
...
static void Main(){
var dozens = new Dozens("UserId","APIKey");
dozens.UpdateRecord("www.hoge.jp", null, "192.168.0.1", 7200);
}
- 8. Windows Power Shell
Windows Power Shell からは、.NET
のクラスライブラリを呼び出し可能なの
で、当たり前ですね!
インテリセンスとまではいきませんが、Tab
キーでメンバを補完・列挙できます。
>[System.Reflection.Assembly]::LoadFile("C:¥Work¥Dozens.dll")
>$dozens = New-Object DozensAPI.Dozens("UserId", "APIKey")
>$dozens.UpdateRecord("hoge.jp","www",$NULL,"192.168.0.1",7200)
- 9. F# スクリプト
カラー構文表示・インテリセンス・パラ
メータヒント・リアルタイム構文チェッ
ク・対話環境が使える、.NET呼び出し放題
の最強のスクリプト言語!
もちろん、普通に "F#" のアプリ(.exe)として
も使えます。
#I "C:¥¥work"
#r "Dozens.dll"
open DozenAPI
let dozens = new Dozens("UserId", "APIKey")
dozens.UpdateRecord("www.hoge.jp", null, "192.168.0.1", 7200)
- 10. JScript、VBScript (WSH)他
.NETはCOMとの相互運用が可能。
COM サーバーを呼び出せる処理系なら、
Dozens API Client for .NET も、COM
サーバーとして呼び出せるのでした!
Set dozens = CreateObject("DozensAPI.Dozens")
dozens.Auth "UserId", "APIKey"
dozens.UpdateRecord_6 "www.hoge.jp", Nothing, "192.168.0.1", 7200
Win 版 Ruby (Active Ruby) も COM 呼べるの
で、Ruby からも利用可能なはず!
○ Ruby版はちゃんとありますので、意味ないですが。
- 11. Small Basic (!)
残念ながら Dozens API Client
for .NET を直接は呼び出せません。
そこで、Small Basic 用拡張ライブラリ
としてのラッパーを作成!
こちらも CodePlex でオープンソース公開。
くるくる回転するイ
ンテリセンスと懇切
丁寧なパラメータヒ
ントがステキです!
- 13. 最新の追加情報
MacOS X "Lion" の mono 上の F# で
の動作も確認できました!
- 18. int? と F# は相性悪かった
C# では「1」とかけば済む引数が、
「Nullable 1」 と書かなくてはならず
せっかくの F# のシンプルさが台無し!
許せなかったので、int? をやめて
object に変更。
- 20. オーバーロードと COM は相性
悪かった
COM にはオーバーロードの概念がない
のでした。
メソッド名の末尾に "~_1" とかのサ
フィックスがつく羽目に。
例) CreateRecord_2
COM はさすがに着々と過去のものにな
りつつあると思うので、これに執着する
のはあきらめた。