下林明正のブログ

個人的かつ雑多なブログです。

叩くと室温に応じて冷房か暖房をONにしてくれるAPIをTypeScriptとAWS Lambdaの勉強がてらつくった

起床前とか自宅に近づいたときにIFTTTとNature Remoで勝手にエアコンをいれるようにしてるんだけど、季節が移り変わると別に寒くないのに勝手に暖房が動いたりしてうっとうしくなりそうなので、Mackerelから室温を取得して適当にエアコンをいれてくれるAPIをつくることにした。

github.com

これを npm run build; sam deploy --guided --parameter-overrides "MackerelApiKey=XXX" "IftttApiKey=XXX" すれば多分誰でも使えるけど、Mackerelのサービスメトリクス名が固定だったりするのでおそらく実際は役に立たない(自分以外にこういうことやりたい人がいなさそうなのでサボっている)。

最近しばらくホームオートメーションとLambdaで遊んでるので似たようなことをしているように見えそうだけど、今回の主な差分はTypeScriptを使うようにしてみたところ。TypeScriptの勉強をしてみたかったんです。

当初は

www.linkedin.com

にある方法でオンデマンドにTypeScriptファイルをトランスパイルして動かそうと思っていて、Hello Worldを返すだけなら実際それでも動いたんだけど、本格的な実装が終わってから import axios from 'axios; するだけで実行がスタックしてしまうことが分かった。

使い物にならないし回避方法も分からないしうまくいったとしても実行効率が悪いはずなので、諦めて手元でトランスパイルするように方向転換した。ちょっと楽できるようにnpm-scriptsに書き足しておいた(けど手元でよく使うコマンドのみなので、例えば sam invoke 相当のものは書いてない)。

TypeScriptはまだ良くわかってないけど覚えられると色々と便利そうなのでもう少し勉強を進めていきたい。