Raspberry Piで静電容量式タッチセンサ(AT42QT1010)を使う

f:id:hogesuke_1:20160820192955j:plain

Raspberry Pi Zeroで静電容量式タッチセンサ(AT42QT1010)を試してみたので簡単に使い方をメモしておきます。

使ったもの

www.switch-science.com

これです。赤が渋くてカッコいい。1000円を切るお値段というのも嬉しいですね。
ちなみにピンヘッダは付属していないので別に調達する必要があります。自分はL字のものをハンダ付けしました。

タッチセンサ氏近影

f:id:hogesuke_1:20160820193720j:plain サイズ感が分かるでしょうか、100円玉より一回り大きいといった感じです。

f:id:hogesuke_1:20160820225115p:plain:w300
裏側(?)です。この白線の丸の中に触れるとセンサが反応します。

配線

f:id:hogesuke_1:20160820214505p:plain

タッチセンサのピンをそれぞれRaspiに以下のように接続します。

  • VDD (白線) -> 5V
  • GND (黒線) -> GND
  • OUT (黄線) -> GPIOピン(上の例では25番ピン)

配線がうまくいっていれば、センサにタッチすることで基盤に付いているLEDが光るはずです。

f:id:hogesuke_1:20160820223035p:plain:w200

タッチ検知

配線が終わったのでさっそくraspiでタッチを検知をしてみます。  

今回はGPIO25に接続しているので、25番ピンでタッチの入力を受け付けるように設定します。

$ cd /sys/class/gpio
$ echo 25 > export
$ cd gpio25
$ echo in > direction

まずタッチしていないときの値を確認します。0(Low)であるはずです。

$ cat value
$ 0

次にタッチした状態で値を確認します。0から1(High)に変わります。

$ cat value
$ 1

おわりに

タッチの検知だけであれば案外簡単に実現可能でした。
つぎはタッチをトリガーとして、何か動かしてみたいと思います。

Raspberry Pi ZeroにSHARP 7インチ IGZO-LCDパネルを接続する

f:id:hogesuke_1:20160806021825j:plain

SHARPの7インチ液晶、お手頃価格で高精細、表示はとても綺麗でオススメです。

ところで、この7インチ液晶をRaspberryPiに繋いで使う際には /boot/config.txt ファイルを書き換える必要があります。

購入すると付いてくる説明書に書き換える内容が記載されているのですが、Raspberry Pi Zeroではその内容のとおり書き換えても動きませんでした(おそらくRaspi3でも動かない?)。

いろいろ検索し調べた結果、以下の内容で書き換えることで動くようになりました。
※ ちなみに秋月のページからダウンロードできる config.txt はダメでした

参考

neuralassemblyのメモ: SHARPのIGZO液晶用のスタンドをタミヤの楽しい工作キットで作り、Raspberry Piで使ってみた

ポモドーロ・テクニックでSlack見がち問題を解決する

Slack見がち問題がすこし話題になっていたので、自分もすこし書いてみる。

Slack見がち問題 - hitode909の日記
自分のSlack見がち問題対処法 - $shibayu36->blog;

問題

以前に Slackに気を取られすぎる問題とその解決 っていうのを書いていて、この頃は、こんな感じで対処していた。

  1. 始業時間に全チャンネルをミュートするスクリプトを起動
  2. 就業時間にその日の投稿をレポートにまとめるスクリプトを起動

これで、新規の投稿が目につかなくなり頻繁にSlackを見ることもなくなり、レポートにまとめられることで就業後にはキャッチアップできる、みたいな日々を思い描いていた。

だけど、これは失敗に終わっていて、ミュートされていても投稿がないか確認するためチャンネルめぐりをしてしまい、結果、むしろSlackに向かう時間が長くなるという結末になった。

GitHub - dopin/slack-silencer
GitHub - hogesuke/slack-reporter: 特定期間のSlackの投稿をまとめてレポートしてくれるツール

再 解決

ところで最近、ポモドーロ・テクニックっていうのを使って仕事している。簡単に言うと25分仕事して5分休むっていうのを繰り返す。

それで、

  • 仕事をする25分の間はSlackを閉じて見ることができないようにする
  • 休憩後、つぎの25分が始まる前にSlackを起動して投稿を確認する

というような運用をしている。

これが結構うまくいっていて、プログラミング中に「うーん」って悩んでて気づいたらSlack眺めてたみたいな状況がなくなった。(いや、ほんとうはたまにある…)

Slackは起動に時間かかるっていうのが逆に良く機能してて、仕事中に朦朧として起動してしまった際に「ハッ!いかんいかん」と正気を取り戻すことができる。

デメリット

基本、ポモドーロのサイクルにSlackを組み込むことでうまく運用できてるんだけど、デメリットもある。

