BPStudy#55 でお話をさせて頂きました。

資料はこちら

いろいろアンケートしたののまとめ

Heroku使っている人

  • 3割

ソニックガーデンを知っている

  • 3割

言語

  • Ruby 4割
  • Python 4割
  • java,

役割

  • アプリケーション 7割
  • インフラ 1割
  • 企画 1割
  • マネージャー 1割

ってな感じでした。今まで話したことのあるRubyistが結構いた場所でしたが、前半で話したアジャイルなシステム開発の話は興味を持っていただけたようでした。

gemをインストールするときに、rdocがインストールされてうざい時ありますよね? 僕は、 rdoc.info でみるのでローカルにはいらない派です。

そんな時は以下の設定をしましょう。

~/.gemrc

gem: --no-ri --no-rdoc

Chrome Extensionは基本的に自動的にアップデートが行われ、常に最新版のバージョンが利用できるようになっています。 しかし、更新頻度は3時間から6時間程度に設定されているそうです。

開発などの際に、強制的にアップデートを行う方法がありますので、紹介します。

まずは、Extensionの管理画面を表示します。一番簡単に開けるのは、Extensionのアイコンの上で右クリックを押すと Manage extensions .. というメニューが表示されるのでそこをクリックするという方法だと思います。

Open Extension Management

次に管理画面を開いたら、画面上部に開発者モードに切り替えるチェックボックスがありますのでそちらをチェックすると、したにメニューが表示されます。そこからすぐにアップデートボタンをクリックすると最新版にバージョンアップが行われます。

Developer Mode

このような感じで簡単にアップデートが行えます。

youRoomで長いURLを入れると右にはみ出しちゃうというようなご指摘をいただいたので、どのように処理するのが一般的なのか?わからなかったので、ほかサイトではどのようにしているのか調べてみた。

まぁ、TwitterとFacebookを参考にすればよいでしょう。

Twitter

Twitter

CSSで

word-wrap: break-word

を指定している

Facebook

Facebook

CSSで

word-break: break-word
word-wrap: break-word

を指定している。

さらに、

<wbr></wbr><span class="word_break"></span>

を30文字ごとに挿入している。

結論

ということでyouRoomでは、シンプルに

word-break: break-word
word-wrap: break-word

を指定する形にしようと思います。

皆さん、TDDをやっていますか?

RailsでTDDをやる場合に、bundlerやRailsの初期ロードの時間などでテストを実行すること自体に時間がかかって、待ち時間が発生して非常にストレスに感じていました。

先日、そのアプローチとして @a_matsuda さんが interactive_rspec という gem をリリースして解決しようとしていることを聞きました。rails console 上で rspec を実行できるようにして、bundlerやRailsの初期ロード時間を短縮しようというのを目指しているそうです。

このgemを試してみたところ、確かにrspecをconsole上で実行でき軽快にTDDを実施できそうでした。しかし、たまに動きがおかしい状態になってしまっていました。まぁ、まだver0.0.1の状態なのでしかたないのですが。

そこで、一旦元に戻してこれまでの解決策のsporkを利用してやっていました。sporkは、drbで受け付けるテスト実行サーバのようなものです。しかし、これもそもそものrspecやrakeのコマンドの起動の初期ロードに時間がかかってしまい、遅く感じました。

もう少し調べたところ、 @jugyo さんのこのブログを見つけました。rspecやrakeのコマンドの起動時間を短くするために irb 上からdrbを直接叩くようにしてテストを実行してより高速にrspecを実行するようにしています。これを試したところ非常に快適でした!!

この方法にも、1点だけ面倒なところがありました。スクリプトを各アプリにインストールしないといけないのです。SonicGardenでは一人で複数のアプリ・プロジェクトを持つのでアプリごとにスクリプトをインストールするというのは大変です。なので、 @jugyo さんに確認してgemを作って、gemをインストールするだけでこの方法を利用できるようにしました!!
https://rubygems.org/gems/fast_spork_runner
https://github.com/mataki/fast_spork_runner

これでかなりテストの実行時間を待つということが削減できるようになりましたが、まだ少し気になる点が残っているので、このgemを改善してより快適につかえるようにしたいなぁっと思っています。

課題
  • sporkのプロセスとfast_spork_runnerを別々に起動する必要がある
  • sporkのプロセスを再起動するというのが面倒
fast_spork_runnerのプロンプトでsporkのプロセスの起動を管理できるようにできればいいなーっと思っています。

まぁ、現状でもかなり快適になるので、RailsでTDDをしていて、テストの実行が遅いなーという課題をお持ちの方は是非お試しください。


SonicGardenで提供しているyouRoomがこれまでいくつかブログなどで紹介されているのをまとめてみる。

札幌で働くフランス帰りのアパレル会社社長のBlog
youRoomにブログのファン・ルームを作ってみた。
http://ameblo.jp/ishii-shouji/entry-11052463633.html

Chromeアプリ100
http://chrome-100.com/youroom/

