家庭内の情報共有(Slack, Trello, IFTTT, HUBOT, Zaim, MyThings)
目次
目的
家庭内の情報共有を円滑にするために、チャットアプリ・タスク管理アプリ等を導入したことについてまとめたエントリーです。
概要
情報を Slack*1に集約します。
- ToDo管理はTrelloで自動タスク生成・実行管理(リマインドはHUBOTより実行)
- 郵便物の配達情報の共有は Gmail->IFTTT->Slack
- 勤怠情報は Google Calendar に保存しているので Slack への編集時・予定前日の通知
- 金魚・熱帯魚のご飯やり状況の共有(ご飯あげたら Amazon Dash Button 押下。忘れたらHUBOTよりリマインド)
- 買い物リスト共有と、定時リマインド
- お財布情報はZaimで管理しているので、出入金があったら Slack へ通知
方法
ToDo管理
下記ができるプラットフォームとして Trello*2 を選択しました。
- 定期タスク追加が可能
- やったかやっていなかチェックできる
- Slack と連動できる
- API を公開している (HUBOT と簡単に連携できる。リマインドのために使える仕組みがある)
定期タスク登録は Power-Up > Card Repeater を用いました。
Slack 通知には簡単に Trelloアラート*3を使ってます。
未処理タスクのリマインド
Trello の特定のリストのカードで、チェックリストが未完了のものを抜き出し、Slack へ定時投稿します。
下記の "scripts/trello-todo.coffee" が作ったリマインダーです。
郵便物の配達情報の共有
下記にて Gmail から Slack への転送を実現します。
- Gmail にて自動ラベル付与
- ラベル付与されたメールを Slack へ転送
Gmail にて自動ラベル付与の設定
下記の運送業者からのメールに対し、自動的にラベル「delivery」が付与されるよう Gmail にて設定を行いました。
Gmail->IFTTT->Slack 転送の設定
配達情報は Gmail に届くので、IFTTT*4にて「If new email in inbox labeled delivery, then post a message to a Slack channel」を作製して、Slack に投稿するように設定しました。
配送状況の通知 (2018/10/01 現在、これまで機能が動いていることを確認できていないので使うのを辞めました。)
下記のサービスをIFFTと連携させて、Slack から配送状況を追えるようにしました。
下記のレシピをテスト運用中です。
- 「If shipment status changes, then post a message to a Slack channel」
- 「Add package delivery dates to Google Calendar」
Google Calendar 情報の Slack への転送
- Slack > アプリを検索する > Google カレンダー から「Slack とカレンダーを連携させる」を選択
- Google calendar の特定のカレンダーを、Slack のチャンネルと連動するように設定
設定が完了すると「App管理」の配下から、下記のように設定されていることが確認できます。
勤怠 はカレンダーの更新情報やリマインダーを #予定 へ投稿します
これで Google calendar で "前日に通知" などのリマインダーが予定に設定されていれば、 Slack にも前日にリマインダーが飛ぶようになります。(当然、追加・編集時にも Slack へ投稿されます)
金魚・熱帯魚のご飯やり状況共有
下記の記事を参考に Amazon Dash Button を用いて、簡単に管理します。
ご飯をあげたら Amazon Dash Button を押して、ご飯をあげたことを Slack で共有します。
[defunct]mac-mini setup
Amazon Dash Button 検知のサーバーとして、mac-mini を用いているので下記のようにセットアップを実施しました。
(2018/1/23現在 Raspberry Pi で運用しています。)
// nodebrew curl -L git.io/nodebrew | perl - setup touch .bash_profile echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bash_profile source ~/.bash_profile // node.js, npm nodebrew install-binary stable nodebrew use v8.9.3 // brew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" // git brew install git // dash-button mkdir dash-button npm init npm install node-dash-button --save
"Raspberry Pi2 Model B" setup
省電力化したいため、mac-mini の変わりに Raspberry Pi*5 を用いることにした。
// pcap install sudo apt install libpcap-dev // install anyenv git clone https://github.com/riywo/anyenv ~/.anyenv echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(anyenv init -)"' >> ~/.bashrc source ~/.bashrc // dasher clone mkdir Programs cd Programs git clone https://github.com/maddox/dasher.git cd dasher // node ndenv install v8.9.3 ndenv local v8.9.3 // dasher install npm install // For `sudo npm` (ref. http://make.kosakalab.com/make/electronic-work/nodejs_raspi/) sudo visudo // edit config.json vi config/config.json // running nohup sudo npm start &
ご飯を忘れていた場合はリマインダーが届くようにする
ボットが時間指定でご飯忘れフラグが立っているかをチェックして、ご飯を与えていなくフラグが立ったままの時にリマインドを行うように HUBOT*6 を作製しました。
後述するレポジトリの下記3つが連動してリマインドを行います。
- "scripts/*_fish-reset.coffee" (トリガーは Amazon Dash Button の押下で投稿される文章で、フラグを消します)
- "scripts/*_fish-reminder-1.coffee" (フラグが立っている場合に、ご飯を忘れていると判断しリマインド実行)
- "scripts/*_fish-reminder-2.coffee" (リセット用で、フラグを立てます。ここでもう一度通知をすることも可能)
下記は参考ページ。
水槽の温度管理の通知
下記の記事で適正水温から外れた時に Twitter へアラートを投げるようにしていたので、「If new tweet by specific user @Aquarino2501, then post a message to a Slack channel」という条件で、Slack に投稿するように設定しました。
買い物リストの共有とリマインド
下記と Trello Developers を参考に、Trello の "買い物リスト" の "お使い" カードからチェックリスト情報を取得して、未チェックのものを夕方にリマインドするように HUBOT を作製しました。
下記の "scripts/trello-buy.coffee" が作ったリマインダーです。
お財布情報の共有
下記の記事を参考に、Zaim*7 を MyThings*8を連動させています。
まとめ
目的については、取り急ぎまとめは完了です。
現在試験運用中なので、これから使用感・運用に伴う変更点や追加点など随時更新したいと思います。
以上
言語別開発ツールの棚卸し
目次
目的
開発スタイルについて思うところがあり見直したため、自分用のメモとして言語別の開発ツール群をまとめた。
自分の環境
$ cat /etc/debian_version stretch/sid $ uname -a Linux calc0 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"
言語別の開発ツール群
エディタは"neovim"*1を用いており、補完・シンタックスチェック(syntastic*2)・タグジャンプ(+tagbar*3)などを用いていることを断っておきます。
また、開発はフレームワークを用いたものではなく、ライトなプログラム作製が主です。
言語 | C言語 | Python | Ruby | Haskell | Shell Script | Markdown |
---|---|---|---|---|---|---|
環境 | - | pyenv(anyenv*4) | rbenv(anyenv) | stack*5 | - | - |
パッケージ管理 | - | pip(requirements.txt) | gem | Cabal | - | - |
Lint・スタイルチェック | gcc | flake8(pyflakes+pep8)+Pylint | rubymotion+rubocop | Hlint+scan*6+hdevtools*7 | ShellCheck*8 | mdl*9 |
ドキュメンテーション | Doxygen*10 | Sphinx(docstring) | Yard | haddock | (Doxygen*11) | - |
テスト-ドキュメント例示 | (assert.h) | doctest | p0deje/yard-doctest(minitest-doctest) | docktest | - | - |
テスト-実装 | CUnit | unittest | Rspec | Hspec | (shUnit) | - |
テストライナー | Make | Sphinx+watchdog | Guard | Cabal | - | - |
デバッグ | gcc -g -C0 -Wall test.c && gdb a.out |
pdb test.py |
ruby -rdebug test.rb |
ghci test.hs (:step、:list) |
bash -x test.sh 、コード内に trap 'read 〜' DEBUG *12 |
- |
タグ | ctags | ctags | ctags | hasktags*13 | ctags | ctags(markdown2ctags*14) |
Travis CI | autotools+Make | unittest | Rspec | Cabal | - | - |
Code Climate:カバレッジ率計測 | - | o | o | o | - | - |
heroku デプロイ | - | o | o | - | - |
【2017/02/22 追記】デバックについて追記を行いました。
ソースコードのコメントからのドキュメント生成については、"Javadoc" ライクなものが好みだったため、それが反映されています。
参考にしたサイト
自分の開発スタイルが学生時代から変わらず「vimでPHP書いてCGI」みたいなレベルだったので、TDDのバイブルを読んだり、下記のサイトなどに触発されつつ、開発スタイルについて改めました。
書籍:テスト駆動開発入門
著者:ケント ベック
所感
言語別に網羅的に見ることによって、何ができていないかをチェックすることができましたし、記憶の棚卸しができました。
言語選択・開発スタイル・使用ツールについては様々な選択肢・組み合わせがありますが、その組み合わせ考案の一助になればと思います
*2:https://github.com/vim-syntastic/syntastic
*3:https://github.com/majutsushi/tagbar
*4:https://github.com/riywo/anyenv
*5:https://docs.haskellstack.org/en/stable/README/
*6:https://hackage.haskell.org/package/scan
*7:https://hackage.haskell.org/package/hdevtools
*8:https://www.shellcheck.net/
*9:https://github.com/mivok/markdownlint
*11:https://rickfoosusa.blogspot.jp/2011/08/howto-have-doxygen-support-bash-script.html