SlideShare a Scribd company logo
1 of 20
Download to read offline
ブログ "Developer@ADJUST"
http://devadjust.exblog.jp/
Twitter: @jsakamoto
Dozens (ダズンズ) とは?
 クラウド時代に対応した DNS サービス。
 無料で12レコード利用可能な Free プ
  ランあり。
 月額 ¥1,000 の Basic プラン以降は
  TTL を1分にも変
  更可能で、ダイナ
  ミックDNS として
  の利用も可能。
REST API が公開されています
 ゾーンやレコードの追加・取得・編集・
  削除が可能な REST API (Web API) が
  公開されている。
 生の REST API を直接呼び出すコード
  を書くのは手間なので、クライアントア
  クセスライブラリの需要が。
 Ruby 版が出現!
負けじと Dozens API クライ
アントを .NET で書いてみた
   Dozens API Client for .NET
     CodePlex でオープンソース(Ms-PL)として公開
     ○ http://dozensapiclient.codeplex.com/
     ソースコードは C# で記述。


   バイナリは NuGet
    にも登録済み。
.NET のアセンブリなので...
   いろいろな言語・処理系から、このクラ
    イアントライブラリを使って、Dozens
    API を呼び出せるようになった!
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);
}
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)
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)
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版はちゃんとありますので、意味ないですが。
Small Basic (!)
 残念ながら Dozens API Client
  for .NET を直接は呼び出せません。
 そこで、Small Basic 用拡張ライブラリ
  としてのラッパーを作成!
     こちらも CodePlex でオープンソース公開。
   くるくる回転するイ
    ンテリセンスと懇切
    丁寧なパラメータヒ
    ントがステキです!
以上、すべて動画あり。
 YouTube にアップロード。
 Dozens API Client for .NET の CodePlex
  ページからたどれます。
最新の追加情報
   MacOS X "Lion" の mono 上の F# で
    の動作も確認できました!
まとめ
 .NET というプラットフォームを選択したこ
  とで、
  こんなにも利用可能な場面が広がるんだなー
  と、改めて実感しました。
 当然、Windows OS も XP 以降、
  32bit/64bit 問わず利用可能です。
おまけ
PowerShell は.NET4上で動作
していなかった。
 当初.NET4版で作成していた
  が、.NET3.5に焼き直し。
 PowerShellを.NET4上で動作させるよ
  うに、レジストリ設定で変更することは
  可能です。
.NET3.5用に焼き直したときに、デフォ
ルト引数が使えたのに一瞬びっくり。
 でも、よく考えたら、デフォルト引数は
  コンパイラの機能であって、ランタイム
  の機能ではないので、当たり前といえば
  当たり前。
 .NET 2.0用のプロジェクトでも、コン
  パイラさえ最新なら、var とか拡張メ
  ソッドとか使えたでしょう?
int? と F# は相性悪かった
   C# では「1」とかけば済む引数が、
    「Nullable 1」 と書かなくてはならず




  せっかくの F# のシンプルさが台無し!
 許せなかったので、int? をやめて
  object に変更。
COM では引数無しコンストラ
クタしか使えなかった
 ユーザーIDとAPI Keyの指定は必須なの
  で、当初はコンストラクタで指定するよ
  うにしていた。
 しかし、COM クライアントから呼びだ
  される場合は、コンストラクタに引数を
  与えることができない。
 致し方なく、引数無しのコンストラクタ
  と、Authメソッドを別途実装。
オーバーロードと COM は相性
悪かった
 COM にはオーバーロードの概念がない
  のでした。
 メソッド名の末尾に "~_1" とかのサ
  フィックスがつく羽目に。
     例) CreateRecord_2
   COM はさすがに着々と過去のものにな
    りつつあると思うので、これに執着する
    のはあきらめた。

More Related Content

More from Jun-ichi Sakamoto

One horror stories around NuGet
One horror stories around NuGetOne horror stories around NuGet
One horror stories around NuGet
Jun-ichi Sakamoto
 
How to automated test a web application with sending e mail feature
How to automated test a web application with sending e mail featureHow to automated test a web application with sending e mail feature
How to automated test a web application with sending e mail feature
Jun-ichi Sakamoto
 
Ohotech特盛#5予告 - タートルグラフィックでいろんな模様を描いてみよう!
Ohotech特盛#5予告 - タートルグラフィックでいろんな模様を描いてみよう!Ohotech特盛#5予告 - タートルグラフィックでいろんな模様を描いてみよう!
Ohotech特盛#5予告 - タートルグラフィックでいろんな模様を描いてみよう!
Jun-ichi Sakamoto
 
ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」
ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」
ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」
Jun-ichi Sakamoto
 
CLR/H#74 LT IT勉強会発表用イチオシツール
CLR/H#74 LT IT勉強会発表用イチオシツールCLR/H#74 LT IT勉強会発表用イチオシツール
CLR/H#74 LT IT勉強会発表用イチオシツール
Jun-ichi Sakamoto
 
Building CLR/H Registration Site with ASP.NET MVC4 and EF4CodeFirst
Building CLR/H Registration Site with ASP.NET MVC4 and EF4CodeFirstBuilding CLR/H Registration Site with ASP.NET MVC4 and EF4CodeFirst
Building CLR/H Registration Site with ASP.NET MVC4 and EF4CodeFirst
Jun-ichi Sakamoto
 
Microsoft Azure で "無料で" 運営する勉強会申し込みサイト
Microsoft Azure で "無料で" 運営する勉強会申し込みサイトMicrosoft Azure で "無料で" 運営する勉強会申し込みサイト
Microsoft Azure で "無料で" 運営する勉強会申し込みサイト
Jun-ichi Sakamoto
 

