Category: 開発日記

「お名前.com デスクトップクラウド 」でWindows8を使ってみた
お名前.com デスクトップクラウド

あのドメイン取得ができる「お名前.com」で、サービス提供されているデスクトップクラウドを試してみた。

クラウドというと、何かモヤモヤしたイメージで、結局、他のレンタルサーバーと同じじゃないの?とか思っていたけど、このデスクトップクラウドは、OS自体を貸出ししてくれるサービス。
http://www.onamae-desktop.com/

例えば、Windows8をそのままクラウドサービスとして公開されていて、それをリモートデスクトップ接続して利用するというもの。
例えば、自宅でMacOS環境を使っていても、クラウド上のWindows8を利用できる。

で、いろいろ用意されているんだけど、開発環境であるVisual Studio 2012がプイインストールされているものもあった。
http://www.onamae-desktop.com/dev/

更に、無料トライアル(14日間)ってのもあったので試しに申し込んでみた。
クラウド側でサービス設定が完了すると、ログイン方法などが記載されたメールが届く。
もう既に、こっちのPC環境もWindows8だが、Windows8のクラウドを利用してみる。

ちなみに、リモートデスクトップが接続可能であれば、Windows Vista/7は勿論、Macや、iPad、iPhone、Androidからも接続できるらしい。
早速、使ってみる。
と、Windows8から「リモートデスクトップ」の開き方が分からない。。。
Windows7ならスタートメニューのアクセサリ配下にあったような気がするが、Windows8にスタートメニューが無い。

(さらに…)

東京電力メーター」を、東京電力以外も表示できるよう作り込んでみた。

ここ最近、東電以外の各電力会社も頑張ってデーターを公開してくれるようになってきたので「東京電力メーター」も、頑張ってソレに対応するよう改良。
前回も表示できる電力会社を3社(関西電力、東北電力、九州電力)増やしたけど、今回も更に5社(北海道電力、北陸電力、中部電力、中国電力、四国電力)増やし、トータル9社の電力使用率を表示できるようになった。

あとは、データーを公開していない沖縄電力のみ。

ますます「東京電力メーター」という名前に違和感が出てきたので、これを機に名前を変えることにした。
でも、ネーミングセンスが無いので迷ってしまう。

「電力メーター」だと、家とかにくっ付いてる例のメーターと被るし、変に長い名前や英語にすると何をするアプリなのか訳わからなくなるし。
そんなこと考えるのが段々面倒になり「節電メーター」という名前にすることにした。

イマイチ、パッとしないしパソコンを節電するアプリと勘違いされてしまいそうだけど、コレでいくことにした。

[節電メーター]
image
で、各電力会社の電力使用状況のデーターを取り込む際、フォーマットやファイル名が異なったり、もう大変。

前にも書いたけど、何でCSVなんだ?なんでSJISなんだ?せめてXML+UTF8にして欲しかった。
多分、東京電力がCSVで作ったから右へならえといった感じなんだろうけど。
特に、ガジェットはAjaxベースで書くからSJISのファイルを読み込むと文字化けが発生する。

SJISでCSVファイルを公開していても東北電力みたいに、HTTPのレスポンスヘッダ(Content-Type)に、ちゃんと”charset=shift_jis”と書いてくれてあれば文字化けせずに済むのに、東北電力以外は全滅。
本当は、CSV内にある「節電コメント」をガジェット上に表示したかったんだけど、全角文字が化けてしまうので、「節電コメント」表示の実装は断念することにした。

↓作る途中で、ちょっとまとめた電力会社の公開状況を備忘録として書いておきます。(2012/7/11現在)

(さらに…)

今までWindows 7上で動作していた自作のデスクトップアプリケーションを、Windows 8 Release Preview上で問題なく動作するか疎通動作を確認してみた。
rss2

 

ガジェット

まずは、Windows 7/Vistaで登場していたガジェット。

東電電力使用状況

ガジェットは今までのWindowsほぼ同等。
最初にダブルクリックで実行すると、
de1
発行元を確認できませんでした。このガジェットをインストールしますか?
 名前:denryoku.gadget
 発行者:不明な発行者
 「インストールする」「インストールしない」
みたいなセキュリティの警告ダイアログが出る。
インストールを実行すると、今までのWindowsと同様、ガジェットとして使えるようになる。
de2
設定画面も普通に開ける。
de3

東京電力メーター

こちらのガジェットも同様。インストール時に警告。
td1
実行すると、今まで通りと同じように動く。
td2
設定も。
td3

 

デスクトップアプリケーション

次に、デスクトップアプリケーション。

デスクトップアプリケーションは、実行時に、以下のようなメッセージが表示される。
af1
WindowsによってPCが保護されました
Windows SmartScreenは認識されないアプリの起動を停止しました。
このアプリを実行すると、PCに問題が起こる可能性があります。
と、ちょっとビビるメッセージが表示される。
ここで「OK」を押すと何も起動せず終了するが、「詳細情報」を選択すると、
 発行元:不明な発行元
 アプリ:AffiliSearch.exe
 「実行」「実行しない」
みたいな表示が出てくる。
af2
ここで、「実行」を選択すると、今まで通りアプリケーションを実行できる。

