Notebookの、再現性、共有のしやすさ(理解のしやすさ)などの指標を作れないか・・・指標があれば、Notebook改善の会話ができる(はず) ふむふむ、指標と言うことで コミュニケーションのレベル ってのを記してみました to describe automated operations as live code
to share predicted and reproducible outcomes among technical and non-technical alike in the form of narrative stories
と表明しているわけだから、その成果物の中心となるNotebookのメトリクスとしては、
Traceability and Reproducibility
Intelligibility(理解容易性?)
になるのかと想像。であれば、例えば、それぞれに対して以下のような指標が設定できるかもしれない。
Traceability and Reproducibility
Level 1 (実行証跡) ... 操作がNotebookに書き下されており、各々のCellの出力がNotebookに保存されている状態。パラメータ化・GUI使用などは問わない。何を行ったかの証跡として利用可能なNotebook
Level 2 (再利用可能性) ... Notebookの操作に関わるパラメータが特定のCellに局所化されている。このパラメータさえ書き換えれば、他のCellは書き換えなくて良い、となっている状態。同じようなことを繰り返し機械的に実施可能なNotebook。(先行するCellの結果を受けて、次のCellを手で書き換える、という状態がないことが望ましい?)
Level 3 (結果の再現性) ... 事前・事後条件のテストコードがNotebookに埋め込まれており、各々の条件が満たされない場合には適切に停止する状態。結果の再現性を保証するための考慮がなされたNotebook (しかし、完璧に保証しなくても良い)
Intelligibility(?) なんか不自然な感じ.. 例えば rationality とかじゃないのかなぁ
Level 1 (経緯と結果) ... この操作の実施に至った経緯と、操作を行ったことによる結果が記述されていること。いつ、誰が、何をが記載されていることが重要。(どうやって、はCellを読めばわかるだろうという割り切り) また、Notebookを実行した結果、うまくいったのか、いっていないのか、その判断根拠が記載されていること。
Level 2 (横断的な説明) ... (Notebookが複数集まって特定のシステム操作を表現していることを前提として、)対象システムのアーキテクチャに関する説明(収容設計含む)、Notebook間のフロー図など、全容の把握に必要なNotebookを備えていること
Level 3 (方式) ... Code Cellが実現している処理に関して、何を意図していたのか、その処理に至った理由、結果の解釈に関する説明が記述されていること。自明と思われるCode Cellに関しては記載不要
他にも、信頼性みたいな指標も欲しくなるかな・・・でも、できるだけ少ないメトリクスで語れるようになりたい・・・(あえて、わかりやすさ重視)
例
Ansible Playbookによる高い再現性・全体説明はちょっと不足かも?
全体説明はそれなりに十分と思うが、Installで一部失敗した際の事前条件説明が不十分な点あり(前後から推測はできるが)
Notebookごとの関係性についてはあまり言及せず。失敗時の処理もちょっと不十分かも?