こんにちは!ファンリピートの加藤です。
AIの指数関数的な発達が特に注目されている現在、多くの思索がめぐらされています。ChatGPTやstable Diffusionなどがその最たるものだと思いますが、その利用法を個人個人でも考える事は今後のAIの流れに置いていかれず、その活路すら見出せるのではないでしょうか。
今回はその中でもプレゼンテーションなどで必要となるスライドを自動生成するための実験とその結果を皆さんに紹介します!
CodexとTomoの二つを紹介していきます。
Codex(Python)を利用した場合
こちらのplaygroudからpythonを利用してスライドを生成していきます。
ここでは文字(codeも可)を入力するとそれに対応する内容の文章やコードを吐き出します。以下で実験してをしてみましょう。
まずはpythonでpptxを生成できるようにします。私はwindowsでAnacondaを利用しているので、この環境からの生成を考えます。Python-pptxはAnacodaには同梱されていないので「pip」を使ってインストールする必要があります。Anacondaプロンプトなどに次のコマンドを入力しインストールしてください。
pip install python-pptx
これで完了で導入完了です。
"""
Some text that describes the theme of the presentation.
"""
import pptx
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE_TYPE
from pptx.dml.color import RGBColor
from pptx.util import Inches
presentation_title = "What is IOT"
こちらの文を入力した所、以下の文章を吐き出します。
import pptx
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE_TYPE
from pptx.dml.color import RGBColor
from pptx.util import Inches
presentation_title = "What is IOT"
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = presentation_title
subtitle.text = "A Comprehensive Overview"
# Create a new slide
bullet_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(bullet_slide_layout)
shapes = slide.shapes
title_shape = shapes.title
body_shape = shapes.placeholders[1]
title_shape.text = 'What is IOT?'
tf = body_shape.text_frame
tf.text = 'What is IOT? \n'
p = tf.add_paragraph()
p.text = 'IOT stands for Internet of Things. It is a network of physical objects that can be connected to the internet and interact with their environment and each other. '
p.level = 1
p = tf.add_paragraph()
p.text = 'These objects can include anything from smart TVs to connected sensors, and they can be used to collect and communicate data in real time. '
p.level = 1
p = tf.add_paragraph()
p.text = 'IOT is becoming increasingly important in our lives, as it can be used to monitor and control our environment, improve safety and efficiency, and create new services and products. '
p.level = 1
# Create a new slide
slide_layout = prs.slide_layouts[2]
slide = prs.slides.add_slide(slide_layout)
title_shape = slide.shapes.title
body_shape = slide.shapes.placeholders[1]
title_shape.text = 'Benefits of IOT'
tf = body_shape.text_frame
p = tf.add_paragraph()
p.text = 'IOT can provide a wide range of benefits, including: '
p.level = 1
p = tf.add_paragraph()
p.text = '- Increased efficiency and productivity \n - Reduced costs \n - Improved safety \n - Enhanced customer experience \n - Improved data accuracy and insight'
p.level = 1
# Create a new slide
slide_layout = prs.slide_layouts[3]
slide = prs.slides.add_slide(slide_layout)
title_shape = slide.shapes.title
body_shape = slide.shapes.placeholders[1]
title_shape.text = 'Applications of IOT'
tf = body_shape.text_frame
p = tf.add_paragraph()
p.text = 'IOT has a wide range of applications, including: '
p.level = 1
p = tf.add_paragraph()
p.text = '- Automation and control \n - Connected health \n - Smart cities \n - Enterprise resource management \n - Industrial automation \n - Connected cars'
p.level = 1
# Create a new slide
slide_layout = prs.slide_layouts[4]
slide = prs.slides.add_slide(slide_layout)
left = Inches(0.5)
top = Inches(2)
width = Inches(9)
height = Inches(5.5)
shape = slide.shapes.add_shape(MSO_SHAPE_TYPE.ROUNDED_RECTANGLE, left, top, width, height)
shape.fill.solid()
shape.fill.fore_color.rgb = RGBColor(0, 176, 240)
title_shape = slide.shapes.title
body_shape = slide.shapes.placeholders[1]
title_shape.text = 'Conclusion'
tf = body_shape.text_frame
p = tf.add_paragraph()
p.text = 'IOT is a rapidly evolving technology with a wide range of applications. It can be used to improve efficiency, reduce costs, and create new services and products. '
p.level = 1
p = tf.add_paragraph()
p.text = 'As IOT continues to advance, it will become increasingly important in our lives, and its potential is only beginning to be explored. '
p.level = 1
prs.save('What_is_IoT.pptx')
このコードをそのままPythonで実行したところ、
Traceback (most recent call last):
File "c:\...\ex-presentation1.py", line 90, in <module>
shape = slide.shapes.add_shape(MSO_SHAPE_TYPE.ROUNDED_RECTANGLE, left, top, width, height)
AttributeError: type object 'MSO_SHAPE_TYPE' has no attribute 'ROUNDED_RECTANGLE'
それぞれMSO_SHAPEをMSO_SHAPE.RECTANGLEへと変更したらpowerpointのスライドを生成しました。
最後のスライドの大きな四角形を除けば、タイトルしか指定していないのにそれなりの出来になっています。
ここで日本語に変換できるか確認していくため、更に「make contents japanese」と入力すると、
プレゼンテーションのテーマを説明するテキスト
プレゼンテーションのタイトル =「IoTとは何か」
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = presentation_title
subtitle.text = "包括的な概要"
# 新しいスライドを作成
bullet_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(bullet_slide_layout)
shapes = slide.shapes
title_shape = shapes.title
body_shape = shapes.placeholders[1]
title_shape.text = 'IoTとは?'
tf = body_shape.text_frame
tf.text = 'IoTとは何か? \n'
p = tf.add_paragraph()
p.text = 'IoTとはInternet of Things(モノのインターネット)の略です。インターネットに接続され重畳する物理的なオブジェクトのネットワークで、それらの環境やお互いと対話することができます。'
p.level = 1
p = tf.add_paragraph()
p.text = 'これらのオブジェクトは、スマートテレビから接続されたセンサーまで、何でもあります。リアルタイムでデータを収集および通信するために使用することができます。'
p.level = 1
p = tf.add_paragraph()
p.text = 'IoTは、環境をモニタリングおよび制御したり、安全性と効率性を向上させたり、新しいサービスや製品を作成したりできるため、私たちの生活においてますます重要な役割を果たしています。'
p.level = 1
# 新しいスライドを作成
slide_layout = prs.slide_layouts[2]
slide = prs.slides.add_slide(slide_layout)
title_shape = slide.shapes.title
body_shape = slide.shapes.placeholders[1]
title_shape.text = 'IoTの利点'
tf = body_shape.text_frame
p = tf.add_paragraph()
p.text = 'IoTは、次のような幅広い利点を提供できます。 '
p.level = 1
p = tf.add_paragraph()
p.text = '- 効率性と生産性の向上 \n - コストの削減 \n - 安全性の向上 \n - カスタマーエクスペリエンスの向上 \n - データの精度と洞察力の向上'
p.level = 1
# 新しいスライドを作成
slide_layout = prs.slide_layouts[3]
slide = prs.slides.add_slide(slide_layout)
title_shape = slide.shapes.title
body_shape = slide.shapes.placeholders[1]
title_shape.text = 'IoTの応用'
tf = body_shape.text_frame
p = tf.add_paragraph()
p.text = 'IoTは、次のような幅広い応用があります。 '
p.level = 1
p = tf.add_paragraph()
p.text = '- オートメーションと制御 \n - 接続型ヘルスケア \n - スマートシティ \n - 企業リソース管理 \n - 産業オートメーション \n - 接続型車'
p.level = 1
# 新しいスライドを作成
slide_layout = prs.slide_layouts[4]
slide = prs.slides.add_slide(slide_layout)
left = Inches(0.5)
top = Inches(2)
width = Inches(9)
height = Inches(5.5)
shape = slide.shapes.add_shape(MSO_SHAPE_TYPE.RECTANGLE, left, top, width, height)
shape.fill.solid()
shape.fill.fore_color.rgb = RGBColor(0, 176, 240)
title_shape = slide.shapes.title
body_shape = slide.shapes.placeholders[1]
title_shape.text = '結論'
tf = body_shape.text_frame
p = tf.add_paragraph()
p.text = 'IoTは、幅広い応用がある迅速に進化している技術です。効率性を向上させ、コストを削減し、新しいサービスや製品を生み出すために使用することができます。'
p.level = 1
p = tf.add_paragraph()
p.text = 'IoTが継続的に進化していく中で、私たちの生活においてますます重要な役割を果たしていくと考えられます。その潜在性はまだほんの一部しか探索されていません。'
p.level = 1
prs.save('What_is_IoT.pptx')
を吐き出しました。
タイトル部分のコードも日本語に変換されているので、上記で指摘した点とともに修正します。
Tomeを利用してみる
Tome : https://beta.tome.app/
ログインとworkspaceの作成をします。
ここで一つスライドを選択します。
右下の「AI create」を選択し、画面下部に出現するバーに文字を入力します。
「DX支援とは」と入力したところ以上の一枚のスライドを自動生成しました。
他の文字を入力して試してみます。
「新規事業のシステム開発においてノーコード開発がおすすめな理由」
「ノーコード開発がおすすめな理由」
「システム開発における課題」
このようなグニャグニャした画像が出力される場合もあります。
一つのタイトルに対して簡単な文面と画像一枚をセットにして一枚のスライドを生成してくれますが、タイトルのみ決めて大まかなスライドを完成させることが可能です。あくまで大まかなものであることをわかっておかなくてはなりません。
まとめ
以上、二点について紹介しました。
どちらも完璧なものではないですが、たたき台として十分活用できるものだと感じました。一度利用してみて、その便利さを体験してみるのも良いかもしれません。今後もAIの進化には目が離せませんね。
メンバーを募集中!
当社ではお客様に向き合い、お客様の事業成功にコミットをできる仲間を募集しています。
正社員、インターンから副業まで、幅広く採用活動を進めております。プロジェクトマネージャーやシステムエンジニアとして当社のシステム開発業務に携わってみませんか?
当社と共に、業界トップを目指して挑戦したい方は未経験者から経験者まで広く募集しているので、ぜひエントリーをお待ちしています。