(さらに…)

公開されたWindows 8のRelease Previewを早速インストールしてみた。
[Windows 8 Release Preview]
http://windows.microsoft.com/ja-JP/windows-8/release-preview
Windows 8 Release Preview

導入方法の検討

Windows 8をインストールするにはいくつか選択肢があるようで、まずはそこから検討してみた。
方法1:アップグレードインストール/クリーンインストール
Windows 8 Release Preview セットアップで既存のWindows(Windows7やVista/XP)に対してアップグレードまたはクリーンインストール。
セットアップを実行すると、既存Windowsのデータを残すかどうか聞いてくる。
詳細
方法2:デュアルブート環境にインストール
isoイメージのWindows8インストーラをダウンロードしDVDなどに焼いておき、空きドライブ上にインストール。
新たにハードを準備する必要が無いし、既存のWindowsに影響が少ない。
Windows 7/Vistaであれば、OS標準でパーティション作成できるので、HDD空きがあればドライブ追加も容易。
デュアルブートでインストールしてみたい方は以下のサイトが参考になるかも。
[[Win8RP] デュアル ブートする方法]
http://answers.microsoft.com/ja-jp/windows/forum/windows_8-windows_install/win8rp-%E3%83%87%E3%83%A5%E3%82%A2%E3%83%AB/c19d1d80-3c17-4e17-b791-2226d842d681
[Windows 8 Consumer Previewをデュアルブート(マルチブート)する方法]
http://kama3104.blog96.fc2.com/blog-entry-417.html
[Windows 8 Release Preview ISO イメージ]
http://windows.microsoft.com/ja-JP/windows-8/iso
詳細
方法3:Windows To Goを利用してUSBメモリにインストール
Windows 8では「Windows To Go」なんて機能が追加されている。
これは、USBメモリやUSBハードディスク、SDカードなど外部のメディアに対してWindows 8をインストールして持ち運び、出先のPCに差し込んで使えるという代物らしい。
Windows 8 Release Previewを既存環境にインストールする必要が無いためリスクが少ないし、HDDも圧迫しない。
isoイメージのWindows8インストーラをダウンロードしDVDなどに焼いておき、その中にあるファイルを使用しセットアップするらしい。
Windows To Goでインストールしてみたい方は以下のサイトが参考になるかも。
[Windows 8をUSBメモリで持ち運ぶ、Windows To Go]
http://www.atmarkit.co.jp/fwin2k/productreview/win806/win806_01.html
[Windows 8 Release Preview ISO イメージ]
http://windows.microsoft.com/ja-JP/windows-8/iso
方法4:仮想環境にインストール
VMwareなどの仮想環境に新規インストール。
ホストOSとは別物としてインストールするのでリスクは少ない。
ただし、PCのスペックがそこそこ必要で、動作も少々遅くなりそう。
isoイメージのWindows8インストーラをダウンロードしDVDなどに焼いておき、isoをマウントしてインストール。
[VMware Player]
http://www.vmware.com/jp/products/desktop_virtualization/player/overview

方法1でインストール

で、手持ちのノートPCに、どの方法で入れるべきか検討をして試行錯誤したんだけど、ノートPCがしょぼすぎて空き容量も少ないため、この際まっさらにして方法1「アップグレードインストール/クリーンインストール」をやってみた。
■前準備
・バックアップ作成
・空きディスク確保
・ダウンロード
以下のサイトからWindows 8の媒体イメージ(iso)をダウンロード。
日本語64ビット(x64)が3.3GB
日本語32ビット(x86)が2.5GB
[Windows 8 Release Preview]
http://windows.microsoft.com/ja-JP/windows-8/release-preview

(さらに…)

去年は原発事故を引き金に、計画停電や節電やらと大変な思いをした。
そんななか、少しでも節電意識を高めたいと、「東京電力メーター」を作って公開した。

で、今年の夏は原発再稼働の問題もあり、東電エリアだけの話ではなく、全国的に電力不足に陥りそうな感じ。これはマズい。
そんな訳で「東京電力メーター」もアプリ名に反し、関西電力、東北電力、九州電力の電力使用率も表示できるよう対応してみた。

1
前にも、東北電力、関西電力に対応したモノを作ったけど、その後、関西電力がcsv公開を一時止めたりしたので、今回は、関西電力を復活したり、九州電力を追加したりと、最新の公開データに合わせて修正した。

[4つの電力会社に対応]
2_kansai2_kyusyu2_toden2_tohoku
でも何で、東京電力、関西電力、東北電力、九州電力のみの対応かというと、その他の電力会社から現状、CSVデータが公開されていないから。
あと、電力会社毎に微妙にCSVデータ形式が違うので取り込むのが大変だったりする。
でも、各電力会社からデータが公開されたら、東京電力メーターとしても前向きに実装したいと考えているので、CSVが公開されることを期待しながら待つとしよう。

(さらに…)

以前作成したネットショッピングを横断検索するWebサイト「全力通販」をスマホ対応化した。
01
スマホ対応のために行ったことは主に以下の2つ。
1.画面サイズの最適化
2.拾えないマウス操作イベントをタッチ操作で扱えるに処理に変更

