私はこのスライドに示されているグラフを愛しています。
https://speakerdeck.com/papix/hatena-engineer-seminar-number-10?slide=52
常々気軽にこのようなグラフを作成したいと思っていました。
思いが結実したのがこのリポジトリとAzure Functionsアプリです。
以下のようなURLをゲットします。
https://n-bai.koudenpa.dev/api/Generate.png?name=ポート番号&from=80&to=443
再現度はあまり高くないのでもうすよし「ヨセ」たいと考えています。
以下のようなURLで共有可能です。
https://n-bai.koudenpa.dev/api/Viewer?name=ポート番号&from=80&to=443
https://n-bai.koudenpa.dev/api/swagger/ui
https://n-bai.koudenpa.dev/api/swagger.json
sequenceDiagram
UA->>CDN: GET Request
CDN->>Function: HTTP Trigger
Function->>ShapeCrawler: Read pptx template file
Function->>ShapeCrawler: Edit pptx data
Function->>Spire.Presentation: Convert pptx to image
Function->>CDN: "GURAFU" Image
CDN->>UA: "GURAFU" Image
Note over CDN: Azure CDN
Note over Function: Azure Functions<br/>.NET8 on Windows
このようなグラフの良いところの一つには、オフィスソフトで「雑に」作られたグラフであるところがあります。
その魅力をスポイルしてはなりません。
そのため、グラフはPowerPoint互換で生成し、適当にWebブラウザで表示できる形式に変換しました。
FaaS...Azure Functionsの関数で生成、その結果をCDN ...Front Door でキャッシュが素直な構成でしょう。
当初は低レイヤな OpenXML SDK を用いて生成を試みていましたが、異様に難解だったので諦めました。
ありがとう ShapeCrawler。
OpenXML はデータフォーマットなだけで、これによってpptxファイルを生成できても、画像データにはなりません。
ありがとう Spire.Presentation(無料版)。

