FancyBox導入

005画像をクリックすると拡大表示してくれる FancyBox という WordPress プラグインを導入しました。

サムネイルにメディアファイルへのリンクを設定している場合はプラグインを有効化するだけで使えるようになります。ただ、迥寞録では、画像は従来インラインで表示していて、リンクは張っていません。

手作業では大変なので、Search Regex というテキストを置換するプラグインを使って、元画像へのリンクを張りました。

Search pattern:

/(<img .*? src="(.*?)(?:-560x373\.jpg)" .*? \/>)(?!<\/a>)/

Replace pattern:

<a href="\2.jpg" target="_blank">\1</a>

 

このブログの現在の設定では、画像の横幅を最大560にしてあるので、-560×373 というサフィックスが付いた画像が作られます。この -560×373 を除いたものが元のファイル名というわけです。(アスペクト比 3:2 の場合。4:3 の場合は-560×420。縦位置も考慮すると 4 通り)
Search pattern の最後の (?!<\/a>)  は、既にリンク済みの画像に二重にリンクを張ってしまうのを防止するための安全装置です。

なぜ工業製品を「信仰」するのか

Apple と Samsung のユーザーを皮肉った Windows Phone の CM が話題になっています。

実に面白いですね。MS と言えばもう古くさい会社というイメージですが、なかなかどうして、とんがってます(この CM の広告主は Nokia ですが)。その「古くさい」というのも、実際のところ Apple や Google によってそう思わされている面もありますしね。

なぜ工業製品を「信仰」するのか

昔から不思議でならないことの一つが、「製品信者」たちの存在です。

パソコンなら Mac ユーザーと Windows ユーザーの争い、バイクならホンダとヤマハとカワサキの争い等々。CM の iOS 派と Android 派もそうですね。これらは結局のところ工業製品を「自己を演出するアイテム」と見なしていることから来ています。さらには、製品に対して自己を投影すらしています。

つまり、「iPhone を使っている俺かっこいい!」と思っている人は、iPhone にケチをつけられると「俺」にまでケチをつけられていると感じるのですね。iPhone を例に出して申し訳ないですが。

製品信者はダサい

そういった「製品信者」を戯画化したのが上記の CM です。

Apple は Mac=かっこいい、Windows=ダサいというイメージを大衆に植え付けようと躍起になっており、実際かなり成功しています。一方 MS はダサいイメージに甘んじてきたとも言えますが、ここにきて「そもそも工業製品にそこまで忠誠心を持つこと自体がダサい」という考えが急速に広まってきました。

特に日本では、平成生まれの20代前半の人達がそのような考えを持っているようです。彼らは生まれたときからモノが溢れていて、「あの製品が欲しい」と「渇望」した経験は皆無です。それだけにモノ選びで、メーカーやメディアや広告代理店が作り出す「かっこいいイメージ」などに左右されることもありません。

PC 時代の雄 MS も、スマートフォン・タブレットでは Apple や Google に水をあけられていますが、上に述べた「イメージ戦略」に左右されない若い世代を捉えるには、何を措いても製品の質を上げる必要があります。もちろん、「質」とは単なるスペックではなく、使い勝手全般のことです。あと値段ですね。

まだまだ体力の残っている MS ですから、ここらで一つ花火を打ち上げて欲しいところです。

e-Tax で払ってみた

ここ数年、源泉徴収される給料とは別に、副収入を確定申告しています。去年までは、あの殺人的な混雑を呈している税務署に出向いていました。今年こそは e-Tax にしようと準備を重ねていたのです。

必要なもの

まずは、ICカードリーダライタを購入しました。住基カード対応を謳ったものは概ね5000円程度しますが、この品は1300円ほどでした(現在 Amazon では1800円ほどするようです)。気泡緩衝材(あのプチプチするやつ)に包まれていただけで極めて簡易な包装でしたが、実用上は全く問題ありません。ドライバもUSBに接続するだけで自動的にインストールされます(Windows7の場合)。

