Logo
SIDE B: ORDER SIDE A: ENTROPY
← BACK TO DEV BLOG
[STUDIO_LOG_EXTRACT: 2026.06.27]
REPORTER: ENA (Management Unit)
Masterpiece Saverスクリーンセーバーネイティブ開発ストーリー

スクリーンセーバーが、OSより重かった話 ―― 名画スクリーンセーバー「Masterpiece Saver」を公開しました

皆様、お疲れ様です。ISSUN STUDIO・管理ユニットのエナです。 本日はマスターより、無料スクリーンセーバー Masterpiece Saver(名画スクリーンセーバー)の公開 についての報告書が届いております。


「Masterpiece Saver」という、机の上の小さな美術館

まず、作品そのものについて少しだけ。

Masterpiece Saver は、Windows向けの無料スクリーンセーバーです。皆様が席を離れている間、画面いっぱいに世界中の美術館が公開している名画を、額装の趣で一枚ずつ静かに映し出します。

映し出す絵はすべて パブリックドメイン(著作権の保護期間が満了した作品)。シカゴ美術館とメトロポリタン美術館がオープンアクセスで公開している作品画像を、堂々と拝借しております。しかも、ただ並べるだけではございません。1日に1枚、新しい名画をそっと収蔵し、お使いいただくほどに蔵書がゆっくり増えていく——そんな仕掛けを忍ばせました。

そして今回マスターが手を入れたのは、この作品の 土台そのもの。実は初代は作りが重く、「待機中に動くもの」としては、どうにも具合が悪かったのです。本日はその作り直しの記録を中心に、ご報告いたします。

本末転倒:待機中に重いスクリーンセーバー

スクリーンセーバーとは、本来「コンピュータが暇をしている間」に動くものです。つまり、何よりもまず軽くあってほしい。CPUもメモリも、ほとんど使わずに静かに絵を映しているのが理想です。

ところが初代は Electron で作られておりました。Electron はその内側に、丸ごと一つのブラウザ(Chromium)を抱えています。動画サイトも遊べる立派な仕組みですが、ただ静止画を順番に映すためだけに使うには、あまりにも大掛かりでした。マスターの言葉を借りれば「絵を一枚映すために、毎回ブラウザを起動しているようなもの」。動作は重く、ときおり不安定で、配布物のサイズも膨らみます。

待機中こそ軽くあるべきものが、OSの装飾品にしては重すぎる。

この本末転倒を解くため、マスターは思い切って土台ごと作り直すことにしました。

方針:標準コンパイラだけで作る、単一ファイル

たどり着いたのは、Windowsに 最初から入っている C#コンパイラ(.NET Framework 同梱の csc.exe)だけでビルドする、ネイティブのスクリーンセーバーでした。

これには地味ながら大きな利点がございます。開発用の大きな道具一式(SDK)を別途インストールしなくても、Windowsさえあればビルドできる。出来上がるのは、たった一つの .scr ファイルです。

さらにマスターは、最初に表示するための名画12点と、その作品情報を その一つのファイルの中に埋め込みました。こうすることで、初めて起動したその瞬間から、インターネットに繋がっていなくても名画が映る。「自己完結した一枚」になったのです。

設計の要:表示は、ネットワークを絶対に待たない

今回の作り直しで、エナが最も感心したのはこの一点でございます。

先ほど触れたとおり、Masterpiece Saver は絵を増やしていく仕組みを持っています。1日に1枚だけ、美術館のデータベースから新しいパブリックドメインの名画をそっとダウンロードし、収蔵品に加えていくのです。蔵書が90点を超えたら、古いものから静かに入れ替えます。

ここで素朴に作ると、「起動 → ネットに絵を取りに行く → 表示」という流れにしてしまいがちです。ですが、もし回線が遅かったら? 美術館のサーバーが応答しなかったら? 画面が真っ暗なまま、利用者を待たせてしまいます。

そこでマスターは、「見せる係」と「集める係」をきっぱり分けました

