時かけスクリーンセーバーを作った
あの映画もう12年前だよ何を今更という感じだけど、Swift の練習ということで。
作ったもの
macOS 用のスクリーンセーバー。
アニメ映画「時をかける少女」を観た人はわかると思うけど、タイムリープするときの時計っぽいアレを模したやつ。
数字フォントに関しては id:kironono さん作のフォントを利用させていただいた。
できたこと
- Swift でスクリーンセーバーを作った
- 画面サイズに合わせたフォントサイズで現在時刻を表示する
- 文字の色とフォントを変える・文字をぼかす
普段 iOS アプリを書いている勢からすると楽勝な内容かもしれないが、 XCode もろくに起動したことがない全くの未経験マンがやると「画面に文字を表示する」だけで1時間以上かかったりしたので、めっちゃ大変だった・・・。
できなかったこと
フォントファイルを埋め込んで使用する
現状では、上記の数字フォントを Mac にインストールしないと使えない。 本当はスクリーンセーバーそのものにフォントを埋め込んでそれを使うようにしたい。
通常の macOS アプリでできるやり方1だと、何故かスクリーンセーバーだとできなかった。
このへんとか試してみたけど無理げ。
有識者の意見求む〜〜〜
上位桁と下位桁で 0 のフォントを変える
実際のあのシーンの時計っぽいアレは、上位桁と下位桁で 0 の形が違っているらしく、フォントにも両方の文字が含まれている。
この対応は頑張れば出来たと思うけど、ちょっと面倒だったのでいったんやらずにリリースした。
Swift 所感
- 補完便利
- 普段 Python とか JavaScript とかを Vim で「補完とかそんなに使わなくてもいけるっしょ」というノリでコードを書いているので、XCode のあまりの「何でもしてくれる感」にお腹いっぱいになった
- デバッグしづらすぎワロタ
Swift.print()
とか使ってもコンソールに何も出力されなくてデバッグが超大変だった- スクリーンセーバー特有なのかもしれない
- Swift そのものはわかりやすいが API がわからん
- macOS と iOS で使う API がゴッソリ違うので Web 上の情報があまりアテにならない
- AppKit の情報少ない・・・
- 親クラス
ScreenSaverView
がどうなってるか知りたくてもよくわからない- 公式ドキュメントには大した情報が載ってない
- ソースコードは非公開? 探しても見つからなかった
- ライブラリのコードは公開されてるのがデフォな文化圏にいるので驚きだった
- macOS と iOS で使う API がゴッソリ違うので Web 上の情報があまりアテにならない
まぁ総じて Swift 楽しい。
というか初めてやるなら iOS アプリ書いたほうがいいな普通に。
-
フォントファイルをプロジェクトに追加してターゲット設定して info.plist を設定してどうのこうの↩