こんにちは。サービスデリバリーセンター(SDC)の繁昌です。
この記事は 『CRESCO Advent Calendar 2018』 5日目の記事です。

 

私は17年程前に製造業の営業からSEにキャリアチェンジしました。
当時は環境構築セットのCDが付録になった書籍を参考にしながら、コマンドラインに
「Hello,world!」を表示するだけで1日がかりだったことを思い出します。
今は当時と比べて有益な情報や便利なツールを簡単に入手できるようになりました。
そこで、今の自分がまだ経験の無いアーキテクチャに本気で取り組んだら、1日で何が出来るのかを検証してみました。

実はもともと課題を抱えていたので、作りたいツールはほぼ決まっていました。
私は2匹の「デグー」と同居しています。
「デグー」というのはアンデス高原で暮らしているげっ歯類です。
片手に納まる大きさ、草食で性格は穏やか、感情を多様な鳴き声で表現します。
とても可愛いです。

「デグー」は涼しくて乾燥した地域に適した生態であるため、日本で暮らす場合、気温と湿度の管理が欠かせません。
家族として心配なのは、エアコンの故障や停電です。
外出している時にも自宅の気温と湿度が分かれば、何かあった場合の対応も出来ますし、問題なければ安心できます。
と、言う訳で何をするか決まりました。

目的

 「デグー」の生活環境が安全に保てているかを把握することで、問題があった場合には私の判断でしかるべき対処をすることが出来る状態にする。

やること

  • 自宅の気温と湿度を測定する。
    そもそもの中心的な要件
    ⇒Raspberry pi+気温湿度センサーで気温と湿度をデータとして捕捉する。
  • スマホなどから手軽に気温と湿度を把握できる。
    Webサイトからログインなどの操作をするような煩わしさはNG。
    ⇒メール or SNSで通知する。
  • サービス中に共有する相手を容易に変更できる。
    設定ファイルやDBをメンテナンスしないといけないのは面倒。
    ⇒家族みんなが使えるTwitter or LINEを採用してグループ追加やフォローなどで対応する。
  • 停電でもサービスを継続できる。
    停電は対処したいリスクの代表格なので、停電時も継続可能なのは必須。
    ⇒Raspberry piはAndroid端末のようにUSB給電なので、携帯用充電器から給電すれば停電の影響なし。

やらないこと

  • 直接エアコンを操作する。
    ⇒中途半端な知識で手を出すのはリスク高と判断。

作業開始

実施したのは以下の内容です。

  • Twitterの開発者アカウント取得
    申請~発行まで1日では終わらないので、これは先行して取得しました。
  • Raspberry piにOSインストールと初期設定
  • Raspberry piにネットワーク設定
  • Raspberry piとセンサーの接続
  • センサー読み取りのプログラム作成
    参考に出来るものがGitHubで公開されています。
  • 温度湿度をTweetするプログラム作成

思うようにいかない。。。

以下の点で思いのほか苦労しました。

  • Twitterの開発者アカウント取得
    開発者アカウントを必要とする理由、具体的な用途を英語で説明する必要があるのですが、私の拙い英語ではうまく相手に伝えることが出来ず、1度差し戻されてしまいました。
    最終的には、家族の安全を守るためにどうしても必要なアプリを作りたいんだ!という切実なメッセージでアカウントを発行してもらえました。
  • Raspberry piとセンサーの物理的な接続
    Raspberry piとセンサーの接続方法ついての情報はインターネット上に溢れているのですが、どれもRaspberry piとセンサーの間にブレッドボードという基盤を使用したものばかりで、私のようにブレッドボード代の数百円をケチった場合の例がみつからず、苦労しました。最終的には各ピンの役割を自分なりに理解したうえでトライアンドエラーを繰り返して期待通りの動作にこぎつけました。

完成

(Raspberry pi + センサー)

(Tweet結果)

最後に

役立つものが出来て満足しています。

今回は1日という点が個人的に重要なポイントだったので最低限で作成しましたが、
カメラモジュールも使用して「デグー」の写真も添えてTweetしたら昼休みや帰りの電車でニヤニヤ出来て「もっといいもの」になりそうだと思いました。

17年前に「Hello, world」を表示するのに使っていたのと同じ時間でこれだけのことが出来ました。
17年後にはもっと役に立つものを1日で作れるように技術を磨き続けていきたいと思います。