住基カードは区役所で500円で作れます。写真付きと写真無しを選べますが、どちらでも構いません。恐らく、写真付きは身分証明書としての利用を想定したものなので、運転免許証などを持っている人には不要と思われます。

忘れてはいけないのは、同時に「電子証明書」を取得することです。手数料は500円です。さらに、住基カード自体の有効期限は10年ですが、電子証明書の有効期限は3年しかありません。住基カード、イコール電子証明書でも良さそうなものですが、そこはそれ、役所のほうにも色々と都合があるのでしょう。

32bit版IEを使うべし

さて、電子証明書付住基カードとICカードリーダが揃ったら、いよいよ申告です。まずは、事前準備セットアップです。このアプリを実行するだけで、ブラウザの設定から必要なソフトのインストールまで全て自動的に行われます。

ただ、ここに落とし穴が一つありました。

先述の事前準備でインストールされる、ブラウザ上からICカードリーダを操作するためのプラグインが32bit専用なのです。64bit版IEを使っている場合、途中までは上手くいくように見えますが、電子証明書の登録の場面でエラーになります

64bit版のWindowsをお使いの方は、間違いなく32bit版IE(Program Files(x86) の中にある方)を起動していることを確認してください。

預貯金口座振替依頼書兼納付書送付依頼書は郵送する

申告書が完成し、送信すると、最後に「申告書等送信表」と各種申告書、収支内訳書等を印刷する画面になります。納付書の送付、または新しく口座振替を希望する場合は、これに「預貯金口座振替依頼書兼納付書送付依頼書」が加わります。

申告書等はボタンを押しただけで送信完了となり、PCの操作だけですべて完結するのですが、「預貯金口座振替依頼書兼納付書送付依頼書」だけは、税務署に郵送または持参しなければいけません。言い換えれば、この点だけはまだ完全には電子化されていないわけです。送信表の「提出区分」でも、預貯金口座振替依頼書兼納付書送付依頼書だけは「郵送等」になっています。勿論、既に口座振替になっている人は提出しなくても大丈夫です。

というわけで、「預貯金口座振替~」を提出しに結局今年も税務署に行きました。郵送でも良かったのですが、どうせ毎日前を通るので、郵便代の節約です(笑)。確定申告は e-Tax で既に済ませており、あとは振替依頼書を出すだけだと告げると、すぐに窓口に案内されて、ものの数分で終わりました。
非常に親切な対応が印象的でした。思えば、税務署だっていちいち納税者とケンカしたりしたくないですからね。できるものならば気持ち良く払って欲しい、ということなんでしょう。

続・WebGLは普及するか

Google が WebGL を使ったゲームを公開したそうです。

実は、私も WebGL を使ったゲームを作ったことがあります。しかも、Google より前に!(笑)

cube1.png

さらに、webglgame.jp というドメインまで取得済みです。

WebGL は、ブラウザで GPU の機能を利用できる点で画期的な技術ですが、Microsoft が自社の DirectX を推進する目的からかサポートしないことを明言(要は IE でサポートしないということ)しているために、いまいち普及していません。

しかし、流れは変わりつつあります。幸いなことに、IE のシェアは低下中で、Firefox や Google Chrome など、WebGL をサポートするブラウザが増えています。

また、最近発売された intel の 新CPU、Ivy Bridge に、かなり強力なグラフィック機能が統合されていることからも分かるとおり、今後は全ての PC で 3D がバリバリ動いて当たり前になると思われます。
それどころか、遠くない将来にはスマホやタブレットでも WebGL が利用可能になることが期待できます。

現状、ブラウザで 3D をサポートする技術としては adobe の Flash がありますが、WebGL と Flash、果たしてどちらが勝つのでしょうね。

自分としては、よりオープンな WebGL に肩入れしたいところです。

Google Chart Tools で地図を描く

文句を言う割には Google に依存してしまっている今日この頃です。