WEBマーケティング ブログ
社内の情報共有が活性化するシンプルなツール「youRoom」
http://web-marketing.zako.org/web-tools/best-discussion-tool-youroom.html

週アス PLUS
Chromeでメーリングリストのようなコミュニティーをつくれる youRoomで遊ぼう!!
http://weekly.ascii.jp/elem/000/000/055/55401/

ただのにっき
Google+ vs Facebook: 「一方的で非対称なグループ」はむしろ普通だよ
http://sho.tdiary.net/20110707.html

続けるお気楽アウトプット
youRoom をご存知ですか?
http://ameblo.jp/outputter/entry-10770845944.html

Publickey
企業向け無料マイクロブログ、日本人が開発した「youRoom」があった! つぶやくだけで無料プランがグレードアップ
http://www.publickey1.jp/blog/10/youroom.html

戦場クラスN戦闘記録
合作に youRoom というサービスが使えそう
http://class-niconico.blogspot.com/2010/12/youroom.html

組織開発のアガトン・コンサルティングのブログ
情報共有はyouRoomで決まり
http://ameblo.jp/agathon/entry-10741915631.html
社内SNSとメールの棲み分け
http://ameblo.jp/agathon/entry-10730106284.html

BacklogのAPIを利用したサービスとして、Happy Doneというサービスを作りました!BacklogはNulabさんが提供している課題管理ツールです。

以前、Pivotal Trackerでの開発をもっと楽しくするために課題が終わった時に音声で喝采を浴びせてくれるというRubyのスクリプトを作りました。

http://d.hatena.ne.jp/mat_aki/20100916/1284635001

これはわざわざRubyのスクリプトを走らせないといけないという決定的な問題がありました。今回この問題を解決する + MA7に申し込むために、Chrome ExtensionでBacklogの課題の完了時に喝采をしてくれるというものに書き換えました。Chrome Extensionにすることによりブラウザを起動するだけで動作するようになるので、設定が非常に簡単になりました。

Backlogを利用している方は、ぜひお試しください!課題を完了にするのが楽しくなることまちがいなし!今後は、Pivotal Trackerにも対応したいと思っています。

インストールはこちら
https://chrome.google.com/webstore/detail/gmljbkkdmaenpkmbkcmhojabmlbekpde


設定方法

まず、設定画面を開いてください。そこで入力項目がありますのでご自身のバックログのURLなどから適切に入力してください。

あとは、グレーアウトされているHappy Doneのボタンをクリックしていただければ定期的に最新情報を取得し、完了の課題があれば喝采を浴びせてくれるでしょう。

ソースコード
https://github.com/mataki/happy-done
pull request 待ってます。

jQuery pluginのTableをソートできたりページングしたりするものってたくさんありますよね。
今、その中でもシンプルで良さ気なプラグインの Flexigrid というものを利用しています。

Railsで利用する上で簡単に導入できるように表示用のjsonを返す事ができるようにするメソッドを定義するRailsプラグインを書いてみました。
https://github.com/mataki/acts_as_flexigrid

https://rubygems.org/gems/acts_as_flexigrid

使い方はREADMEにあるので、それを見ていただければと思います。これを使えば簡単にしゃれた使いやすいテーブルを作成できますよ。
HerokuでPostgresを利用しているとバックアップの仕組みなどが最初からアドオンで提供されており非常に便利です。PG BackupというAddonですね。


このAddonは、現在バックアップの定期取得がプライベートベータで公開されています。おそらく、申し込めば利用できるのですが現在公開されている有料版のプランでも$30/月となっており定期取得もリリースされたとしても少し割高に感じます。
また、このアドオンを利用した場合herokuが管理しているAmazon S3の領域にファイルがバックアップされます。このURLはherokuコマンドを打つことで、ダウンロードURLを取得できるのですが、バックアップを利用する時というのはおそらくHeroku自体がダウンした時になるはずでそのときにherokuコマンドを発行できるのかというと疑問です。そのため自分のS3の領域にそのバックアップファイルを移動させておくほうが安全であると思っています。

そこで、HerokuのDaily cronのAddonを利用して、定期取得する仕組みが公開されていたので、それを改良してさらに自分のS3の領域にバックアップをコピーする仕組みを作ってみました。


コードの変更は以下の行とファイルを追加します。

Gemfile
gem "heroku_backup_task", :git => "git://github.com/mataki/heroku_backup_task.git"

lib/tasks/cron.rake
require "heroku_backup_task/tasks"
task :cron => :heroku_backup_and_store_s3 if Rails.env.production?

簡単ですね。
後はherokuコマンドでaddonとconfigを追加すればOKです。Amazonのキーとbacketを設定してください。
heroku addons:add cron:daily
heroku config:add AWS_S3_SECRET_KEY="xxxx" AWS_S3_KEY_ID="xxxx" BACKUP_BACKET="backet-name"

以上で、設定は完了です。
これで日次で設定したS3のバケットに b001.dump という感じでファイルがどんどん保存されていきます。これでherokuが障害で操作不能に陥ってもデータを取り出すことができますね。

Recent Entries