チャットワークで自分宛のメッセージがあったらメールで通知
モバイル端末でチャットワークを使っていて、自分宛のメッセージを通知させたい場合、アプリ版はプッシュ通知ができるようですが、ブラウザ版は残念ながら自分宛のみのメール通知設定ができないようです。
普段使いのスマホがアプリの動作要件を満たしてなくて利用できないので、それならばとチャットワークAPIとGoogle Apps Script (GAS)を使って、メールで通知するようにしてみました。
1. チャットワークAPIの申請
まずはAPIを使えるように、チャットワークAPIドキュメントのページから利用申請を行います。
土曜のお昼に申請したところ、その日の深夜には利用可能のメールが届きました。素晴らしー。
2. チャットワークAPIトークンの取得
無事利用可能のメールが届いたら、認証方法 - チャットワークAPIドキュメントのページに書いてある手順でAPIトークンを取得します。
3. Google Apps Scriptの準備
APIが利用できるようになったら、次にスクリプトの準備を行います。
※Google Apps Scriptアプリを追加してる方は、ドライブから直接新規作成でもOKです。
4. ライブラリの導入
チャットワークAPIをGASから使うためのライブラリがあるので導入します。ありがたやー。
https://github.com/cw-shibuya/chatwork-client-gas
メニューから「リソース>ライブラリ」を選択し、検索欄にライブラリのプロジェクトキーを入力します。
タイトル | バージョン | 識別子 | デベロッパーモード | 削除 |
ChatWorkClient | 16 | ChatWorkClient | 無効 | × |
無事ライブラリが読み込まれたら、最新のバージョンを選択して保存します。
5. コードの作成
コード.jsに次のコードを貼付けます。
var CHATWORK_TOKEN = 'チャットワークAPIトークン'; var MAIL_TO = '通知先のメールアドレス'; function myFunction() { var rooms = getRooms(); if (!rooms) { Logger.log('rooms request failed'); return; } var mentionCount = 0; var body = ''; for (var i = 0; i < rooms.length; i++) { var room = rooms[i]; if (room.mention_num == 0) { continue; } mentionCount += room.mention_num; body += room.name + " (" + room.mention_num + ")\n" + getRoomUrl(room.room_id) + "\n\n"; } Logger.log('mentionCount: ' + mentionCount); if (mentionCount > 0) { sendMail(mentionCount, body); } } function getRooms() { var client = ChatWorkClient.factory({token: CHATWORK_TOKEN}); return client.get('/rooms'); } function getRoomUrl(roomId) { return 'https://www.chatwork.com/#!rid' + roomId; } function sendMail(mentionCount, body) { var subject = '[ChatWork] mention:' + mentionCount; MailApp.sendEmail(MAIL_TO, subject, body); }
コード先頭のCHATWORK_TOKENに2で取得したAPIトークンを、MAIL_TOに通知先のメールアドレスを設定して保存します。
そして一度実行させて、動作の確認と認証を済ませておきます。
6. トリガーの設定
無事動作することを確認したら、定期的に実行するようトリガーを設定します。
メニューから「リソース>現在のプロジェクトのトリガー」を選択し、実行間隔をお好みにあわせて設定します。
実行 | イベント | |||
myFunction | 時間主導型 | 分タイマー | 5分ごと | 通知 |
これでチャットワークに自分宛のメッセージがあれば、メールが届くようになるはずです。めでたしめでたし。
今回初めてGASを使ってみたのですが、常時起動させておくサーバーがなくても定期実行ができるので、ほんと便利ですねー。
Bowling Game KataをPHPUnitでやってみた
皆さんは『Bowling Game Kata』ってご存知ですか?
http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata
ボウリングのスコア計算プログラムをテスト駆動開発(TDD)で実装するもので、自分は恥ずかしながら知らなかったのですが、つい先日知るきっかけがあり、使い慣れたPHPでやってみました。
まずは、上記サイトの文頭にあるHereリンクからパワポをダウンロード。RequirementsおよびQuick designまで読んで、いざ実装開始!
そのときのソースコードが下記で、
https://github.com/ttaka/the-bowling-game-kata
実装後に型を見ながらもう一度やってみました。
型をやった後に自己流を見てみると、概ね同じ実装ではありますが、リファクタリングが足りてないですね...orz
パワポには、TDDの流れが順を追って記載されていて、何が悪いのかやリファクタリングにいたる考えなどの丁寧なコメントがあり、とても素晴らしいドキュメントです。
やったことない人はもちろんのこと、昔やったけどもう忘れちゃった人は、ぜひお好みのプログラミング言語とテスティングフレームワークでチャレンジしてみましょう!
Sinatra風PHPマイクロフレームワーク5つ
WebアプリケーションのモックやちょっとしたAPIサービスの作成用に、小粒なフレームワークを探してたところ、RubyのSinatraライクに作られたPHPマイクロフレームワークをまとめてあるスライドを発見!
http://johnsonpage.org/more/php-microframeworks/
同じアプリをそれぞれのフレームワークで記述した際のコードも記載されているので、比較しやすくて素敵な資料ですね。
ただ、作成日は2010年12月1日時点のようなので、2011年4月28日現在の状況を加味して、表にしてみました。
PHP Ver. | Document | Test | Latest Ver. | License | Size | 備考 | |
---|---|---|---|---|---|---|---|
Slim | 5+ | ○ | ○ | 1.3.3 | MIT | 小 | |
Limonade | 5+ | ○ | ○ | 0.5.1 | MIT | 小 | |
Fitzgerald | 5+ | △ | × | 0.3 | MIT | 極小 | 1ファイル |
Silex | 5.3+ | ○ | ○ | 7438550 2011-04-26 13:14:06 +0200 | MIT | 中 | Symfony2ベース |
Lithium as a microframework | 5.3+ | ○ | ○ | 0.9.9 | MIT | 中 | Lithiumベース |
一通りさくっと触ってみたところ、どれもフィルター・テンプレート・ヘルパーを提供し、フレームワークの規模感にあわせて、より機能が追加されてる感じです。
特にSilexとLithium as a microframeworkは、元となるフレームワークから必要最低限のコンポーネントを利用して実現している模様。
なお、無名関数が使えたほうが、記述もすっきりするので、PHP5以上で利用できるものでも、5.3以上で使ったほうがオススメです。
さて、この中のどれが良いかですが、どれもドキュメントやサンプルコードが充実(英語ですが……)しているため、それらを眺めてみたり、実際に触ってみたりして、自分に合いそうなのを選ぶのが一番いいかなーと。
なんといっても、どれも学習コストは低く、全部触ってもそれほど時間がかからないのが嬉しいですね!
GNU/Linuxディストリビューションで提供されている開発系ツールなどのバージョン
昨日はMac OS X 10.6.7で提供されている開発系ツールなどのバージョンについて調べたので、今日はGNU/Linuxのディストリビューションで提供されているコマンドラインツールやプログラミング言語などの各バージョンを調べてみました。
Debian 6.0 | Ubuntu 10.10 | CentOS 5.6 | |
---|---|---|---|
Apache | 2.2.16 | 2.2.16 | 2.2.3 |
Bash | 4.1.5(1)-release | 4.1.5(1)-release | 3.2.25(1)-release |
Bazaar | 2.1.2 | 2.2.1 | - |
Emacs | 23.2.1 | 23.1.1 | 21.4.1 |
GCC | 4.4.5 | 4.4.5 | 4.1.2 |
GDB | 7.0.1 | 7.2 | 7.0.1 |
Git | 1.7.2.5 | 1.7.1 | - |
Kernel | 2.6.32 | 2.6.35 | 2.6.18 |
Memcached | 1.4.5 | 1.4.5 | - |
Mercurial | 1.6.4 | 1.6.3 | - |
MySQL | 5.1.49 | 5.1.49 | 5.0.77 |
Perl | 5.10.1 | 5.10.1 | 5.8.8 |
PHP | 5.3.3 | 5.3.3 | 5.1.6 |
PostgreSQL | 8.4.7 | 8.4.7 | 8.1.23 |
Python | 2.6.6 | 2.6.6 | 2.4.3 |
Ruby | 1.8.7 (2010-08-16 patchlevel 302) | 1.8.7 (2010-06-23 patchlevel 299) | 1.8.5 (2006-08-25) |
Ruby on Rails | 2.3.5 | 2.3.5 | - |
Screen | 4.00.03jw4 (FAU) | 4.00.03jw4 (FAU) | 4.00.03 (FAU) |
SSH | OpenSSH_5.5p1 | OpenSSH_5.5p1 | OpenSSH_4.3p2 |
Subversion | 1.6.12 (r955767) | 1.6.12 (r955767) | 1.6.11 (r934486) |
Vim | 7.2.445 | 7.2.330 | 7.0.237 |
Zsh | 4.3.10 | 4.3.10 | 4.2.6 |
※「-」は標準のリポジトリでは未提供
Mac OS X 10.6.7で提供されている開発系ツールなどのバージョン
Mac OS Xには、UNIX系OSでお馴染みのコマンドラインツールやプログラミング言語が標準で提供されているので、とりあえず気になったもののみ、各バージョンを調べてみました。
なお、環境はMac OS X 10.6.7にXcode 3.2.6をインストールしています。
Version | |
---|---|
Ant | 1.8.2 |
Apache | 2.2.17 |
Bash | 3.2.48(1)-release |
Derby | 10.7.1.1 |
Emacs | 22.1.1 |
GCC | 4.2.1 (Apple Inc. build 5666) (dot 3) |
GDB | 6.3.50-20050815 (Apple version gdb-1515) |
Java | 1.6.0_24 |
JUnit | 4.8.2 |
Maven | 3.0.2 |
Perl | 5.10.0 |
PHP | 5.3.4 |
Python | 2.6.1 |
Ruby | 1.8.7 (2009-06-12 patchlevel 174) |
Ruby on Rails | 2.3.5 |
Screen | 4.00.03 (FAU) |
SSH | OpenSSH_5.2p1 |
Subversion | 1.6.15 (r1038135) |
Vim | 7.2.108 |
Zsh | 4.3.9 |
MacにHomebrew版Emacsをインストール
これまでEmacsは、
http://emacsformacosx.com/
のものを使ってたのですが、折角Homebrewをインストールしたので、移行することにしてみました。
また、ついでにMacEmacs JP Projectにて配布されているCarbon Emacs版インラインパッチも適用したかったので、
- http://d.hatena.ne.jp/cola-zero/20101113#1289638431
- http://molekun.blogspot.com/2011/03/homebrewemacs233.html
の記事を参考にやってみました。
Emacs用Formulaスクリプトの編集
inline_patchを適用するため、まずはHomebrewの設定ファイルを編集します。
$ brew edit emacs
エディタが起動したら、patchesの箇所を、次のように修正します。
diff --git a/Library/Formula/emacs.rb b/Library/Formula/emacs.rb index 2a84384..5bc6aa0 100644 --- a/Library/Formula/emacs.rb +++ b/Library/Formula/emacs.rb @@ -21,7 +21,10 @@ class Emacs < Formula def patches if ARGV.include? "--cocoa" and not ARGV.build_head? - "https://github.com/downloads/typester/emacs/feature-fullscreen.patch" + { + :p1 => "https://github.com/downloads/typester/emacs/feature-fullscreen.patch", + :p0 => "http://jaist.dl.sourceforge.jp/macemacsjp/47986/inline_patch-23.2-beta3.tar.gz" + } end end
Emacsの設定と確認
あとは、~/.emacs.d/init.el などに
(setq default-input-method "MacOSX")
を追加して、
/usr/local/Cellar/emacs/23.3/Emacs.app
を起動します。
日本語入力のオン・オフで、Emacsのモードラインが変化すればOKです。わーい。(^-^)/
親指シフト入力で問題発生
が!なんとKeyRemap4MacBookの親指シフトで「っ」「ゃ」「ゅ」「ょ」を入力すると、ミニバッファに
Args out of range: 0, 2
とエラーメッセージが表示され、入力中の文字が非表示に……。一応そのまま入力を続ければ、また表示されましたが、どうも「xtu」などの3文字のキーコードが発行されてる文字が駄目みたい。
ならばと、「ことえり環境設定」の「入力操作」の設定を「ローマ字入力」から「かな入力」に変更し、KeyRemap4MacBookの設定も「Oyayubi Shift Input」を「<かなモード>」に変更したところ、大丈夫になりました。ふー。
が!これで解決かと思いきや、今度は「英数+1」などで記号が入力できなくなりました……。ぐぬぬ。
また、どちらの入力操作でも、
(add-hook 'minibuffer-setup-hook 'mac-change-language-to-us)
はうまく動作しませんでした。しくしく。
うぅ、折角パッチあててビルドしたのに、哀しすぎる...orz
MacでCapsキーをFnキーに変更する方法
MacBook AirのJISキーボードは、最初からAキーの左隣にControlキーがあるので、Emacs使いには嬉しいですね。この位置にめったに使わないCaps Lockキーが配置してあると、ほんと泣けてきます……。
そんな左下のCaps Lockキーですが、たまに間違って押す事があるので、Fnキーに変更しようと思ったところ、「システム環境設定」の「キーボード」にある「修飾キー」の設定メニューからは、Control・Option・Commandキーにしか変更できません。
そのため、以下の方法を用いました。
1. KeyRemap4MacBookのインストール
Mac OS X用のキーボードリマッパーであるKeyRemap4MacBookを使いますので、インストールしていない方は、KeyRemap4MacBookのサイトからzipファイルをダウンロードし、pkgをインストールします。
なお、他のリマッパーとは併用できないので、ご注意ください。
2. PCKeyboardHackのインストール
同じサイトにて配布されているPCKeyboardHackもダウンロードしてインストールします。
3. 設定
再起動後、PCKeyboardHackの設定を次のようにします。
※Fnキーのkeycodeは「63」
次に、KeyRemap4MacBookの設定を
http://pqrs.org/macosx/keyremap4macbook/faq.html.ja#t1p0
に書かれているように有効にします。
上記の設定後にCaps+F1〜F12を押すと、輝度や音量コントロールなどができるようになります。
なお、MacBook Airでは、「Enable CapsLock LED Hack」を有効にしなくとも、大丈夫でした。
これで、左右どちらでも機能キーの操作ができるので、便利になりました。(^-^)v