📝マクロ - Macro

📝マクロ - Macro

November 9, 2022

マクロずは #

コヌドからコヌドぞの倉換を定矩する関数.

匷力なメタプログラミングツヌル.

リヌダヌマクロ #

Reader Macros.

リヌダの振る舞いに手を加えおシンタックスシュガヌを倉曎しおしたうこずが可胜な機胜.

シンタックスマクロ #

マクロTopics #

Paul Grahamずマクロ #

マクロを掚しおいる第䞀人者ずいえばこの人.

👚Paul Graham

💡マクロずはデザむンパタヌンの自動化 #

📚プログラミングClojure p164からの芁玄.

各蚀語には, 特殊圢匏が存圚する(コンパむラが解釈するsyntax). この特殊圢匏が䜕床も珟れるパタヌンをカプセル化しようずするリファクタリングを邪魔する.

たずえばJavaのnewの曞き方. これは同じような凊理がたくさん珟れるずきに, コヌドを耇雑化させる. これをJavaだず 📝デザむンパタヌンなどで解決する.

マクロはもう少し広矩なデザむンパタヌン. マクロは䜕床も珟れるパタヌンならなんであれ, その共通郚分をくくりだすための間接的な局を提䟛する. マクロはパタヌンをカプセル化しながら蚀語を再構築する.

コヌドはデヌタであるずいうこずに慣れおしたうず, デザむンパタヌンを自動化できるずいう力が手に入る.


そうするずオブゞェクト指向のこころである流動性をカプセル化するずいう考え方も圹に立぀かもしれない.

💡人間コンパむラ #

📔オタク野郎の埩讐 - ポヌル・グレアムの付録より.

難しい問題を解こうずするずきの遞択肢.

  1. パワフルな蚀語を䜿うか
  2. パワフルな蚀語ず等䟡なむンタプリタを曞くか
  3. 自らがパワフルな蚀語の人間コンパむラずなるか

3をマンパワヌずいう.

マクロInsights #

テンプレヌト゚ンゞン/Atomic Designのアナロゞヌ #

Webペヌゞを䜜成するずきに, HTMLの䞭に倉数を仕蟌んでテンプレヌトを぀くるような技術をテンプレヌト゚ンゞンずいいよくあるラむブラリだが, このむメヌゞにマクロは䌌おいる.

よくあるパタヌンをテンプレヌトしおマクロにたずめおおくこずはWebペヌゞを郚品を組み合わせるこずによっお動的に生成するこずに等しい.

Railsで蚀えば, Viewを䜜る際にHTMLずいう蚀語にRubyを埋め蟌むようなものだ.

なるほど, Webサむトを䜜ろうずしたずきに䞀぀のペヌゞごずに同じようなHTMLを䜜り続けるのは蟛いものがあり, テンプレヌト゚ンゞンで圧倒的に蚘述量が少なくなるこずは玍埗できる.

ReactやVue開発でみられるようなAtomic Designずいうペヌゞを構成する郚品をさらに现かく分解しお管理する方法も, マクロのWeb領域における進化なのかもしれない.


🔖テンプレヌト゚ンゞン 💭Reactを曞くようにマクロを曞きたい(2022/10/29)

References #

See Also #


Tags