読者です 読者をやめる 読者になる 読者になる

TDDBC Toyama にスタッフとして参加してきました

2月18, 19日に開催された、TDDBC Toyama #1 にスタッフとして参加してきました。(もう一ヶ月近くたってしまった...)

多くの方に参加して楽しんでいただけたようなので、よかったです。

@hikaruworld さん主催ありがとうございました。

@t_wada さんいそがしいところ遠いところまで来ていただきありがとうございました。

tddbc.connpass.com

このブログがなぜ1ヶ月後になったかというと、後述する2日目に使用したレガシーコード改善の題材としてソースコードを公開できるようにライセンスつけたり、git log にも意味を持たせたりしていたからです(言い訳です)

TDDBC Toyama 開催のきっかけは去年の 

Agile Japan 2016 北陸(富山)サテライト - AgileJapan北陸 | Doorkeeper で私が発表した内容から懇親会でもりあがって @hikaruworld さんがやろうと動いてくださったのがきっかけだったはずなので、とても思い入れのあるイベントとなった。

きっかけになったであろうスライド

speakerdeck.com

参加者として感じたこと

@t_wada さんの基調講演では、"重複あるテストコードはテストのメンテナンスコストがかかるので、テストコードもDRYにしていくことが必要になってきた" という内容が印象的で、デベロッパーテストとして書いたテストコードを整理してDRYにしておかないと後々テスト実行速度を遅くする原因にもなるし、テストコードのメンテナンスコストも高くなるということが響いた。自分は少し書きちらかすところもあったので、気をつけたいと思った。

ペアプロ時にはテストレポーティングとしてのドキュメントにあまり気をつけれていない感じだったので、日々の実行にも  rspec -fd で実行して気をつけていきたい。

スタッフとしてやったこと

2日目に利用するLifeGameのコードの作成を @hikaruworld さん @mugi-uno さんと相談しながら、Toyama.rb の meetup 中に作成した。それぞれの言語で各々作成するという感じだったが、最終的にはほぼ同じコードになるように書き方やコメントなどを調整した。このコードは意図的にブリンカーしか動かないようにバグが入れてあったり、コメントが嘘付いていたり、重複があったりと仕事としてコードを引き継いだときに「マジかよ」と言いたくなるようなコードに仕上げた。

当日は、これバグっぽいけどどう扱おうのような会話が聞こえて、そうそうと思いながら少しうれしかった。

ソースコード公開するにあたり

当日使用したコードから今後使われるならこういう風になっていた方がよさそうというのがスタッフふりかえりで出たので、以下を盛り込んだ。

  • 各言語のリポジトリに分けてgit logに意味をもったログにする
  • 各言語をまとめるリポジトリを作成して、submoduleとして各言語を保持する
  • まとめリポジトリにコードの背景やレガシーコード改善のお題としてのシナリオを追加する

まとめのリポジトリ

GitHub - tddbc/lifegame: TDDBCでのレガシーコード改善を行うためのサンプルコード

にあるので興味ある人はご覧ください。

 

最後には集合写真をとりました。皆様参加していただきありがとうございました。

idobata.io のキーボードショートカットを今更ながら使ってみた

ずっと Vimium (chrome の extension)を使用していたので、 idobata.io のキーボードショットカットを使ってみました。

http://blog.idobata.io/post/95447875962

とても便利だったので、記録しておこうと思いました。
とくに "t" の Timeline への移動と "." の次の未読ルームへ移動が便利すぎます。
自分のようにサービスが用意しているキーボードショートを使ってなかった人は是非使ってみてほしいなと思いました。

Funtoo で日本語入力する方法

Funtoo インスートルした時にいつも困ってたのが、日本語入力...
以前に以下で入力できるって書いた。

```
$ sudo emerge -av uim imsettings && imsettings-switch uim
use flag +skk
$ uim-pref-gtk3
```

ただ上だけだと imsettings の build に失敗するので困っていた。
@mtsmfm に助けてもらい libgxim-0.5.0 をマスクしないといけないことが分かった。ありがとうありがとう。

ということで、以下で日本語入力できるようになった。

```
$ sudo echo '>=x11-libs/libgxim-0.4.0' > /etc/portage/package.mask
$ sudo emerge -av uim imsettings && imsettings-switch uim
use flag +skk
$ uim-pref-gtk3
```

see: https://bugs.gentoo.org/show_bug.cgi?id=521840

Ubuntu 14.04 で gem install rmagick

imagemagick をインストールしたのに rmagick のインストールに失敗して、調べたけど現在どのパッケージを入れるのがいいかパッと分からなかった。

```
$ sudo aptitude install imagemagick
$ sudo aptitude install libmagick++-dev
$ gem install rmagick
```

上記でインストールできました

大江戸Ruby会議04 で発表してきました

ホールの様なところで話すのは始めてだったので、かなり緊張しました。
人生で一番多くの人の前で話したような気がします。

発表では、ライブコーディングしましたが、コーディング内容も含めたスライドを公開しておきます。

https://speakerdeck.com/kunitoo/1nian-kaketegemwo1tuzuo-rimasita

rgitlog を使っていただけたり、フィードバックいただけると嬉しいです。

とてもいい経験ができました。ありがとうございました。

rgitlogのバージョンを上げました

以前のバージョンでは grit という gem に依存していたのですが、Ruby 2.0 以降に対応していなかったり、PRがマージされなかったりといろいろあったので、悩ましい感じでした。

"Grit is no longer maintained. Check out rugged." と共にPRがClose されたので、rugged に移行することにしました。
(https://github.com/mojombo/grit/pull/183)

色々と試行錯誤しながら触っていたので、時間がかかりましたが、それなりに期待通りの動きになったような気がします(テストがない...)

もうそろそろテストを書き、機能追加していこうと思います。

機能としては以下を追加していこうと思います。

  • ブランチ一覧表示
  • ブランチ切り替え

rgitlogというgemをリリースしました

Rails Engineを使ったgemを作りたいなーと思いつつ、アイディアがなかなか出ずに半年くらい経てやっとgemをリリースすることができました。

rgitlogでなにができるかというと、Railsアプリのmasterのcommit messageが http://localhost:3000/rgitlog とかで見れるというだけのgemです。まだやりたいことはあるので、それについてはまた後日書こうと思います。

gemを作ろうと思い始めたころは、壮大なことをやろうとしていて、自分の技術力だと無理そうだったので、しばらく断念していました。
今の形のものを作ろうと思ってからは、出きあがるまではわりとはやかったです。

興味のあるひとは使ってみてください。
https://rubygems.org/gems/rgitlog

余談:初めてgemを作ったのですが、自分より早くダウンロードしてる人がいてびっくりしました。おそらく https://twitter.com/rubygems/status/411804179158822912 のおかげなんだなーと思いました。