表の中の項目をクリックすると、地図の上でも対応する場所が選択されます。
タイトルにもあるとおり、Map Tools ではなく、Chart Tools を使っています。従って、Map Tools の機能のうち幾つかは使えません。あくまでグラフの一種類という扱いですが、表形式のデータと連係させたいときには便利です。

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:['map','table']});
google.setOnLoadCallback(drawMap);
function drawMap() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'Lat');
data.addColumn('number', 'Lon');
data.addColumn('string', 'Food' );
data.addRows(3);
data.setCell(0,0,34.3965603);
data.setCell(0,1,132.4596225);
data.setCell(0,2,'お好み焼き');
data.setCell(1,0,34.3401491);
data.setCell(1,1,134.0434436);
data.setCell(1,2,'うどん');
data.setCell(2,0,33.6065756);
data.setCell(2,1,130.418297);
data.setCell(2,2,'とんこつ');
var map = new google.visualization.Map(document.getElementById('map_div'));
map.draw(data, { showTip: true, mapType:'normal' });
var table = new google.visualization.Table(document.getElementById('table_div'));
table.draw(data, {showRowNumber: true, allowHtml: true });
google.visualization.events.addListener(table, 'select', function() { map.setSelection(table.getSelection()); });
google.visualization.events.addListener(map, 'select', function() { table.setSelection(map.getSelection()); });
}
</script>
<div id="map_div" style="width: 280px; height: 240px"></div>
<div id="table_div" style="width: 280px;"></div>

緯度と経度は必要ない(殆どの場合そうでしょうが)という場合、

data.setCell(0,0,'香川');
data.setCell(0,1,'うどん');

のように、直接地名を指定することも出来ます。……が、今のところかなり遅く、特に項目が10個以上になると数秒から数十秒かかります。というわけで、緯度、経度を指定する方が無難でしょう。

Google Notebook が終了してしまう

いつのまにか Google なしでは一日も回らない世の中になってしまいました。前にもこのブログで Google 批判(というほどでもないけど)を展開しましたが、クラウドが一般的になるに及んで、ますますその弊害が顕著になりつつあります。

その一例が Google Notebook のサービス終了です。
実は私も使っていたのですが、Googleドキュメントにエクスポートすることはできるものの、単なる文字列として扱われるので、ノートアプリとしての利便性は失われてしまいます。一定の移行期間が設けられていますが、終了自体は決定事項らしく、いちユーザーには為す術がありません。恐らく、この分野で Evernote と競争しても勝ち目がないという判断なのでしょう。

このように Google も営利企業である以上、儲からないと分かると、割とあっさりとハシゴを外してくるので注意が必要です。

続・正規分布のグラフの一番簡単な描き方

以前、正規分布のグラフの一番簡単な描き方として、PowerToy Calc を使った方法をご紹介しましたが、先日Googleが始めた新しいサービスによって「一番」の座が奪われてしまったようです。

やりかたは、数式でぐぐるだけです。

正規分布のグラフ

恐るべし、Google.

Canvas3D によるルービックキューブ、そして日本の教育について

Canvas3D によるルービックキューブのその2です。
前回は話を簡単にするために、「クリックされた面さえ分かれば回転させるのは容易」と書きましたが、実際は少し問題がありました。
と、言うのも、ドラッグされた方向(2次元)と、3次元の各軸とのなす角を知る必要があるからです。

cube2.png図をご覧下さい。細い矢印がX軸、太い矢印がドラッグ方向です。キューブの中心に原点があります。X軸は(3次元の)単位ベクトルで表すと(1,0,0)です。これを2次元に投射すると、カメラの位置によって様々な値を取り得るのですが、今回はその計算は省略して、とりあえず、図のように下向き45°で表示されているとしましょう。この場合、1/sqrt(2) = 0.707 ですから、X軸のベクトルは2次元で表すと(0.707, -0.707)です。
ドラッグ方向のベクトルは、開始点を (x1, y1)、終了点を(x2, y2)とすると、( x2 – x1, y2 – y1 )ですね。ここでは仮に(5,5)としておきましょう。

