こんにちわ。れとるときゃりー(@retoruto_carry)です。
私が住んでいるシェアハウスの同居人たちで、去年の7月に開発合宿に行きました。
そのときに @wamisnet と @fukubaka0825 と作った、シェアハウスの鍵管理システムが先日完成したので紹介します。
全体の流れと、自分の担当した領域について解説します。
作ったもの
鍵を開けるデバイス
@wamisnet と @fukubaka0825 が担当
@fukubaka0825 さんと @retoruto_carry さんと作った鍵システムがついに動いたああああ! pic.twitter.com/uQZ44INF93
— わみ@NefryとかFlutter本とか (@wamisnet) January 1, 2020
こちらに関して、各自の記事があるので、後ほど是非合わせてお読みください!
Raspberry pi とGoとMackerelでシェアハウスの運用しやすい鍵システムを作る - Qiita
Suicaで開けられるスマートロックを作ってみた - Qiita
ICカードの管理システム
私が担当しました。
本記事で詳しく解説します
ICカードと住人の削除もできます
システム構成図
開発のきっかけ
- シェアハウスに、スマホで鍵が開けられるハードウェアのsesameを導入しました
- 「いちいちスマホアプリで操作するのがめんどくさいよね」
- 開けるの5秒くらいかかります
- 「ICカードで入れたら、楽じゃね?」
- 「お、それ作ろうぜ」
何をしたか
仕様の決定
その場で仕様を紙に書きはじめました。
3人のイメージを合わせるために絵とかも書いています。
見にくいので、雰囲気だけ感じてくださいw
DB設計
画面設計
このあたりは私の得意領域なので、私が中心になって考えたました。
続きは、一ヶ月後にシェアハウス全体で開催する、開発合宿で行おうということになりました。
開発合宿
箱根でゲストハウスを借りて、3日間行いました。
自分のやったこと
私の担当箇所
できること
- 住人を登録する
- ICカードを追加したり削除したりする
- イベントを発行して、一時的なQRコードの鍵を発行できる(未実装)
構成
- ラズパイ
- nginx
- Laravel
- Nuxt.js
- Mysql
- Unbound
やったこと
インフラを作成
インフラを整えるのに1日半かかりました💦
Unboundを使って、お家DNSサーバーを立てた
作業メモ → お家でラズパイを使ってDNSサーバーを作ってみる
家のwifiに接続しているときは、「key.home」にアクセスすると、ラズパイのサーバに接続するようになります
ラズパイにnginx、mysql、php、laravel、nuxt.jsを入れた
作業メモ → ラズパイでサーバーを立てる
[]
(https://gyazo.com/8e2f178cac5fa2ac09a666976a5f769e)
ラズパイでnginx上でバーチャルホストを使って、80番ポートにはnuxtのSPA、3000番ポートにはlaravelでapiを立てるところまで出来た!!!!!!!
— れとるときゃりー (@retoruto_carry) July 14, 2019
いえ〜〜〜い
めっちゃ時間かかった.... pic.twitter.com/uda5XMkQpo
そもそもこのとき、nginxを初めて触ったのでめっちゃ詰まりました。
アプリを作成
アプリは、残り半日で雑に突貫で作りました
設計をもとにAPI(Laravel)を作成
- APIリソース を使うと簡潔にかけました
-
-r
オプションを使うと、Resourcefulなアクションを自動で定義したコントローラーを生成してくれます。
時短になります。
$ php artisan make:controller HogeController -r
設計をもとにフロント(nuxt.js)を作成
採用技術
- moment
- 日付の計算に使用
- buefy
- UIフレームワーク
最後はみんなで発表しあって、合宿は終了
感想
- 開発合宿楽しい
- チーム開発楽しい
最初に、仕様を決めて、担当範囲を切り分けて、インターフェースを決めておいたのがとても良かったです。
実装中のコミュニケーションがほとんど必要なく、各自が黙々と作業をすすめることが出来ました。
ローカルだけで完結できるwebサーバーつくって遊びたかった
— れとるときゃりー (@retoruto_carry) July 15, 2019
ツイートにも書いてありますが、普段はVPSやAWSなどでサービスを運用しているので、実機で運用するサービスを作ってみたかったのです。
実際に、今現在、シェアハウス内で運用されています。
物理的にものがあると、実感が湧きます。とても満足しています。
今後やりたいこと
- 適当に作ったせいで、UIがわかりにくいので、ユーザーフレンドリーにしたいです
- 例
- ユーザーやICカードの追加のボタンの位置を調整
- 説明をトップページに乗せる
- 例
ここまで読んでくれた方へ
ここまで読んでくださりありがとうございます。
他のメンバーが自分の担当した領域を解説した記事があるので、是非あわせてお読みください!
@fukubaka0825 【担当】Suica認証、Sesame開錠指示
Raspberry pi とGoとMackerelでシェアハウスの運用しやすい鍵システムを作る - Qiita
@wamisnet【担当】Sesame開錠デバイス作成、ハードウエア
Suicaで開けられるスマートロックを作ってみた - Qiita
いいねやコメント、SNSでの共有等をしてくださると、今後の励みになります。よろしくお願いします。
良かったらツイッター(@retoruto_carry)もフォローしてね