(さらに…)

楽天の商品ジャンル別のランキングを表示する機能を「全力検索」に取り込んでみた。

全力通販
商品検索

既存の商品検索用ページの上にメニューバーを追加し、ランキングページへのリンクを追加した。
メニューが2つだけだと寂しすぎるので、リンク作成、サイトについて、お問い合わせページへのリンクも追加。
ここのページでは、楽天、アマゾン、Yahoo!ショッピング、セブンネットショッピング、ビッダーズ、stmx、価格.comの各社商品検索API(REST)を使用し、商品を一括検索する。
ランキング

今回追加した楽天ランキングを表示するためのページ。
このページで使用しているAPIは以下の2つ。
楽天ジャンル検索API
楽天商品ランキングAPI

左側フレームで楽天ジャンルを取得し、その結果をツリービューとして表示する。
ツリーが選択されたら、サブジャンルを検索しツリーを展開する。
同時に選択されたツリー(ジャンル)に対する商品ランキングを取得し、右フレームにランキング結果を30件表示する。
ちなみに、ジャンルを絞り込まない(総合)の場合、年代や、性別に対するランキングを表示できる。

ランキング
おまけに、画面下側にそのジャンルに対するサブジャンルを表示。
リンク先は商品検索ページで、選択したキーワードの商品を探せるようにしている。
ちなみに、今回使用した楽天APIは癖が無く非常に使いやすい。
他の楽天WEB SERVICE APIも同じくシンプルで使いやすいため、これからRESTとか、XMLなんかを勉強したいという方にはオススメ。
ブックス系、オークション系、トラベル系、その他諸々のAPIがあるから面白いかも。
全力通販

楽天WEB SERVICEが公開している以下のAPIを利用して、楽天市場のジャンルごとのランキングを表示するサイトを開発中。

こんな感じ。
web

楽天ジャンルを左フレームのツリーで表示して、選択したジャンルに対する商品ランキングを右フレームで表示する。
流れはこんな感じ。
1.楽天ジャンル検索API(REST)で、ルートのジャンルを検索
2.結果(XML)を解析し、サブジャンルを左フレームのツリーに表示
3.ツリーの項目をクリックしたら、その項目に対するサブジャンルを再び検索
4.同時に、クリックしたジャンルIDをもとに楽天商品ランキングAPIを実行
5.サブジャンルの結果(3.のレスポンス)をツリーに反映
6.ランキング結果(4.のレスポンス)を、XSLT変換し右フレームに表示

ツリーは、jquery の plugin「Treeview」を使ってみたけど、コレが結構簡単に組み込めると思いきや、ちょっと込み入った使い方をしようとすると難しくて扱いにくい。
(二度目に展開したツリーのイベント取得方法が分からない等)

でも、ゼロから作り込むよりかは全然いいので使ってみることにした。
今のところ、これ以上の面白いネタがなく、何とな~く作っている感じ。

これだけでは、利用価値があまりないので「全力通販」に組み込んでみようとも考えている。
できれば年内には公開できる状態にしたいなーって思っているんだけど、仕事も忙しくなってきそうだし微妙かな。

以前作成した東京電力メーターを、東北電力、関西電力の電力使用率も表示できるよう改良してみた。
toden_meter
で、日本には他にも電力会社があるのに何故、東京電力、東北電力、関西電力の3つだけしか表示しないのか?
それは、各電力会社毎にフォーマットが微妙に異なっていたり、非公開だったりするから。
同じ電力会社でも所詮別会社ということなのか。
そこで、各社の公開情報がどれだけ異なるのか簡単に比較してみた。

(さらに…)

新たにネットショッピングできるサイト「全力通販」を公開しました。
img
http://www.zenryoku2.com/
今回はサブドメインではなく、ちゃんと専用のドメインを取得しての公開。
検索結果を非公開としたり、問い合わせフォーム追加、レイアウトやツールチップの変更など、これまでのサイトと比べ細かな改良を加えている。
検索できるショッピングサイトは、以下の7サイト。
・楽天市場
・アマゾン
・Yahoo!ショッピング
・セブンネットショッピング
・ビッダーズ
・stmx
・価格.com
今までは、検索できるだけで満足していたところがあったので、実際に使ってもらえるサイトを目指し、これからも改良を続けていく予定。
全力通販

東電電力使用状況ガジェットを流用し、今度はアナログ的な電力メーターを作ってみた。
デザインの方は、以前WPFで作ったKMeterを流用した。
[東京電力メーター]
image
image2
今回、苦労したのはガジェットでの針の動き。
WPFとか、C#では針の座標を計算し線を描画していたけど、ガジェットでは、画像を指定しておけば、
後は、角度を指定してやれば、簡単に針が傾いてくれる。
例:
HTML側:

<g:image
 id=”needle”
 unselectable=”on”
 src=”img/needle.png”
 style=”position:absolute;left:60px;top:0px;width:13px;height:134px;z-index:10″ />

JavaScript側:

// 針を90度傾ける
needle.Rotation = 90;

