「ラフと共にパイソンのコーディングスタイルを高める」
「ラフなスタイルにパイソンのコーディングスキルを磨く」
Ruffとは
Ruffは、Rustで書かれた非常に高速なPythonのリンタとフォーマッタであり、Flake8やBlack、isortなどの既存のツールを置き換え、改良することを目指しています。700以上の組み込みルールと人気のプラグインの再実装を通して、パリティを維持しながら10-100倍の高速性能を提供します。
- 「ReactとChatGPT APIを使用して独自のAIチャットボットを作成する方法」
- あなたのVoAGIポスト-なぜPythonでリスト内包表記を過度に使用すべきではないか
- 「C# で GPT(一般目的テンプレート)を拡張しましょう」
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!
Was this article helpful?
93 out of 132 found this helpful
Related articles