カワリモノ息子の技術メモ的な~

カワリモノ息子とその母の技術メモ的な〜

学校が苦手な息子くんの作品とその母の作品、はたまた日常などいろいろを在宅エンジニア母が綴る

桜が咲くロジック


春ですね

 最近とても暖かいです。
 先週末の金曜(2024/3/29)地元の福岡はとても暖かくなっていて、「一気に桜咲いてそうだな!」と思ってたんですがその時はどうやらまだ開花していなかったようです。

 ある方から「桜は暖かいだけじゃなくて一度すごく寒くならないと咲かないんですよ」という情報を教えてもらいました。

 そうなんだーと感心した私はそのことを息子さんに伝えました。

 そうすると息子さん「こういうことで合っているか」と言って書いてきたプログラムがこちら。

桜開花ロジック(TypeScript)

export default class Sakura extends Tree {
    public static readonly CONST_TEMP_LOW = 15; // TBD
    public static readonly CONST_TEMP_HIGH = 30; // TBD

    public static readonly CONST_NAME = 'さくら';
    public static readonly CONST_NAME_KANJI = '桜';
    public static readonly CONST_NAME_ROMANJI = 'Sakura';

    public constructor() {
        super();

        this.loop();
    }

    public waitForSatisfaction(checker: (temp: number) => boolean) {
        return new Promise<void>((resolve) => {
            const interval = setInterval(() => {
                if (checker.call(this, this.getTemperature())) {
                    clearInterval(interval);
                    resolve();
                }
            }, 1000);
        })
    }

    public async loop(): Promise<void> {
        this.waitForSatisfaction((temp) => temp < (this.constructor as typeof Sakura).CONST_TEMP_LOW);
        this.waitForSatisfaction((temp) => temp > (this.constructor as typeof Sakura).CONST_TEMP_HIGH);

        this.emit('咲く');
    }
}

 ※CONST_TEMP_LOW、CONST_TEMP_HIGH は正確な閾値を設定すること

 Sakura が Tree クラスを継承しているところとか、いいですね。
 親馬鹿ですが、綺麗なコードを書くなぁと思います。

さいごに

 息子さん最近Linuxで遊ぶのがとても楽しいようです。
 お仕事も受けている傍ら、Orange PiというRaspberry Piのようなシングルボードコンピュータでいろいろ遊んでいます。
 なんとQiita書いてたので、興味のある方是非どうぞ。(私にはチンプンカンプン)
qiita.com