Developerしているnariと申します。私が住んでいるシェアハウス(ギークハウス新宿)の同居人たちで、去年の7月に開発合宿にいったのですが、その際にプロトタイプを作ったシェアハウスの鍵システムが先日完成したということで、自分の担当した部分に関して振り返りをしておこうとこの記事を書いています。piとGoとMackerel(監視系SaaS))に関して紹介したいと思います。さんと3人で作ったものです。私はこの鍵システムのうち、スイカなどのICカードのタッチをNFCリーダーから検知し、鍵を開けるAPIを叩くチェックインサーバー部分を作りました。具体的にいうと、NFCリーダーへのSuiceなどのタッチからidm(FeliCaカード製造時にICチップに記録され書き換えができない固有のID番号)を取得して、別のラズパイで立っているDBサーバーとのやりとりで認証チェックして、鍵を開けるAPIを叩いたりスピーカーを鳴らす部分を作成しました。2020/01/03追記:コメントでご指摘がありましたが、認証においてidmは偽装が可能なので、ブルートフォース攻撃対策をいれたりカメラで不審者のチェックなども行っています。ここら辺の認証周りは生体認証を取り入れたり強化していく予定です。piとGoとMackerel(監視系SaaS))をしようと思います。pi言わずと知れたお手軽ハック界の雄です。今回は常駐サーバーをこのラズパイを使って構築しました。(選定理由として、クラウド世代で物理サーバーを運用したことがなかったので簡易な形でもいいから物理サーバー運用してみたかったと言うのがあります。)また、最新OS書込済のSDカード(ラズパイ動作保証付き、16GB)や、3Aの電源、ケース、HDMIケーブル、さらには高性能な産業用ヒートシンクまでついたスターターキットがあったりするので、そちらを買えば組み立ててマウスとディスプレイとつなぐだけで割としっかりしたコンピューターが1万円もしないで手に入ってしまいます。4の物を買うといいと思います。メモリ4GBとかもはや僕の研修時代のPCとスペック変わらなさそう。)頑張ればネットサーフィンしてYoutubeみれたりもしますし、ディスクトップのTerminalからの操作でラズパイ上で開発することも可能です。(私は自分のパソコンで開発して、接続したいときはsshして操作してました)要件にストレージに諸々アセットを貯めたいとか、負荷のかかる処理を回したいとかがなく、簡単な常駐プロセスのサーバーを建てたいとかであればラズパイがオススメです。サーバー自体がお釈迦になっても安価に買い替えれたりスペアを常備したりできるので、運用コスト面で非常に優秀です。3.0Go言語はGoogleが2009年にリリースした比較的新しい静的型付け言語で、ラズパイでのおうちハックともとても相性がいいです。特質すべきは実行環境をラズパイ上に用意する必要がなく、以下のように開発環境でクロスコンパイルしたバイナリだけで実行できるお手軽さです。nodeやpythonのように実行環境のEOLに振り回される必要がないです。pi_linux_armsystemdか何かのdaemon管理ツールで、サーバー再起動時にバイナリ実行もキックするようにしておくととてもメンテナブルです。pi.serviceまた、なんといっても型付き言語で愚直に書く系の言語なので、後々メンテナンスするときも当時のコードを書いた自分の意図が汲み取り安いです。Goからどうぞ!Mackerel(監視系SaaS)今回のシステムは、アプリを開いてSesamiと直接bluetoothで接続して鍵を開くという代替の手段があるにせよ、故障したまま放置され、ICカードをタッチして入れなかったりすると住人のストレスが溜まっていくかと思います。いったわりかし生活にクリティカルなシステムの運用には、個人のシステムとはいえどお手軽で安価な監視システムが欲しくなってきます。いえそのために監視サーバー立ててZabbixやNagiosなりで頑張るのは辛い、、ということで監視のSaaSを使うことに。CloudWatchを使っているので候補から除外して、今回は使いやすいと評判のMackerelを試してみることにしました。agentを仕込んで、ラズパイ自体とnfcリーダーの接触感知ワーカープロセスを死活監視しました。APIの外形監視を仕込みました。Qiitaここでは、Mackerelをいじってみた感想を3つの項目に分けて紹介しようと思います。無料枠の機能が充実フリープランでホスト5台までなど個人開発なら十分なほど対応してくれています。トライアルで使えた外形監視が使えなくなるので、ついでで入れたAPIの外形監視が使えないのはちと悲しい。CloudWatchだとなかなか難しい部分で羨ましいなぁと思いました。CloudWatchのようにlambdaで処理を書かなくても、ノーコードでSlack通知を設定できるのはやはり最高しかもメトリクスグラフの画像までメッセージに詰めてくれたり、非常に観やすくて良い(アラートの再送の設定も容易)最近外形監視までAWSさんでできるように(限られたリージョンのプレビューですが)なったり、ChatBotによってノーコードの通知が実現できそうだったり(β版ですが)と、監視の専業SaaSさんは大丈夫かしら、、と思っていましたが、やはり使いごこちと多機能性は専業SaaSに軍配が上がるなと感じました。顧客の本当に注力したいアプリ/インフラへの改善アクションにリソースを最大限さける仕組みになっていて素晴らしい。今後も使っていきたいです。つけてくれていたりするので、そちらを使って顔認証で鍵を開けれたりしたら面白いなぁなんて妄想をしています。(もうやれる時代にきているので、AutoML系サービスなどを使ってプロトタイプを作って精度チェックをしたいですね)その他おうちハックうちのシェアハウスでは、住人の物々交換のためのレジシステムがあったり、Alexaとおしゃべりしてテレビを操作できたり、お風呂センサーを見て今お風呂が空いているかわかったり、NatureRemoのアプリでリモコン操作できたりします。(つまりおうちハックパラダイスなんです。お仕事だったり個人開発だったりで後手後手になってしまうかもしれませんが、また開発合宿なんかでがっとプロトタイピングしちゃいたいですね。次の開発合宿はどこに行こうか。upLoginユーザーは見つかりませんでした。