角度を時計の針で例えると、
12時はRotation=0(360)
3時はRotation =90
6時はRotation=180
9時はRotation=270
と言った感じ。
これは楽だ。
だけど、今度は針をパッと表示しただけではアナログっぽくない。
0からスルスルと針が回ってくるアニメーションをさせたい。
これが意外と難しいというか、やり方が分からず少しハマった。
結局、setTimeout関数をループ処理の中で使って、時間差で針を描画するようにしたら
それっぽく表示できるようになった。

function test(){
 var cnt=0;
 // 0%から100%まで針を動かす
 for(i=0;i<=100;i++){
  cnt++;
  // 20ミリ秒ずつ遅らせて別関数を呼び出す
  setTimeout(“setRotation(” + i + “)”,20*cnt);
 }
}
function setRotation(_val){
 // 0%(180度)を基準に、引数で指定されたパーセントの値×2.7度
 // (100%までのトータル角度が270度だとすると1度傾けるのに2.7度)
 s.Rotation = 2.7 * _val + 180;
}

東京電力メーター

以前、東京電力の電気使用状況を表示するガジェットを作ってみたが、本日7/1から東電が公開しているcsvデータにフォーマット変更があり、案の定、ガジェットの表示が崩れてしまったので、最新フォーマットに合わせガジェットを修正してみた。
[修正前]
old
[修正後]
new
東電電力使用状況ガジェット
7/1から以下のようなcsvデータ形式に変更となった。
[電力の使用状況データの説明]

電力の使用状況データの内容   説明
2011/6/27 23:55 UPDATE   2011年6月27日 23:55時点のデータ
ピーク時供給力(万kW),時間帯,供給力情報更新日,供給力情報更新時刻
4580,14:00~15:00,6/26,17:30>
  本日のピーク時供給力は、4,580万kW(14時~15時)
6月26日17時30分に更新した情報
予想最大電力(万kW),時間帯,予想最大電力情報更新日,予想最大電力情報更新時刻
3640,14:00~15:00,6/26,17:30
  本日の予想最大電力は、3,640万kW(14時~15時)
6月26日17時30分に更新した情報
DATE,TIME,当日実績(万kW),予測値(万kW)   DATE:
  当日の電力の使用状況の対象日
TIME:
  当日の電力の使用状況の対象時間
当日実績(万kW):
  当日の電力の使用状況の1時間平均の電力需要
  ※確定するまでは0が入ります。
予測値(万kW):
  9時から19時台の電力需要の1時間平均の予測値
  ※当日実績が確定したら0が入ります。
2011/6/27,0:00,2590,0
   ・
   ・
2011/6/27,15:00,0,4229
   ・
   ・
  2011年6月27日 0:00時台の当日実績 2,590万kW
   ・
   ・
2011年6月27日 15:00時台の予測値 4,229万kW
   ・
   ・
翌日のピーク時供給力(万kW),時間帯,供給力情報更新日,供給力情報更新時刻
4880,16:00~17:00,6/27,17:30
  翌日のピーク時供給力は、4,880万kW(16時~17時)
6月27日17時30分に更新した情報
※翌日のピーク時供給力をお知らせする18時頃から翌日の1時頃まで公開します。
翌日の予想最大電力(万kW),時間帯,予想最大電力情報更新日,予想最大電力情報更新時刻
4150,16:00~17:00,6月27日,17:30
  翌日の予想最大電力は、4,150万kW(16時~17時)
6月27日17時30分に更新した情報
※翌日のピーク時供給力をお知らせする18時頃から翌日の1時頃まで公開します。
メッセージNo,節電お願い文
1,節電にご協力いただき、ありがとうございます。皆さまのご協力により、電気の供給は、比較的余裕のある一日となりそうです。
1,Thank you very much for your cooperation to save electricity.According to your cooperation
  メッセージNo:
  節電お願い文のメッセージNo
節電お願い文:
  需給逼迫度に応じた節電お願い文を表示
※翌日のピーク時供給力をお知らせする18時頃から翌日の1時頃まで公開します。
DATE,TIME,当日実績(5分間隔値)(万kW)   DATE:
  当日の電力の使用状況の対象日
TIME
  当日の電力の使用状況の対象時間(5分毎)
当日実績(5分間隔値)(万kW)
  当日の電力の使用状況の5分間隔の電力需要
2011/6/27,0:00,2684
   ・
   ・
  2011年6月27日0時00分の実績 2,684万kW
   ・
   ・

で、以前のcsvファイルとどこが違うのかというと、主に以下の3箇所。

  1. 表現の修正(2、3行目)
    「時台」⇒「時間帯」
  2. 前日実績から予測値に変更(8~32行目)
  3. 節電お願い文や、5分間隔のデータ項目追加(33~332行目)

1.と2.は、直接ガジェットとして使用していないデータなので影響なし。
3.は、データ追加なので非互換に影響なし。
と、思いきや、8行目以降のデータをファイル終わりまでひたすら読み込む処理となっていたため、[修正前]のような現象に陥ってしまった。
まぁ、東電側も非互換をなるべく少なくということで考えてくれたんだろうけど、やっぱり懸念していたとおり、落とし穴にハマってしまった。
自作ガジェット以外にも、他の人達が作ったガジェットも似たような現象に。。
やっぱり、csvファイルでは無理があったのでは。
RESTとかXMLにしてくれればいいのに。。
Yahoo!には、そんなようなAPIが用意されているっぽい。
電力使用状況API