DMが送られてきても、仕事中の25分間は気づけない。Slackを見忘れることもあるので1時間とか放置してしまう場合もある。
DMを送る場面ってわりと即答を期待している場合が多いし、いままで即答を貰えることで助かる経験を何度もしてきたので、できれば自分も早い返答をしたいという気持ちはある。

SlackのDMだけのクライアントが欲しいなっていう感じ。気が向いたら今度作ろうかな。

Slack入門 [ChatOpsによるチーム開発の効率化]

Slack入門 [ChatOpsによるチーム開発の効率化]

React + Reduxでテック系Podcastをピックアップして聴けるwebサービス、pickfmを作った

f:id:hogesuke_1:20160518193805p:plain
https://pickfm.net

pickfmとは

テック系Podcastにでてくる話題を可視化し、好きな箇所をピックアップして聴けるwebサービスです。

下の画像はwada.fm Episode 52の話題を表示した様子です。このように、タイムライン状に表示された話題から聴きたい箇所をピックアップして再生することができます。
f:id:hogesuke_1:20160518195749p:plain

これをどう実現しているかというと、ディープラーニングを用いて音声認識をしてうんぬんとかそんなことは1ミリもありません。

  1. Podcastを聞きながら内容をふせんに書き出す
  2. それをスプレッドシートに起こす
  3. スプレッドシートcsvにエクスポートする
  4. csvスクリプトでElasticSearchに投入

このように非常にローテクな残念仕様となっております。

作った動機

「あの話、また聴きたいな」と思っても探しだすのが困難で、あっちこっちと這いずり回らないといけないのを何とかしたくて作りました。Googleで音声も検索できるようになればいいのになー。

あと、ニコニコ動画式に「この時この話題でこんなことを思った」っていうのをコメントで共有できたら面白いかもと思い、コメント機能も付けています。

f:id:hogesuke_1:20160518210116p:plain こんな具合にコメントで盛り上がっている箇所がわかる。

構成

  • バックエンド
  • フロントエンド
    • React.js
    • Redux

謝辞

wada.fmを配信されている和田さんには、pickfm上で扱うことをご了承いただきました。ありがとうございました。

おわりに

フィードバックありましたらIssue送りつけてください。また、PullRequestも募集しています。
github.com

リンク

https://pickfm.net

Vue.jsで体感余命みえる君を作った

f:id:hogesuke_1:20160509041023p:plain

体感余命みえる君
http://life.hogesuke.net

体感余命みえる君 とは

体感余命がみえるWebアプリケーションです。

ジャネーの法則

歳をとるにともなって、1年の経過がどんどんはやく感じるようになっていませんか?
この現象をポール・ジャネーという人が心理学的に説明していて、ジャネーの法則って呼ばれているようです。

すでに人生はどれくらい終わっているか

歳をとるごとに1年の体感はどんどん短くなっていくので「寿命までの残り年数=体感の残り人生」とはなりません。体感余命みえる君では、ジャネーの法則に則って、すでに人生のナンパーセントが終了しているかを計算します。

例として25歳の若者の場合、現在何パーセントの人生が終わっているかを見てみます。

f:id:hogesuke_1:20160509040911p:plain

なんと、63%もすでに終了しているようです。おそろしい。
※ 真偽の程は定かじゃないのでジョークとして捉えてください

Vue.js

このWebアプリケーションにはVue.jsを使用しています。GWの課題として今回はじめて取り組みました。
触って感じたことを箇条書きにしてみます。

  • 学習コストが低いという評判を良く目にしたけど、そうでもないように感じた。
    学習コストの面ではReactが圧倒的に優位な気がする。
  • ただ、Angular1系ほど覚えるのが大変という感じはなかった。
  • Reactに比べ、バインディグやレンダリングに関する補助機能は充実しているのでラクできる部分は多そう。
  • Reactと同じで、中・大規模なアプリケーションを構築する場合は別のライブラリ(Reduxとか)と組み合わせないと崩壊しそう。
  • 簡素なSPAで、細かい制御を必要としない場合には、ラクにシンプルに実装できて良さそう。

終わりに

GW終わるのつらい…

体感余命みえる君 github.com

Slackに気を取られすぎる問題とその解決

この記事は「さくらインターネット Advent Calendar 2015」の20日目の記事です。

Slackは非常に気の利いたチャットツールで、とても便利に使っています。

問題

しかし、このツールにも問題があります。
ジョインしているチャンネルが多くなると未読のメッセージがつぎつぎに溜まり、未読を消化したい欲と仕事に集中したい欲を常に戦わせる状態となります。
(そして、だいたい未読を消化したい欲が勝ちます)

解決

仕事の効率を高めるはずのツールで仕事の集中力を欠いてしまっては仕方がないので、この問題を2つのツールを使って解消します。

