「ラフと共にパイソンのコーディングスタイルを高める」

「ラフなスタイルにパイソンのコーディングスキルを磨く」

Ruffとは

Ruffは、Rustで書かれた非常に高速なPythonのリンタとフォーマッタであり、Flake8やBlack、isortなどの既存のツールを置き換え、改良することを目指しています。700以上の組み込みルールと人気のプラグインの再実装を通して、パリティを維持しながら10-100倍の高速性能を提供します。

Ruffは、3.12互換性と`pyproject.toml`をサポートしています。自動修正サポート、キャッシング、エディタの統合も提供しています。Ruffはモノレポに対応し、PandasやFastAPIなどの主要なオープンソースプロジェクトで使用されています。速度、機能性、使いやすさを組み合わせることで、Ruffは既存のオプションよりも桁違いに高速なリンティング、フォーマット、自動修正を統一したツールとして統合しています。

Ruffのはじめ方

PIPを使用して`ruff`を簡単にインストールできます。

pip install ruff

どれくらい簡単かつ速くRuffを実行できるかをテストするために、DagHubリポジトリ kingabzpro/Yoga-Pose-Classificationを使用できます。これをクローンするか、または独自のプロジェクトをフォーマットするために使用できます。

まず、プロジェクトにリンタを実行します。ファイルの場所に「.」を置き換えることで、単一のファイルに対してもリンタを実行できます。

ruff check .

Ruffは、9つのエラーと1つの修正可能なエラーを特定しました。エラーを修正するためには、–fixフラグを使用します。

ruff check --fix .

修正可能なエラーが1つ修正されたことがわかります。 プロジェクトのフォーマットには、 `ruff format`コマンドを使用します。

$ ruff format .>>> 3つのファイルが再フォーマットされました

Ruffのリンタとフォーマッタは、コードに多くの変更を加えました。しかし、それらのツールはなぜ必要なのでしょうか?その答えは簡単です – コーディングの標準と規約の強制に有益です。その結果、あなたとあなたのチームはコードの重要な側面に集中することができます。さらに、これらのツールはコードの品質、保守性、セキュリティを向上させるのに役立ちます。

Jupyter Notebookのリンティングとフォーマット

RuffをプロジェクトのJupyter Notebookに使用するには、`ruff.toml`ファイルを作成し、次のコードを追加する必要があります。

extend-include = ["*.ipynb"]

同じことを`pyproject.toml`ファイルでも行うことができます。

その後、コマンドを再実行して、Jupyter Notebookファイルに変更が加わっているのを確認します。

2つのファイルが再フォーマットされました。また、3つのノートブックファイルがあります。

$ ruff format .>>> 2つのファイルが再フォーマットされ、3つのファイルが変更されていません

 

また、`check`コマンドを再度実行することで、これらのファイルの問題も修正しました。 

$ ruff check --fix .>>> エラーが51件見つかりました(修正済み6件、残り45件)。

 

最終的な結果は素晴らしいです。コードを壊さずに必要な変更がすべて行われました。 

 

 

Ruffの設定

 

リンターとフォーマッターの設定を調整するために、Jupyter Notebooks向けにRuffを簡単に設定できます。詳細については、Ruffの設定ドキュメントを参照してください。 

target-version = "py311"extend-include = ["*.ipynb"]line-length = 80[lint]extend-select = [  "UP",  # pyupgrade  "D",   # pydocstyle][lint.pydocstyle]convention = "google"

 

GitHub Action &  Pre-commit Hook

 

開発者やチームは、`ruff-pre-commit`を使用してRuffをプレコミットフックとして使用することができます:

- repo: https://github.com/astral-sh/ruff-pre-commit  # Ruffのバージョン。  rev: v0.1.5  hooks:    # リンターを実行する。    - id: ruff      args: [ --fix ]    # フォーマッターを実行する。    - id: ruff-format

 

`ruff-action`を使用してGitHub Actionsとしても使用できます:

name: Ruffon: [ push, pull_request ]jobs:  ruff:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v3      - uses: chartboost/ruff-action@v1

 

Ruff VSCode拡張機能

 

Ruffの最も楽しい側面は、VSCode拡張機能です。これにより、サードパーティの拡張機能を必要とせずに、フォーマットとリントを簡単に行うことができます。単に拡張機能マーケットプレイスで Ruff を検索してインストールしてください。

  Ruff – Visual Studio Marketplace 

私は`setting.json`を設定して保存時にフォーマットされるようにしています。

 

結論

 

Ruffは、よりクリーンで一貫性のあるPythonコードのための高速なリントとフォーマットを提供します。700以上の組み込みルールがRustで再実装され、パフォーマンスを向上させるために、RuffはFlake8、isort、pyupgradeなどの人気ツールからインスピレーションを得て、包括的なコーディングのベストプラクティスを強制します。キュレーションされたルールセットは、過剰な細かい指摘なしでバグや重要なスタイルの問題を見つけることに重点を置いています。

プレコミットフック、GitHub Actions、VSCodeなどのエディタとのシームレスな統合により、Ruffを現代のPythonワークフローに組み込むことは簡単です。非常に高速で注意深く設計されたルールセットにより、Ruffは迅速なフィードバック、クリーンなコード、円滑なチーム協力を重視するPython開発者にとって必須のツールとなります。素早いパフォーマンスと豊富な機能を兼ね備えたRuffは、Pythonリントとフォーマットの新たな基準を設定します。  

****[Abid Ali Awan](https://www.polywork.com/kingabzpro)**** (@1abidaliawan) は、機械学習モデルの構築が大好きな認定データサイエンスプロフェッショナルです。現在は、機械学習やデータサイエンス技術に関する技術ブログを作成しています。Abidはテクノロジーマネジメントの修士号と通信工学の学士号を持っています。彼のビジョンは、メンタルヘルスの問題に苦しむ学生向けにグラフニューラルネットワークを使用したAI製品を開発することです。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

人工知能

「ゲイリー・ヒュースティス、パワーハウスフォレンジクスのオーナー兼ディレクター- インタビューシリーズ」

ゲイリー・ヒュースティス氏は、パワーハウスフォレンジックスのオーナー兼ディレクターであり、ライセンスを持つ私立探偵、...

人工知能

「UVeyeの共同設立者兼CEO、アミール・ヘヴェルについてのインタビューシリーズ」

アミール・ヘヴァーは、UVeyeのCEO兼共同創設者であり、高速かつ正確な異常検出により、自動車およびセキュリティ産業に直面...

データサイエンス

「2023年にデータサイエンスFAANGの仕事をゲットする方法は?」

データサイエンスは非常に求められる分野となり、FAANG(Facebook、Amazon、Apple、Netflix、Google)企業での就職は大きな成...

人工知能

ギル・ジェロン、Orca SecurityのCEO&共同創設者-インタビューシリーズ

ギル・ゲロンは、オルカ・セキュリティのCEO兼共同設立者ですギルは20年以上にわたりサイバーセキュリティ製品をリードし、提...

人工知能

「ナレ・ヴァンダニャン、Ntropyの共同創設者兼CEO- インタビューシリーズ」

Ntropyの共同創設者兼CEOであるナレ・ヴァンダニアンは、開発者が100ミリ秒未満で超人的な精度で金融取引を解析することを可...

人工知能

ジョナサン・ダムブロット、Cranium AIのCEO兼共同創設者- インタビューシリーズ

ジョナサン・ダムブロットは、Cranium AIのCEO兼共同創業者ですCranium AIは、サイバーセキュリティおよびデータサイエンスチ...