2008年6月26日(木)

[プログラミング]VS2008で初めてのWindowsサービスを作る

ちょっとWindowsサービスをC#で作ってみたくなったので、やってみた。

まず、Windowsサービスに登場する3者

  • サービスプログラム
    • これから開発するやつ。ひとつのMainメソッドと、ひとつ以上のサービスから構成される。
  • サービスコントロールマネージャ(SCM)
    • OSの一部。サービスと通信する。サービスのメインメソッドを呼び出す。
  • サービス構成プログラム
    • サービスプログラムをインストールしてくれるプログラム。

VS2008でWindowsサービスを最速?で作る手順

  1. 新規プロジェクトで「Windowsサービス」を選択してプロジェクト作成。名前はWindowsService1とした。
  2. Service1.csのデザイナをクリックして、プロパティの(Name)とServiceNameを適当に決めたサービスの名前に変更。
  3. プロパティの「インストーラの追加」をクリック(ProjectInstaller.csが追加される)。
  4. これで、インストール可能なサービスができたけど、本当に動いているのかどうかわからないので、Service1.csのコードを開いて、OnStartとOnStopのそれぞれのメソッド内で、「EventLog.WriteEntry("OnStart");」とか、イベントログを書いてみる。
  5. あと、サービスインストール時にいちいちアカウント情報聞かれるのがウザいので、ProjectInstaller.csのデザイナのserviceProcessInstaller1のAcconutプロパティを、LocalSystemとかにする。
  6. ビルド。できた。

サービスのインストール

installutil.exeを使う。VisualStudio2008コマンドプロンプトを立ち上げてプロジェクトのbin\Debugフォルダに移動して、「InstallUtil WindowsService1.exe」とする。Vistaだと、インストールできる権限が必要なので注意。管理者としてプロンプト立ち上げる。アンインストールは、/uオプションをつける。

普通にサービスの開始や停止をしてもいいけど、コマンドプロンプトでnet startやnet stopでサービス開始、終了したほうが早いし便利。

こんだけでできちゃうんだね。すごいや。

[P2P]OCNの1日30GBの上りデータ総量規制は良心的か

ついに、OCNもきましたね。ニュースリリース、「個人向けOCNサービスにおける大量データ送信制限の実施について」より引用。

1日に30ギガバイト(GB)*3以上のデータをインターネットに送信しているお客さまについては、利用制限の対象となります。制限の対象となったお客さまに対しては、当社よりその旨をお知らせし、ご利用状態が改善されない場合は利用停止の後、契約解除をすることがあります。

ちなみに、こちらには、その説明が絵も交えてわかりやすく書いてあります。

http://www.ocn.ne.jp/info/rules/upload/index.html

実は、他のいくつかのISPもこのような上りデータ転送の総量規制を行っています。IIJ4U、BB.Excite、hi-ho、i-revoなどのISPでは、1日5GB~15GBといった規制を行っています。

1日30GBっていったいどれぐらいの量なのか

上記のOCNのページにも説明されているように、DVD(1枚約4.7GB)で7枚、デジタル画像(1枚6MB)で5120枚です(ブルーレイディスク(2層で50GB)だとアウトですが、それはおいておいて)。回線が100Mbpsだとしたら、40分ちょっとフルにアップしたらおしまいです。

「1日」と時間が指定されているので、bpsで計算すると具体的な感覚がつかみやすいかもしれません。1日は86400秒なので、30GB/86400秒=2.84Mbpsになります。つまり、上りが2.84Mbpsを超えるようなアプリを1日中動かしていたら、契約解除です。2.84Mbpsといわれてもやっぱりよくわからないのですが、自宅にとりためたDVD画質の動画を外から視聴する場合を考えてみると、DVDは2時間程度の映像が入ったもので大体4Mbps前後なので、一日中見ていたらアウトですが、まぁ普通に起きている時間の中で見ているぐらいなら、特に問題のない量だとはいえます。ただ、ハイビジョン画質になるとそうは行かないですね。地デジは16.8Mbpsですから1日4時間ぐらいで規制対象になります。

ではP2Pはどのぐらい使っているのか

この規制はP2Pに限ったことではないのですが、一応気になりますよね。

