左側に Swift を貼り付けて "変換" をクリックしてください — XML に変換しますSwift コードを貼り付け

このツールでできること

Swift の struct を模した XML を手書きしたことがあるなら — plist、レガシー ERP とやり取りする SOAP クライアント、XMLParser 用のテストフィクスチャなど — どれだけ中括弧を打ち込むはめになるかご存知のはずです。ここに Swift を貼り付ければ、ワンパスで整形式の XML が返ってきます。単一の struct でも、複数の struct と enum を含むファイルでも、データを詰めた let order = Order(...) インスタンスでも、結果は同じ — すべてのプロパティが保持された完全な XML ドキュメントです。

単純な文字列置換ではありません。コンバーターは Swift が実際にどうシリアライズするかを理解しており、Codable ベースの XMLEncoder が扱うのとほぼ同じ挙動です。Decimal はそのまま数値テキスト、Date は ISO-8601 文字列、UUID は標準の 8-4-4-4-12 形式の hex 文字列、Optional<T>nil の場合は要素が消えるのではなく空要素として出力されます。配列は一貫したコンテナ形状に従い、各配列は要素型にちなんだ名前の子を 1 つずつ持つラッパー要素になります。

Coding のカスタマイズも尊重されます。ネストした enum CodingKeys: String, CodingKey は出力のプロパティ名をリマップするので、struct を触らずに orderId を XML 上では OrderId として出すことができます。ネストした struct や enum はインラインで展開されます。複数の型を貼り付けた場合、それぞれが形を保ったまま出力に現れます — このコンバーターは Swift API Design Guidelines と同じ大枠の設計目標に従っているので、名前やケーシングも予想どおりの挙動になります。

使い方

ステップは 3 つです。5 行の struct を貼り付けても、モデルファイル丸ごとでも手順は同じです。

1

Swift を貼り付け(またはサンプルを試す)

左のエディターに Swift をそのまま貼り付けてください。struct関連値付き enumデータを詰めた let インスタンス複数の型を含むファイル — どれも問題ありません。まず現実的な例を見たい場合は Load Sample をクリックしてください。

import 文を削ったり、@propertyWrapper を外したり、Swift の構文を整える必要はありません。Xcode で見たままのコードを貼り付けるだけです。

2

「変換」をクリック

緑色の 変換 ボタンをクリックします。ツールが Swift を読み込み、すべての型とプロパティを保持したまま XML をワンパスで組み立てます。処理中は短いローディングインジケーターが表示されます。

3

XML をコピー

右側のパネルに、標準的な XML パーサー(XMLParser、lxml、System.Xml、いずれでも)が受け入れる、インデント付きで整形式の XML が入ります。そのまま plist、SOAP ボディ、テストフィクスチャに貼り付けて使えます。

こんな場面で本当に助かる

iOS / macOS の plist 生成

Swift の設定 struct から、Xcode にそのまま落とし込める Info.plist スタイルの XML ドキュメントを生成できます — <code>&lt;key&gt;&lt;/key&gt;</code> ペアの手打ちも、空白文字のバグもありません。デコード側は Apple の <a href="https://developer.apple.com/documentation/foundation/propertylistserialization" target="_blank" rel="noopener">PropertyListSerialization</a> API とよく組み合わさります。

Apple プラットフォーム上の SOAP クライアント

Swift のリクエスト型を SOAP としてアプリから送り出す必要があるとき — struct を貼り付け、XML ボディを SoapUI や Postman に落とし、エンベロープを手書きせずに契約を検証できます。

テストフィクスチャのシード

ユニットテスト中の <code>let order = Order(...)</code> を、XCTest の統合テスト、モックサーバー、今なお XML を話すバックエンドシステム向けの XML シードファイルに変換できます。

ドキュメントの同期を保つ

実際の Swift モデルから直接、README、社内 Wiki、XSD 連携のスキーマドキュメント用の XML 例を生成できるので、ドキュメントとコードがズレることがありません。

よくある質問

複数の struct を一度に貼り付けられますか?

はい — ファイル丸ごと貼り付けてかまいません。トップレベルの struct や enum はそれぞれ、ネスト型を展開しデフォルト値を埋めた形で出力されます。黙って捨てられることはありません。

CodingKeys は反映されますか?

はい。ネストした enum CodingKeys: String, CodingKey は XML 出力のプロパティ名をリマップします — case orderId = "OrderId"<orderId> ではなく <OrderId> として出力されます。CodingKeys に載っていないプロパティは Swift 側の名前がそのまま使われます。これは実運用での Codable の挙動と一致します。

Decimal、Date、Optional はどう扱われますか?

Decimal はそのまま数値テキストとして出ます。Date は ISO-8601 文字列に、UUID は標準の 8-4-4-4-12 形式の hex 文字列になります。Optional<T>nil の場合は要素が消えるのではなく空要素になります — XSD で検証するコンシューマー向けに形が一定に保たれます。

関連値付きの enum や配列はどうなりますか?

関連値付きの enum は、どの case かを示すディスクリミネーター属性と、関連値のための子要素を伴って出力されます — ラウンドトリップに十分な情報量です。配列は要素型にちなんだ名前の子を 1 つずつ持つコンテナ要素になります。Dictionary<K,V><Entry><Key/><Value/></Entry> のコンテナになります。

貼り付けたコードは保存されますか?

コードは変換のためにバックエンドへ送られますが保存されません — ペイロードのログも取りません。オンラインツールの常として、本当に機密性の高いコードは貼り付ける前に目を通してください。

property wrapper、プロトコル、computed property が混ざっていたら?

property wrapper は出力では内部の値に展開されます。プロトコルは形を定義するものであり内容ではないので直接 XML は生成しません — ただし準拠型はしっかり出力されます。computed property は状態ではなく派生値なのでスキップします。構文エラーがあれば目立つものだけでも先に直してください — パーサーは寛容ですが超能力はありません。

ほかに役立つツール

Swift → XML はパズルのひとピースです。以下のツールと組み合わせると便利です: