AI(Claude)でWooCommerceの発送管理プラグインを作った話

3Dプリントアイテムのショップ道具眼ショップはWordPress上で動くWooCommerceというECサイト開設プラグインで構築しています。とてもよくできたプラグインですが、個人レベルでは微妙に痒い所に手が届かない場所があったりして、有料のプラグインを導入するほどでもないところはAIにカスタムしてもらったりオリジナルのプラグインを作って貰ったりしまくっています。

本記事ではそんな一例を紹介してみたいと思います。

最近こちらで、「最近AIで日々の作業を簡略化、自動化したよ」みたいな事例を語るビデオPodcast的な雑談チャンネルをやってるのですが、そこで触れた発送管理ツール、プロンプトや画面例が出て来ない(編集を最低限にする主旨でやっている)ので、少し補足的にここに載せておこうと。

どうしてもお客さんの宛先情報とかが映ってしまう関係上、画面シェアで動画に載せるのは躊躇われたので、静止画でボカシを入れてここに載せます。

■やりたかったこと

私のショップでは3Dプリントで作った小物を販売しており、その大半は日本郵便のクリックポストで発送します。クリックポストはWeb上で宛名情報を入れて決済するとバーコード入りの宛名ラベルが出力されるので、それを荷物に貼り付けてポストに投函する仕組みです。発送時にWooCommerceが顧客に送信するメールに追跡リンクを挿入するため、クリックポストで発番された追跡番号をWooCmmerceの注文レコードに追加しています。つまり追跡番号が注文情報と宛名ラベルを紐付けるキー情報になっている前提です。

またWooCommerceには注文後とのステータスフラグがあり、「入金待ち」「処理中」「完了」「キャンセル」などがプルダウンメニューで指定します。「完了」にすると自動的に発送通知が顧客にメールされるようにもなっています。

動画でも触れていますが、私はパッケージを作ったからといって即「完了」ステータスにはしたくない。うっかりその荷物をポストに入れ忘れるリスクがあるので、確実にポストに投函完了した段階で「完了」フラグを立てたい。最初は投函して帰宅した後にまとめてフラグをつけたんですが、これも結構忘れがちで、相手に届いた頃に思い出してステータスを変更して発送完了メールが送られたりする(他の通販でもそういうことがままあり、「あぁ、同じミスしてんだなぁ」と思ったりもしています)。

つまり事前でも事後でもなく、ポスト投函した瞬間に完了フラグをつけたい。もちろんWordPressなのでスマホのブラウザからでも操作できますが、荷物がたくさんあると取り違えの可能性があったり、ポスト前で時間をかけて作業したくない。そんなニッチはニーズを満たす機能をつけたい(作りたい)と思い立ったのが経緯です。

■やったこと

もともとChatGPTやGeminiでコードを書くことが多かったんですが、動画の主旨がClaudeだったこともありちょうどProプランをサブスクしたばかりだったClaudeを使いました。初期プロンプトはこちら。いきなりの具体的な作業指示ではなく、「こんなことをしたいけど、そもそもどんな実装方法がいいか?」というところを相談するところからスタートしました。

WooCommerceの出荷管理(ステータスを”完了”にする)を簡便化するツールを作りたいです。 現在出荷物の大半をクリックポストで行っており、Advanced Shipment Tracking for WooCommerceプラグインで注文レコードに追跡用バーコードの値を追加しています。 運用としては、投函漏れがないように、ポストで投函する瞬間にスマホのWooCommerceアプリで注文を探しステータスを変更していますが、数が多いとポスト前でもたつきます。

これを改善するソリューションとして、
・iPhoneのカメラで投函物のクリックポストラベル上のバーコードを読む
・Advanced Shipment Tracking for WooCommerceのフィールドからマッチする追跡番号を含む注文を見つけてステータスを「完了」に変更する
という処理を行うツールを作りたいです。

実装の方向性としては、
1) WordPressのAPIを叩くWebアプリやiOSアプリを作る
2) WordPressのプラグインとして実装し、モバイルブラウザでアクセスする
などがあるかなと思っています。

UIとしては、
・バーコードを読み取る
・照合して注文者名を表示
・目視確認して、「完了」ボタンを押すとステータス更新
みたいなのを基本として、数個のパッケージを連続で効率よく処理できるとベストです。

実現可能性を検討してください。

結果としてClaudeの推奨はWordPress上にプラグインを実装するというものでした。Advanced Shipment Trackingが追加するカスタムフィールドをWordPress API経由で操作することができないので、そこの窓口を開けるくらいなら、最初からWordPress内部に入って制御する方が簡単だというわけです。アクセス制御などセキュリティ面もWordPressの既存機能を活用できる分、簡略化できるという点も。

課題として、iPhoneのSafariにバーコードを認識するAPIがない点で、オープンソースのバーコードライブラリを探してプロトタイプを作ってくれて、クリックポストのバーコードが使っているCodabar(NW-7)という形式が正常に読み取れるかテスト。これが成功すると本格的にコーディング作業に移行。いくつか細かいUIの注文を指示して、以下の物が完成しました。

■できたもの

できた画面がこちら。

バーコードスキャナー周りについては、ズームやライトなど頼んでないことも勝手に実装してくれています(おそらくバーコードリーダーライブラリーのサンプルや仕様にあったんじゃないかと)。横長の1次元バーコードを読む想定なので、カメラスルー画にグリーンの目安枠が出ていたり小綺麗かつ必要充分なユーザビリティを備えています。

クリックポストのラベルには一次元コード2つ、二次元(QR)コード1つがレイアウトされていますが、余計なコードを読んでしまわないよう内部的にスルーするようにもなっています。正しいバーコードを読み取ると「ピッ」と音がして、その数字をWordPress DBに照会して、「発送待ち」ステータスの注文レコードから該当するものの注文番号、注文者名、商品名のカードを画面下部に並べていってくれます。最後に「まとめて発送」ボタンを押すとステータスの書き換えを実行してくれます(その時点で購入者に発送完了メールが送信される)。

Safariのブックマークをホーム画面に表示する機能(PWA)を使って、ホーム画面からアイコンをタップするだけで呼びだせるようにもしていいるので、アドレスバーなどは消えていて画面一杯に見え、まさに専用アプリの出で立ちです。

追加で指示したこと

ほぼほぼ初回で満足のいくものができたのですが、使ってみてちょっと不便だなと思うことを追加で改善してもらいました。

・「スキャン開始」ボタンが押しづらい位置にあったので、カメラスルー画の枠タップでも起動できるようにしてもらった(しなみにブラウザのセキュリティルールでカメラの起動は必ずユーザ操作をトリガーにする必要があり、自動で最初からカメラが起動、ということはできません)。

・スキャンした後で画面を閉じるとメモリ状況によってはリストがクリアされてしまうので、ブラウザのローカルストレージにリストをキャッシュするようにしてもらった

・そうすると今度は発送し終わったリストが永続的に画面に残ってしまうようになったので、半日程度で消えるようキャッシュ寿命を定めてもらった

たぶん後出しでチューニングしてもらったのはそれくらいだったと思います。

なお、ここまで基本的に自分では一切コードをいじっていません。いわゆるバイブコーディングです。

■まとめ

WooCommerceでの発送作業で日々不便だなと思いつつ、なかなか自分でゼロからコードを書く時間もとれずにいたところを、Claudeを使ってみたところサクっとできてしまいました。技術的には時間をかければ自分でも作れたとは思いますが、自分のスキルでは1日仕事かそれ以上かかると思われ、腰を上げることはなかった気がします。Claudeも一瞬で作ってくれるわけではないですが、基本的には指示をして放置しておけば出来上がってくるので、他の作業の合間に進捗をみて追加指示をして、出てきた物をサーバーに設定して動作テストして、くらいのサイクルを何度かまわしたくらいです。本当にとんでもないツールが使えるようになったものです。