(さらに…)

ITmediaに、『東電が電気使用状況データをCSVで公開 「アプリ作ったら知らせて」と経産省』なんて記事が載っていたんで、早速アプリを作って公開してみた。
image
東電電力使用状況ガジェット
最初はJavaScriptを使って、シンプルなAjaxのページを作ろうと思ったけど、ついでにWindows用ガジェットとして作ってみることにした。
でもガジェットを作るのは初めて。
基本的にはJavascriptが分かれば作れるっぽいけど、背景画像の設定や、設定画面の準備とか少々面倒だった。
あと、Ajaxを使って一定時間ごとに更新表示させたいけど、キャッシュ情報を拾ってしまい、古いデータを表示し続けてしまったりマイナートラブルにハマった。
最初は、東京電力が用意しているCSVデータに当日のピーク時供給力の電力が無くって、使用率の計算ができなかった。
ピーク時供給電力は、CSVではなく、普通のHTMLページに載っていたので、そこのページから強引に文字列操作で値を抜き取る処理を頑張ってゴリゴリと作ったんだけど、いざ完成して公開しようかと思った瞬間、HTMLページのレイアウトが変わり取得できなくなってしまった。
その代わり、CSV内にピーク値のデータが出力されるようになったため、そこから取得するよう急遽作り直した。
しかも、CSVと言っても、
1行目が、更新日時
2行目がピーク値のCSVヘッダ
3行目がピーク値のCSVデータ
4行目が空行
5行目が実績値のCSVヘッダ
6行目以降が実績値のCSVデータ
ってな感じで、CSVデータというか、フォーマットがバラバラなテキストデータに近い。

2011/3/26 1:05 UPDATE
ピーク時供給力(万kW),時台,供給力情報更新日,供給力情報更新時刻
3700,18:00,3/26,9:30
DATE,TIME,当日実績(万kW),前日実績(万kW)
2011/3/26,0:00,2889,2990
2011/3/26,1:00,2758,2848
2011/3/26,2:00,2674,2767
 :

CSVでは、やっぱり仕様変更したときに対応しにくいから、XMLとかで公開して欲しいなぁ。
できればRESTのAPIで。
今後もCSVの仕様変更がありそうで怖いなぁ。
東電の電力が気になってしょうがない方は是非お試しを。
#みんなで頑張って節電しましょう。
東電電力使用状況ガジェット

先日、窓の杜から、マルチタッチアプリ開発会議のお誘いがあったので参加してきた。
Microsoftが開催する開発者向けイベント「Windows 7 マルチタッチ対応アプリケーション開発者会議」で
六本木にある東京ミッドタウンで行われた。
内容は、
・Windows7の普及状況とスレートPCについて
・マルチタッチアプリで気を付けるUIについて
・既存アプリのマルチタッチアプリ対応または新規開発依頼
・Silverlightの紹介
・質疑
など。
# 他にもあったような。
[参考記事]
窓の杜:“Windows Slate/Windows 7/マルチタッチ対応アプリケーション開発者会議”レポート
興味のある話もあったんで参加してよかった。
あと、2011年末までにマルチタッチ対応アプリケーションを作成することを条件に
Windows7のスレートPCを貰ってきました。
マルチタッチ対応アプリは新規開発しなくても、既存の公開アプリをマルチタッチ対応
するだけでもいいという事なので、3月に間に合いそうになければ、とりあえず
既存アプリのマルチタッチ対応をやろうかなと思っている。
いいネタ&暇があれば新規アプリも挑戦してみたい。
ちなみに、Silverlightはマルチタッチと相性がいいということで説明されていたけど、
これが案外良さげ。
もうこれからの時代はHTML5じゃないのかと思い込み、見てみぬ振りをしていたけど、
Silverlightで作成したアプリは、Web(IEは勿論、Mac上のSafariでも動く)や、
Web以外のデスクトップアプリケーションとしても動く。Mac上でも動く。
例として台湾MSのSilverlightサイトを紹介していた。
かなり痛いページだけど、このページの玩具箱子にSilverlightのサンプルがあるようで、
ここのSilverlightアプリは、Webだけじゃなく、Webを切り離したアプリとして動作する
ことも紹介していた。
また、SilverlightはWindows Phone7のアプリ開発にも使われているらしい。
なので、Silverlightを扱えるようになれば、Web、アプリ、WP7アプリの
開発が楽になりそう。
WP7抜きにしても、そのうち挑戦してみたいなーなんて思っている。
SilverlightはWPFの簡易版(主にWeb)みたいな感じらしいけど、
以前、Visual StudioのみでWPFアプリを作ったとき、難しかったんで敬遠してた。
Microsoft Expression Blend 4を使えば、UIを簡単且つ豪華にできるらしいけど、
これがまた高い(Expression Blend)。
でも欲しい。面白いことがいろいろできそう。
1
約100人ぐらいの開発者が参加してました。

(さらに…)

GPS付き携帯やカメラで撮影したJPEGファイルには、Exif情報の中にGPS位置情報を付加できる。

