Python-Slugify: SEOに強いUnicodeスラッグを生成

Python-Slugify: クリーンでSEOに強いスラッグを作る決定版ツール

ウェブ開発やデータ管理において、人が読めるテキストをURLに適した文字列(「スラッグ」と呼びます)に変換することは日常茶飯事です。ブログ記事のURL、画像ファイル名、データベースのユニークな識別子など、スラッグはユーザビリティと検索エンジン最適化(SEO)の両方で極めて重要な役割を担っています。

そこで登場するのが、この変換を非常に洗練された方法で、特にユニコード文字の複雑さに対処しながら処理するために設計された、強力で高度に設定可能なPythonライブラリ、python-slugifyです。

スラッグとは?

スラッグとは、URLの一部で、人が読めるキーワード形式で特定のページを識別するものです。例えば、yourwebsite.com/blog/my-awesome-post-title というURLでは、my-awesome-post-title がスラッグになります。

なぜpython-slugifyなのか?

このライブラリは、ユニコード文字列の堅牢な処理が際立っており、これはシンプルなスラッグ化ツールでは見過ごされがちな特徴です。様々な言語の文字をインテリジェントにASCII文字に変換し、スラッグが普遍的に互換性があり、意味を持つものになるようにします。

主な特徴:

  • ユニコード対応: 国際文字(例: 'C\'est déjà l\'été.' は 'c-est-deja-l-ete' に、'影師嗎' は 'ying-shi-ma' に)をシームレスに変換します。
  • カスタマイズ可能なオプション: 出力を制御するための幅広いパラメータを提供します。
    • entities, decimal, hexadecimal: HTMLエンティティを処理します。
    • max_length, word_boundary, save_order: スラッグの長さと単語の整合性を制御します。
    • separator: 単語を区切る文字を定義します(デフォルトはハイフン -)。
    • stopwords: 'the', 'in', 'a' などの一般的な単語を削除し、スラッグを簡潔に保ちます。
    • regex_pattern: 高度な文字フィルタリングにカスタム正規表現を適用します。
    • lowercase: 大文字・小文字を元のままにするオプションです。
    • replacements: カスタムの文字または文字列置換を定義します(例: [['|', 'or']])。
    • allow_unicode: 必要であれば元のユニコード文字を保持します。
  • 簡単なインストール: pip経由で利用でき、Pythonプロジェクトへの組み込みが簡単です。
    pip install python-slugify
    # または、代替のunidecodeパッケージを使用する場合
    pip install python-slugify[unidecode]
    
  • コマンドラインツール: 便利なslugifyコマンドラインユーティリティが付属しており、ターミナルから直接素早く変換できます。
    echo "Taking input from STDIN" | slugify --stdin
    # 出力: taking-input-from-stdin
    
    slugify taking input from the command line
    # 出力: taking-input-from-the-command-line
    

使い方:

python-slugifyの使い方は直感的です。slugify関数をインポートし、テキストを渡すだけです。

from slugify import slugify

# 基本的な使い方
txt = "This is a test ---"
r = slugify(txt)
print(r) # 出力: this-is-a-test

# 英語以外の文字の処理
txt = 'Компьютер'
r = slugify(txt)
print(r) # 出力: kompiuter

# max_length と word_boundary を使用
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt, max_length=15, word_boundary=True)
print(r) # 出力: jaja-lol-a

# ストップワードの削除
txt = 'the quick brown fox jumps over the lazy dog'
r = slugify(txt, stopwords=['the'])
print(r) # 出力: quick-brown-fox-jumps-over-lazy-dog

# カスタム置換
txt = '10 | 20 %'
r = slugify(txt, replacements=[['|', 'or'], ['%', 'percent']])
print(r) # 出力: 10-or-20-percent

ライセンスと依存関係

python-slugifyMITライセンスでリリースされており、商用・個人利用ともに無料です。デフォルトではデコードにtext-unidecodeを使用しており、これはGPLおよびPerl Artisticライセンスです。オプションで、代替のUnidecode(GPL)パッケージをインストールできます。

貢献

このプロジェクトは貢献を歓迎しています。プルリクエストを送信する前に、開発者の方はコントリビューションガイドラインをご一読ください。

GitHubで1.5K以上のスターと110のフォークを持つpython-slugifyは、ウェブコンテンツ管理の重要な側面を簡素化する、よくメンテナンスされ、広く使われているツールです。その柔軟性と包括的な機能セットは、Python開発者のツールキットにとって不可欠な追加要素となるでしょう。

この記事を共有