pptx について
pptxは、Pythonのpython-pptxライブラリでPowerPointの作成、編集、自動化を行うスキルです。スライドの内容や書式、テンプレート、データに基づく生成に対応します。
主な機能
- 01プレゼンテーションの作成と設定
- 02スライドの追加、複製、並べ替え
- 03テキスト、グラフ、画像、表の挿入
- 04テーマ、色、フォントの設定
- 05既存ファイルの編集とテンプレート適用
- 06データからのスライド一括生成
活用シーン
- 01業務データからのプレゼン作成
- 02レポート用スライドの一括作成
- 03テンプレートを使ったブランド資料の生成
- 04既存のPowerPointファイルの更新
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ autumnsgrove/ claudeskills --skill pptxインストール後、Claude Code で/pptxを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdexamples/bulk-generation.mdbusiness-presentation.mdchart-examples.mdediting-presentations.mdimage-handling.mdtable-examples.mdreferences/advanced-techniques.mddesign-best-practices.mdlibrary-setup.mdtemplates-and-themes.mdtroubleshooting.mdscripts/pptx_helper.py詳細
PowerPoint(PPTX)スキル
概要
このスキルでは、Python の python-pptx ライブラリを使用して、PowerPoint プレゼンテーションの作成、編集、自動化を幅広く行えます。レイアウト、テーマ、コンテンツ、グラフ、視覚化を自在に制御しながら、プロフェッショナルなプレゼンテーションをプログラムで作成できます。
主な機能
- プレゼンテーションの作成:新規プレゼンテーション、テンプレート、メタデータ、ページ設定
- スライド管理:定義済みのレイアウトを使ったスライドの追加、複製、削除、並べ替え
- コンテンツの種類:テキスト、図形、画像、表、グラフ、SmartArt、ハイパーリンク
- デザインと書式設定:テーマ、配色、フォント、塗りつぶし、枠線、効果
- 高度な機能:画面切り替え、アニメーション、埋め込みオブジェクト、動画/音声、コメント
インストール
必要なライブラリをインストールします。
pip install python-pptx
# or with uv
uv pip install python-pptx
基本的なインポート:
from pptx import Presentation
from pptx.util import Inches, Pt, Cm
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE
ライブラリの完全なセットアップと関連パッケージ(Pillow、pandas、matplotlib)については、references/library-setup.md を参照してください。
主なワークフロー
ワークフロー 1:ビジネスプレゼンテーションの作成
目標: タイトルスライド、コンテンツスライド、結論を含むプロフェッショナルなプレゼンテーションを作成します。
手順:
-
プレゼンテーションを初期化する
- 新しいプレゼンテーションオブジェクトを作成する
- スライドのサイズを設定する(標準の 16:9 または 4:3)
- メタデータ(タイトル、作成者、件名、キーワード)を設定する
-
タイトルスライドを追加する
- タイトルスライドのレイアウトを使用する(通常は
prs.slide_layouts[0]) - タイトルとサブタイトルのテキストを設定する
- 書式を適用する(フォントサイズ、色、太字)
- タイトルスライドのレイアウトを使用する(通常は
-
コンテンツスライドを追加する
- 適切なレイアウト(箇条書き、2 列、タイトルのみ、空白)を使用する
- プレースホルダーに入力するか、テキストボックスを追加する
- 適切な階層構造でテキストを整える
-
視覚要素を追加する
- 適切なサイズと位置で画像を挿入する
- 書式設定したデータを使ってグラフを追加する
- セルのスタイルを設定した表を作成する
-
プレゼンテーションを保存する
- .pptx 形式で保存する
- ファイルが作成されたことを確認する
簡単な例:
from pptx import Presentation
from pptx.util import Inches, Pt
prs = Presentation()
prs.slide_width = Inches(10)
prs.slide_height = Inches(7.5)
# Title slide
slide = prs.slides.add_slide(prs.slide_layouts[0])
slide.shapes.title.text = "Q4 Business Review"
slide.placeholders[1].text = "Prepared by: Jane Doe\nDate: October 25, 2025"
prs.save('presentation.pptx')
完全な実装については、examples/business-presentation.md を参照してください。
ワークフロー 2:グラフの追加
目標: 棒グラフ、折れ線グラフ、円グラフでデータを視覚化します。
手順:
CategoryChartDataを使ってグラフデータを準備する- カテゴリと系列を定義する
- 位置を指定してスライドにグラフを追加する
- グラフの書式を設定する(凡例、目盛線、ラベル)
簡単な例:
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE
chart_data = CategoryChartData()
chart_data.categories = ['Q1', 'Q2', 'Q3', 'Q4']
chart_data.add_series('2025', (9.5, 10.8, 11.2, 13.1))
chart = slide.shapes.add_chart(
XL_CHART_TYPE.COLUMN_CLUSTERED,
Inches(1), Inches(2), Inches(8), Inches(4.5),
chart_data
).chart
すべてのグラフの種類については、examples/chart-examples.md を参照してください。
ワークフロー 3:画像の操作
目標: プレゼンテーションに画像を追加し、配置して、書式を設定します。
手順:
slide.shapes.add_picture()で画像を追加する- 位置(left、top)とサイズ(width、height)を指定する
- 必要に応じて中央配置の位置を計算する
- 追加する前に画像を最適化する(前処理には Pillow を使用する)
簡単な例:
# Add image with auto-scaled aspect ratio
pic = slide.shapes.add_picture('logo.png', Inches(1), Inches(1), height=Inches(2))
# Center image on slide
pic.left = int((prs.slide_width - pic.width) / 2)
pic.top = int((prs.slide_height - pic.height) / 2)
高度なテクニックについては、examples/image-handling.md を参照してください。
ワークフロー 4:表の作成
目標: 書式設定した構造化データの表を追加します。
手順:
- 表のサイズ(行数、列数)を定義する
- 位置を指定して表を追加する
- 列幅を設定する
- ヘッダーに太字と背景色を設定して入力する
- データセルに適切な配置で値を入力する
簡単な例:
table = slide.shapes.add_table(4, 3, Inches(1.5), Inches(2), Inches(7), Inches(3)).table
# Header formatting
cell = table.cell(0, 0)
cell.text = "Product"
cell.text_frame.paragraphs[0].font.bold = True
cell.fill.solid()
cell.fill.fore_color.rgb = RGBColor(0, 51, 102)
高度な書式設定については、examples/table-examples.md を参照してください。
ワークフロー 5:既存のプレゼンテーションの編集
目標: 既存の PowerPoint ファイルを変更します。
手順:
Presentation('file.pptx')でプレゼンテーションを開く- スライドを順に確認してコンテンツを探す
- テキストや図形を変更するか、新しい要素を追加する
- 同じファイル名または別のファイル名で保存する
簡単な例:
prs = Presentation('existing.pptx')
# Find and update text
for slide in prs.slides:
for shape in slide.shapes:
if hasattr(shape, "text") and "Old Name" in shape.text:
shape.text = shape.text.replace("Old Name", "New Name")
prs.save('updated.pptx')
スライドのコピーと高度な編集については、examples/editing-presentations.md を参照してください。
ワークフロー 6:テンプレートの使用
目標: マスタースライドとテンプレートを使って、一貫したブランド表現を適用します。
手順:
- テンプレートファイルを使って開始する:
Presentation('template.pptx') - 使用可能なレイアウトを確認する
- テンプレートのレイアウトを使ってスライドを追加する
- ブランドカラーを一貫して適用する
簡単な例:
prs = Presentation('corporate_template.pptx')
# Use template layouts
title_slide = prs.slides.add_slide(prs.slide_layouts[0])
content_slide = prs.slides.add_slide(prs.slide_layouts[1])
# Layouts inherit master formatting
prs.save('branded_presentation.pptx')
マスタースライドのカスタマイズについては、references/templates-and-themes.md を参照してください。
ワークフロー 7:スライドの一括生成
目標: データから複数のスライドを自動生成します。
手順:
- CSV、JSON、またはデータベースからデータを読み込みます
- プレゼンテーションオブジェクトを作成します
- データレコードを順に処理します
- レコードごとにスライドを1枚生成します
- レコードのデータをスライドに入力します
簡単な例:
import pandas as pd
df = pd.read_csv('employee_data.csv')
prs = Presentation()
for _, row in df.iterrows():
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = row['Name']
# Add employee details to slide body
prs.save('employee_directory.pptx')
完全な実装については、examples/bulk-generation.md を参照してください。
デザイン原則
色とタイポグラフィ
- 60-30-10の配色ルールを使用します(60%がメインカラー、30%がセカンダリカラー、10%がアクセントカラー)
- WCAG AAのコントラスト比を確保します(最低4.5:1)
- フォントファミリーは最大2種類にします
- 読みやすさを考慮し、本文の最小サイズを18ptにします
レイアウトと構成
- 要素の配置には三分割法を適用します
- すべての辺に最低0.5"の余白を確保します
- スライドあたりの要素数を5~7個に制限します
- 配置を統一します(グリッドにスナップします)
視覚的な階層
- サイズで重要度を表します(大きいほど重要です)
- 強調には色のコントラストを使用します
- コンテンツの流れにはZパターンを適用します
グラフ作成のベストプラクティス
- 適切なグラフの種類を選びます(比較には棒グラフ、傾向には折れ線グラフ、全体に対する内訳には円グラフ)
- 色は最大3~5色に制限します
- 軸には必ずラベルを付け、データラベルを含めます
- グリッド線は控えめに使用します
デザインガイドラインの詳細については、references/design-best-practices.md を参照してください。
よく使われるパターン
ブランドカラーの適用
BRAND_COLORS = {
'primary': RGBColor(0, 51, 102),
'secondary': RGBColor(0, 153, 204),
'accent': RGBColor(255, 102, 0)
}
# Apply to text
shape.text_frame.paragraphs[0].font.color.rgb = BRAND_COLORS['primary']
# Apply to fill
shape.fill.solid()
shape.fill.fore_color.rgb = BRAND_COLORS['secondary']
要素の中央揃え
def center_shape(shape, prs):
"""Center shape on slide."""
shape.left = int((prs.slide_width - shape.width) / 2)
shape.top = int((prs.slide_height - shape.height) / 2)
テキストの自動調整
from pptx.enum.text import MSO_AUTO_SIZE
text_frame = shape.text_frame
text_frame.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE # Shrink text
# or
text_frame.auto_size = MSO_AUTO_SIZE.SHAPE_TO_FIT_TEXT # Expand shape
トラブルシューティング早見表
「ModuleNotFoundError: No module named 'pptx'」
pip install python-pptx
「AttributeError: 'NoneType' object has no attribute...」
- プレースホルダーのインデックスを確認します:
[p.placeholder_format.idx for p in slide.placeholders] - レイアウトに想定したプレースホルダーがあることを確認します
画像が見つからない
- 絶対パスを使用します:
os.path.abspath('image.png') - ファイルが存在することを確認します:
os.path.exists(img_path)
テキストが収まらない
- 自動調整を有効にします:
text_frame.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE - 長いテキストは省略記号を付けて短縮します
ファイルサイズが大きすぎる
- 追加する前に画像を圧縮します(Pillowを使用)
- 画像をプレゼンテーションのサイズに合わせてリサイズします(最大1920x1080)
トラブルシューティングの詳細については、references/troubleshooting.md を参照してください。
ヘルパースクリプト
scripts/pptx_helper.py モジュールには、次のユーティリティ関数が用意されています:
create_presentation():デフォルト設定で初期化しますadd_title_slide():書式設定済みのタイトルスライドを追加しますadd_bullet_slide():箇条書き付きのスライドを追加しますadd_image_slide():中央揃えの画像を含むスライドを追加しますadd_chart_slide():グラフ付きのスライドを追加しますadd_table_slide():書式設定済みの表を追加しますapply_brand_colors():統一された配色を適用しますoptimize_images():複数の画像を一括で最適化します
使用方法:
from scripts.pptx_helper import create_presentation, add_title_slide, add_chart_slide
prs = create_presentation(title="My Presentation")
add_title_slide(prs, "Main Title", "Subtitle")
add_chart_slide(prs, "Sales Data", chart_type='bar',
categories=['Q1', 'Q2', 'Q3', 'Q4'],
values=[10, 20, 15, 25])
prs.save('output.pptx')
参考資料
ドキュメント
- python-pptx:https://python-pptx.readthedocs.io/
- APIリファレンス:https://python-pptx.readthedocs.io/en/latest/api/
- GitHub:https://github.com/scanny/python-pptx
詳細資料
例
デザイン資料
- Microsoftのデザインテンプレート:https://templates.office.com/powerpoint
- カラーパレットツール:Coolors.co、Adobe Color
- 無料のストック画像:Unsplash、Pexels
ベストプラクティスのまとめ
- ブランドイメージを統一するため、常にテンプレートを使用します
- プレゼンテーションに追加する前に画像を最適化します
- 各スライドのテキストを抑えます(箇条書きは最大5~7項目)
- 読みやすさのため、コントラストを高くします
- 発表前に対象デバイスでテストします
- ファイルサイズを適切に保ちます(メールでは20MB未満)
- 詳細な説明ポイントには発表者ノートを使用します
- 6×6ルールに従います:箇条書きは最大6項目、各項目は最大6語
- グラフを作成する前にデータを検証します
- 余白と配置を統一します
このスキルを使用する場面:
- データからビジネスプレゼンテーションを作成する
- レポート生成を自動化する
- データベースからスライドを一括作成する
- テンプレートベースのプレゼンテーションを作成する
- グラフや画像を含む教育コンテンツを作成する
- ドキュメントをスライドに変換する