Hokkaido.pm 🍣x11
ブログ炎上	

@moznion
from Hachioji.pm
@moznion
大学院生 (退学失敗)
ソフトウェアエンジニア
(アルバイト)
今年の流行語
ではなくて
DevOps
Dev🔫Ops
or
Ops🔫Dev
Dev🔫Ops
or
Ops🔫Dev
Dev🔫Ops
or
Ops🔫Dev
Dev💕Ops
Dev🍣Ops
Dev🍺Ops
DevとOpsが協調
めでたい!
他に協調出来そうな
概念は無いだろうか
例えば
TestとDocumentの関係
Testとは?
ソフトウェアの正しい動作を
記述・表現・保証するもの
Documentとは?
正しいソフトウェアの
動作を定義・表現するもの
つまりTestもDocumentも
ソフトウェアの正しい動作に
着目している
DocumentとTestは
距離が近い
協調可能ではないか?
協調することによる
メリット
Documentの
不整合を防げる
破滅しない
Documentの
陳腐化からの卒業
DocumentとTestを
それぞれ書くよりも
コストを減らせる(かも)
アプローチ
1
Documentから
Testを生成する
2
Testから
Documentを生成する
第Ⅰ部
Documentから
Testを生成する
Documentがそのまま
Testと化すので
陳腐化を防げる
Documentを書く作業と
Testを書く作業が
分離しない
しかし
難しい
実現しようとすると
Documentが
冗長になる傾向
e.g. javadoc
Documentを書く
コストが格段に
跳ね上がる
そのコストはDocumentとTest
それぞれ分離して書いた時の
コストと比較してどちらが高い?
また, Documentから
生成するテストケースは
適切だろうか?
etc etc…
多分, Documentから
Testを生成するのは
あまり良い方法ではない
では生成するのを
やめてはどうか
DocumentとTestを
同居させるという手法
e.g.
DocTest (Python)
Test::Inline (Perl)
power-doctest (JS)
今回書いたやつ
Test::Synopsis::Expectation
https://metacpan.org/release/Test-Synopsis-Expectation
https://github.com/moznion/Test-Synopsis-Expectation
CPANモジュールの
Documentの中でも
非常に重要なSYNOPSIS
そのSYNOPSISを
Testする
SS
SYNOPSISの中に
テストケースを
同居させる
可読性もそこそこ高いので
人間が読んでも理解できる
もちろんDocumentも
陳腐化しない
Documentを書くと
Testも増えるという思想
割と良いのではないか
Documentから
Testを生成する
DocumentとTestを
同居させる
第Ⅰ部完
第Ⅱ部
Testから
Documentを生成する
r7kamura氏のautodoc
衝撃!!!
autodoc?
JSON APIのTestを書くと
APIのDocumentが
生成されるやつ
Testで動作が正しいことが
保証されているものが
そのままDocumentになる
正しいドキュメントが
必然的に得られる
APIとか代謝が早くて
Documentが追いつかない
ケースが多い
ただ, 健全な開発ならば
APIに対するTestは
存在しているはず
そのTestからDocumentを
生成することで
Docが遅れなくなる
で, 書いた
Test::JsonAPI::Autodoc
https://metacpan.org/release/Test-JsonAPI-Autodoc
https://github.com/moznion/Test-JsonAPI-Autodoc
細かな差異はあれど,
ほぼautodocのport
また, 似たコンセプトのものに
Shodoというのがあり…
後ほど説明が
あると思います
第Ⅱ部完
まとめ
TestとDocumentは
近い存在
協調できると思う
協調すると,
ドキュメントの破滅
などから救われる
TestとDocumentを
同居させる方法と
TestからDocumentを
生成する方法は
割と良いのではないか
双方の使い分けは
ドメインに応じて
という感じ
2013 DevOps
⇩
2014 DocTest
Doc🍣Test
Any Q?

Hokkaido.pm #11