多くの専門データ科学者は、Jupyterノートブックを使用して、予備データ探査からモデルプロトタイピングまで、毎日のタスクを達成しています。ノートブックのインタラクティブ性は、データ中心のプログラミングに特に便利であり、それらの自己文書的な性質は、分析結果のコミュニケーションに優れたサポートを提供します。
それにもかかわらず、Jupyterノートブックは、悪いプログラミングの習慣を誘発し、ソフトウェアエンジニアリングのベストプラクティスをほとんどサポートしていないことで批判されてきました。ノートブックから本当に恩恵を受けるために、ユーザーは一般的な落とし穴を認識し、それらを防ぐ方法を学ぶ必要があります。
以前の作業(「計算ノートとのコラボレーションのためのベストプラクティスの誘発」[1]を参照)では、専門的なコンテキストでノートブックを共同で使用するための17の経験的に検証されたガイドラインのカタログを紹介しました。
これらのベストプラクティスの採用を促進するために、Pythonで書かれたJupyterノートブック用の静的分析ツールであるPynblintを作成しました。 Pynblintは、潜在的なノートブックの欠陥を明らかにし、是正措置を推奨します。スタンドアロンCLIアプリケーションとして、またはCI/CDパイプラインの一部として操作できます。
Pynblintのコアリントルールは、カタログからのベストプラクティスの運用として導き出されています。それにもかかわらず、Pynblintのプラグインアーキテクチャにより、ユーザーは独自の糸くずルールでコアセットのチェックセットを簡単に拡張できます。
Python 3.7+。
Pynblintは、 pipまたは別のPYPIパッケージマネージャーでインストールできます。
pip install pynblintインストール後、ツールのコマンドラインインターフェイスを探索することをお勧めします。
pynblint --helppynblintを使用して分析できます。
スタンドアロンノートブック:
pynblint path/to/the/notebook.ipynbノートブックを含むコードリポジトリ:
pynblint path/to/the/project/dir/ (おそらく.zipアーカイブとして圧縮されています):
pynblint path/to/the/compressed/archive.zipノートブックを含むパブリックGithubリポジトリ(プライベートリポジトリのサポートがロードマップにありますか?):
pynblint --from-github https://github.com/collab-uniba/pynblint利用可能なオプションの詳細については、プロジェクトのドキュメントを参照してください。
Pynblintは現在、22の糸くずのルールを実装しています。
これらのルールは、共同ノートブック開発のためのベストプラクティスの包括的なカタログから派生しています[1]。以下は、各ベストプラクティスに関連付けられた糸くずのルールの現在の実装状態です。
| [1]からのベストプラクティス | 状態 | 詳細 |
|---|---|---|
| 1.バージョン制御を使用します | ✅完了します | 完全に実装されています |
| 2。プロジェクトの依存関係を管理します | ✅完了します | 完全に実装されています |
| 3.自己完結型環境を使用します | ⏳進行中: | 計画:の検出 -Python仮想環境(たとえば、 venv 、 pyenv 、またはcondaで作成)- コンテナ化された環境(例、Docker)。 |
| 4.最初に輸入を入れます | ✅完了します | 完全に実装されています |
| 5.再実行性を確保する(上から下へのノートブックの再実行) | ✅完了します | 完全に実装されています |
| 6.コードをモジュール化します | ?部分的 | 現在:ノートブック内のモジュール化構築物の検出。 計画:検出されたパターンに基づいたモジュール化中心のリファクタリング推奨事項 |
| 7.コードをテストします | ?部分的 | 現在:カバレッジデータのリポジトリレベルの検出。 計画:カバレッジツールとは無関係にテストモジュール/関数の検出 |
| 8。ノートブックに一貫して名前を付けます | ✅完了します | 完全に実装されています |
| 9。コーディング標準に固執します | ?部分的 | 電流:無効なPython構文を持つセルの検出。 計画:Pylint、Flake8、RuffなどのPythonリナーの統合 |
| 10。相対パスを使用します | ⏳進行中: | 計画:ノートブック内の絶対パスインスタンスの識別と、対応する相対パスの推奨 |
| 11.分析を文書化します | ✅完了します | 完全に実装されています |
| 12。ノートブックを構築するためにマークダウン見出しを活用します | ✅完了します | 完全に実装されています |
| 13。ノートブックを清潔に保ちます | ✅完了します | 完全に実装されています |
| 14.ノートブックを簡潔にしてください | ✅完了します | 完全に実装されています |
| 15.生産と開発のアーティファクトを区別します | 計画されていません | 実行不可能とみなされる実装(以下のメモを参照) |
| 16.ノートブックを利用できるようにします | ⏳進行中: | 計画:Pynblintは、その構成で公開されているとマークされたノートブックがオンラインで入手可能であることを確認します |
| 17.データを利用可能にします | ✅完了します | 完全に実装されています |
注:ノートブックまたはリポジトリの静的分析を通じてこの区別を決定するための客観的な基準がないため、ベストプラクティス#15(生産/開発アーティファクトの区別)は実装されません。
このプロジェクトは、MITライセンスの条件に基づいてライセンスされています。
[1] Luigi Quaranta、Fabio Calefato、およびFilippo Lanubile。 2022年。計算ノートブックとのコラボレーションのためのベストプラクティスを引き出す。 Proc。 ACM Hum.-Comput。交流する。 6 、CSCW1、第87条(2022年4月)、41ページ。 https://doi.org/10.1145/3512934