Hokkaido.pm #11
-
Upload
moznion -
Category
Technology
-
view
1.924 -
download
0
description
Transcript of Hokkaido.pm #11
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::Expectationhttps://metacpan.org/release/Test-Synopsis-Expectationhttps://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::Autodochttps://metacpan.org/release/Test-JsonAPI-Autodochttps://github.com/moznion/Test-JsonAPI-Autodoc
細かな差異はあれど, ほぼautodocのport
また, 似たコンセプトのものに Shodoというのがあり…
後ほど説明が あると思います
第Ⅱ部完
まとめ
TestとDocumentは 近い存在
協調できると思う
協調すると, ドキュメントの破滅 などから救われる
TestとDocumentを 同居させる方法と
TestからDocumentを 生成する方法は
割と良いのではないか
双方の使い分けは ドメインに応じて
という感じ
2013 DevOps ⇩
2014 DocTest
Doc🍣Test
Any Q?