Mac の画面には、いつも見えているのにほとんど見られていない場所がひとつあります。メニューバーです。画面のいちばん上に横一列で、時計といくつかの印を載せて、ウインドウが入れ替わっても動きません。窓辺の机で言えば、仕事の上に細く見えている空の帯と同じ位置です。Petit Sky は、そこに空を置くアプリです。この空のどこが本物で、どこが作り物で、どんな判断で今の形になったかを書いておきます。
画面のいちばん上を選んだ理由
窓辺の机は、誰も見ようと決めていないのに、一日のうちに変わっていきます。壁に落ちる光が灰色から青になり、琥珀色になり、消える。それを人は、ほかのことの合間に、ちらりと目に入れます。作りたかったのはその「目に入る空」で、じっと眺めるための空ではありません。メニューバーはそのための大きさをしています。ノートパソコンで高さは30ポイントほど、幅は画面いっぱいで、どんなウインドウにも隠されません。
空はメニューバーの上ではなく、後ろに描きます。メニューの題も時計も状態の印も、macOS がいつもどおりに描き、その下の半透明の帯に空が入ります。アイコンを押すと空が出たり隠れたりし、右クリックでメニューが開きます。時刻もそのメニューにあります。「現在時刻」をオフにすれば、スライダーか、朝・昼・夕方・夜の4つのボタンで空を選べます。空はそこから時計と同じ速さで進み、「進行中」をオフにすればその場に留まります。
星は星表の実在の星
夜空の最初のバージョンは、でたらめな点を散らしていました。それは画面の保護に見えました。でたらめな点には記憶がありません。昨夜は時計の上にあった点が、今夜は別の場所にある。そうなると、空は飾りとして読まれてしまいます。
いまの星はイェール輝星星表から取っています。2,068個で、星表の位置と等級をそのまま持っています。Mac のタイムゾーンから代表の都市を決め(Asia/Tokyo なら東京)、その都市の空でいまどこにその星があるかを計算し、見えている半球を帯に投影します。星表で明るい星ほど明るく描きます。ベガはベガの場所にあり、明日は本物と同じく4分早く、また同じ場所に来ます。
太陽と月と星の位置は、時計とタイムゾーンだけで決まります。Mac の中で計算が済みます。
意外だったのは大きさの判断でした。星が小さく見えたので、素直に考えれば大きく描けばよい。ところが2倍にして試すと、どの点もぼやけた丸になり、暗い星は雪の粒と見分けがつかなくなりました。本物の星には見える大きさがなく、明るい星が大きく見えるのは、光が目の中でにじむからです。そこで大きさはそのままにして、明るさだけを上げました。いちばん明るい星は頭打ちにして、点のまま読めるようにしてあります。明るさは星表から来ているので、空の明るさの順は星表の順のままです。
月は本物の向き
月は満ち欠けと向きを保ちます。外で見るのと同じく、光っている側は太陽のほうを向き、円盤には実際の月面の地図で陰影をつけているので、暗い「海」は見覚えのある場所にあります。地平線の近くでは黄色から橙赤に変わり、高く昇ると白くなります。厚い雲が通ると円盤も光の輪も隠れ、薄い雲なら光が透けます。
夜には、平均して7分に1回ほど、流れ星が上の帯を横切ります。前の1本から3分は空け、星がはっきり見える暗さになってからだけです。小さな出来事で、たいていは見逃されます。流れ星とはそういうものです。
雲は実写から
いちばん難しかったのは雲でした。最初の雲は手続きで作っていました。ノイズの場から形を切り出し、集まり方や流れ方に 1/f ゆらぎを入れたものです。遠目には雲に見えても、形がはっきりした瞬間に作り物に見えました。縁をやわらげても、形を持たない薄い覆いにしても、むらの細かさを変えても、同じところでつまずきました。
そこで、作り方そのものを変えました。いまの雲は、実際の空を撮ったタイムラプス映像から細い帯を切り出したものです。晴れ用と曇り用に一本ずつ、どちらも Pexels で公開されている映像です。アプリが持っているのは雲の濃さと明るさだけで、色は時刻と天気に合わせてその場で塗ります。朝夕は空の色に染まり、夜は夜空に沈む暗さになります。形と崩れ方は撮ったままなので、縁は本物の雲と同じように霞んでいます。帯は巡回していて、晴れは5分ほど、曇りは3分ほどで一巡します。つなぎ目はゆっくり溶かしてあります。
雨と雪は一粒ずつ落ちます。それぞれが帯に入った瞬間から時間を数えているので、突風はもう落ちている粒だけを流し、まだ入っていない粒はそのままです。雷は1分に1回ほどのやわらかい一瞬の光で、macOS の「視差効果を減らす」か「点滅する光を弱める」が入っているときは出しません。
天気には音も付けました。初期設定ではオフです。オンにすると、快晴・晴れ・曇りには弱い風、雨には雨、雷雨には強い雨の音が鳴り、雷は稲光の数秒後に鳴ります。音は Freesound で CC0 として公開されている録音から切り出しました。
文字が読めること
文字の後ろに置く空には、外してはいけない仕事がひとつあります。昼でも真夜中でも、文字が読めること。メニューの題が乗る中央の18ポイントは空けてあります。星や手前の雲、雨や雪は、文字の上と下の縁でよく見えるようになっています。空の色だけは全高に通してあるので、帯は三本の縞ではなく一枚の空として読め、メニューの題はこれまでどおりに読めます。
霧は、以前は天気のひとつでした。帯を白くするだけで、メニューの記号も小さすぎて読めなかったので、外しました。残っているのは快晴、晴れ、曇り、雨、雪、雷の六つです。自分で選ぶことも、「現在の天気」をオンにして実際の天気と同期することもできます。その場合は Apple Weather に1時間に1回まで、空を表示しているあいだだけ聞きに行き、位置は 10 キロほどに丸めて送ります。天気を手で選ぶか、スイッチを切れば、その場で聞くのをやめます。
何のためのものか
Petit Sky は、Mac のメニューバーのための小さなアプリの二つめです。Petit Fire は画面のふちにキャンドルを置き、Petit Sky は画面のいちばん上に空を置きます。どちらも、見返りを求めません。空は時計に合わせて表示され、星は本物の並びで、メニューバーに変化はありません。仕事から顔を上げたとき、光が変わっていたなら、それがこのアプリの仕事です。
