インストール

lindera-php は PHP 拡張です。Packagist に lindera/lindera として公開されており、PHP 拡張インストーラーの PIE でインストールします。拡張名は lindera です。

前提条件

  • PHP 8.1 以降(Linux または macOS)。Windows は非対応です
  • PIE 1.4 以降と unzip -- PIE のインストール方法を参照。それより古い PIE はこのパッケージのメタデータを読めないため、pie self-update で更新してください
  • PIE がソースからのビルドにフォールバックする場合のみ、Rust ツールチェーン(rustup)、libclang(Debian/Ubuntu は libclang-dev、macOS は Xcode コマンドラインツールまたは brew install llvm)、および PHP 拡張の標準的なビルドツール(autoconf、libtool、make)が必要です

PIE でのインストール

pie install lindera/lindera

[!NOTE] lindera/lindera は lindera v6.1.0 以降で Packagist から利用できます。それ以前のバージョンは、以下の手順でソースからビルドしてください。

使用中の PHP とプラットフォームに対応するビルド済み lindera.so が GitHub Release にあれば、PIE はそれをダウンロードして拡張ディレクトリにインストールし、有効化します。コンパイルは行わず、Rust ツールチェーンも不要です。ビルド済みバイナリの対象は次のとおりです:

  • PHP 8.1〜8.5、NTS と ZTS
  • glibc 2.35 以降の Linux x86_64 / arm64(例: Ubuntu 22.04、Debian 12)
  • macOS(Apple silicon)

それ以外のプラットフォーム(Alpine などの musl 環境、Intel Mac)では、同じコマンドが検出した PHP 向けのソースビルドにフォールバックします。別の PHP を対象にする場合は --with-php-config=/path/to/php-config を指定してください。Composer 自体は php-ext パッケージをインストールしないため、composer require lindera/lindera ではインストールできません。

[!WARNING] PIE は glibc のバージョンを確認しません。glibc 2.35 未満の環境(例: Ubuntu 20.04、Debian 11、RHEL 8)でもビルド済みバイナリをインストールし、その拡張は読み込みに失敗します。その場合はソースからビルドしてください。PIE 1.5 以降なら pie install --suppress-download-url-method=pre-packaged-binary lindera/lindera を実行するか、後述の手順で手動ビルドします。

パッケージには辞書は埋め込まれていません。辞書の入手を参照してください。

辞書の入手

Lindera はパッケージに辞書を同梱していません。ビルド済み辞書を別途入手する必要があります。

GitHub Releases からのダウンロード

ビルド済み辞書は GitHub Releases ページから入手できます。辞書アーカイブをダウンロードしてローカルディレクトリに展開してください:

# 例: IPADIC 辞書のダウンロードと展開
curl -LO https://github.com/lindera/lindera/releases/download/<version>/lindera-ipadic-<version>.zip
unzip lindera-ipadic-<version>.zip -d /path/to/ipadic

ソースからのビルド

lindera-php をビルドします:

cargo build -p lindera-php

または、プロジェクトの Makefile を使用します:

make build-lindera-php

学習機能付きビルド

train feature を有効にすると、CRF ベースの辞書学習機能が利用可能になります。デフォルトで有効になっています:

cargo build -p lindera-php --features train

PHP 拡張の読み込み

ビルド後、-d extension= オプションでビルドされた共有ライブラリを指定して PHP を実行します:

php -d extension=target/debug/liblindera_php.so script.php

リリースビルドの場合:

cargo build -p lindera-php --release
php -d extension=target/release/liblindera_php.so script.php

php.ini に追加して常に読み込むこともできます:

extension=/absolute/path/to/liblindera_php.so

macOS では cargo は liblindera_php.dylib を生成します。どの方法で読み込んでも拡張名は lindera です。php -m には lindera と表示され、extension_loaded('lindera') で確認できます。

Feature フラグ

Feature説明デフォルト
trainCRF 学習機能有効
embed-ipadic日本語辞書(IPADIC)をバイナリに埋め込み無効
embed-unidic日本語辞書(UniDic)をバイナリに埋め込み無効
embed-sudachidict日本語辞書(SudachiDict)をバイナリに埋め込み無効
embed-ipadic-neologd日本語辞書(IPADIC NEologd)をバイナリに埋め込み無効
embed-ko-dic韓国語辞書(ko-dic)をバイナリに埋め込み無効
embed-cc-cedict中国語辞書(CC-CEDICT)をバイナリに埋め込み無効
embed-jieba中国語辞書(Jieba)をバイナリに埋め込み無効
embed-cjk全 CJK 辞書をバイナリに埋め込み(IPADIC、ko-dic、Jieba)無効

複数の feature を組み合わせることができます:

cargo build -p lindera-php --features "train,embed-ipadic,embed-ko-dic"

ビルド済みバイナリと PIE のソースビルドは、デフォルトの feature(train のみ、辞書の埋め込みなし)を使います。

[!TIP] 辞書をバイナリに直接埋め込みたい場合(上級者向け)は、対応する embed-* feature フラグを有効にしてビルドし、embedded:// スキームでロードしてください:

$dictionary = Lindera\Dictionary::load('embedded://ipadic');

詳細は Feature フラグ を参照してください。

インストールの確認

インストール後、PHP で lindera が利用可能であることを確認します:

<?php

$version = Lindera\Dictionary::version();
echo "Lindera version: {$version}\n";

実行方法:

# PIE でインストールした場合
php script.php

# 自分でビルドした場合
php -d extension=target/debug/liblindera_php.so script.php

静的解析用スタブ

lindera-php/stubs/lindera.stubs.php は、拡張の全クラスを IDE・PHPStan・Psalm 向けに宣言したスタブです。ビルドした拡張から生成され、内容が古くなるとテストが失敗します。ファイルのコピーを解析ツールに指定してください。拡張がクラスを宣言済みのため、実行時に include してはいけません。

# phpstan.neon
parameters:
    stubFiles:
        - path/to/lindera.stubs.php