2026年04月24日
OTTAN.JP
iPhone · Mac · Windows Tips
Mac

【2026年版】Python で日本語形態素解析 — MeCab / fugashi / Sudachi をコンテナで使う

By ottanjp 3 min read 更新 2026.04.22

🔁 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-slimlinux/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だけで完結する構成の方が運用コストが低いです。

参考

Comments
comments powered by Disqus