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

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

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

AIニュース

Q&A:ブラジルの政治、アマゾンの人権、AIについてのGabriela Sá Pessoaの見解

ブラジルの社会正義のジャーナリストは、MIT国際研究センターのフェローです

人工知能

ピーター・マッキー、Sonarの開発者担当責任者-インタビューシリーズ

ピーター・マッキーはSonarのDeveloper Relationsの責任者です Sonarは、悪いコードの1兆ドルの課題を解決するプラットフォー...

人工知能

スコット・スティーブンソン、スペルブックの共同創設者兼CEO- インタビューシリーズ

スコット・スティーブンソンは、Spellbookの共同創設者兼CEOであり、OpenAIのGPT-4および他の大規模な言語モデル(LLM)に基...

人工知能

『ジュリエット・パウエル&アート・クライナー、The AI Dilemma – インタビューシリーズの著者』

『AIのジレンマ』は、ジュリエット・パウエルとアート・クライナーによって書かれましたジュリエット・パウエルは、著者であ...

人工知能

ベイリー・カクスマー、ウォータールー大学の博士課程候補 - インタビューシリーズ

カツマー・ベイリーは、ウォータールー大学のコンピュータ科学学部の博士課程の候補者であり、アルバータ大学の新入教員です...

機械学習

「機械学習 vs AI vs ディープラーニング vs ニューラルネットワーク:違いは何ですか?」

テクノロジーの急速な進化は、ビジネスが効率化のために洗練されたアルゴリズムにますます頼ることで、私たちの日常生活を形...