さて、この二つのベクトルのなす角を知るには「内積」を求めるのが一般的です。まずは、ドラッグ方向を単位ベクトルにしておきましょう。

a = sqrt( 5*5 + 5*5 )
= 7.07

xn = x / a
= 0.707
yn = y / a
= 0.707

ですから、(0.707, 0.707)ですね。

ベクトル A( xa, ya ) と B( xb, yb )のなす角は、

acos(〈A,B〉/ ||A||・||B||)

で求められます。acos はアークコサイン、逆余弦です。〈A,B〉が内積。
||A|| と ||B|| は、A と B のノルム、即ちベクトルの大きさであり、この場合はあらかじめ単位ベクトルに直しておきましたから必要ありません。

〈A,B〉 = xa * xb + ya * yb
= 0.707 * 0.707 + 0.707 * (-0.707)
= 0

この内積は二つのベクトルが平行なときに1、直交するときに0になりますので、この場合、ドラッグ方向はX軸に対して垂直、即ちX軸を中心に回転させようとしている、とめでたく判定できたわけです。
仮に内積が1に近い値ならば、X軸に対して水平、即ちZ軸を中心に回転させようとしているとわかります。

日本の教育

前回、この部分の説明を軽く流したのは、「内積」なんて高校で習うんだし、いちいち説明しなくても良いだろう、と思ったからです。
でも、よく考えてみると、こんなの忘れてますよね。実際私もこの間まで忘れてました。

なぜ忘れるのかというと、二つのベクトルのなす角を知ったからといって嬉しくも何ともないからです。「ふーん」としか思わない。

ですが、自分で3Dゲームを作ろうとすれば、嫌でも覚えざるを得ないし、たぶん、一生忘れません。

ですから、高校生にも、プログラミングさせたら良いのです。「数学なんて、何の役に立つの?」という子供の素朴な疑問に対する答えは、現代に於いて、「プログラミングに必要」というのが最も説得力があります。

日本の教育は詰め込み型だと批判されています。それに対して、詰め込みのどこが悪い? という再批判もあります。いずれにしろ最低限のことは詰め込まなければならないでしょう。かけ算九九を無理やり覚えさせるのはかわいそうなどといった議論は取り上げるまでもありません。
しかし、教育というものはある程度まで進むと、本人の自主性がなければ効果が上がらなくなります。殆どの人がベクトルの内積を忘れてしまうのも、何の役に立つか分からないからです。

資源の乏しい我が国に於いては、ITは今後最も有望な産業です。我が国を支える人材を育成するためにも、教育にプログラミングを取り入れるのは重要です。
ただ、先生方は苦労するかもしれません。歳を取ってからプログラミングをマスターするのは容易ではないからです。しかし、やって出来ないということはないはずです。聖職に身を捧げたならば、そのくらいの努力はして貰わなければなりません。

Canvas 3D によるルービックキューブ

Canvas 3D というライブラリがあります。JavaScript からグラフィックボードの機能を使えてしまうという恐ろしい代物です。これは面白い! ということで、早速使ってみました。

まだ、デザイン等が未完成ですが、一応プレイできます。ただ、残念ながら IE や Opera には未対応です。今のところ、Google ChromeFirefox でしか表示できません。

2015年5月16日追記: 現在ではIE 11 でもプレイできます。

cube1.png

※ 「ルービックキューブ」は株式会社メガハウスの登録商標です。

今回、幾つか気がついたことを備忘も兼ねて書き記します。

まず、Canvas 3Dでは Collada 形式の3Dモデルを標準としています。例えば、Shade では、10.5 から Collada 形式の出力に対応しましたが、残念ながら私が使っているのは 8.5 で、度重なるアップグレードの奨めもずっとスルーしてきたので、もはやアップグレードパス(2世代前までに限定)がない状態です。
そこで、Metasequoia を使ってモデリング(と言っても、単なる立方体)し、Vixar Motion で読み込んでから、最後に Collada で出力しました。
迂遠且つ若干の制限事項(リンクされた図形が表示されないなど)もありますが、まず Shade で obj 形式で出力し、それをメタセコで読み込み mqo で出力、そして Vixar Motion で Collada へ、というやり方も可能です。
尚、Canvas 3D では、バージョン2.2から立方体などのプリミティブ図形を内部で生成できるようになっています。従って、Collada の必要はなかったとも言えますが、テクスチャ貼りの自由度などの点で、やはり外部ツールでモデリングしてインポートする方が便利です。

