valid,invalid

関心を持てる事柄について

automaildoc gem でメール一覧と文面を自動生成する

RSpec からメール一覧を自動生成する gem を書いてみた。

github.com

使い方

gem を install したのちコマンドラインから AUTOMAILDOC=1 rspec を走らせるとメールを一覧表示するHTMLを生成する。

https://user-images.githubusercontent.com/1811616/29994112-c6dacbc6-9002-11e7-812f-a346d415d6c4.gif

名前も設計もほとんど autodoc を参考にしている。

背景・課題

「法務・ブランドチェックが入るのでメールを確認したい」

「新たに送信するメールの文面考えるので類似メールの文面見られますか?」

「この前もらったメール文面のプレミアムユーザー版だとどうなりますか?」

プロダクトマネージャーやビジネスサイド、カスタマーサポートなどのステークホルダーからのこうした問合せには、開発者がコードや I18n の翻訳ファイルを見たりしつつ都度回答してきた。

しかしA/BテストやCS要望のために少なくない頻度で内容がアップデートされたり、日々の開発で気づかないうちにメールが増えたり減ったりするし、同じメールでもコンテキストに応じて変わる内容を追従できていなかったりと諸々問題がありそうだった。

この課題に対する解決策として同僚の yuya-takeyama さんが autodoc みたいに RSpec から自動生成したら便利なのではというアイディアを出し、tanaka51 さんが 20 percent policy 的な時間でプロトタイプを作ってくれていた。7月に tanaka51 さんが退職されて以降この課題が放置されていたのだが再度「メール一覧見たい」という要望を受けた際にこれを思い出してガッと gem 化してみた。

HTMLメールがきちんと表示されない問題があるが近日中に直す。version 0.1.3 で表示されるようにした。

現状

会社のレポジトリに automaildoc を突っ込んで「こんなのできますがどうですかね」と [RFC] ラベル付き pull request を投げてみたところ「やってみましょう」と即マージされた。ありがたい。

課題

生成されたHTMLをどう共有するか

秘匿性の高いものはまた別のやり方が必要だが、/doc/mails/toc.htmlGitHub pages で公開するのが最も簡単そう。

定期的に更新する仕組み

全部コマンドラインで完結するので Jenkins などで定期的に生成して pull request を自動で push すると良さそう。

個々の開発をフックにするなら Git hook が使えそう。pre-commit hook で変更されたファイルをチェックし、 mail spec や翻訳ファイルに変更があれば rspec を走らせてドキュメントを自動生成する…と書いていて思ったが結構面倒くさそう。

mail ごとの rspec を書かないといけない

ツールに合わせた開発はしたくない。が、request spec と違って mail spec 自体に込み入ったロジックや fixture を用意するケースはほとんどなく、もともとさらっと書いてあれば導入の費用対効果は悪く無さそう。

感想

運用やめたら「automaildoc やめた」という記事を書きます。