位置情報には緯度、経緯などが入っているが、数値だけ見ても何処を指しているのか分からない。
なので、Google Map上の地図で表示するツールをフリーソフトとして作成してみた。
画像位置情報取得ツール


iPhoneで撮影した写真も、設定解除されていなければGPS情報が付加される。

どこで撮影したかすぐ分かるので、GPS付きカメラ携帯を持っている方はお試しを。
# 将来的にはExif情報に含まれている撮影日時も取得したいなぁと考えてたりする。


スポーツ新聞っぽいWebページを簡単に作成&公開できるサイトを作ってみた。

今年は何かと忙しく、やりたい事も沢山あったので、このWebサイトを作り込むのに1年もかかってしまった。
まだ、作成途中だけど、こっそりと公開してみた。
少し様子をみて、今後も開発を継続しようかどうか考えてみることにした。
# 来年はまた別の何かを作ってみようかなとも思っている。

何かローカルなニュースがあったら、このサイトで新聞つくってみてください。
#くだらないネタでも大歓迎。

スポーツ新聞メーカー(スポメカ)

 http://spo-meka.osadasoft.com/

ある日突然、印刷時に以下のエラーが発生するようになった。

「スプーラ サブシステム アプリケーション は動作しなくなったため、閉じられました
 問題が発生したため、アプリケーションは正しく動作しなくなりました。
 解決策がある場合は、Windowsから通知されます。」

印刷時エラー
このエラーが発生すると、それ以降、他のソフトでも印刷できなくなる。
更に他のプリンタに切り替えても印刷できなくなる。
Windows再起動すると再び印刷できるようになるが、また同様のエラーが出ると同じ状態に陥る。

どうやら、上記エラーメッセージ出力時にPrint Spoolerサービスが落ちているようだ。
なので、[コントロールパネル]→[システムとメンテナンス]→[管理ツール]→[サービス](※)
で、サービス一覧内の「Print Spooler」を再び「サービスの再開」を行えばわざわざWindows再起動しなくても再び印刷できるようになる。

※クラッシック表示時は[コントロールパネル]→[管理ツール]→[サービス]これで、他のプリンタに切り替えて印刷することができるようになるが、そもそも、そのプリンタに対するエラーを直したい場合はどうするのか?

調べてみたところ、以下の方法で解決することができるとのこと。
http://support.microsoft.com/kb/324757/ja

でも、何故このような現象が発生するようになったのかは不明。
思い当たる節は無いんだけど、以下の点も怪しいか?

  • C#でCristal Reportを使用した自作アプリを実行。
    →でも動作実績はあった。

  • プリンタにPrimo PDFを指定した場合のみ再現。
    →でもこちらも動作実績はあった。他プリンタでは再現せず。

  • Windows Vistaを再インストール
    →むしろクリーンな環境になった筈。。


2010年初頭の発売予定の次期Windows(Windows 7)のベータ版が1/9に公開されたので早速ダウンロード&インストールしてみた。
と、言っても新しいPCがある訳でもないし、パーテションを切って裏側にインストールした訳でもなく、Microsoft Virtual PC 2007で仮想PCを作成し、その中でWindows 7をインストールした。
(VMWareのような物だが、Microsoft Virtual PCは無料で使用可能)

(さらに…)

C#(VB.NET)でのお話。
DataGridViewにチェックボックスを表示できなくてハマったので覚え書き。

まず、DataGridViewのDataSourceとして、dataSet1を用意し、その中(Tables→Columns)にDataType=System.Boolean(チェックボックスで利用したいのでbool型)のメンバを用意。

(さらに…)

12月に無料版のVisual C# 2008 Express Editionをインストールした。

しかし、
・C#で作成したアプリのインストーラを作成したい。
・silverlight2.0を使ってみたい。
・C#は勿論、ASP.NET,VC++,VB.NETもまとめて使いたい。
という理由で、有料版のVisual Studio 2008 Professional Editionに乗り換えることにした。

が、インストール途中で、以下のダイアログが表示されインストールに失敗。
「ファイル vcredistmin_x86.exe を探しています。
 Microsoft Visual Studio 2008 Professional Edition – JPN ディスク1を挿入してください。」

ダイアログには、DVDドライブのパス「F:\」が表示されているが、このままOKを押下するとエラーでセットアップが終了してしまう。
再びセットアップを実行し、今度は”vcredistmin_x86.exe”が存在するパスを指定。
「F:\wcu\」
しかし、これでもうまくいかない。
エラーログには以下のメッセージ。
F:\wcu\vcredistmin_x86.exe could not be unpackaged because it is not a cabinet.
確かにこの”vcredistmin_x86.exe”、ファイルサイズが0バイトだし怪しい。

ネットで探してみても、日本語記事は無く、英文記事も解決方法が見つからなかった(4/17現在)。
う~ん、滅多に無い現象なのか。。
# ちなみに、この”vcredistmin_x86.exe”はVC++で使用するものらしい。
# VC++が不要なら外すって方法もあるかも。

よく分からないんで、いろいろ試してみた。
・常駐ソフトを片っ端から終了(ウイルス対策ソフトも)
・VS2008関連のプログラムを全てアンインストール
・SQL Server2005関連のプログラムを全てアンインストール
・.NET Framework3.5関連のファイルを全てアンインストール

