Deskmanというプログラムを公開し始めたけど、CのランタイムをDLLのままにしてしまった。今はStaticになっているのでどのPCでも動くはず。まだVistaでのテストができていないので、近々やる予定。まだまだBetaなので、お許しください。
ちょっとずついいソフトにしていきた。
My Daily Programming Life...
人生最大の矛盾
まだ生まれてから30年たっていないけれど、そのなかでもっとも長く解決できなかった、納得できなかった問題がある。それはコンピュータのコンパイラ、またはOSのこと。問題は、コンパイラやOSがどうやって作られているかということだった。
僕が初めてプログラミングをしたのは中学生の時。それっぽいのを書いたのはDOSのバッチファイルが最初。だけど、すぐに情報不足に陥ったし、なんだかできることが少なくてつまらなかった。僕のなかでやりたかったのは、MS-DOSを作ること。コンピュータを初めてさわったときから、ずっとそのことを考えていた。
だけど、当然当時はネットなく、本も田舎じゃほとんどないしお金もないから買えない。ASCIIなどの雑誌を読んでも結局表面的なことしか書いていないし、わからずじまい。
その後、Visual Basicを買った。これは本格的なプログラミングをしてみたいという一心で買った物。当時の買い物としてはかなり高かった。中学生が2万6千円もするソフトを買わなくちゃ行けない。それでプログラム書いた。それまでにできなかったようなことがたくさんできたしかなり楽しかった。そのころはWindows 3.1。Windows 95が出る直前で、95はハードディスクの容量が円グラフで表示された最初のWindowsだった。当時そのスクリーンショットを見てそれをWindows 3.1でやりたいと思って、Visual Basicでがんばった。でもVisual Basicにはディスク容量を取得する関数はなく、Windows APIを直接呼ぶ必要があった・・・というのは今だから説明できること。当時はなんとしてもそれがやりたくて、ひたすらにいろんなことをしらべて、APIを呼び出す方法みたいなのをたまたま見つけて、それでやったらうまくいった。理由や仕組みなんて全然わからなかったけど、うれしかった。でも残念ながら円グラフにすることはできず・・・当時はまだπやらθとかラジアンとかの意味を知らなかったから。しかたなく棒グラフにした。今考えると我ながらよくやったもんだなぁと思う。
ちょっと話は脱線したけど、問題はVisual BasicでもMS-DOSが作れないことだった。その気配すら感じられない。つまりWindows上で動くウィンドウは作れるけど、スイッチ入れたら動き出すようなプログラムは作れない。そりゃそうだ・・・っていうのは後になってわかったこと。当時はどうなってるんだかさっぱりだった。
その後、Cという言語が重要なことを知った。うーん、もしかしてCならOS作れるのかなぁなんて当時は思った。んで勉強した。でもやっぱりOSは作れそうになかった。だって、CのコンパイラはOSの上で動いている。どうしたって無理だ。これが最大の矛盾だった。というのもMS-DOSやWindowsはCで書かれているなんていう情報を見たことがあったからだ。
Cで書かれているなら、それをコンパイルしなきゃ行けない。でもコンパイルするにはOSとコンパイラが必要なんじゃないの?・・・ってことになる。これが中学生の時から頭の中にあった矛盾。
中学から高校ぐらいのころの僕はずっとこれが頭に引っかかったままソフトウェアを作ってた。つまりコンピュータそのものはきちんと理解せず、Windowsプラットフォームという抽象マシンの上でだけプログラムを作ることができた。
それから、かれこれ13年ぐらいたつ。意味がはっきりわかったのは3,4年前だった。「
はじめて読む486」これをきちんと読んだときだった。そういうことなのかって。もちろんそれまでWindows APIや、Cでプログラムを書いてきていたのでだいたいの感じはわかっていた。でもその瞬間というか、それがわかったときは本当に長年もやもやしていた物が取れて、世界が開けた感じがした。きっと情報系の学科に行っていたりすればとっくにわかっていたことなのかもしれない。でもまあいい。
いまでも正直直感的には、コンパイラの話というのは不思議な感覚がある。つまりコンパイラもCとかで作られていて、それをコンパイルするにはコンパイラが必要であると言うこと。これは基本的には、はじめは小さなコンパイラを機械語で作って、それを利用してより強力なコンパイラを作って・・・と繰り返すことで巨大なコンパイラができあがってきたということなんだと今は理解している。
この、自分が自分より大きな物を生み出す感覚、なんとなくエネルギー保存則を破っているような感覚が直感的に違和感がある。これがコンピュータのすごいところなのかもしれない。
僕が初めてプログラミングをしたのは中学生の時。それっぽいのを書いたのはDOSのバッチファイルが最初。だけど、すぐに情報不足に陥ったし、なんだかできることが少なくてつまらなかった。僕のなかでやりたかったのは、MS-DOSを作ること。コンピュータを初めてさわったときから、ずっとそのことを考えていた。
だけど、当然当時はネットなく、本も田舎じゃほとんどないしお金もないから買えない。ASCIIなどの雑誌を読んでも結局表面的なことしか書いていないし、わからずじまい。
その後、Visual Basicを買った。これは本格的なプログラミングをしてみたいという一心で買った物。当時の買い物としてはかなり高かった。中学生が2万6千円もするソフトを買わなくちゃ行けない。それでプログラム書いた。それまでにできなかったようなことがたくさんできたしかなり楽しかった。そのころはWindows 3.1。Windows 95が出る直前で、95はハードディスクの容量が円グラフで表示された最初のWindowsだった。当時そのスクリーンショットを見てそれをWindows 3.1でやりたいと思って、Visual Basicでがんばった。でもVisual Basicにはディスク容量を取得する関数はなく、Windows APIを直接呼ぶ必要があった・・・というのは今だから説明できること。当時はなんとしてもそれがやりたくて、ひたすらにいろんなことをしらべて、APIを呼び出す方法みたいなのをたまたま見つけて、それでやったらうまくいった。理由や仕組みなんて全然わからなかったけど、うれしかった。でも残念ながら円グラフにすることはできず・・・当時はまだπやらθとかラジアンとかの意味を知らなかったから。しかたなく棒グラフにした。今考えると我ながらよくやったもんだなぁと思う。
ちょっと話は脱線したけど、問題はVisual BasicでもMS-DOSが作れないことだった。その気配すら感じられない。つまりWindows上で動くウィンドウは作れるけど、スイッチ入れたら動き出すようなプログラムは作れない。そりゃそうだ・・・っていうのは後になってわかったこと。当時はどうなってるんだかさっぱりだった。
その後、Cという言語が重要なことを知った。うーん、もしかしてCならOS作れるのかなぁなんて当時は思った。んで勉強した。でもやっぱりOSは作れそうになかった。だって、CのコンパイラはOSの上で動いている。どうしたって無理だ。これが最大の矛盾だった。というのもMS-DOSやWindowsはCで書かれているなんていう情報を見たことがあったからだ。
Cで書かれているなら、それをコンパイルしなきゃ行けない。でもコンパイルするにはOSとコンパイラが必要なんじゃないの?・・・ってことになる。これが中学生の時から頭の中にあった矛盾。
中学から高校ぐらいのころの僕はずっとこれが頭に引っかかったままソフトウェアを作ってた。つまりコンピュータそのものはきちんと理解せず、Windowsプラットフォームという抽象マシンの上でだけプログラムを作ることができた。
それから、かれこれ13年ぐらいたつ。意味がはっきりわかったのは3,4年前だった。「
はじめて読む486」これをきちんと読んだときだった。そういうことなのかって。もちろんそれまでWindows APIや、Cでプログラムを書いてきていたのでだいたいの感じはわかっていた。でもその瞬間というか、それがわかったときは本当に長年もやもやしていた物が取れて、世界が開けた感じがした。きっと情報系の学科に行っていたりすればとっくにわかっていたことなのかもしれない。でもまあいい。
いまでも正直直感的には、コンパイラの話というのは不思議な感覚がある。つまりコンパイラもCとかで作られていて、それをコンパイルするにはコンパイラが必要であると言うこと。これは基本的には、はじめは小さなコンパイラを機械語で作って、それを利用してより強力なコンパイラを作って・・・と繰り返すことで巨大なコンパイラができあがってきたということなんだと今は理解している。
この、自分が自分より大きな物を生み出す感覚、なんとなくエネルギー保存則を破っているような感覚が直感的に違和感がある。これがコンピュータのすごいところなのかもしれない。
Windowsキーを無効にする
今作っているソフトで、一時的にWindowsキーを無効にしたいときがあった。
普通だとスタートメニューが表示されたり、ショートカットがいくつか使えたりするけど、
Windowsキーを利用するアプリを作っていて、自分のウィンドウにフォーカスがあるときだけはWindowsキーを無効にしたかった。
とりあえずその方法
まずは単純に無効にする方法。キーボードフックを利用すればよいらしい。
以下のURLを見れば全体が書いてある。
http://www.programmersheaven.com/mb/windows/344596/344596/how-to-disable-the-start-menu-button/
で、そこから、自分のウィンドウにフォーカスがあるときだけという条件を付けるカスタマイズ
フック関数を以下のようにする
これで自分がフォアグラウンドにいるときはWindowsキーが無効になる。
ただし、自分自身のウィンドウもWindowsキーのイベントを取得できなくなるので注意。
自分も必要な場合は・・・これからどうするか考えます。
普通だとスタートメニューが表示されたり、ショートカットがいくつか使えたりするけど、
Windowsキーを利用するアプリを作っていて、自分のウィンドウにフォーカスがあるときだけはWindowsキーを無効にしたかった。
とりあえずその方法
まずは単純に無効にする方法。キーボードフックを利用すればよいらしい。
hHook = SetWindowsHookEx( WH_KEYBOARD_LL , WinKeyHook , hInst , 0 );
以下のURLを見れば全体が書いてある。
http://www.programmersheaven.com/mb/windows/344596/344596/how-to-disable-the-start-menu-button/
で、そこから、自分のウィンドウにフォーカスがあるときだけという条件を付けるカスタマイズ
フック関数を以下のようにする
LRESULT CALLBACK WinKeyHook(int code, WPARAM wparam, LPARAM lparam)
{
PKBDLLHOOKSTRUCT key = (PKBDLLHOOKSTRUCT)lparam;
DWORD pid=0;
switch(wparam)
{
case WM_KEYDOWN:
case WiM_KEYUP:
case WM_SYSKEYDOWN:
case WM_SYSKEYUP:
if(key->vkCode==VK_LWIN || key->vkCode==VK_RWIN){
GetWindowThreadProcessId( GetForegroundWindow() , &pid );
if( GetCurrentProcessId() == pid ){
return 1;
}
}
}
return CallNextHookEx(NULL, code, wparam, lparam);
}
これで自分がフォアグラウンドにいるときはWindowsキーが無効になる。
ただし、自分自身のウィンドウもWindowsキーのイベントを取得できなくなるので注意。
自分も必要な場合は・・・これからどうするか考えます。
一般ユーザー向けソフト
今日こんな記事を見た
http://japan.zdnet.com/news/sec/story/0,2000056194,20396473,00.htm?ref=rss
アンチウィルスソフトがファイルを誤判定し、問題になったらしい。僕が興味があるのはこの部分。
「『CA Internet Security Suite』のユーザーは、GUIを使って、影響を受けたファイルを隔離状態から復元することができる。『CA Threat Manager』を利用している場合は、ローカルのハードドライブ上で拡張子が『.AVB』のファイルを検索した後、手動で元のファイル名に付加された文字を削除することによって、元のファイル拡張子に戻して欲しい」
この前も似たようなことを書いたけど、こういうのがどうしても納得がいかないというか、どうしたらこれをなくせるんだという思いになる。僕も開発者なのでこうなってしまうのは仕方がないと正直思うのだけれど、これって普通の人ができることじゃないと思う。そういう人はPCなんて使うなってことか。でもこの製品は、そういう人も対象として売っているんじゃないだろうか。「フォルダとファイルのツリー構造が分かっていない人は購入しないでください。また拡張子の手動での変更方法がわからない人、ここまで読んでなんのことだかさっぱりな方は購入しないでください。」とでも書いておかなくてはいけない。
テレビに欠陥があったので、基盤を取り出して、はんだごてで、ここを接続してくださいって書いているようなものだと思う。
うちの母親じゃ無理だ。
こういう状況をなんとかするためにはどうしたらいいんだろうか。
なるべくそういうものを覆い隠そうとして、いろんなソフトウェアががんばっているのはわかるんだけど、あまりうまくいっていないように思う。なんというか、統一感のないUIだったり、言葉だったり、いろんなものがあって、結局使う人は内部がどうなっているかをイメージしないと、使えない。
たまに家族にPCの使い方を教えるときがあるけど、結局僕たちの頭の中にあることは伝わらない。たとえば、「リンク」。僕たちはリンクが大好き。実体は一つで、それへの参照をいろんなところに置いておけば、あたかもそこにあるかのように使える。
でもこんなこと現実的にはあまりない。そこにあるものはそこにあるものであり、あっちにあるものは必ず別のもの。同じような見た目でも違うもの。
しかも、リンクは同じものなのに、名前が違ったりする。あっちではマイドキュメント、こっちではC:\Documents and Settings\My Documents
これが同じだとは普通思えないだろう。仕組みを知っているから当然だと思える。
ツリー構造とか、配列とか、僕たちがこんな便利なものはないと思っているものが、一番彼らには理解できない。そこが難しいところだ。PCはまだまだ高度な道具なんだと思う。
でも、その意味ではWindowsはすごいのかもしれない。うちの母親がPCを使うまでにしてしまったのだから。開発者でさえ、OSとかCPUとかメモリとかその辺のことをしっかり理解している人は少ない。Windowsの上ならAPIで順番に書いていけばものが作れるから。その辺はすごい。
そして、今もそれを加速させようとしているんだと思う。
http://japan.zdnet.com/news/sec/story/0,2000056194,20396473,00.htm?ref=rss
アンチウィルスソフトがファイルを誤判定し、問題になったらしい。僕が興味があるのはこの部分。
「『CA Internet Security Suite』のユーザーは、GUIを使って、影響を受けたファイルを隔離状態から復元することができる。『CA Threat Manager』を利用している場合は、ローカルのハードドライブ上で拡張子が『.AVB』のファイルを検索した後、手動で元のファイル名に付加された文字を削除することによって、元のファイル拡張子に戻して欲しい」
この前も似たようなことを書いたけど、こういうのがどうしても納得がいかないというか、どうしたらこれをなくせるんだという思いになる。僕も開発者なのでこうなってしまうのは仕方がないと正直思うのだけれど、これって普通の人ができることじゃないと思う。そういう人はPCなんて使うなってことか。でもこの製品は、そういう人も対象として売っているんじゃないだろうか。「フォルダとファイルのツリー構造が分かっていない人は購入しないでください。また拡張子の手動での変更方法がわからない人、ここまで読んでなんのことだかさっぱりな方は購入しないでください。」とでも書いておかなくてはいけない。
テレビに欠陥があったので、基盤を取り出して、はんだごてで、ここを接続してくださいって書いているようなものだと思う。
うちの母親じゃ無理だ。
こういう状況をなんとかするためにはどうしたらいいんだろうか。
なるべくそういうものを覆い隠そうとして、いろんなソフトウェアががんばっているのはわかるんだけど、あまりうまくいっていないように思う。なんというか、統一感のないUIだったり、言葉だったり、いろんなものがあって、結局使う人は内部がどうなっているかをイメージしないと、使えない。
たまに家族にPCの使い方を教えるときがあるけど、結局僕たちの頭の中にあることは伝わらない。たとえば、「リンク」。僕たちはリンクが大好き。実体は一つで、それへの参照をいろんなところに置いておけば、あたかもそこにあるかのように使える。
でもこんなこと現実的にはあまりない。そこにあるものはそこにあるものであり、あっちにあるものは必ず別のもの。同じような見た目でも違うもの。
しかも、リンクは同じものなのに、名前が違ったりする。あっちではマイドキュメント、こっちではC:\Documents and Settings\My Documents
これが同じだとは普通思えないだろう。仕組みを知っているから当然だと思える。
ツリー構造とか、配列とか、僕たちがこんな便利なものはないと思っているものが、一番彼らには理解できない。そこが難しいところだ。PCはまだまだ高度な道具なんだと思う。
でも、その意味ではWindowsはすごいのかもしれない。うちの母親がPCを使うまでにしてしまったのだから。開発者でさえ、OSとかCPUとかメモリとかその辺のことをしっかり理解している人は少ない。Windowsの上ならAPIで順番に書いていけばものが作れるから。その辺はすごい。
そして、今もそれを加速させようとしているんだと思う。
Windows Internals
Windows Internals 5th Editionが届きました。まだ4版との違いをすべて見てはいないけど、メモリ関連の部分も一部追加されていたり、セキュリティではUACについてくわしくかかれていたりしているみたい。
少しずつ読み進めなくては。もうすぐWindows7も出ることだし、いろいろ勉強しなきゃ行けないことが多い。
少しずつ読み進めなくては。もうすぐWindows7も出ることだし、いろいろ勉強しなきゃ行けないことが多い。
"ソフト"の矛盾
ソフトウェアの「ソフト」は、柔軟であることを意味する。簡単に変更できるし、取り換えられる。一般にソフトウェア開発ではその柔軟性を失わせずに、いかに構築していくか、つまり要求が増えたときにいかに簡単に対処できるようにしておくかが問われる。
この柔軟性はとってもうれしいことで、プラグインを入れたりすることでソフトはどんどん個人的なカスタマイズに応じてくれて、自分好みに変形させることができる。
ただ、これは開発者から見た場合だけに当てはまるものだと思う。ほとんどのユーザーはカスタマイズしたくないのだと思う。要求はある、でもカスタマイズはしたくない。それは手間がかかるしそんな知識はそもそもないからだ。
開発者はどうしても自分視点でソフトウェアを作ってしまう。たとえばある機能をF1キーで実現したとして、次にそのソフトウェアが目指すところは、その機能をほかのキーにも割り当てられるように、つまりカスタマイズできるようにすることだったりする。これは明らかに開発者視点である改善であると思う。たしかにほかのキーに割り当てられるようになれば自分の好きなキーに割り当てられて便利だ。でも、そんなことできることをしらないユーザーが使うのであればほとんど意味がなくなる。そういうユーザーはその機能がF1で実現されると知ったら、それで満足なんだと思う。
僕は一般ユーザーに使ってもらうソフトウェアは、いかにハードにするかが重要だと思っている。できることをひたすらに狭くする。でも必要なことはできなくてはいけない。
なにかを開発しているときに、いろんな選択肢にぶつかる。これをユーザーに表示すべきかそうでないか、などだ。そのときに、解決案として「設定できるようにしておこう」がよく持ち上がる。そして解決したことになる。
本当にそれでいいのだろうか。一般的な物理的な製品ではどうだろうか。テレビとか洗濯機とか。ここにボタンを付けるべきか、そんな壁にぶち当たるとハードな製品はおそらくそれを使う人と使わない人どちらが多いかを調べるのではないだろうか。
ソフトウェア開発にこの過程が少し欠けているのではないかと思うことがある。物理的な製品開発ではそれは少なくとも設定不可能であるため、あらかじめユーザーに対する調査がはるかに大きな規模で行われているんではないだろうか。
設定可能だから、たぶんこういうユーザーの方が多いから、または実装が簡単だから、デフォルトはこっちにしておこう。一般ユーザーに対する製品開発としてはこれではだめなんじゃないだろうか
この柔軟性はとってもうれしいことで、プラグインを入れたりすることでソフトはどんどん個人的なカスタマイズに応じてくれて、自分好みに変形させることができる。
ただ、これは開発者から見た場合だけに当てはまるものだと思う。ほとんどのユーザーはカスタマイズしたくないのだと思う。要求はある、でもカスタマイズはしたくない。それは手間がかかるしそんな知識はそもそもないからだ。
開発者はどうしても自分視点でソフトウェアを作ってしまう。たとえばある機能をF1キーで実現したとして、次にそのソフトウェアが目指すところは、その機能をほかのキーにも割り当てられるように、つまりカスタマイズできるようにすることだったりする。これは明らかに開発者視点である改善であると思う。たしかにほかのキーに割り当てられるようになれば自分の好きなキーに割り当てられて便利だ。でも、そんなことできることをしらないユーザーが使うのであればほとんど意味がなくなる。そういうユーザーはその機能がF1で実現されると知ったら、それで満足なんだと思う。
僕は一般ユーザーに使ってもらうソフトウェアは、いかにハードにするかが重要だと思っている。できることをひたすらに狭くする。でも必要なことはできなくてはいけない。
なにかを開発しているときに、いろんな選択肢にぶつかる。これをユーザーに表示すべきかそうでないか、などだ。そのときに、解決案として「設定できるようにしておこう」がよく持ち上がる。そして解決したことになる。
本当にそれでいいのだろうか。一般的な物理的な製品ではどうだろうか。テレビとか洗濯機とか。ここにボタンを付けるべきか、そんな壁にぶち当たるとハードな製品はおそらくそれを使う人と使わない人どちらが多いかを調べるのではないだろうか。
ソフトウェア開発にこの過程が少し欠けているのではないかと思うことがある。物理的な製品開発ではそれは少なくとも設定不可能であるため、あらかじめユーザーに対する調査がはるかに大きな規模で行われているんではないだろうか。
設定可能だから、たぶんこういうユーザーの方が多いから、または実装が簡単だから、デフォルトはこっちにしておこう。一般ユーザーに対する製品開発としてはこれではだめなんじゃないだろうか
Picasaでアルバム
Webページを更新しようと思って、いろいろ作業しているうちに、アルバム管理をなんとかしたくてGoogle Picasaを使ってみることにした。なかなかすごい。
かなり簡単に写真管理ができるし、軽快に動く。使いやすい。で、PicasaにはHTMLエクスポート機能があって、選択したフォルダや、写真をHTMLアルバムにしてくれる。既定では何種類かのアルバムテンプレートHTMLがあって、それらの形(見た目)のHTMLをエクスポートしてくれる。
ただ今回はは、アルバム表示のためにLightBox(写真をきれいに表示してくれるJavaScript)を利用することにしていたため、そのままでは使えない。それらのHTMLにJavaScriptを埋め込んで、さらにimgタグを編集して・・・とやらなくちゃいけない。さらに自分のWebページの見た目に合わせるためにも編集しなくちゃいけない。
いくつものアルバムを作成する場合にはちょっとやってられない。ここは是非、PicasaのHTMLテンプレートに自分のWebサイト用のものを入れたい。
Picasaのインストールフォルダを見ると、Web→Templateというフォルダがあってどうやらここにテンプレートファイルがあるらしい。簡単説明テキストもついている。テンプレートごとにフォルダに別れているっぽい。
index.tplというのがテンプレートの元になるファイル。これをまあ、スクリプト言語のようにPicasaが処理して、最終的なHTMLや画像ファイルをはき出してくれる。
というような形のindex.htmlを作るというのが基本的な形っぽい。具体的にはいろんなテンプレートのindex.tplファイルを見ればなんとなくわかってくるはず。まあ、理解するのに簡単なプログラミング経験は必要かもしれないけど。
Picasa Web Templating
ここに変数とか、コマンドの説明がある。
というわけで、自分用のテンプレートを作成した。当然その中には自動的にLightBoxのJavaScriptが埋め込まれるようになっていて、自分のWebサイト用のデザイン(css)を埋め込んだものが簡単に作れるようになった。
で、まあ基本的には満足したわけですが、ちょっと欲張ってshadowedThumbnailsという変数を使ってサムネイルに陰を付けるようにした。さらに調べてみるとbgColorで陰の色を変えられるっぽいみたいなことが書いてある。でも、bgColorを設定すると陰が全部真っ黒になってしまう。僕がなんか間違っているんだろうか。どんな値でも同じようになってしまう。bgColorがなければ通常の陰がつく。
さらにPicasaのデフォルトの.tplファイルを見ていたらfgColorとかいうのが設定されているファイルがあった。さっきのサイトには載ってない値の気がする。
うーん、もうちょいちゃんとしたドキュメントがほしい。というか、あんまり公の機能じゃないんだろうか。でも結構Picasa Web Templateとかいって検索すると作っている人いるみたいだけど。。。
かなり簡単に写真管理ができるし、軽快に動く。使いやすい。で、PicasaにはHTMLエクスポート機能があって、選択したフォルダや、写真をHTMLアルバムにしてくれる。既定では何種類かのアルバムテンプレートHTMLがあって、それらの形(見た目)のHTMLをエクスポートしてくれる。
ただ今回はは、アルバム表示のためにLightBox(写真をきれいに表示してくれるJavaScript)を利用することにしていたため、そのままでは使えない。それらのHTMLにJavaScriptを埋め込んで、さらにimgタグを編集して・・・とやらなくちゃいけない。さらに自分のWebページの見た目に合わせるためにも編集しなくちゃいけない。
いくつものアルバムを作成する場合にはちょっとやってられない。ここは是非、PicasaのHTMLテンプレートに自分のWebサイト用のものを入れたい。
Picasaのインストールフォルダを見ると、Web→Templateというフォルダがあってどうやらここにテンプレートファイルがあるらしい。簡単説明テキストもついている。テンプレートごとにフォルダに別れているっぽい。
index.tplというのがテンプレートの元になるファイル。これをまあ、スクリプト言語のようにPicasaが処理して、最終的なHTMLや画像ファイルをはき出してくれる。
- header.html
- イメージループ
- footer.html
というような形のindex.htmlを作るというのが基本的な形っぽい。具体的にはいろんなテンプレートのindex.tplファイルを見ればなんとなくわかってくるはず。まあ、理解するのに簡単なプログラミング経験は必要かもしれないけど。
Picasa Web Templating
ここに変数とか、コマンドの説明がある。
というわけで、自分用のテンプレートを作成した。当然その中には自動的にLightBoxのJavaScriptが埋め込まれるようになっていて、自分のWebサイト用のデザイン(css)を埋め込んだものが簡単に作れるようになった。
で、まあ基本的には満足したわけですが、ちょっと欲張ってshadowedThumbnailsという変数を使ってサムネイルに陰を付けるようにした。さらに調べてみるとbgColorで陰の色を変えられるっぽいみたいなことが書いてある。でも、bgColorを設定すると陰が全部真っ黒になってしまう。僕がなんか間違っているんだろうか。どんな値でも同じようになってしまう。bgColorがなければ通常の陰がつく。
さらにPicasaのデフォルトの.tplファイルを見ていたらfgColorとかいうのが設定されているファイルがあった。さっきのサイトには載ってない値の気がする。
うーん、もうちょいちゃんとしたドキュメントがほしい。というか、あんまり公の機能じゃないんだろうか。でも結構Picasa Web Templateとかいって検索すると作っている人いるみたいだけど。。。