IdeaPad には6セルバッテリと3セルバッテリが存在します。
6セルバッテリは、プレスリリースによれば6.2時間稼働が可能です。一方、3セルバッテリは出っ張りがないなどデザイン的に美しく、勿論重量も軽いのが特徴です(なお写真などは、先日の投稿をご覧ください)。
さて、それぞれ実際に無線ネットワークなどを使った場合、どれくらい持つのでしょう。
というわけで、海人さんが作られたBBenchを使って計測してみました。
S9eには電源管理用ソフトウェアとして Energy Management が付属します。このソフトを使い、バッテリのモードを、利用する機会が最も多いと思われる「Low Power」モードに設定、設定値をdefault にしました。その上で、System の 「Stand by」と「Hibernate」を Never に、自動的に電源が切れないようにします。
BBenchの設定は「キーストローク出力あり」「Web巡回あり」です。
さて計測結果ですが、私の環境では、6セルで約4時間5分、3セルで約2時間10分という結果になりました。実運用には十分ですね。ACアダプタも軽いので、旅行先などに持ってゆくときには、3セル+アダプタ、という運用もいいのかもしれません。
ちなみに、VAIO SRX3 で、ほぼ同じ重量のバッテリを使って、同条件で計測した結果は約3時間15分。比較すると、1時間近く持つことになり、嬉しい限りです。
ぜひ、持ちのよい6セルバッテリと、装着感が美しく軽めの3セルバッテリ、それぞれ必要に応じて使い分けてみては如何でしょうか?
2009/03/31
2009/03/30
「unformed」&「Re:MIKUS」発売おめでとうございます
3/25、VOCALOID の CD として doriko さんのunformedと livetune のRe:MIKUSが発売になりました。おめでとうございます!
前者は「歌に形はないけれど」「夕日坂」で有名な doriko さんのアルバムです。
嬉しいことは、人気のあるバラード曲だけでなく、弾幕ソングとして人気の高い「ぶちぬけ!2008!」(「ぶちぬけ!2009!」になってます)や「みっくりすます」など、元気系ソングも収録されていること。ノリの良さに、ついつい口ずさんでしまいます。
後者は、主に livetune の著名な楽曲を、これまた著名アーティストがリミックスしたもの。とはいえ、そこは livetune ですから、全曲、「チュインチュイン」という感じのカッコイイリミックスになっていて、聞いていて気持ちよい仕上がりです。
またニコ動で話題になった、「サイハテ」のlivetune mix も収録されているのも魅力です。
今月は VOCALOID 関連の ビッグタイトル CD が一般小売り向けに数多く発売されました。特に livetune は私がVOCALOID楽曲を聞くようになったきっかけであるだけに、2枚も発売されるとは、と、感慨深いモノがあります。
徐々に VOCALOID 系 CD が市民権を得て、皆が普遍的に聞くジャンルへと成長することで、音楽の間口が広がればいいな、と感じました。
前者は「歌に形はないけれど」「夕日坂」で有名な doriko さんのアルバムです。
嬉しいことは、人気のあるバラード曲だけでなく、弾幕ソングとして人気の高い「ぶちぬけ!2008!」(「ぶちぬけ!2009!」になってます)や「みっくりすます」など、元気系ソングも収録されていること。ノリの良さに、ついつい口ずさんでしまいます。
後者は、主に livetune の著名な楽曲を、これまた著名アーティストがリミックスしたもの。とはいえ、そこは livetune ですから、全曲、「チュインチュイン」という感じのカッコイイリミックスになっていて、聞いていて気持ちよい仕上がりです。
またニコ動で話題になった、「サイハテ」のlivetune mix も収録されているのも魅力です。
今月は VOCALOID 関連の ビッグタイトル CD が一般小売り向けに数多く発売されました。特に livetune は私がVOCALOID楽曲を聞くようになったきっかけであるだけに、2枚も発売されるとは、と、感慨深いモノがあります。
徐々に VOCALOID 系 CD が市民権を得て、皆が普遍的に聞くジャンルへと成長することで、音楽の間口が広がればいいな、と感じました。
unformed... doriko feat.初音ミ... | Re:MIKUS... livetune feat.初... |
2009/03/29
iTunes Store でダウンロードに失敗した購入楽曲を再ダウンロードする
2012/02/24追記:
Appleは日本国内でもiTunes in the Cloudを開始し、より簡単に楽曲の再ダウンロードが出来るようになっています。詳しい手順は「iTunes Storeでダウンロードに失敗した購入楽曲を再ダウンロードする(iTunes in the Cloud編)」をご参照ください。
iTunes Store で楽曲アルバムを購入し、ダウンロードしていたところ、運悪くMac がハングアップしてしまいました。
再起動後、ダウンロードしていた楽曲の状態を確認したところ、アルバム内の数曲がダウンロードされていませんでした。
購入後、ダウンロードせずに iTunes を終了した場合には、iTunes(8.x)の「Store」メニューにある「ダウンロード可能なものがあるか確認」が利用できます。ダウンロード前の楽曲がある場合には、ここからダウンロード可能です。
しかし、残念ながら、今回はこのメニューを使っても、ダウンロードされていない楽曲を入手することは出来ませんでした。iTunes Store の「アカウント」で「購入履歴」を確認したところ、既に「購入済み」になっています。
こんな場合には、iTunes Storeのサポートに連絡しましょう。手続きは簡単です。
これにより「ダウンロード可能なものがあるか確認」メニューを通じて、消えてしまった楽曲を無事に手にすることができました。
ダウンロードに失敗したときには多少困惑しましたが、迅速かつ適切な対応により、問題なく楽曲を入手できたおかげで、却って AppleStore への信頼感が増したような気がします。
まとめると、もし楽曲のダウンロードに失敗した場合には、迷わず、「問題を報告する」を通じて Apple Store へ連絡することをお勧めします。
なお、この方法で楽曲を手に入れることが出来るのは一度だけである、という点には注意が必要です。既に「問題を報告する」で連絡した楽曲を、再度「問題を報告する」の対象にすることは出来ません(「すでにご報告いただいております」というアラートになります)。これでもダウンロードできない場合には、メイルでのやり取りが必要になります。
報告した楽曲のダウンロードをする際には注意した方が良いでしょう。また、ダウンロード後はバックアップしておくことをお勧めします。
Appleは日本国内でもiTunes in the Cloudを開始し、より簡単に楽曲の再ダウンロードが出来るようになっています。詳しい手順は「iTunes Storeでダウンロードに失敗した購入楽曲を再ダウンロードする(iTunes in the Cloud編)」をご参照ください。
iTunes Store で楽曲アルバムを購入し、ダウンロードしていたところ、運悪くMac がハングアップしてしまいました。
再起動後、ダウンロードしていた楽曲の状態を確認したところ、アルバム内の数曲がダウンロードされていませんでした。
購入後、ダウンロードせずに iTunes を終了した場合には、iTunes(8.x)の「Store」メニューにある「ダウンロード可能なものがあるか確認」が利用できます。ダウンロード前の楽曲がある場合には、ここからダウンロード可能です。
しかし、残念ながら、今回はこのメニューを使っても、ダウンロードされていない楽曲を入手することは出来ませんでした。iTunes Store の「アカウント」で「購入履歴」を確認したところ、既に「購入済み」になっています。
こんな場合には、iTunes Storeのサポートに連絡しましょう。手続きは簡単です。
- 「購入履歴」にある「問題を報告する」ボタンを押します。
- もし該当楽曲が「最近のご注文」に存在すれば、その曲の右横にある「問題を報告する」を選択しましょう。既に「前回までの購入」にまとめられている場合には、該当楽曲の左隣にある右矢印を押してみましょう。「問題を報告する」という項目が出てきますので、同じく選択します。
- 「問題を報告する」画面になりますので、「問題」プルダウンメニューから「この曲をうけとっていない」を選択します。コメントに理由を記載しておくと良いかもしれません。
- 最後に「送信」を押します。
- 上記の操作を受け取っていない楽曲分繰り返します。
これにより「ダウンロード可能なものがあるか確認」メニューを通じて、消えてしまった楽曲を無事に手にすることができました。
ダウンロードに失敗したときには多少困惑しましたが、迅速かつ適切な対応により、問題なく楽曲を入手できたおかげで、却って AppleStore への信頼感が増したような気がします。
まとめると、もし楽曲のダウンロードに失敗した場合には、迷わず、「問題を報告する」を通じて Apple Store へ連絡することをお勧めします。
なお、この方法で楽曲を手に入れることが出来るのは一度だけである、という点には注意が必要です。既に「問題を報告する」で連絡した楽曲を、再度「問題を報告する」の対象にすることは出来ません(「すでにご報告いただいております」というアラートになります)。これでもダウンロードできない場合には、メイルでのやり取りが必要になります。
報告した楽曲のダウンロードをする際には注意した方が良いでしょう。また、ダウンロード後はバックアップしておくことをお勧めします。
Lenovo IdeaPad S9e 購入しました
既にいろいろなところで紹介されているように、ioPLAZAで Lenovo の IdeaPad S9e がお買い得価格で販売されています。
店頭予想価格39,800円のところ、会員登録により、30,800円 + 10%のポイント還元で、S9e として今までに見たことのない値段です(2009年3月までの限定価格)。
制約上、NetBook は大きな差別化は期待しにくいのですが、それでも各社それぞれに細かな特徴を打ち出していて、スペックを比較するだけでもなかなか楽しめます。S9の場合、特徴はこんな感じでしょうか。
そんな状況でこの値段付けを見てしまい、これはお買い得、と半ば衝動買いで購入してしまいました...。
というわけで、到着した運送用外箱。大きいですね。中身は半分くらいしか使っていません。
外箱はこんな感じです。
箱をあけると真ん中に可愛く本体が。
同梱物一式です。ACアダプタは小さくシンプル。ACケーブルも細くて持ち運びに便利そうです。ケーブルを巻き付けるベルトの付いてないのか少し残念。
ACケーブルは、全てACアダプタ本体へ埋没しないタイプ。
本体の電源を入れてみました。S9eは10.1inch液晶を採用しているS10eと筐体サイズが同じため、EeePC 701のように、ディスプレイのまわりにふちがあります。
SRX3との大きさを比較してみました。ほぼ同じくらいです。IdeaPad はバッテリの出っ張りが目立ちますね。
画面の比較。縦168ピクセルの差はさすがに大きく感じます。この点はSRXの圧勝です。
キーピッチはIdeaPadの方が広いです。ただ、Tab幅の小ささや、1の左横に半/全の無い点が、個人的に残念。
IdeaPadはバッテリの厚みで見た目が損していますが、本体はSRX3と比べて薄めです。
ちなみに、IdeaPadへ3セルバッテリを装着するとこんな感じになります。出っ張りも無く非常にスマートです。
IdeaPadとSRX3の重量を比較してみましょう。なお、はかりの精度はいい加減なので、参考程度で。
まずは本体。IdeaPadは1006g、SRXが935g。SRXの方が少し軽いんですね。
バッテリ比較。IdeaPad の6セルが324g、SRXのLバッテリが316gでほぼ同じくらいです。カタログスペック上は、液晶サイズの差もあり、IdeaPadの方が長めです。
IdeaPadの3セルは176g。デザイン性という点からも、バッテリの持続時間がそれほど必要ない場合には重宝しそうです。
ACアダプタ。IdeaPadが259gでSRXが345g。約80gほどIdeaPadの方が軽いです。これは嬉しい。
常用するにあたって、キーボード、ディスク、メモリを交換することにしました。さすがは元IBMと言うべきでしょうか、この機種はディスクやメモリの交換方法が丁寧な図解とともにマニュアルへ記載があります。また交換方法の動画も公開されています。どれも分かりやすく、安心して作業が進められました。
まずはキーボードです。私は英語配列の利用歴が長いため、デスクトップ、ノートを問わず、可能であれば英語配列のキーボードへ換装してしまいます。
IdeaPadと基本コンセプトの似ているNetBookに、MSIのWindシリーズがあり、個人的には優劣つけ難いのですが、英語キーボードの入手しやすさという点でIdeaPadに軍配があがります。一方、Wind は「1」キーの左隣に「全/半」キーのあるという点で魅力的です。
IdeaPadの英語キーボードは、キー配列、キー幅とも、概ね良好に感じました。やや右端のキー幅が細くなっています。
日本語キーボードと比較してみるとこんな感じです。日本語キーボードも右端のキーが細いのですが、英語キーボードに比べて更に細いですね。
換装後。良い感じです。
次にディスクを交換します。元々の160Gで全く不足していないのですが、今回は別のOSもインストールしたいと思いましたので、大きめのディスクへ交換することにしました。
新旧比較。左がもとのディスクで、WDの160Gでした。右が新しいもので、HITACHIの320Gです。
最後にメモリを交換します。IdeaPadは出荷時、オンボードに512M、増設スロットに512M装着されています。そこで増設スロットのメモリを2Gへ交換します。IdeaPadは最大1.5Gしかサポートしていないことになっていますが、実は増設スロットのメモリを2Gにすることで、最大2Gまで認識できるようです。
左がもとの512M。右が新しい2G。
ディスクもメモリも無事、正常に認識されました。よかった、よかった。
全体的な使用感ですが、PCG-SRX3を愛用してきた私にとっては、大変に快適で扱いやすいマシンに感じられました。
大きさや重量は従来同様でありながら、CPU/メモリの進化により、体感速度は大きく向上しました。
打鍵感もきになる点は無く快適です。購入前、少し気になっていた画面サイズと解像度も、モバイルという用途に於いてはそれほど気にならないことがわかりました。
強いて難点を挙げるのであれば、「全/半」キー(英語キーボードでは、「~」キー)が1キーの隣に無い点です。長年の癖で、無意識的に1キーの隣に~を求めてしまうので、その点には慣れが必要かな、と感じました。
まとめとしては、特にモバイル用途での利用を想定していながらも、打鍵性能を求める人にとって、大変に使いやすいマシンだと思います。このマシンが、ポイント分も考慮すれば、約27,000円という破格値で提供されているのは大変お買い得で、良い買いでした。
店頭予想価格39,800円のところ、会員登録により、30,800円 + 10%のポイント還元で、S9e として今までに見たことのない値段です(2009年3月までの限定価格)。
制約上、NetBook は大きな差別化は期待しにくいのですが、それでも各社それぞれに細かな特徴を打ち出していて、スペックを比較するだけでもなかなか楽しめます。S9の場合、特徴はこんな感じでしょうか。
- ExpressCard スロット搭載
- タッチパッドのボタンがタッチパッド下にあり、かつ2個独立
- 17mmピッチを確保した入力しやすいキーボード
- 8.9inchディスプレイの搭載により、10inchディスプレイを搭載したS10eよりも、バッテリ持続力が改善され、重量も軽減
- メモリ/ディスクの換装が容易
そんな状況でこの値段付けを見てしまい、これはお買い得、と半ば衝動買いで購入してしまいました...。
というわけで、到着した運送用外箱。大きいですね。中身は半分くらいしか使っていません。
外箱はこんな感じです。
箱をあけると真ん中に可愛く本体が。
同梱物一式です。ACアダプタは小さくシンプル。ACケーブルも細くて持ち運びに便利そうです。ケーブルを巻き付けるベルトの付いてないのか少し残念。
ACケーブルは、全てACアダプタ本体へ埋没しないタイプ。
本体の電源を入れてみました。S9eは10.1inch液晶を採用しているS10eと筐体サイズが同じため、EeePC 701のように、ディスプレイのまわりにふちがあります。
SRX3との大きさを比較してみました。ほぼ同じくらいです。IdeaPad はバッテリの出っ張りが目立ちますね。
画面の比較。縦168ピクセルの差はさすがに大きく感じます。この点はSRXの圧勝です。
キーピッチはIdeaPadの方が広いです。ただ、Tab幅の小ささや、1の左横に半/全の無い点が、個人的に残念。
IdeaPadはバッテリの厚みで見た目が損していますが、本体はSRX3と比べて薄めです。
ちなみに、IdeaPadへ3セルバッテリを装着するとこんな感じになります。出っ張りも無く非常にスマートです。
IdeaPadとSRX3の重量を比較してみましょう。なお、はかりの精度はいい加減なので、参考程度で。
まずは本体。IdeaPadは1006g、SRXが935g。SRXの方が少し軽いんですね。
バッテリ比較。IdeaPad の6セルが324g、SRXのLバッテリが316gでほぼ同じくらいです。カタログスペック上は、液晶サイズの差もあり、IdeaPadの方が長めです。
IdeaPadの3セルは176g。デザイン性という点からも、バッテリの持続時間がそれほど必要ない場合には重宝しそうです。
ACアダプタ。IdeaPadが259gでSRXが345g。約80gほどIdeaPadの方が軽いです。これは嬉しい。
常用するにあたって、キーボード、ディスク、メモリを交換することにしました。さすがは元IBMと言うべきでしょうか、この機種はディスクやメモリの交換方法が丁寧な図解とともにマニュアルへ記載があります。また交換方法の動画も公開されています。どれも分かりやすく、安心して作業が進められました。
まずはキーボードです。私は英語配列の利用歴が長いため、デスクトップ、ノートを問わず、可能であれば英語配列のキーボードへ換装してしまいます。
IdeaPadと基本コンセプトの似ているNetBookに、MSIのWindシリーズがあり、個人的には優劣つけ難いのですが、英語キーボードの入手しやすさという点でIdeaPadに軍配があがります。一方、Wind は「1」キーの左隣に「全/半」キーのあるという点で魅力的です。
IdeaPadの英語キーボードは、キー配列、キー幅とも、概ね良好に感じました。やや右端のキー幅が細くなっています。
日本語キーボードと比較してみるとこんな感じです。日本語キーボードも右端のキーが細いのですが、英語キーボードに比べて更に細いですね。
換装後。良い感じです。
次にディスクを交換します。元々の160Gで全く不足していないのですが、今回は別のOSもインストールしたいと思いましたので、大きめのディスクへ交換することにしました。
新旧比較。左がもとのディスクで、WDの160Gでした。右が新しいもので、HITACHIの320Gです。
最後にメモリを交換します。IdeaPadは出荷時、オンボードに512M、増設スロットに512M装着されています。そこで増設スロットのメモリを2Gへ交換します。IdeaPadは最大1.5Gしかサポートしていないことになっていますが、実は増設スロットのメモリを2Gにすることで、最大2Gまで認識できるようです。
左がもとの512M。右が新しい2G。
ディスクもメモリも無事、正常に認識されました。よかった、よかった。
全体的な使用感ですが、PCG-SRX3を愛用してきた私にとっては、大変に快適で扱いやすいマシンに感じられました。
大きさや重量は従来同様でありながら、CPU/メモリの進化により、体感速度は大きく向上しました。
打鍵感もきになる点は無く快適です。購入前、少し気になっていた画面サイズと解像度も、モバイルという用途に於いてはそれほど気にならないことがわかりました。
強いて難点を挙げるのであれば、「全/半」キー(英語キーボードでは、「~」キー)が1キーの隣に無い点です。長年の癖で、無意識的に1キーの隣に~を求めてしまうので、その点には慣れが必要かな、と感じました。
まとめとしては、特にモバイル用途での利用を想定していながらも、打鍵性能を求める人にとって、大変に使いやすいマシンだと思います。このマシンが、ポイント分も考慮すれば、約27,000円という破格値で提供されているのは大変お買い得で、良い買いでした。
2009/03/28
今日のお酒: SEBASTIANI 2007 SYMPHONY
SEBASTIANI 2007 SYMPHONY。
Symphonyとは、カリフォルニア大学で開発されたワイン用のブドウ品種だそうです。ミュスカデのように甘くて、フルーティな香り。ワインだけで十分に楽しめます。
Symphonyとは、カリフォルニア大学で開発されたワイン用のブドウ品種だそうです。ミュスカデのように甘くて、フルーティな香り。ワインだけで十分に楽しめます。
2009/03/23
iPhone用マイク付きヘッドホンアダプタ
iPhoneではマイク付きリモコンの利用が便利です。着信や通話の切り替えを一瞬で行えるのは勿論なのですが、iPhodでの再生や一時停止、曲送り/戻しでその威力を発揮します。
特に、ミュージックビデオを音楽として聞きたい場合には、実質、必須のオプションとなっています。
MM50が壊れてからはSHURE の Music Phone Adapater(MPA-3C)を使って来ましたが、若干ケーブルが太く取り回しにくい点が不満でした。また、私がマイクを使わないため、マイク部の大きさ(太さ)も気になっていました。
先日偶然、ヨドバシカメラ店頭で audio-technica の「iPhone/iPod専用マイク付きヘッドホンアダプタ(AT335i)」を発見したので、購入してみることにしました。購入金額は1280円です。
マイク部は MPA-3C よりも長くスマートです。この形だけ見ていると、MDポータブルプレイヤに付属していたようなスティックリモコンを思い出します。ケーブルは細く、また柔らかく、取り回しが容易です。クリップは回転式で、マイク部に付属しています。
ジャックコネクタは、残念ながら結構長めで、直線タイプ。結構飛び出します。この点は、MPA-3Cに軍配が上がります。
リモコンボタンは MPA-3C よりも確実なクリック感があり、押しやすいです。特に曲戻しのトリプルクリックで威力を発揮します。
音質は特にノイズがのることも無く快適です。この製品には、スライド式のボリュームが付いており、これがノイズ源となるのでは、と気にしていたのですが、全く杞憂でした。却って、iPod 用リモコン付属のボリュームが利用できない iPhone では、このボリュームが、簡易ながらもずいぶんと有効に感じました。これは嬉しい誤算です。
結論としては、1280円という値段と相まって、非常にお買い得な製品だと感じました。「愛用のヘッドフォンをiPhoneで使いたい、でもiPhone用のリモコンも使いたい」という方は、是非試してみてはいかがでしょうか。
特に、ミュージックビデオを音楽として聞きたい場合には、実質、必須のオプションとなっています。
MM50が壊れてからはSHURE の Music Phone Adapater(MPA-3C)を使って来ましたが、若干ケーブルが太く取り回しにくい点が不満でした。また、私がマイクを使わないため、マイク部の大きさ(太さ)も気になっていました。
先日偶然、ヨドバシカメラ店頭で audio-technica の「iPhone/iPod専用マイク付きヘッドホンアダプタ(AT335i)」を発見したので、購入してみることにしました。購入金額は1280円です。
マイク部は MPA-3C よりも長くスマートです。この形だけ見ていると、MDポータブルプレイヤに付属していたようなスティックリモコンを思い出します。ケーブルは細く、また柔らかく、取り回しが容易です。クリップは回転式で、マイク部に付属しています。
ジャックコネクタは、残念ながら結構長めで、直線タイプ。結構飛び出します。この点は、MPA-3Cに軍配が上がります。
リモコンボタンは MPA-3C よりも確実なクリック感があり、押しやすいです。特に曲戻しのトリプルクリックで威力を発揮します。
音質は特にノイズがのることも無く快適です。この製品には、スライド式のボリュームが付いており、これがノイズ源となるのでは、と気にしていたのですが、全く杞憂でした。却って、iPod 用リモコン付属のボリュームが利用できない iPhone では、このボリュームが、簡易ながらもずいぶんと有効に感じました。これは嬉しい誤算です。
結論としては、1280円という値段と相まって、非常にお買い得な製品だと感じました。「愛用のヘッドフォンをiPhoneで使いたい、でもiPhone用のリモコンも使いたい」という方は、是非試してみてはいかがでしょうか。
2009/03/21
2009/03/14
Ruby で UPnP サービスを作る
UPnPは主にホームネットワークなど、管理者のいないネットワークで使われることを想定としたプロトコルです。
UPnP を用いることで ad hoc にサービスを提供したり利用したりすることが可能になります。このプトロコルをベースにしたサービスとしては、例えば Windows の ICS 機能(インターネット接続共有機能)のポートマッピングやDLNAなどが有名です。
規格策定から10年ほどが過ぎ、SOAPベースのプロトコルなど、やや古めかしさを感じる点もありますが、サービスの自動発見など、家庭内ネットワークで気軽にサービスを提供するには便利な仕様です。
というわけで、Rubyを使って簡易UPnPデバイス(サービス提供側)とUPnPコントロールポイント(サービス利用側)を作ってみましょう。
UPnPになじみのない方は、UPnP Device Architectureに目を通しておくことをお勧めします(以下のコードは、UPnp DA 1.0に準拠しています)。
今回は簡単に、'/'ファイルシステムがあるディスク容量を得るためのサービスを書いてみます。デバイスを SystemStatServer、そのデバイスが提供するサービスを DiskStat としました。
ここで解説している全コードは、githubから取得できますので、必要に応じてご利用ください。
Ruby には、非常に優れた UPnP ライブラリが存在します。作者は rdoc のメインテナンスを担当されている Eric Hodel さんで、現在のバージョンは1.1.0です。
例えば UPnP では、サービス提供側のデバイスが SCPD と呼ばれるSOAP アクション一覧を記した XML ファイルを公開することが必須になっています。多くの UPnP 実装では、このXMLは活用していないのですが、Ruby UPnP 実装では、デバイスから SCPD ファイルを取得、解釈し、SOAP アクションを呼び出すメソッドを動的に作成してくれます。このため、クライアントは、該当メソッドを使うコードを書くことに集中できます。
また、サービス提供側でも、提供したいアクションを登録しておくだけでリフレクションにより SCPD XMLファイルを自動的に生成してくれるなど、Ruby の良さを効果的に生かした、大変美しい実装になっ
ています。
まずはこの UPnP ライブラリをインストールします。
幸い gem で公開されているので本来は、gem install で利用準備は終了です。
ただ、私の環境ではいくつか期待通りに動作しないバグがあり、修正が必要でした。既に patch はtrackerへ登録済みですが、サンプルコードと一緒に公開もしていますので、必要に応じて利用してください(以下のサンプルコードは、このパッチが適用されていることを前提にしています)。
最初にサービス提供側のコードを書いてみます。
基本的には、UPnP::Deviceを継承してデバイスの定義を行い、そのデバイスが提供するサービスをUPnP::Service を継承して書くことになります。
デバイスの基本は、以下の通りです。
次に提供するサービスを実装しましょう。ディスク容量を取得するには、RubyForge で公開されている sys-filesystem を使いましょう。これも gem でインストールするだけです。
BSDや MacOS X を使っている人はバージョンに注意してください。
サービスの定義では、サービス名称とIN/OUTの種別、ならびに結びつけるstate変数を指定します。ここでは、アクション名称をGetDiskFreeSpace とし、取得したパスと単位を指定できるようにしてみました。lib/UPnP/service/disk_stat.rb が該当のコードです。
add_variable では、UPnP 上でのstate変数と型とを結びつけています。今回は GENA イベントを利用しないので、非常にシンプルな定義です。
あとは該当サービスの内容を実装するだけです。戻り値の第一要素には RETVAL を指定しますが、今回のサービスでは利用しないので nil を指定しています。
最後にデバイスの実行コードを定義しましょう。基本はこれだけです。bin/upnp_system_stat_server が該当コードです。
次に呼び出し側であるコントロールポイントの実装です。
こちらもデバイスと同様、UPnP::Control::Device とUPnP::Control::Service を継承して作成します。
まずはサービスから実装します。と言っても、この1行で完成です。
次に利用したいサービスのインスタンスを取得するコードを書きます。今回のデバイスでは単一サービスしか提供していませんが、複数のサービスを提供するデバイスもありますから、適切なサービスを選択するようにしましょう。
これでサービスを利用する準備が整いました。
最も大事な、このサービスの GetDiskFreeSpace アクションを利用するコードを書きます。単純に該当アクション名を method として実行するだけでサービスを利用できます。
最後に、デバイスの VERSION と URN を定義します。
基本的に、サービス利用側が書く必要のあるコードはこれだけです。その他必要なコードはすべてライブラリが必要に応じて動的に生成してくれます。
早速作ったコードを試してみましょう。
FreeBSD と Ubuntu の上ででデバイスを稼働させます。
デバイスが立ち上がったのを確認して、MacOS X 上で コントロールポイントを実行します。
無事、動的に機器発見を行い、サービスを利用して情報を取得することができました。
この実装で書いたコード行は、デバイスで100行、コントロールポイントにいたっては、安心を見越したコードでありながらわずか48行です。Rubyの強力さとUPnPライブラリの洗練さとを十分に感じることが出来ます。
なお、このライブラリではデバイス側とコントロールポイントを同じホストマシン上で動作させることができないようになっています。同一ホストマシン上でデバイスとコントロールポイントを動かしたい場合には、サンプルコードに同梱してあるパッチを試してみてください。
是非、Ruby UPnPライブラリを用いて、ホームネットワークでのサービスを試してみてはいかがでしょうか?
大変有益なライブラリを公開してくださり、また、サンプルコードの参考となった IGD や MediaServer を公開してくださったEric さんに、改めて感謝いたします。
UPnP を用いることで ad hoc にサービスを提供したり利用したりすることが可能になります。このプトロコルをベースにしたサービスとしては、例えば Windows の ICS 機能(インターネット接続共有機能)のポートマッピングやDLNAなどが有名です。
規格策定から10年ほどが過ぎ、SOAPベースのプロトコルなど、やや古めかしさを感じる点もありますが、サービスの自動発見など、家庭内ネットワークで気軽にサービスを提供するには便利な仕様です。
というわけで、Rubyを使って簡易UPnPデバイス(サービス提供側)とUPnPコントロールポイント(サービス利用側)を作ってみましょう。
UPnPになじみのない方は、UPnP Device Architectureに目を通しておくことをお勧めします(以下のコードは、UPnp DA 1.0に準拠しています)。
今回は簡単に、'/'ファイルシステムがあるディスク容量を得るためのサービスを書いてみます。デバイスを SystemStatServer、そのデバイスが提供するサービスを DiskStat としました。
ここで解説している全コードは、githubから取得できますので、必要に応じてご利用ください。
% git clone git://github.com/n-miyo/ru-sss.git
Ruby には、非常に優れた UPnP ライブラリが存在します。作者は rdoc のメインテナンスを担当されている Eric Hodel さんで、現在のバージョンは1.1.0です。
例えば UPnP では、サービス提供側のデバイスが SCPD と呼ばれるSOAP アクション一覧を記した XML ファイルを公開することが必須になっています。多くの UPnP 実装では、このXMLは活用していないのですが、Ruby UPnP 実装では、デバイスから SCPD ファイルを取得、解釈し、SOAP アクションを呼び出すメソッドを動的に作成してくれます。このため、クライアントは、該当メソッドを使うコードを書くことに集中できます。
また、サービス提供側でも、提供したいアクションを登録しておくだけでリフレクションにより SCPD XMLファイルを自動的に生成してくれるなど、Ruby の良さを効果的に生かした、大変美しい実装になっ
ています。
まずはこの UPnP ライブラリをインストールします。
幸い gem で公開されているので本来は、gem install で利用準備は終了です。
% sudo gem install UPnP
ただ、私の環境ではいくつか期待通りに動作しないバグがあり、修正が必要でした。既に patch はtrackerへ登録済みですが、サンプルコードと一緒に公開もしていますので、必要に応じて利用してください(以下のサンプルコードは、このパッチが適用されていることを前提にしています)。
最初にサービス提供側のコードを書いてみます。
基本的には、UPnP::Deviceを継承してデバイスの定義を行い、そのデバイスが提供するサービスをUPnP::Service を継承して書くことになります。
デバイスの基本は、以下の通りです。
- 提供したいサービスに ServiceID を付与しておく
- UPnP::Device.create を使ってデバイスを作成する
- そのデバイスに対し、manufacture などの基本情報を付与する
- そのデバイスが提供するServiceIDを登録する
def self.run(argv = ARGV)
super
device = create 'SystemStatServer', @options[:name] do |s|
s.manufacturer = 'Tempus.ORG'
s.manufacturer_url = 'http://www.tempus.org'
s.model_description = "Disk Stat version #{s.class::VERSION}"
s.model_name = 'Disk Stat'
s.model_url = 'http://www.tempus.org/'
s.model_number = UPnP::Device::SystemStatServer::VERSION
s.add_service 'DiskStat'
end
device.run
end
次に提供するサービスを実装しましょう。ディスク容量を取得するには、RubyForge で公開されている sys-filesystem を使いましょう。これも gem でインストールするだけです。
% sudo gem install sys-filesystem
BSDや MacOS X を使っている人はバージョンに注意してください。
サービスの定義では、サービス名称とIN/OUTの種別、ならびに結びつけるstate変数を指定します。ここでは、アクション名称をGetDiskFreeSpace とし、取得したパスと単位を指定できるようにしてみました。lib/UPnP/service/disk_stat.rb が該当のコードです。
add_action 'GetDiskFreeSpace',
[IN, 'FileSystem', 'A_ARG_TYPE_FileSystem'],
[IN, 'Unit', 'A_ARG_TYPE_Unit'],
[OUT, 'FreeSpace', 'A_ARG_TYPE_FreeSpace']
add_variable では、UPnP 上でのstate変数と型とを結びつけています。今回は GENA イベントを利用しないので、非常にシンプルな定義です。
add_variable 'A_ARG_TYPE_FileSystem', 'string'
add_variable 'A_ARG_TYPE_Unit', 'string'
add_variable 'A_ARG_TYPE_FreeSpace', 'i4'
あとは該当サービスの内容を実装するだけです。戻り値の第一要素には RETVAL を指定しますが、今回のサービスでは利用しないので nil を指定しています。
def GetDiskFreeSpace(file_system, unit)
result = 0
begin
stat = Sys::Filesystem.stat(file_system)
s = stat.blocks_available * stat.fragment_size
case unit
when 'G', 'g'
result = s / (1024 * 1024 * 1024)
when 'M', 'm'
result = s / (1024 * 1024)
when 'K', 'k'
result = s / 1024
else
result = s
end
rescue
result = 0
end
[nil, result]
end
最後にデバイスの実行コードを定義しましょう。基本はこれだけです。bin/upnp_system_stat_server が該当コードです。
UPnP::Device::SystemStatServer.run
次に呼び出し側であるコントロールポイントの実装です。
こちらもデバイスと同様、UPnP::Control::Device とUPnP::Control::Service を継承して作成します。
まずはサービスから実装します。と言っても、この1行で完成です。
URN_1 = [UPnP::SERVICE_SCHEMA_PREFIX, name.split(':').last, 1].join ':'
次に利用したいサービスのインスタンスを取得するコードを書きます。今回のデバイスでは単一サービスしか提供していませんが、複数のサービスを提供するデバイスもありますから、適切なサービスを選択するようにしましょう。
def disk_stat
@ds ||= services.find do |service|
service.type == UPnP::Control::Service::DiskStat::URN_1
end
@ds
end
alias ds disk_stat
これでサービスを利用する準備が整いました。
最も大事な、このサービスの GetDiskFreeSpace アクションを利用するコードを書きます。単純に該当アクション名を method として実行するだけでサービスを利用できます。
def print_free_size(path = '/', unit = 'm')
puts "server: #{friendly_name || presentation_url}"
size = ds.GetDiskFreeSpace path, unit
puts "free size: #{size} #{unit.upcase} bytes."
end
最後に、デバイスの VERSION と URN を定義します。
VERSION = '1.0.0'
URN_1 = [UPnP::DEVICE_SCHEMA_PREFIX, name.split(':').last, 1].join ':'
基本的に、サービス利用側が書く必要のあるコードはこれだけです。その他必要なコードはすべてライブラリが必要に応じて動的に生成してくれます。
早速作ったコードを試してみましょう。
FreeBSD と Ubuntu の上ででデバイスを稼働させます。
freebsd% RUBYLIB=lib bin/upnp_system_stat_server -n freebsd
ubuntu% RUBYLIB=lib bin/upnp_system_stat_server -n ubuntu
デバイスが立ち上がったのを確認して、MacOS X 上で コントロールポイントを実行します。
macosx% ruby -I ../../UPnP-1.1.0/lib -I../lib upnp_sss
server: ubuntu
free size: 25698 M bytes.
server: freebsd
free size: 134 M bytes.
macosx%
無事、動的に機器発見を行い、サービスを利用して情報を取得することができました。
この実装で書いたコード行は、デバイスで100行、コントロールポイントにいたっては、安心を見越したコードでありながらわずか48行です。Rubyの強力さとUPnPライブラリの洗練さとを十分に感じることが出来ます。
なお、このライブラリではデバイス側とコントロールポイントを同じホストマシン上で動作させることができないようになっています。同一ホストマシン上でデバイスとコントロールポイントを動かしたい場合には、サンプルコードに同梱してあるパッチを試してみてください。
是非、Ruby UPnPライブラリを用いて、ホームネットワークでのサービスを試してみてはいかがでしょうか?
大変有益なライブラリを公開してくださり、また、サンプルコードの参考となった IGD や MediaServer を公開してくださったEric さんに、改めて感謝いたします。
Ruby の sys-filesystem が BSD をサポート
Ruby で OS の差を気にすることなくファイルシステムの情報を取得したい場合、sys-filesystem ライブラリを使うと便利です。
残念ながら 0.2.0 では BSD がサポートされていなかったので、小さな patch をお送りしたところ、早速採用して頂いた上、0.3.0 としてリリースして頂けました。感謝です。
BSDや MacOS X を利用されていて、sys-filesystem が利用できなかった方は、是非、試してみてください。
残念ながら 0.2.0 では BSD がサポートされていなかったので、小さな patch をお送りしたところ、早速採用して頂いた上、0.3.0 としてリリースして頂けました。感謝です。
BSDや MacOS X を利用されていて、sys-filesystem が利用できなかった方は、是非、試してみてください。
Void Cube
真ん中が抜けているルービックキューブ。
昨年10月発売ですが、ノーチェックで今頃購入。まぬけ。
ペン立てに使ってみたりしてー(おぃ)。
解法は3x3x3のルービックキューブが使えますが、「Rubik's Cube展」さんのVoid Cubeの解説にあるように、センターキューブが無いことによる特殊パターンの発生も。
色がルービックキューブと違う点に、一番混乱させられました...。げに恐ろしきは、三つ子の魂かな。
昨年10月発売ですが、ノーチェックで今頃購入。まぬけ。
ペン立てに使ってみたりしてー(おぃ)。
解法は3x3x3のルービックキューブが使えますが、「Rubik's Cube展」さんのVoid Cubeの解説にあるように、センターキューブが無いことによる特殊パターンの発生も。
色がルービックキューブと違う点に、一番混乱させられました...。げに恐ろしきは、三つ子の魂かな。
「EXIT TUNES PRESENTS Vocarhythm」 & 「Supercell」発売!
だいぶ遅れましたが、「EXIT TUNES PRESENTS ocarhythm」と「Supercell」発売、おめでとございます。ともに初日オリコン10位以内とのことで、素晴らしい!
「EXIT TUNES PRESENTS Vocarhythm」は、Vocaloid初めての方に取っ付きやすいと思います。
「Supercell」は同人版と比べて音が良くなっている気がしました(気のせい?)。メルトはニコ動でしか聞いたことなかったので、こんなに奇麗な音色とは知りませんでした。もったいなかった。初回限定のパッケージは、封入イラストが非常に目立ち、店頭で買うのは結構勇気が必要!?
日々、改めて新鮮な気持ちで堪能しています。感謝、感謝。
「EXIT TUNES PRESENTS Vocarhythm」は、Vocaloid初めての方に取っ付きやすいと思います。
「Supercell」は同人版と比べて音が良くなっている気がしました(気のせい?)。メルトはニコ動でしか聞いたことなかったので、こんなに奇麗な音色とは知りませんでした。もったいなかった。初回限定のパッケージは、封入イラストが非常に目立ち、店頭で買うのは結構勇気が必要!?
日々、改めて新鮮な気持ちで堪能しています。感謝、感謝。
EXIT TUNES PRESENTS ... オムニバス, 鼻毛P feat... | supercell (通常盤)... supercell feat.... |
2009/03/09
今日のお酒: L'Hospi Art de Vivre Chardonnay 2007
L'Hospi Art de Vivre Chardonnay 2007
久しぶりにシャルドネ。
色がびっくりするくらい薄いけど、香り爽やかで、スッキリで飲みやすいです。わりとなんにでもあわせやすい気がしました。
久しぶりにシャルドネ。
色がびっくりするくらい薄いけど、香り爽やかで、スッキリで飲みやすいです。わりとなんにでもあわせやすい気がしました。