RSpec からメール一覧を自動生成する gem を書いてみた。
使い方
gem を install したのちコマンドラインから AUTOMAILDOC=1 rspec
を走らせるとメールを一覧表示するHTMLを生成する。
名前も設計もほとんど 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.html
を GitHub pages で公開するのが最も簡単そう。
定期的に更新する仕組み
全部コマンドラインで完結するので Jenkins などで定期的に生成して pull request を自動で push すると良さそう。
個々の開発をフックにするなら Git hook が使えそう。pre-commit hook で変更されたファイルをチェックし、 mail spec や翻訳ファイルに変更があれば rspec を走らせてドキュメントを自動生成する…と書いていて思ったが結構面倒くさそう。
mail ごとの rspec を書かないといけない
ツールに合わせた開発はしたくない。が、request spec と違って mail spec 自体に込み入ったロジックや fixture を用意するケースはほとんどなく、もともとさらっと書いてあれば導入の費用対効果は悪く無さそう。
感想
会社プロダクトに自作 gem をブチ込む、という密やかな野望があったのですがようやく達成しました
— 広島の粗大ゴミ (@ohbarye) 2017年9月7日
運用やめたら「automaildoc やめた」という記事を書きます。