クリックされた面の判定

20111001130822.pngこのようなゲーム的なプログラムでは、インタラクティブ性が肝要です。問題はクリックされた面をどうやって判定するかです。
実はC++によるルービックキューブの制作記事を公開されている方がいらっしゃって、大いに参考にさせていただいたのですが、この方の場合、全て自前で描画しているために、非常に高い技術が必要となるかわりに、クリックされた面を知るのは比較的簡単なようなのですね。一方、私の場合、表示はライブラリ任せなので、クリックされた場所がどの面にあたるのかを知る一般的な方法がありません。
仕方がないので、図のようにオブジェクトを(実際には非表示で)配置して、「このオブジェクトがクリックされたらこの面」という具合に判定することにしました。「え? クリックされたか知る方法はないんじゃなかったの?」と思われるかもしれませんが、違うのです。方法がないのはクリックされた「面」を知ることであって、どのオブジェクトがクリックされたかを知る API はちゃんとあります。面が分からなければ、ユーザーがどの軸に対してどの向きに回転させようとしているのか分からないので、この点は重要です。
(実はCanvas 3Dでは、最近の仕様変更で非表示のオブジェクトをクリック判定しないようになり、上記の判定法は不可能になりました。各小立方体をさらに面に小分けするなど、対応法は幾つか考えられますが、今回はライブラリのコードをハックして無理やり判定するようにしてしまいました。あまり良い方法ではありません)

6面完成しているかの判定

さて、面の問題が解決すれば、ドラッグによる回転は容易に実装できます。最後に残された問題は、6面完成しているかどうかの判定です。
「各小立方体が最初の位置に戻っていれば6面完成」ではありません。実は完成形には24のパターンがあり、その全てについて判定する必要があります。
サイコロで考えると分かりやすいです。今、1が上を向いています。つまり1の目が出ています。この状態で、4つの側面のどれが正面を向くかで4つのパターンがあることが分かると思います。全ての面について同じことが言えますので、6 * 4 = 24 パターンというわけです。
まあ、理屈は簡単なのですが、実際の判定には全てのパターンの回転行列を求める必要があります。手計算ではとてもやってられないので、Ruby の行列演算を使いました。例えば、次のような感じです。

require 'matrix'
y = -Math::PI/2
z = Math::PI
cos_y = Math.cos(y)
sin_y = Math.sin(y)
cos_z = Math.cos(z)
sin_z = Math.sin(z)
m1 = Matrix[[cos_y,0,sin_y,0],[0,1,0,0],[-sin_y,0,cos_y,0],[0,0,0,1]]
m2 = Matrix[[cos_z,-sin_z,0,0],[sin_z,cos_z,0,0],[0,0,1,0],[0,0,0,1]]
p m2 * m1

Y軸を中心に-90度、Z軸を中心に180度回転させる場合の回転行列を求めています。cos(-90)は 0、sin(-90) は-1、cos(180)は-1、sin(180)は0、と言う風に、0 や 1 が並びますから、そんなに難しい計算ではありませんが、手計算で24パターンもやるのは上述の通りかなり大変です。

こうやって求めた回転行列を使った、六面完成チェック関数が以下です。