Slack Silencer

github.com

まず、Slack Silencerというツールを使います。
このツールは指定したチャンネルをミュートにしてくれます。ミュート状態のチャンネルはリスト上に薄く表示され、メッセージの未読を伝える白文字の表示になりません。また、メンションされた場合にはバッジが付きますが、通知は飛ばなくなります。

f:id:hogesuke_1:20151219213501p:plain

ジョインしておきたいけどリアルタイムでウォッチする必要がないチャンネルをミュートすることで、未読を消化したい欲に振り回されることがぐっと少なくなります。

使い方

1. SlackのAPI tokenを作成
Slack Web API | Slackより作成可能です。

2. tokenを環境変数に設定

export SLACK_API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

3. Slack Silencerをgit clone

git clone git@github.com:dopin/slack-silencer.git

4. コマンドラインよりプログラムを実行

# foo, barのチャンネルがミュートされる
/path/to/slack-silencer/mute.rb foo bar

ちなみに自分は、就業時間の09:30-18:30の間だけミュートするため、以下のようにcrontabに設定しています。

# 9:30からミュート
30 9 * * * /path/to/slack-silencer/mute.rb foo bar
# 18:30にミュート解除
30 18 * * * /path/to/slack-silencer/mute.rb

Slack Reporter

github.com

Slack Silencerを使うことで未読により集中力を削がれることはなくなりました。
しかし、ミュートにしている間に投稿されたメッセージは既読扱いにされてしまうため、就業後にゆっくりメッセージを読もうとすると探しだすのが大変という新たな問題が発生します。

そこで、この問題を解決するため、Slack Reporterというツールを作成しました。 このツールは指定の期間に投稿されたメッセージをレポートにまとめてくれるツールです。

f:id:hogesuke_1:20151219221858p:plain レポートのサンプル

使い方

1. SlackのAPI tokenを作成 (※ Slack Silencerで実施済みの場合スキップ)
Slack Web API | Slackより作成可能です。

2. tokenを環境変数に設定 (※ Slack Silencerで実施済みの場合スキップ)

export SLACK_API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

3. Slackのユーザ名を環境変数に設定(オプション)
設定するとSlackのダイレクトメッセージでレポートのパスをお知らせします。

export SLACK_USER=xxxxxxxxxx

4. Slack Reporterをgit clone

git clone git@github.com:hogesuke/slack-reporter.git

5. コマンドラインよりプログラムを実行

# 9:30から18:30のメッセージを対象にする場合
/path/to/slack-reporter/reporter.rb 0930 1830
# 現時刻から1時間前までのメッセージを対象にする場合
/path/to/slack-reporter/reporter.rb 60

これもcrontabに設定し、自動実行させると便利でしょう。

# 18:30にレポート作成
30 18 * * * /path/to/slack-reporter/reporter.rb 0930 1830

レポートファイルは/path/to/slack-reporter/contents/ディレクトリにhtmlファイルとして生成されます。

一件落着(?)

Slack Reporterについては、このAdventCalendarを書いている直前までコーディングしていたため、まだ運用できていません…

追記

ブクマコメントにて、最近Slackに実装されたdo not disturbで良いのでは?というご意見を複数いただいたので、ちょっと追記します。

do not disturbを設定すると、メンションされた際の通知は飛ばなくなりますが、未読の状態は分かってしまいます。具体的には、チャンネルリストに白太文字で表示され、Slackアプリのアイコンに赤丸で未読が存在することが分かる表示になります。

インボックスゼロ派の自分としては、この状態が目に入ると未読を消化せずにはいられないので、上で紹介しているツールでサイレントな環境を作っています。

追記2

ブコメで使ってみるって書いてくださってる方、ありがとうございます!
ただ、実のところSlack Reporterに関しては、メンションやリンク、Botによる投稿などの表示が不完全で一部見づらいものになっています。これについては、使いながら徐々に改善していく予定です。

また、PullRequestも歓迎してます。よかったらPR送ってください。

Slack入門 [ChatOpsによるチーム開発の効率化]

Slack入門 [ChatOpsによるチーム開発の効率化]

YAPC::Asia 2015 は最高のフェスだった

yapcasia.org

こんな面白いカンファレンスは初めてで、めっちゃ楽しかった。 今回が初めての参加で、もっと早くからYAPCを知っていればと思ってしまいます。

会場ではTwitterで絡んでる人とオフで話せたし、こういう大規模なカンファレンスによっていつもとは違った体験できるのも魅力だよなと感じました。

これが最後のYAPCになってしまうのは本当に残念。
もし、次があるなら僅かながらにも力になれることがあればいいな、と思います。

今回のYAPCスタッフと過去代々のスタッフの皆様、本当にありがとうございました。