結局、何が原因だか特定できなかったけど、今度は無事インストールすることができた。

VC++の場合、世界協定時刻(UTC)とローカル時刻の時差は、GetTimeZoneInformation関数を使うことで求められる。

TIME_ZONE_INFORMATION tzi;
GetTimeZoneInformation(&tzi);

// UTCからの差(分単位)を取得し符号反転
int wBias = -(tzi.Bias);

printf("時差=%+02d:%02d\n",
    wBias/60,   // 時
    wBias%60);  // 分

これを実行すると、日本では「時差=+09:00」、中央アメリカでは「時差=-6:00」と表示される。

注意すべきところは、5行目のBiasの値。
この値は、TIME_ZONE_INFORMATION構造体に返される時差(分単位)だが、UTCから進んでいる時間差ではなく、ローカル時間をどれだけ調整すればUTCになるかという値。
式で言うと「UTC = ローカル時刻 + バイアス値(時差)」で、これのバイアス値(時差)の値を指している。

なので、日本の場合、時差+9時間だが、ここのバイアス値として返される値は-540分(-9時間)となる。

そのまま時差として使用すると、+-が逆転してしまうので、符号反転する必要がある。
ちなみに符号反転は、「A = -A」というような式で可能。

あと、気になったのが、Windowsの[タイムゾーンの設定]で表示される時差の範囲は-12時間~+13時間。

はて、何故 +13時間?
+13時間って、-11時間のこと?

調べてみると、ヌクアロファ(トンガ王国)という所が、時差+13時間になるらしい。
で、地図で調べてみるとなるほど。

日付変更線が曲がっている所だった。

そういう落ちがあったのね。

もう1つ。
UTC(Coordinated Universal Time:協定世界時)とGMT(Greenwich Mean Time:グリニッジ標準時)の違い。
一体何なんだ?

Windowsの日付と時刻の設定ダイアログでは「GMT+09:00」とか表示される。
けど、GetTimeZoneInformation関数は、UTCで返すとマニュアルには書いてある。

何だかよく分からんが、ちょいと考え方の違いがあり誤差があるようだが、まぁ大した違いは無いらしい。
特にPCで使う範囲なら同意と考えても問題無さそう。

今回は、右から来たXMLを左に受け流す方法について、覚書で残しておくことにした。
XMLを変換する方法はいくつかあるけど、今回は手軽なXSLTを使ってXMLをHTMLに変換してみる。
全体イメージ的には↓こんな感じになる。

┌────────┐ ┌─────┐ ┌────────┐
│[5]出力ファイル │ │[2]XSL  │ │[1]入力XML   │
│HTML,XML,CSV等 │←┤ファイル │←┤ファイル    │
└────────┘ └─────┘ └────────┘
              ↑
           ┌──┴──┐
           │[3]変換  │
           │プログラム│
           ├─────┤
           │[4]XSLT  │
           │プロセッサ│
           └─────┘

(さらに…)

ブログ等では記事を書くと勝手にRSS生成されるが、自前HPなどでRSS対応したい場合、自力で作る必要がある。
例えば、Osada’s Software!では、シェアウェアであるRSSエディタ Headline-Editorを使用しRSSを作成している。作成していた。

これはこれで大変便利で重宝している。
しかし、動的にページ更新されるようなサイトには不向き。

そんな訳で、RSSを作成するためのPHPプログラムを作ってみた。
仕様は以下の通り。
# 更に細かな仕様はソース参照。
PHPバージョン:PHP4、PHP5
RSSバージョン:RSS2.0
文字コード:UTF-8
(さらに…)

商品の最安値を一発検索する「さいやす」というサイトを立ち上げました。

作りは殆どくしけんと一緒なんだけど、検索結果を値段順にソートする点が異なる。

あと、ついでに先月、電脳卸のWebサービスがDWS1.0からDWS2.0にバージョンアップしたんで、これに対応。
都合よく、今回から値段順のソートが可能となった。
# DWS1.0にもソート切り替えはあったが、何に対してのソートかドキュメントでは明確化されていなかった。

話は脱線して、DWS2.0では、検索結果にキーワード、ページ番号などの情報が返されなくなってしまい、これに対処するために苦労した。
Ajax+XSLTを使用しているので、データーの受け渡しが非常に面倒な作りになっていて、単純にJavaScriptのデータをRESTで返されたXMLに渡すのに苦労。
Amazonのように、URLにパラメタを追加すれば、返却XMLにタグを自動追加してくれるかな~なんてちょっと期待したんだけど、やっぱダメだった。

で次に、HTMLのクッキーに一旦保存してXSLT変換時に受け取ろうと思ったけど、HTML途中からクッキーを操作することが出来ず断念。
結局、RESTで返されたXMLを一旦ローカル保存し、そのXMLに対し、DOMでタグを追加し、そのXMLをXSLT変換するという、面倒くさい方法で実現した。
あと、最安値検索ということで、将来的には価格.comについても対応したいなぁと思っている。

楽天とアマゾンの商品を一発で検索できるサイトを構築してみた。