Thnking Aloudチャンネルでは、今後もノンプログラマ向けのAIを使ったリアルで身近な業務改善事例をダラダラを実演したり紹介していきたいと思います(他のコンテンツも混在しています)。生成AIってチャットで調べ物くらいしかしたことなくて、それ以上のことはプログラマーとかクリエイターが専門的に使うもの、というイメージをお持ちの方に、実はこんな身近な事務作業の簡略化、自動化にも使えるんだ!って気付きをもっていただくきっかけになればと思っています。ご関心をお持ちくださったらチェンネル登録などお願いできれば幸いです。

CPAP機器AirMiniのBluetooth同期切れ問題をスマートプラグで解決する

私はSAS(睡眠時無呼吸症候群)でCPAP治療をしています。CPAPとは呼吸補助具で鼻や口にマスクをつけて一定の空気圧で呼吸を補助し、いびきを抑制して熟睡を促すというもの。で、これの使用ログを医師に提出する必要があり、私の使用しているAirMiniはBluetooth経由でスマホアプリに同期し、そこからサーバーに送信することで以前のような通院時にSDカードを抜いてもっていくといった手間から解放されます、、、されるはずでした。iPhoneのバックグラウンド動作の制約によるのか、これが定期的に同期されなくなる問題が取り沙汰されています。なんの対処もせずに月イチの診察に行くと「最近データが届いてないんですけど、、」と言われます。実際、アプリを開いてみるとしばらく同期がされておらずデータ無しになっていたり。対処法としては、CPAP装置の電源を落として入れ直すというもの。これをするとアプリを特に操作しなくても同期が再開されます。おそらくBluetooth接続をトリガーにアプリがバックグラウンドで働いて同期を行ってくれるのでしょう。

実際同期トラブルは多いらしく、医師にも「またですね。次回また見せてください。」といいますし、管理会社の帝人ファーマからも何年か前から定期的にアプリを起動して同期をするよう自動送信メールが送られるようになっており、問題は認識しているがメーカー側でも根本的な対処ができてないようです。ちなみに「明日は通院日だから電源入れ直ししよう」と思っても大抵手遅れで、サーバーに送信されてからクリニックで閲覧できるようになるまでタイムラグがあるらしく、2,3日前には送信しておく必要があり、それで今でもちょいちょい忘れてしまいがち。

で、ここにきて保険適用の条件の改定がなされました。一定期間機器の使用(=治療)が認められない場合に保険が適用されなくなる、というもの。これはあくまで国から病院への施策ではあるのですが、病院によってはそれでは負担像になってしまうため、治療を断られる場合もあるとかないとか。

ということで、もう少しスマートに解決したいと思い、スマートプラグで定期的に電源を切->入したらいいんじゃないかと思ってたんですが、一般的なSwitchBotの製品でも2,000円弱します。