24時間つなぎっぱなしにしてWinnyやGnutellaなどのファイル共有ソフトを立ち上げている場合は確実にアウトです。このあたりは違法性の高いコンテンツがやり取りされていることもあるので、一般の人々にはある程度は納得を得られるだろうとは思います。

しかし最近ではP2Pは動画コンテンツをよりスムーズに視聴するための技術として認識されつつあります。動画の配信アーキテクチャによってだいぶ変わりますが、比較的高速な回線につながっているポイントでは、配下に2~5ノードぐらいのPCがつながると思われるので、たとえばDVD画質の動画を配信する場合は上りの帯域は8~20Mbpsになるでしょう。つまり、ライブ中継を3時間ぐらい見ていたらISPから契約解除すると通告された、なんてことが現実に起こりかねません。

30GBという制限は他のISPに比べればゆるい方ですが、それでも近い将来考えられるような高画質の動画配信に対しては、厳しいことには変わりはなさそうです。

どうしてこんなことになっちゃったのか

先ほどのニュースリリースには、

一部のお客さまが他のお客さまに比べて大量のデータをインターネットに送信することによって、回線帯域を占有される状態が続き、その結果、他の多くのお客さまの通信速度や通信品質が低下する事象が発生しています。

と書いてありました。しかし本当はもっと深刻な問題があります。それは、結論から言うと、現在のインターネットは、本当はもっとお金がかかるものだ、ということです。日本のインターネットは安すぎなのです。今まではそんなにみんなが使わなくてよかったので何とかやってこれたのですが、P2P、特にファイル交換ソフトの出現によって大量のデータが送受信され、収入と支出のバランスが崩れてしまい、やっていけなくなってしまったのです。

このあたりの話は、「isbn:9784822245948:title」を読むと解りやすいかもしれません。インターネットがどれだけお金のかかるものなのかがなんとなくわかると思います。

どれだけお金がかかるのか

本を買いたくない人もいるかもしれないので、具体的に試算した結果を書きます。結論から言うと、おおよそ1TB転送するのに1~2万円ほどかかることになりそうです。

さくらインターネットのデータセンタ(はてなも使ってます)は、回線コストだけで、1000Mbps占有で月額2,625,000円です((http://www.sakura.ad.jp/services/datacenter/housing/plans/connect/dedicated.html))。そんなバカなことはしないと思いますが、この帯域をフルに使ったとしても1TBあたり8500円かかります((2625000/1000/(30*60*60)*1024*8=8495))。

ついでに、2006年当時のYouTubeの場合、月100万ドルのコストがかかり、1日あたり200TBの転送量があったといいます((http://www.forbes.com/home/intelligentinfrastructure/2006/04/27/video-youtube-myspace_cx_df_0428video.html))。つまり単純計算で1TBあたり166ドルになります((1000000/(200*30)=166.66))。

それに対して、家庭用のインターネット接続料はいくらか。OCN 光 with フレッツの料金は、NTT東日本エリアの一戸建てで月額6720円から。集合住宅にいたっては月額3990円からです。したがって、高い一戸建ての場合でも、上り100Mbpsをフルに使うと1TBあたり217円になってしまいます!!((6720/100/(30*60*60)*1024*8=217))これはいくらなんでも、安すぎです!!

これを、さきほどの2.84Mbpsで計算してみると、1TBあたり7657円((6720/2.84/(30*60*60)*1024*8=7657))となります。どうでしょう。面白いことに、先ほどのさくらインターネットのデータセンタに近い金額になりました。すべての人が30GBぎりぎり使うわけではないので、これだけで済んでいると考えることもできるでしょう。

このように計算すると、30GBの制限というのは、かなり良心的な制限なのだと思わされます。

でも不思議だな

しかし、NTTコミュニケーションズは、Tier1キャリア((http://www.ntt.com/business/techsupport/dictionary/word/0036.html))なので、トランジット料金はむしろ払ってもらえる側の立場にあります。そこが総量規制するようになったというのは、どういうことなのでしょう。なにか、お金ではない、深いわけがありそうです。もうちょっと政治的な話なのかもしれませんね。私はNTTの人間ではないので、これ以上はわかりません。。。どなたかご存知の方、いらっしゃいます?