http://94ken.osadasoft.com/
やっていることは、自作ソフトのアフィリサーチと同じ。

今のところ検索のみしかできないけど、そのうち機能追加していこうかなと。
今回は初めて、PHP、Ajaxに挑戦したんだけど、苦労したところは↓こんなところ。

  • Ajaxを使うにはブラウザごとの処理を分ける必要があること。
    Ajaxの本を一冊購入し勉強したはいいが、その本はIEでしか動かないことが判明。
    # Ajaxの本を買う場合は対応ブラウザについて注意が必要。
    ネットで色々調べながら改良し作るハメに。
  • 日本語はURLエンコード
    これはアフィリサーチのときにハマってたので、今回は悩まずクリアできた。
    PHPの場合はencodeURIComponentメソッドでURLエンコード可能。
    URLエンコードした文字列をRESTのパラメータとして渡す。
    楽天のリクエストURLの形式はこちら
  • PHPでXSLTを使用
    これが一番ハマった。
    PHP5の本を買って、ローカルのWindowsにPHP5をインストールし、XSLTProcessorクラスを使いXSLT変換していたが、これを、さくらインターネットにアップロードし動かしてみると動かない。
    ※さくらインターネットは格安レンタルサーバでスタンダードプラン以上ならPHPも使用可能
    こんな感じのメッセージが出てくる。

    Fatal error: Cannot instantiate non-existent class: xsltprocessor in /xxx/xxx.php on line xx
    

    調べてみるとXSLTProcessorはPHP5以降じゃないと使えないことが判明。
    (さらに…)

資料を整理していたら、昔作成した某社社内のC言語の認定試験向けにまとめた
資料が出てきたので、世のため人のため自己満足のためにブログに載せてみる。

自分の場合、サンデープログラマとしてはC#、VC++、VBとかを使っているけど、本業の方は今だにC言語をバリバリ使ってます。
あと、UNIXのシェルや、PHP、JavaScriptなんかもCの文法に近いので知っておいて損は無いでしょう。

試験勉強中にまとめた資料なんで誤りもあるかも知れないんで、疑わしい部分は
調べ直してみて頂戴。
で、できればご指摘を。

(さらに…)

早速、昨日公開された楽天Webサービスの楽天商品検索APIを使用してアフィリサーチに実装してみた。

まだ、細かいところやヘルプ記事は作り込んでないから公開はまだ先だけど、とりあえず今日作った代物で楽天商品検索&リンク作成することはできた。
他ASPとちょっと異なる点や注意事項をメモしてみる。

  • 検索結果に含まれている商品URL(itemUrl)は、アフィリエイト用のURLでは無い。
    このURLをそのまま貼り付けても無報酬。アフィリエイトIDを使用するためには、「http://hb.afl.rakuten.co.jp/hgc/[アフィリエイトID]/?pc=[商品URL]」の形式で指定する必要がある。で、アフィリエイトIDをいちいち憶えておくのはナンセンスなので、リクエストURLにアフィリエイトID(affiliateId)を渡しておくと、出力パラメタに返されてくる。
  • エラーのステータスは/Response/Header/Statusのタグに返されるが、エラー詳細情報は/Response/Header/StatusMsgタグに返される。
  • RakuAPI(非公式API)との違いは、1ページしか取得できなかった情報が最大100ページまで取得可能になったこと。画像サイズが小のみだったが、小、中が用意されていること。商品説明文(itemCaption)を取得できること。その他細かな設定もできる。アフィリエイトID、URLも異なる。

(さらに…)

楽天がついにWebサービス用APIを公開した。
楽天 WEB SERVICE
WebサービスといってもSOAPではなく比較的簡単に利用可能なRESTの方。
他ASP(Affiliate Service Provider)も殆どREST。
(AmazonはSOAPとRESTの両方対応)

で、今回公開したのは以下の4つ。

  • 楽天商品検索API
  • 楽天ジャンル検索API
  • 楽天商品コード検索API
  • 楽天書籍検索API

今まで非公式な楽天API「RakuAPI」を使って商品検索していたが、これで
アフィリサーチも公式APIを使用した楽天商品の検索ができそう。

他ASPに比べジャンル検索APIがあったり、きめ細かなパラメータが多くあり少々面倒くさそう。
楽天の膨大な商品を検索するには必須なんだろうな。
頑張ってアフィリサーチに組み込んでみる予定。

関連記事:
ITmedia News:楽天市場のAPI公開 “楽天経済圏”拡大に生かす

以前書いたVMeter2のVista対応の続き。

VMeter2をVista対応するのに以下の問題があった。
1.CPU使用率が取得できない。
2.ネットワーク使用率が取得できない。
3.キーボード入力を拾えない(キーボードフック)

このうち、1、2についてはVistaで実装されたUAC(User Account Control)に対応することにより問題解決した。
残りの3.については、原因が分からず保留にしていたが、2006/12/18に公開されたVisual Studio 2005 SP1を適用後、VMeter2のソリューションをリビルドしたところ、Vistaでも無事動くようになった。
もちろん、WinXPでも大丈夫。
これで、VMeter2は全てVista対応することができた。
# とりあえず、一安心かな。