SwitchBot スマートプラグ プラグミニ スマートコンセント スイッチボット 消費電力モニター タイマー コン…
¥1,980 (2026/09/12 21:58時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場

たかだか月に1回電源を切/入するにも微妙にもったいないよなぁ、、と思って踏ん切れないでいました。

そんな折りに立ち寄ったIKEAで旧型のスマートプラグTRETAKTが処分価格の399円で売られていました。現行品はGRILLPLATSというモデルに代替わりしており、こちらはMatterというIoT業界標準規格に準拠しており、単体でGoogle Home/Alexa/Apple HomeKitなどで操作可能になります。まぁ、こっちも899円と充分安いんですが。

Matterに対応してない旧モデルのTREKAKTの場合、専用スマホアプリや同社のリモコンや人感センサーで操作するか、DIRIGERA のようなスマートハブ(親機)を経由してWi-Fi経由の操作も可能になります。我が家の場合、これもまた旧世代のTRÅDFRI(トロードフリ)ゲートウェイというハブが既にあったので、最悪でもこれを使ってHome Assistant経由でどうにでもオートメーション(定期実行)できるだろうと踏んで衝動買いしました。

案1. スマホアプリでタイマー実行?

ここまで書いて恐縮なのですが、399円で投げ売りされているTRETAKT単体(とスマホ)でタイマー制御できるかはいまいち不明です。タイマー設定画面自体はあるのですが、ゲートウェイのない環境で使用可能かどうか、うちはゲートウェイがある前提の画面になってしまい確認できませんでした。

またタイマー設定がON->OFFの順でセットで指定する作りになっていて、「指定した時間にオンにしたものを、しばらく後に切る」という使い方しか想定されておらず、短期間に再起動する(オフが先に来る)指定ができないっぽいです。無理矢理設定するならば、

  • 12:00にオン
  • 11:59にオフ

みたいに入力はできるのですが、どういう動作になるのか未知数です。

一応オフが先の時間でもセットはできた。


これから単体で使う場合はMatter対応の後継モデルであるGRILLPLATSはSmartBot等を買うことをお勧めします。試してはないですが、Matter対応デバイスなら、Google HomeやAlexa、HomeKitなどのデバイスに登録すればオートメーションで自由にタイマー制御できるはずです。

案2. Home Assistantでオートメーション化

これは前提として我が家に旧ゲートウェイとHome Assistantサーバーがあったから実現したことですが、さっくりゲートウェイをHome Assistantに登録して、操作対象にできたので、今回はそちらのオートメーション(自動化)で毎日定時にオフ->オンするようにしました。ざっくり手順を書くと、

  1. 買って来たTRETAKTを旧ゲートウェイに登録する(スマホアプリIKEA Smart 1で実行)
  2. Home Assistantサーバーに旧ゲートウェイを登録する(ゲートウェイ管理かのZigbeeデバイスがHome Assistant上からアクセス可能になる)
  3. Home Assistantのオートメーションを組む

という感じ。

設定はこんな感じ。念のためオフからオンの間に10秒間を開けています。また時間帯としては、電源が入った瞬間にスマホが近くにあった方が良い気がするので在室率の高そうなタイミングを指定しています。


時折見ている限りではきちんと同期が取れてる気がしていますが、アプリを起動して確認することで同期されてしまう可能性もあるので、2,3ヶ月は放置して様子をみようと思います。

ちなみに、IKEAの電源プラグやタップは2つの穴の長さが違う海外仕様で、国産の電気製品のプラグが刺さらないことが多いので基本的に避けているんですが、AirMiniのACアダプターは普通に指す事ができました。

■まとめ

前提のなる環境が整っていたとはいえ、399円で自動化ができたのはラッキーでした。実は2個買ってあるんですが、Home Assistant経由で活用できるなら在庫があるうちにもう少し買い占めておいてもいいかなと思ったり。

Print Invoice & Delivery Notes for WooCommerceの文字化け対策

WordPress + WooCommerce環境で、注文/発送完了メールに自動的に領収書や納品書PDFを添付する表記プラグインPrint Invoice & Delivery Notes for WooCommerceですが、Edgeでは表示できるものの、AcrobatやiOS/macOSの「プレビュー」では文字化けしてしまいます。

Acrobatではこうしたエラーも。

■Step1. 全化けに対処

どうもフォントの埋込みに失敗しているっぽい。このプラグインには「WooCommerce」→「Print Invoices & Delivery Notes」→「Settings」→「Font Setting」にフォントをアップロードする項目があります。

これをいつどうやって設定したか覚えていませんが、こうなっていました。

NotoSansJP_v5.ttfと同_boldがアップされている状態。これを改めて「Download Noto Sans JP→」リンクからGoogle Fontsにとんでダウンロード。解凍すると以下のファイル群が出てきます。

_v5がついておらず、-Regularがついています。ファイルサイズも1/3くらい。v5をどこから拾ってきたアップしたのか覚えていませんが、とりあえずv5を一度削除(Remove)して、RegularとBoldをアップロード。

これで、大半の文字化けが治りました。

Step2.「領収書」見出しとショップ名の文字化け対策

しかし、まだ完璧とはいかず、先頭部分になにやら「NO GLYPH」のような表示が残ります。

HTMLプレビューでは上が「領収書」、二段目が店名のようです。これがPDF時点ではこうなってしまいます。

生成されたPDFをpdfontsコマンドで覗いてみると、

先程の、2フォントに加え、Interという欧文フォントが内部で使用されていることがわかりました。しかし、プラグインの設定画面にはこの第三のフォントを上書きする欄がありません。

そこでClaudeさんに相談して提案されたのが、HTMLプレビュー時点の「領収書」タイトルと店名のスタイルシートを上書きする方法。開発者モードでそれぞれのクラスを調べると、.wcdn-titleと.wcdn-shop-nameでした。これをちょちょいと上書きしてここのNotoSansJPを使用するように書き換えるPHPコードをfunctions.phpに書いたら、見事最後の文字化けも解消しました。

将来的にはプラグイン自体が修正されて、第三フォントの上書き設定項目が追加されるかも知れませんが、やってることは既存の2フォントへのフォールバックで、きちんと極太ウェイト(600)にもなっているので、フィルターを消し忘れても実害はないかなと思います。

Home Assistantでスマートプラグの消費電力値をリアルタイムで取得する(M5 StackによるBluetoothプロキシを導入)

そういえば記事にしてなかった気がしますが、最近Home Assistantを導入しています。これは各種IoTホームデバイスを一元管理できるオープンソースのWebプラットフォームです(スマホアプリもある)。例えば、我が家にはSwitchBot、Sesame、NatureRemoなどのスマート家電制御アイテムが混在しており、他にも3Dプリンターやセキュリティカメラ、家電などIoTデバイスが無数にあります。通常はそれぞれに用意された専用アプリを使って操作したり状況を読み取ったりするわけですが、Home Assistantを使えばそれを一元管理し、統合ダッシュボード上で操作・監視できるというわけです。同様のシステムのHome Bridgeがありましたが、それの令和版といったところでしょうか。

我が家ではあまり活用できてなかったMac miniサーバーのDockerコンテナ版を動かしています。専用サーバー製品Home Assistant Greenのようなワンボードマイコンを使った専用デバイスもあります。

■今回のミッション

今回のミッションは3Dプリンターやレーザー加工機、フィラメントドライヤーなどがひしめく一角の電力消費を正確に把握したい。可能ならばヤバい時にアラートを出したい、というものです。我が家は慢性的なコンセント不足で、タコ足配線が常態化しています。これらの機器も別々のコンセントから取れるといいのですが他にもPCやらサーバーやらNASやらなんやらで全く余裕がなく単一のコンセントに、X1-Carbon、AMS、AMS HT、SANLU AMS Heater、XTOOL F2、レーザープリンター、テスコムコンベクションオーブンなどがぶらさがっています。これら全てを同時に使うことは希ですが、うっかり1,500Wを超えてしまうとよろしくないので、肌感覚としてどれくらいに消費電力なのかを監視したり、あわよくば1,500Wに近づいたらアラートを出すみたいなこと実現したいと考えました。

SwithBotスマートプラグをHAに統合してみたが…

今回使用したのはこれ。おそらく日本でいちばん普及しているスマートプラグです。

SwitchBot スマートプラグ プラグミニ スマートコンセント スイッチボット 消費電力モニター タイマー コン…
¥1,980 (2026/09/12 21:58時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場

SwitchBotデバイスはほとんどHAにも対応しているので、登録自体はすんなり完了。オンオフ制御はもちろん、消費電力や電圧、電流量もきちんと読み取りできます。しかし、この数値の更新がリアルタイムではなかった…

どうもこれはSwitchBotクラウドを経由した同期だから更新間隔が5分とか結構空いてしまうと判明。これだけでもおおよその勘をを鍛えるには良いですがアラートのソースとして使うには少し不安。あと、SwitchBotアプリで消費電力を確認するには、ダッシュボードで当該デバイスを選択タップするんですが、その右上に電源ボタンがあるのが恐すぎ問題w

造形中の消費電力をチェックしようとしてうっかり電源を落としてしまう、なんて笑えません。

どうもHAのSwitchBotコネクターにBluetooth経由のアダプターが存在することに気付きました。Geminiさんによるとこっちならばクラウド(WAN)を経由しないのでほぼリアルタイムで数値の更新が望めるとのこと。

macOS + Docker環境ではBluetoothデバイスを認識できない…

しかし実際にSwitchBot Bluetoothコネクターでセッテイングをしようとしてもデバイスが発見できない。どうもmacOSホストのDockerだとMac内蔵のBleutoothデバイスを仮想化してDockerコンテナから使用することができないとか。そういえばSesameなどのMatterデバイスの登録も成功してないのはこれか…

回避策としては、

  1. USB BluetoothアダプターをつないでDockerにバイパスする
  2. ESP32デバイスでBluetooth->Wi-Fiプロキシを建てる
  3. 他社のローカル通信でリアルタイム更新ができるスマートプラグに買い換える

などが挙がりました。その中で興味がわいたのは2です。ESP32はWi-Fi/Bluetoothも使えるワンボードマイコンです。ラズパイをもっと簡素化したようなものと捉えてもらえば良いでしょう。これを使って、こいつがやりとりしたBluetooth信号をWi-Fiに載せてHAサーバーに中継できる模様。しかも単一のHAサーバーに手足のように複数のデバイスを統合できるので、他階のBluetooth電波が届かない場所にあるスマートデバイスもHAに直接参加させられる可能性があります(例えば玄関のSesameなど)。

とりあえずこれを1セット用意して実験してみることに。ESP32互換ボードはたくさんありますが、とりあえずシェル(ケース)がついていてUSB-C給電仕様で、きちんと国内企業が技適を通しているもの、ということで、こちらのM5Stack ATOM Liteをチョイス。

M5Stack ATOM Lite Wi-Fi/Bluetoothに対応するSoC「ESP32-PICO」をメインに、押しボタンスイッチとRGB LED…
¥2,650 (2026/09/12 21:58時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場

想像より小さくてテンション上がります。SDカードよりちょっと小さいフットプリント。天面と左側面にボタン。

背面は4ピンと5ピンのピンヘッダー、USB端子と同じ面にも4ピンのカプラー、色々な制御に使えそうです。

今回は全く使わないんですが、ラズパイが高くなってしまった今、どんな遊び方ができるのかまた探っていきたいです。

■セットアップ

接続しようとしているMacにUSBケーブルでM5stackを接続(通電してランプが点灯します)。

ESPHome公式のこの自動セットアップページを開きます(ChromeかEdge必須。Safariは非対応)。「I want to create a:」というラジオボタンで「Bluetooth proxy」を選択。下にセットアップする機材の選択肢がでるので、「Generic ESP32」を選択して「Connect」

このようなダイアログが出るので、M5stackを選択。

「Install esphome.bluetooth-proxy」を選択

確認ダイアログで「Install」を選択

そのままファームウェアを書き込んでくれます。すご!

インストールが終わるとWi-Fi設定に進む。「Network」に近所に飛んでるSSIDがリストされるので自宅のものを選択肢、パスワードを入力して「Connect」

自宅Wi-Fiにつながると成功メッセージとともに「Add to Home Assistant」の項目が出現するので選択

おまえんとこのHAのURLを入れろ、と言われるので入力してSave

HAダッシュボードの統合画面が開き、「ESPHomeを設定しますか?」と聞かれるのでOK

しかしここでハマる。IPアドレスとポート番号を入力するダイアログが出るも一瞬で消えてしまう。何度やっても同じ。手動でESPHomeの追加をすると、こうなるけど、前の画面に戻っても降られたIPアドレスが不明。

ログ画面でIPアドレスを調べて手入力。あとで変わっても困るので、ルーター側でそのIPアドレスをM5Stackに固定で割り振る様にしておきました。

これで接続成功こんな感じで発見でしたSwitchbotのBluetooth電波がずらっと出ます。

宅内にスマートプラグ(Plug Mini(JP)は複数ありますが、続く()内の4桁英数字がMACアドレス末尾4桁なので、SwitchBotアプリで目的のプラグのMACアドレス(Wi-FiもBluetoothも下四桁は同じ)で照合。

これで無事クラウド経由とは別のBluetoothデバイスとして追加されたので、ダッシュボードのグラフのソースを切り替え。

Bluetooth経由であれば1fpsかそれ以上の更新頻度で数値が切り替わっていきます。下の動画はレーザープリンターでラベル用紙1枚印刷した瞬間のものです。

なんでもかんでもBluetooth経由にしてリアルタイム通信する必要はないので、当面はこのクラフト機器のプラグだけ登録しましたが、これは楽しいですね。

ミッションコンプリート!

3DプリントアイテムのWebショップにモデルをグリグリ回せるギミックをつける。盗用もある程度防ぐ。

3Dプリント品を販売しているWebショップで、アイテムの形状などを確認できるように3Dモデルをブラウザ上でグリグリ動かしたりズームしたりできる仕掛けを実装したいと思いました。stl形式のデータをアップして、WordPressのプラグインを使って表示すれば実現は可能なのですが、そのstlファイルを抜かれると3Dプリンターを持ってる人なら簡単に複製できてしまうので、売り物でやるのは躊躇われていました。

なにか暗号化してファイルを取得されても再利用はできないような仕組みがあればなと思って調べてみたんですが、やはりブラウザ上でレンダリングするにはWebGLとかに変換された時点で完全には盗用は防げないっぽい。より高等なプラグインを使う外部サービスとかはあるみたいですが、個人でそこまで大がかりなことはしたくないし、外部サービス依存も避けたい。

ということで、方針として、

・メッシュデータを簡略化して、「形状確認でグリグリするするには足りるけど、プリントするにはガタ付いていて実用にならない」くらいの精度に落としたものを使う

ということを目指すことにしました。Bambu Studioにある簡略化という機能に着想を得たんですが、CADソフトのFusion側でもサクっとできることが判明。覚え書きにしておきます。

STL形式よりもglTF 2.0形式

同時にブラウザ上で3Dモデルを表示するにはSTLよりもglTF形式というフォーマットの方が優れていることがわかりました。

  • STLより軽量でスマホも含めて快適にレンダリングできる
  • 3MFのようにカラー情報も保持できる(STLは純粋な形状データだけ)
  • スライサーに直接読み込めなかったり、内部データも軽量化されていて盗用されにくい

といった特徴があります。もちろんWordPress/WooCommerceでも簡単にプラグインで表示できます。

ただFusionでは標準で書き出し機能が備わっておらず有料アドオンが必要。そこで一度obj形式などでエクスポートして、無償のBlenderでコンバートするという手順を採りますので、それも合わせて解説します。

WordPress用プラグイン bPlugins 3D Viewerを選択

フル機能を使うには有償(サブスク)ですが、無償の基本機能でもやりたいことは実装できました。

実際の適用例はこちら(リンク先をご覧ください)。

こちらで注文できます

Tzパ-プルセーバー&消棒レスキュー ドアポケットホルダー(新型クラウン用)

Tzパ-プルセーバー&消棒レスキュー ドアポケットホルダー(新型クラウン用)

参考価格: ¥1,200(別途消費税、送料がかかります)

在庫: なし

単純にページ内にインラインでビューワーを表示もしていますが、加えてWooComemrcが標準でもっている画像表示機能の中に統合もできます。1枚目の画像の右下にアイコンが出るので、それをクリック/タップするとグリグリできるモデルが表示される形です。メッシュ削減してあるので拡大してみると円筒部分がガタガタになっているのがわかります。

ざっくり手順メモ

Fusionで精度を落としたメッシュを作る

Fusion上で変換したいボディを複製します(メッシュに置き換わってしまうため)。

「メッシュ」タブ->作成->テッセレーション。全く聞いたことがない言葉ですが、ソリッドボディがメッシュボディに変換されます(白い円柱アイコンから黄色い六角柱アイコンへ)。パラメーターは特にいじりませんでしたが、寸法が重要なCAD系モデルの場合、盗用防止の意味でサイズや縦横比をわずかに狂わせておくのがトラップとして有効かもしれません(笑)。

続いて「修正」->「削減」で文字通りローポリ化します。タイプを「比率」の場合、比率を10とかにすると10%つまり、1/10まで削減するよということみたいです。プレビューをオンにしておき、許容できるギリギリまで減らします。綺麗さを追求すると盗用もしやすくなるので、形状確認が目的なら多少カクカクが見えるくらいにした方が良い気がします。

で、2026年6月現在、Fusionからは直接glTF(.glb)は書き出せないので、一旦.objでエクスポートします。

Blenderで色設定とファイル変換

Blender使うの何年かぶりで全て忘れてるので、無駄な手順とかあってもご勘弁ください。是非コメントでフォローいただけると嬉しいです。

Blenderでも直接.objを開けないので、一旦新規ファイルを開き、デフォルトで入っている立方体を消し、「ファイル」->インポート->Wabefront (.obj)から読み込みます。

座標系の違いから、へんな場所に浮かんでたり倒立してたりするので、周りを見回してオブジェクトを見つけ、右サイドバーの「トランスフォーム」で位置や回転パラメーターをいじって希望する初期位置/向きに直します。原点に寄せておく必要はないかも知れませんが念のため。

次にその横に小さなアイコンがたくさん縦に並んでいる中の一番下の「マテリアル」を選択。

Fusionで割り付けてあったテクスチャーがついてる場合は一度削除して新規作成した方がなんか上手く行く印象です。「ベースカラー」で色を変更。「メタリック」は上げると金属っぽい光沢になります。「荒さ」を半分くらいまで上げるとプラスチックっぽい質感になるとのことですがあんまりわからず。この辺り、使いこなせばもっとリアルさを追求できると思いますが、ウチは3Dプリント品なのでそこまで凝ったことはしてません。

「エクスポート」からglTF 2.0(.glb/gltf)を選んで書き出します。

WordPress/WooCommerceで活用

上でエクスポートしたglTFファイルをメディアにアップロードし、投稿者「bPlugins」の「3D Viewer」というプラグインを導入しておきます。

a. 投稿/ページ内にインラインで挿入するショートコードを作る場合

左サイドバーの「3D Viewe」から「Add New」で新規作成画面に行きます。

サイドバーにModel、Settings、Styleの垂直タブがあります。ここでは最低限の手順だけ触れます。

Modelタブの3D SourceでメディアにアップロードしておいたglTFファイルを選択。3D Poster Imageは最初に表示される。グリグリしてる時の背景にもなります。

Settingsタブで各操作要素を有効/無効化できます。

Styleタブでは、デフォルトでWidthが100%(横幅一杯)、高さが狭めなのでお好みで広げておきます。Background Color(背景色)を変更してモデル色が埋もれない色にしておくといいでしょう。

これで「公開(更新)」をクリックして、青色の「3d_viewer id=’xxxx’」というショートコードをクリックしてコピーし、挿入したい場所に貼り付ければOKです。

b. WooCommerceの商品画像に追加する場合

商品編集画面で、下の方にスクロールすると本プラグインの設定ゾーンが出現しています。

特有なのは「3D Viewer Position」です。選択肢を簡単に訳すと、

  • None: 表示しない
  • Top of the product image: 商品画像の上
  • Bottom of the product image: 商品画像の下
  • Replace Product Image with 3D: 商品画像を3Dで置き換える
  • Show 3D on First Image of WooCommerce Gallaery: WooCommerceギャラリーの先頭画像として3Dを表示

とでもなるでしょうか。個人的には最後のが使いやすいと思います。Top/BottomはWooCommerceテーマによってはおかしな配置になってしまいました。「Show 3D on First Image~」にして、3D Posterに元々先頭にあった画像ファイルを指定しておけば、デフォルトで従来と同じ画像が表示されつつ、右下に3Dグリグリボタンが出る、という感じで、元のレイアウトを崩さずにスマートに3Dモデル表示ができます(さりげなさ過ぎて気付かれないかもですが)。Backgroundで透明度(α値)を指定しておくと、グリグリ中にも後ろにポスター画像を透けさせることができて気に入っています。

まとめ

簡単ですが、盗用されにくい最低限の細工をしつつ(完全ではない)3Dプリントモデル表示をWordPress/WooCommerce上に貼り付ける手順です。

ちょっと工数が多いですが、様々な角度の写真を複数枚貼るよりもスッキリして、なおかつモダンな印象の販売ページになるかなと思います。Fusionから直接glTFを書き出せればなぁと思いますが、有料プラグインは結構お高いので、当面はBlenderを使います。

別に盗られても問題ないモデルであれば、.stlのままアップロードして、別の無償プラグインを使うこともできます。