Skip to main content
  1. Posts/

macOSで「Claude環境が使っているパッケージ」を再現する

·1866 words·4 mins
Table of Contents

Claude が Office 文書処理に使っているパッケージは、実はほぼ全て macOS でもそのまま動く( xlwings のような Excel 本体依存とは異なるアプローチのため )。

全体像(Claude環境の実装)
#

形式メインパッケージ補助
Excel (.xlsx)openpyxlpandasmarkitdown 、LibreOffice(数式再計算)
Word (.docx)docx (npm/Node.js)pandoc 、LibreOffice、 pdftoppm (Poppler)
PowerPoint (.pptx)pptxgenjs (npm、新規) / python-pptx (編集)markitdown[pptx]Pillowdefusedxmllxml 、LibreOffice、 pdftoppm

この構成の要点は「 Office本体不要 」であること。 xlwings と違い、Excel/Word/PowerPointがインストールされていないLinux/CI環境でも動く前提で組まれている。したがってmacOSでも当然インストール可能だ。

macOSへのインストール手順
#

1. Python系(pip / conda環境)
#

pip install openpyxl pandas python-pptx 'markitdown[pptx]' Pillow defusedxml lxml

Apple Siliconでも標準pipでネイティブ対応。 lxml のみビルド済みwheelが提供されているためコンパイル不要で入る。

2. Node.js系(npmパッケージ)
#

# Node.js未導入の場合
brew install node

npm install docx pptxgenjs

docx (Word生成)、 pptxgenjs (PowerPoint生成)はいずれもピュアJS実装で、Office本体もLibreOfficeも不要に 文書の生成そのもの は完結する。

3. LibreOffice(Homebrew)
#

brew install --cask libreoffice

インストール後のCLI呼び出し:

/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to pdf report.docx

PATHを通す場合:

echo 'export PATH="/Applications/LibreOffice.app/Contents/MacOS:$PATH"' >> ~/.zshrc

Claude環境と同じ注意点が適用される (前回説明の通り):

  • bare soffice は環境によってハングすることがある → タイムアウト付きラッパーを自作するのが安全
  • 数式再計算はExcelとの完全互換ではない( XLOOKUP / FILTER / UNIQUE 等はスピル非対応、 _xlfn. プレフィックス問題あり)
  • macOS版LibreOfficeはフォントが少ないため、pptxのQAレンダリングで幅が変わる可能性

4. Pandoc
#

brew install pandoc

5. Poppler(pdftoppm)
#

brew install poppler

macOS特有の注意点
#

項目内容
LibreOfficeとExcelの共存同一マシンにExcel本体もある場合、 xlwings とLibreOfficeベース処理は完全に独立(相互干渉なし)。用途で使い分け可能
soffice初回起動が遅い初回はプロファイル生成のため数秒〜十数秒かかる。バッチ処理の1回目だけ遅延あり、以降は高速
Gatekeeper警告Homebrew cask版は署名済みのため通常問題なし。手動DL版で警告が出た場合は「システム設定→プライバシーとセキュリティ」で許可
並行実行の制限soffice headlessは同時に複数プロセスを起動するとロック競合することがある( --convert-to をループで回す場合は -env:UserInstallation=file:///tmp/lo_$$ で分離すると安全)

使い分けの整理(xlwingsとの住み分け・最終まとめ)
#

xlwingsを使う場面まとめ

xlwingsとは:Excel本体を経由してPythonからExcelを操作するパッケージ。 openpyxl等のOffice本体不要系とは異なり、Excel本体のインストールが前提のアプローチで、macOSにも対応している。

Office本体不要のパッケージ群(openpyxl / docx(npm) / pptxgenjs / LibreOffice)とは別に、 xlwingsは以下2点でのみ必要になる。

  • VBAマクロ資産(TransferShitekiJikou等)をExcel本体経由で直接叩く場合
  • procurement文書の最終チェックなど、Excel本体の計算エンジンでの厳密な検証が必要な場合 (LibreOfficeの数式エンジンはXLOOKUP/FILTER/UNIQUE等のスピル非対応、_xlfn.プレフィックス問題があるため非互換)

それ以外の新規生成・バッチ処理はOffice本体不要な構成に寄せてよい。

目的推奨手段理由
VBAマクロ資産( TransferShitekiJikou 等)を直接叩くxlwings (macOS対応)Excel本体経由でしか呼べない
新規Excel/Word/PowerPoint生成、バッチ処理openpyxl / docx(npm) / pptxgenjsOffice本体不要、CI/WSLとも共有可能なコード資産にできる
既存ファイルの数式再計算・PDF変換LibreOffice headlessExcel/Word本体を起動せず軽量に処理
Excel本体の計算エンジンでの厳密な検証(procurement文書の最終チェック等)xlwingsで実ExcelLibreOfficeの数式エンジンは非互換関数がある(前述の XLOOKUP 等)

自分の環境(macOS Apple Silicon / WSL Ubuntu 22.04 / Emacs中心)であれば、 コード資産をopenpyxl/pandas/LibreOfficeベースで統一しWSL側とも共通化 し、Excel本体でしかできない処理(マクロ呼び出し、UI連携)だけ xlwings 経由でmacOS側に残す、という構成が最も再現性・保守性が高くなる。

Related