GitHub Pages + Middlemanで目に優しくない自己紹介ページを作った。
お腹が痛い人を集計するPonpetterをリリースした。
通勤中に腹痛に襲われる事はよくあると思うのですが、
世の中には一体どれくらいお腹が痛い人が存在するのか気になり集計するWebアプリを作成しました。
Ponpetter
http://ponpetter.herokuapp.com/
構成
ソース https://github.com/yassun/ponpetter
開発中のトピック
Redis To Go
Heroku上でRedisを使用するためのアドオンです。
無料プラン(nano
)を使用する場合でもクレッジカードの登録が必須でした。
nano
はサイズが5MB、コネクション数が最大10となってます。
今回はスケジューラ用のコネクションを必ず確保したかったので、 Webアプリ起動時にスレッドを起動して常駐させる作戦をとりました。
Tweet集計スケジューラ
通常Heroku上でスケジューラを使用する場合はHeroku Scheduler
を使用します。
ですが、スケジューラ利用時間もDynoの利用時間に加算されるため750時間の無料時間を超える可能性がありました。
その回避策として、Webアプリ起動時に別スレッドで動き続けるループをEventmachine
のEM::defer
で作成し、
そこから集計スケジューラを呼び出しました。
HerokuのSinatraにバックグラウンドワーカーを詰め込んで節約
NewRelicを使用してHerokuのアイドル状態を回避
NewRelicのAvailability monitoring
にサイトURLを指定することにより定期的にリクエストが来るためアイドル状態になる事を回避できます。
NewRelicの導入方法については公式を参照 https://devcenter.heroku.com/articles/newrelic#ruby-installation-and-configuration
Websocket
Heroku上でWebsocket
に対応したアプリを作成する方法については公式にfaye/websocket
を用いた詳細な解説とサンプルアプリがあったのでそちらを参考にしました。
https://devcenter.heroku.com/articles/ruby-websockets
https://github.com/heroku-examples/ruby-websockets-chat-demo
React.js
最初はjQueryで実装していたのですが、せっかくなので最近話題のReact.js
に変更しました。
ページ構成要素も少ないので簡単に対応できました。
グラフ描画やwebsocketの接続等のsetState
で変更させない部分について等、
まだまだセオリーが掴めてないです。
Travice CI
phantomjs
のバージョン問題でReact.js
のテストが失敗する事象にとてもハマりました。
後日、解決策をQiitaに書きました。
Travis Ci上でReact.jsのプロジェクトをPhantomJSでテストした場合にFailする現象
まとめ
こんなにお腹が痛い人がいるとは思いませんでした。
かぐや姫の御門登場時にすごい勢いで増えてウケました。
よろしければトイレでツイートしてみてください!
最近作ったRubotyのPlugin等
しばらく前ですが、Slackに音也(Ruboty)を導入しました。
そこで作成したPlugin達の紹介。
ruboty-romaji
日本語をヘボン式または訓令式 のローマ字に変換してくれるやつ。
https://github.com/yassun/ruboty-romaji
ruboty-instagram
instagramから指定したキーワードで画像を検索してくれるやつ。
https://github.com/yassun/ruboty-instagram
ruboty-xa
文章に草を生やしてくれるやつ。
https://github.com/yassun/ruboty-xa
ruboty-qanda
Docomo の知識Q&A APIを利用して質問に回答してくれるやつ。
https://github.com/yassun/ruboty-qanda
ruboty-kinkakuji
金閣寺の写真が見れるやつ。
2014年振り返り
Perl。
前年から引き続きPerl書いてました。
PerlでWebアプリをリリースした。
仕事ではバッチ系の処理が多かったのですが、
プライベートでmojoliciousやRedisを使ったWebアプリを作成しました。
スマホ対応をやってみたりとしたのですがあまり人が集まらず早々に閉鎖しました。
後述するLTのネタとかに繋がったので良かったです。
iPhoneアプリをリリースした。
仕事ではあまり触れない分野に挑戦しようとcocos2d-xに挑戦しました。
途中心が折れそうになりましたがなんとかリリースまで辿り着けて良かったです。
まさかの指がシリーズ化。
LTに登壇した。
初めて社外でLTをしました。
今後も積極的に参加したいです。
Gotanda.pm #2 でLTしてきました。
#chibapm 5でLTしてきました。
Genesis Lightning Talks vol. 48
ISUCONに挑戦した。
ISUCON4予選にGo(?)で参加しました。
初参加でしたがとても楽しめました。
RubyとRailsを始めた。
Rails、Ruby関係で最近読んだ本まとめ。
RailsでYasubeeFriendsを作った。
Rails4.1で世界の写真を表示するやつを作った。
草活動を始めた。
いい感じで習慣化してきました。
この調子で続けて行きたいです。
社内スタートアップ的な事をして失敗した。
社内で新規サービスの立ち上げに携わりました。
そして色々あって失敗しました( ˘ω˘)
とても貴重な経験をすることが出来ました。
ぐぬぬ。
まとめ
来年もがんばるぞい。