🔁 2026年リライト版 この記事は2020年5月に公開した「Python:3.xコンテナでMeCab + IPADIC + NEologdをシステム辞書として使用するためのDockerfile」を、mecab-ipadic-NEologd の更新停止(2020年9月)、fugashi(MeCab の公式 Python バインディング)、Sudachi などの現行選択肢を踏まえて全面書き換えしたものです。
2020年からの主な変化点
- mecab-ipadic-NEologd の更新停止: 2020年9月を最後にリポジトリは実質アーカイブ状態。新語追従が必要な用途では推奨できません
- fugashi が MeCab の Python バインディングとして事実上の標準に。
mecab-python3より保守状況が安定 - SudachiPy / Sudachi辞書 が2020年以降継続的に更新され、企業利用では第一候補
- Vibrato など Rust 実装の高速な後継も登場
- Python 3.12 / 3.13 対応、
glibcバージョンアップで Dockerfile の調整が必要に
選択肢の比較
| ツール | 辞書 | 更新状況 | 強み |
|---|---|---|---|
| fugashi + unidic-lite | UniDic | 活発 | pip 一発で導入可。新語は弱い |
| fugashi + IPADIC + NEologd | NEologd(2020/09固定) | 辞書は凍結 | 本記事の継承パス |
| SudachiPy + SudachiDict-full | Sudachi | 活発 | 分かち書きモードA/B/Cを切替可能 |
| Janome | IPADIC 同等 | 緩やか | Pure Python、軽量 |
| Vibrato | MeCab互換 | 活発 | Rust製、超高速 |
2026年時点での推奨は以下です。
- 新語・流行語対応が必須: SudachiPy
- MeCab API そのまま・導入最速: fugashi + unidic-lite
- 過去のデータ・スクリプト互換性: fugashi + IPADIC + NEologd(凍結版)
パターン1: fugashi + unidic-lite(最速・推奨)
Dockerfile も pyproject.toml もシンプル。
FROM python:3.12-slim
RUN pip install --no-cache-dir fugashi unidic-lite
WORKDIR /work
COPY . .
CMD ["python", "-c", "import fugashi; t=fugashi.Tagger(); print([w.surface for w in t('すもももももももものうち')])"]
❯ docker build -t fugashi-sample . && docker run --rm fugashi-sample
['すもも', 'も', 'もも', 'も', 'もも', 'の', 'うち']
パターン2: fugashi + IPADIC + NEologd(凍結版)
2020年当時の構成を2026年風に書き直したもの。NEologd は固定スナップショット扱い。
FROM python:3.12-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential mecab libmecab-dev mecab-ipadic-utf8 \
git curl xz-utils file sudo ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# NEologd(2020/09 最終版)
RUN git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git /tmp/neologd \
&& /tmp/neologd/bin/install-mecab-ipadic-neologd -n -y -a \
&& rm -rf /tmp/neologd
# mecabrc の dicdir を NEologd に差し替え
RUN sed -i 's|^dicdir = .*|dicdir = /var/lib/mecab/dic/mecab-ipadic-neologd|' /etc/mecabrc
RUN pip install --no-cache-dir fugashi ipadic
WORKDIR /work
Python 側:
import fugashi
tagger = fugashi.Tagger() # /etc/mecabrc を参照
for word in tagger("新しい言葉でも分かち書きしたい"):
print(word.surface, word.feature.pos1)
パターン3: SudachiPy(2026年の新語対応ならこれ)
辞書を pip で入れるだけ。Docker 不要で動きます。
❯ pip install sudachipy sudachidict-full
from sudachipy import dictionary, tokenizer
tokenizer_obj = dictionary.Dictionary(dict_type="full").create()
mode = tokenizer.Tokenizer.SplitMode.C
text = "選挙管理委員会から通知が来た"
for m in tokenizer_obj.tokenize(text, mode):
print(m.surface(), m.part_of_speech()[0])
SplitMode は A(最短)/ B(中間)/ C(最長複合語)。用途で使い分けます。
Apple Silicon での注意点
python:3.12-slimはlinux/arm64も公式配布されているので、Apple Silicon Mac からdocker buildしても Rosetta 不要- MeCab の Debian パッケージ(
libmecab-dev)は arm64 版があるのでそのままビルド可能 mecab-python3は2024年以降fugashiに置き換えるのが推奨。MeCab 側を直接叩く API なら後者の方がメンテが活発
まとめ
2020年時点では「Docker + MeCab + IPADIC + NEologd」が鉄板でしたが、2026年は SudachiPy or fugashi + unidic-lite を第一選択に、NEologd は 凍結辞書 として選ぶ構図になりました。辞書のメンテナンス状況が変わった分、pipだけで完結する構成の方が運用コストが低いです。