Submit Search
Upload
Ruby メタプログラミングによるXMLテンプレートエンジンの実装と評価
•
Download as PPTX, PDF
•
0 likes
•
342 views
R
R S
Follow
Rubyのメタプログラミング技法を用いてXMLを簡単に記述するスクリプトを作成したので、実装方針と既存ライブラリ(ERB, Slim)と比較した考察です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 24
Download now
Recommended
Web技術勉強会 第25回
Web技術勉強会 第25回
龍一 田中
Web技術勉強会 第25回
Web技術勉強会 20100925
Web技術勉強会 20100925
龍一 田中
20160422 laravel.osaka
20160422 laravel.osaka
シオリ ショウノ
2016/4/22 大阪の密かなLaravelコミュニティ「laravel.osaka」での登壇資料です。
ScaLa+Liftとか
ScaLa+Liftとか
youku
需要があるかわからないし、前回のスライドと共通部分多いけど一応。
Rawler基本
Rawler基本
Takaichi Ito
基本を中心にまとめた。
From Java To Clojure
From Java To Clojure
Kent Ohashi
JavaからClojureへ JavaプログラマこそClojureを始めよう! cf. English version: https://www.slideshare.net/KentOhashi/from-java-to-clojure-english-version
Juliaを使った機械学習
Juliaを使った機械学習
Aki Ariga
Juliaを使った開発環境を中心に紹介します
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
hayabusa333
Elixir MeetUp #2 in Drecom にて発表してきたスライドです。
Recommended
Web技術勉強会 第25回
Web技術勉強会 第25回
龍一 田中
Web技術勉強会 第25回
Web技術勉強会 20100925
Web技術勉強会 20100925
龍一 田中
20160422 laravel.osaka
20160422 laravel.osaka
シオリ ショウノ
2016/4/22 大阪の密かなLaravelコミュニティ「laravel.osaka」での登壇資料です。
ScaLa+Liftとか
ScaLa+Liftとか
youku
需要があるかわからないし、前回のスライドと共通部分多いけど一応。
Rawler基本
Rawler基本
Takaichi Ito
基本を中心にまとめた。
From Java To Clojure
From Java To Clojure
Kent Ohashi
JavaからClojureへ JavaプログラマこそClojureを始めよう! cf. English version: https://www.slideshare.net/KentOhashi/from-java-to-clojure-english-version
Juliaを使った機械学習
Juliaを使った機械学習
Aki Ariga
Juliaを使った開発環境を中心に紹介します
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
hayabusa333
Elixir MeetUp #2 in Drecom にて発表してきたスライドです。
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Tsunenori Oohara
Elixirを本番環境で使ってみたという事例紹介
Julia入門
Julia入門
Nobukuni Kino
Pynyumon#4lt
Pynyumon#4lt
drillan
teratailで質問するときのtips Python入門者の集い #4 LT
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
Keisuke Takahashi
2015/06/02に開催されたElixirの勉強会 Shinjuku.ex #10 の資料。 * イベント情報: http://shinjukuex.connpass.com/event/15229/ * PowerPointのファイルダウンロード: http://bit.ly/perfect_elixir_information_gathering 資料のライセンスはクリエイティブ・コモンズで、自己紹介ページのみBY・ND、それ以外は全てCCゼロ(いかなる権利も保有しない)です。必要に応じて自己紹介ページを取り除き、あとはご自由にご利用下さい。 改版を行った場合は、 http://twitter.com/keithseahus より、 #shinjukuex タグ付きでお知らせします。
プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介
Kentaro Iizuka
プログラミング言語 Julia の簡単な紹介です
Julia最新情報 2015
Julia最新情報 2015
Kenta Sato
LT @ Japan.R '15 https://atnd.org/events/71243
SeekR Annual Search Trends Report 2015
SeekR Annual Search Trends Report 2015
Takekatsu Hiramura
SeekR: https://seekr.jp/
Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介ver.2
Tsunenori Oohara
ElixirMeetup#2
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
Tsunenori Oohara
Elixirの紹介
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点)
Norito Agetsuma
Public Review版を読み込んだときの勉強メモ。内容は今後改版される可能性がある。
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
Yoshitaka Kawashima
JJUG CCC 2016 Spring CD-7 のセッションスライドです。
スキトラ Spring + mybatis
スキトラ Spring + mybatis
小川 昌吾
skill transfer.
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Yoshitaka Kawashima
Java Day Tokyo 2016 のセッション3-Eの資料です。 Java8, Java9の新機能がシステムの設計にどういう影響があるのかを考えてみました。
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
dcubeio
https://d-cube.connpass.com/
Clojureでガラケーサイトを作る際の細かい話
Clojureでガラケーサイトを作る際の細かい話
Ikuru Kanuma
I gave a lightning talk at https://nishi-shinju-clojure.connpass.com/event/52434/ pertaining to Shift_JIS encoding in Clojure libraries out there.
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
Taisuke Inoue
GitLab Meetup Tokyo #1 https://gitlab-jp.connpass.com/event/49755/
Scala on Hadoop
Scala on Hadoop
Shinji Tanaka
Ruby on Rails Tutorial
Ruby on Rails Tutorial
Ken Iiboshi
Ruby on Rails Tutorial
Html5 Web Applications
Html5 Web Applications
totty jp
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
kunihikokaneko1
トピックス:カプセル化, MVC モデル, MVC モデルの応用, オブジェクトのマッピング Java の基本(スライド資料とプログラム例)(全17回) https://www.kkaneko.jp/pro/pi/index.html 金子邦彦研究室ホームページ https://www.kkaneko.jp/index.html
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
Shinsuke Sugaya
Elasticsearchプラグインの簡単な作り方を紹介します。また、Elasticsearchを便利に利用するためのプラグインも紹介します。
More Related Content
Viewers also liked
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Tsunenori Oohara
Elixirを本番環境で使ってみたという事例紹介
Julia入門
Julia入門
Nobukuni Kino
Pynyumon#4lt
Pynyumon#4lt
drillan
teratailで質問するときのtips Python入門者の集い #4 LT
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
Keisuke Takahashi
2015/06/02に開催されたElixirの勉強会 Shinjuku.ex #10 の資料。 * イベント情報: http://shinjukuex.connpass.com/event/15229/ * PowerPointのファイルダウンロード: http://bit.ly/perfect_elixir_information_gathering 資料のライセンスはクリエイティブ・コモンズで、自己紹介ページのみBY・ND、それ以外は全てCCゼロ(いかなる権利も保有しない)です。必要に応じて自己紹介ページを取り除き、あとはご自由にご利用下さい。 改版を行った場合は、 http://twitter.com/keithseahus より、 #shinjukuex タグ付きでお知らせします。
プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介
Kentaro Iizuka
プログラミング言語 Julia の簡単な紹介です
Julia最新情報 2015
Julia最新情報 2015
Kenta Sato
LT @ Japan.R '15 https://atnd.org/events/71243
SeekR Annual Search Trends Report 2015
SeekR Annual Search Trends Report 2015
Takekatsu Hiramura
SeekR: https://seekr.jp/
Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介ver.2
Tsunenori Oohara
ElixirMeetup#2
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
Tsunenori Oohara
Elixirの紹介
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点)
Norito Agetsuma
Public Review版を読み込んだときの勉強メモ。内容は今後改版される可能性がある。
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
Yoshitaka Kawashima
JJUG CCC 2016 Spring CD-7 のセッションスライドです。
スキトラ Spring + mybatis
スキトラ Spring + mybatis
小川 昌吾
skill transfer.
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Yoshitaka Kawashima
Java Day Tokyo 2016 のセッション3-Eの資料です。 Java8, Java9の新機能がシステムの設計にどういう影響があるのかを考えてみました。
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
dcubeio
https://d-cube.connpass.com/
Clojureでガラケーサイトを作る際の細かい話
Clojureでガラケーサイトを作る際の細かい話
Ikuru Kanuma
I gave a lightning talk at https://nishi-shinju-clojure.connpass.com/event/52434/ pertaining to Shift_JIS encoding in Clojure libraries out there.
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
Taisuke Inoue
GitLab Meetup Tokyo #1 https://gitlab-jp.connpass.com/event/49755/
Viewers also liked
(16)
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Julia入門
Julia入門
Pynyumon#4lt
Pynyumon#4lt
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介
Julia最新情報 2015
Julia最新情報 2015
SeekR Annual Search Trends Report 2015
SeekR Annual Search Trends Report 2015
Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介ver.2
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点)
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
スキトラ Spring + mybatis
スキトラ Spring + mybatis
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
Clojureでガラケーサイトを作る際の細かい話
Clojureでガラケーサイトを作る際の細かい話
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
Similar to Ruby メタプログラミングによるXMLテンプレートエンジンの実装と評価
Scala on Hadoop
Scala on Hadoop
Shinji Tanaka
Ruby on Rails Tutorial
Ruby on Rails Tutorial
Ken Iiboshi
Ruby on Rails Tutorial
Html5 Web Applications
Html5 Web Applications
totty jp
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
kunihikokaneko1
トピックス:カプセル化, MVC モデル, MVC モデルの応用, オブジェクトのマッピング Java の基本(スライド資料とプログラム例)(全17回) https://www.kkaneko.jp/pro/pi/index.html 金子邦彦研究室ホームページ https://www.kkaneko.jp/index.html
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
Shinsuke Sugaya
Elasticsearchプラグインの簡単な作り方を紹介します。また、Elasticsearchを便利に利用するためのプラグインも紹介します。
20110820 metaprogramming
20110820 metaprogramming
Masanori Kado
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5
HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5
George Harada
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
Word press 3.5RC2 - パーフェクト functions.php -
Word press 3.5RC2 - パーフェクト functions.php -
BREN
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
kenjis
PHP 5.3用フレームワーク「FuelPHP」の紹介プレゼン資料
Dsl&Builder
Dsl&Builder
Uehara Junji
Grails Code Reading 2008/05/22
Customization of DBIC::Schema::Loader
Customization of DBIC::Schema::Loader
Toru Yamaguchi
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
Sea Mountain
I try to Ruby on Rails tutorial in Japanese. This is Chap5 to 7.
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
takezoe
2010/6/13 Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
Hayato Mizuno
リッチなWebアプリケーションに対するニーズの増加に伴い、JavaScriptで十分なパフォーマンスを担保することが難しくなってきています。とりわけ、スマートフォンのような非力なデバイスでは一層シビアなチューニングが求められるでしょう。本セッションでは、もっともポピュラーなJavaScriptライブラリである「jQuery」を中心とした、いくつかのパフォーマンス解決のためのヒントについてご紹介させていただきます。 http://frontrend.github.com/events/04/#pocotan001
Oktopartial Introduction
Oktopartial Introduction
Takeshi AKIMA
静的HTMLに動的なコンテンツを入れるためのプラグインoktopartialの資料。ver. 0.2
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Shoot Morii
This is talk about Starting with building web application with Golang
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
Similar to Ruby メタプログラミングによるXMLテンプレートエンジンの実装と評価
(20)
Scala on Hadoop
Scala on Hadoop
Ruby on Rails Tutorial
Ruby on Rails Tutorial
Html5 Web Applications
Html5 Web Applications
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
20110820 metaprogramming
20110820 metaprogramming
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5
HTML5など社内勉強会 Vol.1 - HTML, CSS, HTML5
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Word press 3.5RC2 - パーフェクト functions.php -
Word press 3.5RC2 - パーフェクト functions.php -
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
Dsl&Builder
Dsl&Builder
Customization of DBIC::Schema::Loader
Customization of DBIC::Schema::Loader
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
Oktopartial Introduction
Oktopartial Introduction
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Recently uploaded
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
人工知能学会 全国大会 (JSAI2024) で行ったポスター発表の内容です。
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
インタラクション2024
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
HVAC2024第1回 技術講習会 スライド
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~ 2024/6/12~14まで幕張メッセで開催されました、インターロップ併設アプリジャパンの展示会場内ROOM Bで、10:30~11:10の枠で登壇させてもらいましたセッション資料を公開します。
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
AI/IT系の会社だと「データ」は商売道具の一つかと思いますが、その「データ」って今の社会で一体どんな価値を持っていて、今後どのような責務を担わせるのが健全なのだろうか?という思考の発散をしてみました。 ※喋りメインだったのでスライドだけだと内容薄いと思います, 気になった方はhttps://x.com/wox_aiまで。
生成AIがもたらすコンテンツ経済圏の新時代 The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代 The New Era of Content Economy Brought by Generative AI
Osaka University
、コンテンツ制作の主体をプロのクリエーターからユーザーへと移行させている現状をご存じの方も多いでしょう。現在、画像コンテンツ制作現場では生成AIがクリエーターを支援するツールとして利用されています。セミナーでは、画像生成における自動化の境界についての議論が予定されています。 AIの利用には著作権や倫理的な問題も伴いますが、クリエーターとAIが共存し、センシング技術と統合することで新しい形のコンテンツが生み出されることが期待されています。
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
AIの進化により、自動化、最適化、予測など、多くの業務プロセスが大きく変わりつつあります。しかし、その可能性を最大限に引き出すためには、AIを理解し、適切に活用するための新たな働き方が求められます。本セミナーでは、生成AIが業務プロセスの自動化や意思決定の高速化など、業務効率化にどのように貢献しているのか、さらに生成AIとリモートワークの組み合わせが、従業員の生産性向上にどのように結びつくのかを解説します。
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
Hyper-V and SCVMM
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
MacWorldTokyo
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
設計ナイト2024にて発表した内容になります。
Recently uploaded
(10)
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
生成AIがもたらすコンテンツ経済圏の新時代 The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代 The New Era of Content Economy Brought by Generative AI
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
Ruby メタプログラミングによるXMLテンプレートエンジンの実装と評価
1.
Rubyメタプログラミングによる XMLテンプレートエンジンの 実装と評価 Ryota Suzuki
2.
自己紹介 Ruby on Rails 酒 温泉 音楽
3.
4.
動機
5.
サンプルコード doctype html do head do meta
"http-equiv" => "Content-type", content: %w(text/html; charset=utf-8) title do "XMLRサンプルファイル" end end body do div class: %w(wrapper content-main) do "XMLRへようこそ" end end end get
6.
実装方針
7.
Module#method_missing def method_missing(method_name, *args,
&block) if block_given? content_tag(method_name, *args, block) else empty_tag(method_name, *args) end end
8.
未定義のメソッドをタグへ def content_tag(name, *args,
block) add_content "<#{name}#{args_to_param(*args)}>n" @@nest_level += 1 add_content "#{block.call}n" @@nest_level -= 1 add_content "</#{name}>n" "" end
9.
% 記法 def args_to_param(*args)
# 中略 " " + args[0].inject("") do |base, kv| %(#{base} #{kv[0]}="#{value_to_str(kv[1])}") end[1..-1] end
10.
二重評価問題 def add_content(str) @@content +=
str end # => 戻り値: str 自体 + @@content に格納 # ここで1ヶ月ほど開発がストップ…
11.
Object#tap def add_content(str) str.tap do
|text| @@content += indent + text end end
12.
Module.included def self.included(base) @@content =
"" @@nest_level = 0 end
13.
先行事例との比較
14.
実験 変数評価 場合分け(case...when) ループ(each)
15.
比較対象 ERB Slim
16.
HTML出力用コード - XMLR (当)
ERB Slim 行数 25 21 14 文字数 335 340 210 ※require, include, get(後述), nil(後述) が必要なため行数が増大したと考察
17.
実装行数 - XMLR (当)
Slim 行数 74 2101 ※ $ wc -l `find lib/ -type f` の実行結果
18.
シンタックス XMLR (当) ERB
Slim Ruby 専用 専用
19.
課題と展望
20.
実装上の難点 get メソッド クラス変数の評価、リセット each →
nil が必須 each した変数が組み込まれてしまう エラーが出た時恐ろしく分かりにくい
21.
今後の課題 Kernelメソッド、予約語との競合 (`p`など) Rubyメソッド名でない記号(`-` など) 専用のメソッドを定義可能 class="",
id="" が冗長 (vs. Slim) 専用構文で対応可能
22.
結論 Slimすごい Builder gem との比較は時間が
23.
参考 Twitter: pocke https://twitter.com/p_ck_/status/807392401908068352 Slim template https://github.com/slim-template/slim http://slim-lang.com Builder https://github.com/jimweirich/builder メタプログラミング
Ruby https://www.oreilly.co.jp/books/9784873117430/
24.
Thanks for listening.
Download now