XML-y

Hajime Morrita
To Phantasien
Published in
2 min readOct 15, 2015

--

久しぶりに前向きな意味で XML が口にされるのを耳にした。正確には XML-y。

巨大で messy な "MegaController" クラスを小さくテスト可能なクラスにリファクタリングするそのライブコーディング(日本語トランスクリプト)のなか、演者の Andy Matuschak はテストの要らないある種の無難なコードたちを XML-y と評した。エックスエムエリィ。

XML-y なコード。たとえば値をセットするだけ。テーブル駆動的な switch-case. あとは View ツリーの構築もそうだと思う。React 経験者なら JSX を使わずに render() を書くと思えばだいたいあってる。Android 用の Kotlin フレームワーク Anko が View の構築に使う気の利いた DSL もこの仲間といえる。

JSX や Anko DSL が成り立つのは、その処理が宣言的に書けるものだからだ。宣言的で素直、ロジックも副作用もない。だから一見ややこしくても単体テストはなくていい。XML-y なコードにはそんな性質がある。逆にコードを XML-y たらせるにはロジックを追い出さないといけない。

XML-y は単に宣言的、あるいは “Template-y” や “JSON-y” とは違うのか。大差ない気はする。強いて言えば再帰的な構造を再帰呼び出しを使わずあらわせる、そして出来上がるのが文字列や辞書でなく好きなクラスのオブジェクト、となれば十分 XML-y かな。

コンストラクタの引数にサブツリーと属性を渡すオブジェクトツリー構築イディオムは昔からあるけれど、XML-y と呼ぶのははじめて聞いた。美点を捉えた良い名前だと思う。XML も草葉の陰でホロリときてるに違いない。

--

--