function check(){
	var ok;
	var pos;
	var mat = [];
	mat[0] =   [1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,1];
	mat[1] =   [1 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[2] =   [1 ,0 ,0 ,0 ,0,-1 ,0 ,0 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,1];
	mat[3] =   [1 ,0 ,0 ,0 ,0 ,0,-1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[4] =   [0,-1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,1];
	mat[5] =   [0,-1 ,0 ,0 ,0 ,0,-1 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[6] =   [0 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,1];
	mat[7] =   [0 ,0 ,1 ,0 ,1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[8] =   [0 ,1 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,1];
	mat[9] =   [0 ,0 ,1 ,0,-1 ,0 ,0 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[10] =  [0,-1 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,1];
	mat[11] =  [0 ,0,-1 ,0,-1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[12] = [-1 ,0 ,0 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,1];
	mat[13] = [-1 ,0 ,0 ,0 ,0 ,0,-1 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[14] = [-1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,1];
	mat[15] = [-1 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[16] =  [0 ,0,-1 ,0 ,0 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[17] =  [0 ,1 ,0 ,0 ,0 ,0 ,1 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[18] =  [0 ,0,-1 ,0 ,1 ,0 ,0 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[19] =  [0 ,0 ,1 ,0 ,0,-1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[20] =  [0 ,0 ,1 ,0 ,0 ,1 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[21] =  [0,-1 ,0 ,0 ,0 ,0 ,1 ,0,-1 ,0 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[22] =  [0 ,0,-1 ,0 ,0,-1 ,0 ,0,-1 ,0 ,0 ,0 ,0 ,0 ,0 ,1];
	mat[23] =  [0 ,1 ,0 ,0 ,0 ,0,-1 ,0,-1 ,0 ,0 ,0 ,0 ,0 ,0 ,1];
	
	for( var m=0; m<24; m++ ){
		ok = true;
		loop:for( var i=0; i<3; i++ ){
			for( var j=0; j<3; j++ ){
				for( var k=0; k<3; k++ ){
					pos = c3dl.multiplyMatrixByVector( mat[m], things[i][j][k].getPosition() );
					
					if( pos[0] != (i-1)*20 || pos[1] != (j-1)*20 || pos[2] != (k-1)*20 ){
						ok = false;
						break loop;
					}
				}
			}
		}
		if( ok ){
			break;
		}
	}
	return ok;
}

0 と 1 がこれでもかと並んでますね(笑)
ちなみに、mat[0]はなにも回転しない場合で、本来必要ありませんが、美観のために入れてあります(笑)
ご覧のように Canvas 3D にも行列演算を行ってくれるユーティリティー(c3dl.multiplyMatrixByVector())があります。こちらは、Rubyと少し使い方が違って、要素数16の配列を渡すと、4行4列の行列として扱ってくれます。

WebGLは普及するか

Canvas 3Dは WebGLという技術を使用しており、この WebGL は、ネイティブアプリには劣るものの、グラフィックボードの機能を利用した、かなり本格的な3D表現が可能です。
今回使ってみた感触では、少なくともメタセコで作ったモデルを表示するまでは非常に簡単でした。「これならいくらでもゲーム作れるじゃん!」と、思わずドメインまで取ってしまいました( webglgame.jp )。
ところが、Microsoft は、自社の DirectX を推進する目的もあってか WebGL に反対していて、現在はもちろん、将来にわたって IE でのサポートは絶望的なようです。
折角の有望な技術が、最大シェアのブラウザでサポートされないばかりに廃れてしまうとしたら惜しいことです。幸い(?)、Google Chrome などのより先進的なブラウザに乗り換える人が増えていますので、この流れが加速することを祈るばかりです。
Opera や Safari でも、もうじき対応するとのことです。

関連記事:Canvas3D によるルービックキューブ、そして日本の教育について

業者ブログの画像バックアップ

業者ブログは手軽な反面、バックアップや移転がしづらいのが難点です。
ここSeesaaでも(移転前はSeesaaに置いていました)、テキストはMT形式で書き出すことが出来ますが、画像等を含めた一般的なバックアップの手段は提供されていません。

仕方がないので、

bckup_1.png

まず、上のようにログから画像等のURLを抽出し、

bckup_2.png

Irvineでダウンロードしました。
Irvineは久しぶりに使いましたが、JWordのツールバーかなにかをインストールしようとするので要注意です(-_-)