More from Jun-ichi Sakamoto (20)

がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LTAzure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
 
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
 
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
C# で Single Page Web アプリを開発できる Blazor ― その魅力C# で Single Page Web アプリを開発できる Blazor ― その魅力
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
 
Azure App Service Authentication
Azure App Service AuthenticationAzure App Service Authentication
Azure App Service Authentication
 
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
 
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
 
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
 
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトークMore Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
 
One horror stories around NuGet
One horror stories around NuGetOne horror stories around NuGet
One horror stories around NuGet
 
How to automated test a web application with sending e mail feature
How to automated test a web application with sending e mail featureHow to automated test a web application with sending e mail feature
How to automated test a web application with sending e mail feature
 
Introduction of "MarkdownPresenter"
Introduction of "MarkdownPresenter"Introduction of "MarkdownPresenter"
Introduction of "MarkdownPresenter"
 
Ohotech特盛#5予告 - タートルグラフィックでいろんな模様を描いてみよう!
Ohotech特盛#5予告 - タートルグラフィックでいろんな模様を描いてみよう!Ohotech特盛#5予告 - タートルグラフィックでいろんな模様を描いてみよう!
Ohotech特盛#5予告 - タートルグラフィックでいろんな模様を描いてみよう!
 
ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」
ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」
ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」
 
[予告篇] みんなで同時プレイするクイズWebアプリでCodeQuizに挑戦!
[予告篇] みんなで同時プレイするクイズWebアプリでCodeQuizに挑戦![予告篇] みんなで同時プレイするクイズWebアプリでCodeQuizに挑戦!
[予告篇] みんなで同時プレイするクイズWebアプリでCodeQuizに挑戦!
 
ASP.NET で作るとあるTwitter Bot -開発環境からネット公開までぜんぶ無料だよ!-
ASP.NET で作るとあるTwitter Bot -開発環境からネット公開までぜんぶ無料だよ!-ASP.NET で作るとあるTwitter Bot -開発環境からネット公開までぜんぶ無料だよ!-
ASP.NET で作るとあるTwitter Bot -開発環境からネット公開までぜんぶ無料だよ!-
 
CLR/H#74 LT IT勉強会発表用イチオシツール
CLR/H#74 LT IT勉強会発表用イチオシツールCLR/H#74 LT IT勉強会発表用イチオシツール
CLR/H#74 LT IT勉強会発表用イチオシツール
 
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハックjQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
 
Building CLR/H Registration Site with ASP.NET MVC4 and EF4CodeFirst
Building CLR/H Registration Site with ASP.NET MVC4 and EF4CodeFirstBuilding CLR/H Registration Site with ASP.NET MVC4 and EF4CodeFirst
Building CLR/H Registration Site with ASP.NET MVC4 and EF4CodeFirst
 
Microsoft Azure で "無料で" 運営する勉強会申し込みサイト
Microsoft Azure で "無料で" 運営する勉強会申し込みサイトMicrosoft Azure で "無料で" 運営する勉強会申し込みサイト
Microsoft Azure で "無料で" 運営する勉強会申し込みサイト
 

Recently uploaded

Recently uploaded (10)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

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 にも登録済み。
  • 5. .NET のアセンブリなので...  いろいろな言語・処理系から、このクラ イアントライブラリを使って、Dozens API を呼び出せるようになった!
  • 6.
  • 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 でオープンソース公開。  くるくる回転するイ ンテリセンスと懇切 丁寧なパラメータヒ ントがステキです!
  • 12. 以上、すべて動画あり。  YouTube にアップロード。  Dozens API Client for .NET の CodePlex ページからたどれます。
  • 13. 最新の追加情報  MacOS X "Lion" の mono 上の F# で の動作も確認できました!
  • 14. まとめ  .NET というプラットフォームを選択したこ とで、 こんなにも利用可能な場面が広がるんだなー と、改めて実感しました。  当然、Windows OS も XP 以降、 32bit/64bit 問わず利用可能です。
  • 16. PowerShell は.NET4上で動作 していなかった。  当初.NET4版で作成していた が、.NET3.5に焼き直し。  PowerShellを.NET4上で動作させるよ うに、レジストリ設定で変更することは 可能です。
  • 17. .NET3.5用に焼き直したときに、デフォ ルト引数が使えたのに一瞬びっくり。  でも、よく考えたら、デフォルト引数は コンパイラの機能であって、ランタイム の機能ではないので、当たり前といえば 当たり前。  .NET 2.0用のプロジェクトでも、コン パイラさえ最新なら、var とか拡張メ ソッドとか使えたでしょう?
  • 18. int? と F# は相性悪かった  C# では「1」とかけば済む引数が、 「Nullable 1」 と書かなくてはならず せっかくの F# のシンプルさが台無し!  許せなかったので、int? をやめて object に変更。
  • 19. COM では引数無しコンストラ クタしか使えなかった  ユーザーIDとAPI Keyの指定は必須なの で、当初はコンストラクタで指定するよ うにしていた。  しかし、COM クライアントから呼びだ される場合は、コンストラクタに引数を 与えることができない。  致し方なく、引数無しのコンストラクタ と、Authメソッドを別途実装。
  • 20. オーバーロードと COM は相性 悪かった  COM にはオーバーロードの概念がない のでした。  メソッド名の末尾に "~_1" とかのサ フィックスがつく羽目に。  例) CreateRecord_2  COM はさすがに着々と過去のものにな りつつあると思うので、これに執着する のはあきらめた。