ipynb smell(データ分析のcode smellを考える)
karino2
データ分析のコードはいろいろと新しい性質を持つので、従来の良いコードの前提や原則があまり有効で無い。
そこで新しい原則を作りたい。

ソースコードのリファクタリングの時のcode smellを参考に、ipynbのbad smellをまとめて、あるべき姿を提示してみる事を試みる。

ipynb smell「まだらな実行セル」
何かのタスクを実行しようと思ったとする。そこでノートブックを一つ開く。
この時、そのノートブックの中で上から順番にShift+Enterするだけなのが望ましい姿だ。
だが、いろいろな事情により、ノートブックの中程に、実行してはいけないセルがあったりする。
実行するべきセルと実行してはいけないセルが入り混じっていて、人間が選んでShift+Enterしなくてはいけない状態。
これがまだらな実行セル、というipynb smellだ。
一つや2つのセルを飛ばすのはオーケーだ。
ただ、飛ばすセルが三ヶ所になった時は、ノートブックを整理する事を検討しよう。

ipynb smell「実行前のたくさんのスクロール」
何かのタスクを実行する時に、それがノートブックの途中にあり、前半にある多くのセルが不要な事がある。
また、まだらなセルと同様に、何かを実行している時に間に大きく実行してはいけないセルがある。
これが「実行前のたくさんのスクロール」のipynb smellだ。
飛ばす範囲が一画面に治まっているならオーケー。
だが一画面を越えて飛ばす必要がある事に気づいたら、ノートブックの整理を検討しよう

「まだらな実行セル」や「実行前のたくさんのスクロール」は複数のタスクが一つのノートブックに入っている事が原因な事がほとんどだ。
この時は、「タスクごとにipynbを分割」のリファクタリングを行う事で解決出来ないか検討する。

ipynb smell「戻ってくるipynb」
あるタスクを実行する時、複数のノートブックにまたがっている事がある。
この時、所定の順番でシーケンシャルに一つずつノートブックを実行していけるのが望ましい状態だ。
だが、例えばA.ipynbを途中まで実行した後にB.ipynbを実行しなくてはいけない場所があり、その実行を終えた後にA.ipynbの続きを実行しなくてはいけない、という事がある。
これが「戻ってくるipynb」のipynb smellだ。
こうした入り組んだ実行手順は作業の効率低下だけでなく、作業の属人化や過剰なドキュメントを必要としてしまうなど、深刻な弊害を生む事が多い。

この場合はA.ipynbが分割されるべきなのに一つになってしまっている場合に起こりやすい。
ただ分割すれば良い場合と、一つのノートブックにせざるを得ない事情があってコードや「.pyへの括り出し」などいくつかのリファクタリングが必要な場合がある。

ここに挙げたipynb smellは、本家のcode smellと同様、ただちにリファクタリングが必要となる絶対的なルールという訳では無い。
これらのsmellがしたら、何故そうなっているのか、を少し自問する、きっかけと捉えて欲しい。

?

Log in

No account? Create an account