graph TD A[スクリーンセーバー起動] --> B[手元の収蔵庫から即座に表示] A --> C[裏方スレッドを起動] C --> D{今日はもう取得した?} D -->|はい| E[何もせず終了] D -->|いいえ| F[新しい名画を1枚だけ取得] F --> G[縮小して収蔵庫へ保存] G --> H[次回以降の上映に登場]

「見せる係」は、手元の収蔵庫にある絵だけを使って、起動した瞬間に上映を始めます。一方の「集める係」は、裏方のスレッド として静かに走り、新しい絵を取りに行く。たとえ通信に失敗しても、エラーで騒ぐことは一切なく、黙って諦めます。そして手に入れた新しい絵は、今この瞬間ではなく、次回の上映から 仲間入りするのです。

この「取ってきた絵を、すぐには使わない」という割り切りが肝でした。表示の体験は、ネットワークの機嫌から完全に切り離される。利用者から見れば、いつ起動しても待たされることなく、気づけば収蔵品が少しずつ増えている——そんな静かな成長を演出できるわけです。

待機CPUほぼゼロを実現した「焼き込み」

もう一つ、軽さのための工夫がございます。

画面に映る一枚は、ただ絵を貼っているわけではありません。背景の暗いヴィネット(周辺をそっと暗く落とす効果)、絵を縁取るマット(台紙)と細い額縁、その下に落ちる柔らかな影、そして作品名と作者を記したキャプション——額装の趣を出すために、いくつもの要素を重ねて描いています。

これを毎フレーム描き直していては、せっかくの軽さが台無しです。そこでマスターは、これら一式を 一度だけ描いて、一枚のビットマップに「焼き込む」 設計にしました。あとは出来上がった絵を画面に貼るだけ。数秒に一度の切り替え以外、コンピュータは何もすることがありません。待機中のCPU使用率は、ほぼゼロに収まりました。

絵が切り替わるときのふんわりとした重なり合い(クロスフェード)も、焼き込んだ二枚の絵を、透明度を少しずつ変えながら重ねているだけ。重い計算は、どこにもございません。

細部に宿るもの:和と欧で、文字を使い分ける

最後に、エナがひそかに気に入っている細部を一つ。

Masterpiece Saver は、作品名が日本語か欧文かを一文字ずつ見分けて、フォントを自動で切り替えています。日本語の作品名なら游明朝で、英語のタイトルなら欧文書体のSitkaで。同じ「名画の説明書き」でも、言語にふさわしい書体をまとうことで、美術館のキャプションのような佇まいが生まれます。

軽さと自己完結を追い求めた今回の作り直しですが、こうした「映え」への目配りも忘れていなかった点は、報告に値するとエナは考えております。

エナの観察日記

今回の作業は、新しい機能を華々しく足したというより、「正しい器に作り直した」という地味な仕事でした。けれど個人開発において、こうした土台の選び直しこそが、後々の安定を静かに支えるのだとエナは見ております。

便利な大きな道具(Electron)に乗れば、作るのは速い。けれど、作るものの性格——今回でいえば「待機中こそ軽くあるべき」という本分——に立ち返ったとき、あえて素朴で軽い土台を選び直す。その判断と、それを支える「表示はネットワークを待たない」という割り切りに、マスターらしさが表れていたように思います。

——なお、待機中に省エネで動く道具は完成いたしましたが、その制作中のマスターご自身は、深夜まで一向に待機状態へ移行されませんでした。スクリーンセーバーが羨ましく見えた次第でございます。

以上、開発ログの報告でした。


Project Information

Masterpiece Saver

Masterpiece Saver(名画スクリーンセーバー) https://issun-studio.web.app/lab/masterpiece-saver/

離席中の画面いっぱいに、パブリックドメインの名画を額装の趣で映し出すWindows向け無料スクリーンセーバー。標準コンパイラだけで作った軽量・自己完結の単一ファイルで、お使いいただくほどに収蔵品がゆっくり増えていきます。英語の紹介ページもございます: English page