萌え時計、サイトなどに組み込めるような形にしてみました。大きさなども指定できます。
需要があるかどうかわかりませんが(ぁ
っていうか、キャラ増やさないとね……(汗https://t.co/0k5yEt7uTl#萌えクロック pic.twitter.com/ykx6JTkUdp— 宇奈月けやき (@UNADUKI_Keyaki) December 7, 2016
萌え時計を思い立ってから、頭の中でだいたいのアルゴリズムはできあがってて、あとは組むだけだった。ので、仕事の隙間をぬって組んでみた。非常に簡単なプログラム。構造は以下の通り。
- 画像処理は PHP
- 時計の処理は Javascript
画像を PHPにしたのはウェブ公開ディレクトリに画像を置かなくても済むようにするためだ。ウェブ公開ディレクトリに置いてしまうと、ブラウザでその画像ファイルを叩けば見られてしまうからだ。まぁボクはそんなに気にしないんだけど、気にする人もいるかなと思って。Javascript で組んでしまうと公開ディレクトリにしかデータを置けなくなってしまう。
時計部分を Javascript で組んだのはリアルタイム性が必要だからだ。最初 1 分ごとだから全部 PHP でいいかなと思ったんだけど、1 分ごとに処理するためには、その内部は 1 分より短いスパンでプログラムが動く必要があるわけで、Javascript で組むことにした。Javascript でやっていることは以下の通り。
- 1 分ごとに画像を呼び出す
- 表示する作品の決定
- 時間の表示
- 画面エフェクト(フェードイン/アウトとか)
ところが問題が生じてしまった。それは Javascript で表示される時間は PC が存在している場所の時間なのだが、PHP が画像合成する時に使う時間はサーバが存在している場所の時間となってしまうことだ。サーバ側では時間を参照して、背景を昼にしたり夜にしたりしている。
amatsukami.jp サーバは日本にあるので、日本の時間で合成してしまうのだ。
アクセスする PC が同じ日本からなら問題ないが、日本とは時差のある場所からアクセスすると、表示は現地の時間が表示されるが、サーバで合成される画像は日本時間で合成されてしまうのである(汗)。
後にこれは Javascript で GMT からの時差を取得し、その時差をサーバに渡すことによって解決するのだが、どうも夏時間は考慮されないらしい……。まぁ、1 時間ズレても、いいよね?<マテ
- 萌え時計 IFrame版
- 萌え時計 自分で設置版
- 今夜のヘビロテ -> She’s Very / [Champagme]