PythonでSVG(スケーラブル・ベクター・グラフィックス)形式のファイルを出力するプログラムを今回もGemini 2.5 Flashとともに作ってみました。煙突をちょっと手直ししたりして、こんな結果になりました。

このプログラムはhouse.svgというSVGファイルを出力します。SVGファイルはブラウザやGIMP、Inkscape、Adobe Illustratorなどのアプリケーションで開くことができます。ちなみに、Adobe Project Neo (Beta) というサイトでSVGファイルを取り込んで加工すると3Dにすることができます。こんな感じ。

なお、Windows 11 と Chrome 138 の組み合わせでは Project Neo でエラーが出てしまうため、macOS Sequoia 15.5 と Chrome 137 の組み合わせで試しました。Mac の場合は Chrome 138 でも動作しました。
# 家の絵をSVG形式で描画するPythonプログラム
# Version 0.1
# Copyright © 2025 たかはしのんき. The MIT License.
# このスクリプトは、svgwriteライブラリを使用して簡単な家の絵を描画し、SVGファイルとして保存します。
# Gemini 2.5 Flashによって生成されたコードを基にしています。
# 必要なライブラリをインポートします。
import svgwrite
def draw_house(filename="house.svg"):
"""
svgwriteを使って簡単な家の絵を描画し、SVGファイルとして保存します。
Args:
filename (str): 保存するSVGファイルの名前。
"""
# SVGドキュメントを作成します。ビューボックスを設定して、描画領域を定義します。
# widthとheightは、生成されるSVGのサイズです。
dwg = svgwrite.Drawing(filename, size=('200px', '200px'), viewBox='0 0 200 200')
# 背景を白に設定(オプション)
dwg.add(dwg.rect(insert=(0, 0), size=('100%', '100%'), fill='white'))
# 家の本体 (長方形)
# insert: 左上隅の座標 (x, y)
# size: 幅と高さ (width, height)
# fill: 塗りつぶしの色
# stroke: 線の色
# stroke_width: 線の太さ
house_body = dwg.rect(insert=(50, 100), size=('100px', '70px'),
fill='sandybrown', stroke='black', stroke_width=2)
dwg.add(house_body)
# 煙突 (長方形)
# insert: 左上隅の座標 (x, y)
# size: 幅と高さ (width, height)
# fill: 塗りつぶしの色
# stroke: 線の色
# stroke_width: 線の太さ
chimney = dwg.rect(insert=(120, 60), size=('20px', '30px'),
fill='gray', stroke='black', stroke_width=1)
dwg.add(chimney)
# 屋根 (多角形)
# points: 頂点のリスト [(x1, y1), (x2, y2), (x3, y3)]
# fill: 塗りつぶしの色
# stroke: 線の色
# stroke_width: 線の太さ
# 屋根の頂点: (100, 50) - 上の頂点
# (40, 100) - 左下の頂点
# (160, 100) - 右下の頂点
roof = dwg.polygon(points=[(100, 50), (40, 100), (160, 100)],
fill='darkred', stroke='black', stroke_width=2)
dwg.add(roof)
# ドア (長方形)
# insert: 左上隅の座標 (x, y)
# size: 幅と高さ (width, height)
# fill: 塗りつぶしの色
# stroke: 線の色
# stroke_width: 線の太さ
door = dwg.rect(insert=(85, 130), size=('30px', '40px'),
fill='brown', stroke='black', stroke_width=1)
dwg.add(door)
# 窓 (長方形)
# insert: 左上隅の座標 (x, y)
# size: 幅と高さ (width, height)
# fill: 塗りつぶしの色
# stroke: 線の色
# stroke_width: 線の太さ
window = dwg.rect(insert=(60, 110), size=('20px', '20px'),
fill='lightblue', stroke='black', stroke_width=1)
dwg.add(window)
# 描画をファイルに保存します。
dwg.save()
print(f"'{filename}' が正常に生成されました。")
if __name__ == "__main__":
draw_house()


「Windows 11 と Chrome 138 の組み合わせでは Project Neo でエラーが出てしまう」という件ですが、あるPCのみでの現象であり、Geminiに解決策を聞いたところ、その中にChromeの「設定>システム>ハードウェア アクセラレーションが使用可能な場合は使用する」の話があったので、この設定をONにしたら正常に動作するようになりました。
ただし「Intel CPUが低速です」という警告がでました。PCのCPUが推奨の第12世代Intel Core i7より1世代前のIntel Core i7-1195G7だからでしょう。
いいねいいね