SlideShare a Scribd company logo
DSLとDocument meta format
Ruby DSLを用いた
ドキュメントメタフォーマット
PureDoc
内部DSLのメリット
● 内部DSLを用いることによって少ない実装で独
自のドキュメントメタフォーマットを制作可能
● 内部DSLであるため、制御構造、ループ、変数
なども自由自在
ドキュメントメタフォーマット
● ドキュメントメタフォーマットを使うことによ
り、HTML, LaTeX, Man, infoなど様々な形式の
文書を生成可能
● ひとつの文書から画面表示用・印刷用など用途
に応じた形式を選択し出力できる
● ドキュメントメタフォーマット自作によって自
分が必要とする機能だけを盛り込んだ書きやす
く読みやすいフォーマットにすることができる
PureDoc
● pure:note(注釈)要素など、通常のHTMLには
ない拡張された要素も記述可能な自由度
● Rubyの機能により変数、ループ、制御構造、
動的な日時データなどもサポート
● XHTML、HTML+Class、HTML+inline CSSをサ
ポート、さらにLaTeX、plain、PODもサポート
予定
● XMLよりもかなり読みやすい
PureDoc(拡張)記述例
require 'date'
profile.is {
PF[
C[:basic, ["Basic personal datas", "基本情報"],
[
[ ["HN", "ハンドルネーム"], li { %w<柊美亜紀(とうみあき) ○☆温泉☆○ YEK UsK
MAY> }],
[ ["Real Name", "本名"], "正木悠介(まさきゆうすけ)"],
[ ["Nick Names", "愛称"], "一般的なほうから順:" + li {[ "あきちゃん", "あきさん", "はる
か", "あき", "はる", "はるくん", "ゆぅ" ]} ],
[ ["Sex", "性別" ], "複雑", "肉体・精神・感覚全てが混在。性器は男性器のみで、性的指向は
女性"],
[ ["BOD", "誕生日"], Date.new(1983, 5, 25) ],
[ ["Age", "年齢"], ( Time.new.year - (Time.new.strftime('%m%d') < "0525" ?
1984 : 1983 ) )],
[ ["Height", "身長"], "169cm"],
[ ["Weight", "体重"], ( "%dkg @%s" % [ 62, "May 2014"] ) ],
なぜRubyか
● カッコの有無など自由度が高く、よりDSL的に書ける
● メタプログラミングが容易で、文章を生成するような類似
機能を多数定義しなければならない場合にその定義が簡便
● Rubyのブロックの利便性が高く、スッキリとした文法に
できる上に、トランスレータの記述も楽
● テンプレートシステムも豊富
● 強力なフル機能のプログラミング言語
スクリプトの連携
● ファイル配置に構造を持たせることで自動的にトランス
レータが生成すべきフォーマットと使用するテンプレート
を指定して階層構造をもたせて出力可能
● これにより特定のテンプレートからページを生成できる
● そのため、ブログのように発信者が一方的に書いて公開す
るものであればアクセス時にPHPなどで動的にページを生
成する必要がなく、予め静的HTMLファイルとして出力して
おくことでレスポンスを工場させることが可能
スクリプトの連携
● テンプレート更新時はスクリプトを実行することで全ドキュメン
トを一括更新する。一度固まってしまえばページのマスターを変
更するのは稀であり、全体がダウンすることもないため問題はほ
とんど生じない
● sshfsなどで公開するウェブサーバーのファイルシステムをマウン
トしておけばスクリプト一発で公開まで自動化することも可能
● Gitを用いて文書を公開することもでき、その場合ユーザーが自由
な形式で出力できることを意味する。
● アーカイブの公開も容易となる
PureDocの基本的な書式
h1 “Something title”
p {[
“Paragraph 1”,
“Parahraph 2”
]}
ol(“alpha”) {[
“list 1”,
“list 2”
]}
TechOYAJI後の追補
何者
● 正木悠介
● 31歳
● 1985年、2歳でPC-DOS/BASICでプログラミン
グを始めたオヤジ
● 愛称は「亜紀ちゃん」
● 通称「サディスト王子樣」
● 職業はSinging Song Writer, Sound
Producer/Free System Integrator
● Twitter : @reasonset
モテモテ?
● 三雲このはさんに「神聖モテモテ王国のファ
ザーがナンパしてるのかと思った」と言われた
● 過去の女は118人いる
● 現在17歳、高校2年の婚約者がいる
● 相手親の交際及び結婚の承認は出ている
● 高校卒業を待って入籍予定
PureDoc
● GitHub reasonset/reasondoc
● 更新がなされていないのは安定しているからだ
が、完成はしていない(未実装が多い)
● ドキュメントも整備されていない
● PRには時期尚早
連携スクリプト
Coming Soon (RSN)

More Related Content

Viewers also liked

文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDoxTomoharu ASAMI
 
DSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイルDSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイル
陽平 山口
 
学ばないDSL
学ばないDSL学ばないDSL
学ばないDSL
Kenta USAMI
 
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】
Tomoya Tatekawa
 
RubyでDSL
RubyでDSLRubyでDSL
RubyでDSL
Yukimitsu Izawa
 
DSLについて語るときに僕の語ること
DSLについて語るときに僕の語ることDSLについて語るときに僕の語ること
DSLについて語るときに僕の語ることTomohiro Nishimura
 
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
Twitter API最新事情 - API Meetup Tokyo #1 #apijpTwitter API最新事情 - API Meetup Tokyo #1 #apijp
Twitter API最新事情 - API Meetup Tokyo #1 #apijpYusuke Yamamoto
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~
bleis tift
 
この人と結婚していいの?を読んで
この人と結婚していいの?を読んでこの人と結婚していいの?を読んで
この人と結婚していいの?を読んでShumpei Shiraishi
 
DSLの過去と未来
DSLの過去と未来DSLの過去と未来
DSLの過去と未来
Akio Tajima
 
全角チルダ問題
全角チルダ問題全角チルダ問題
全角チルダ問題
tsudaa
 
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
Tsunenori Oohara
 
婚活偏差値ランキングと傾向と対策
婚活偏差値ランキングと傾向と対策婚活偏差値ランキングと傾向と対策
婚活偏差値ランキングと傾向と対策
大和 金太郎
 
最高の自分を手に入れる方法
最高の自分を手に入れる方法最高の自分を手に入れる方法
最高の自分を手に入れる方法
大和 金太郎
 
婚活の戦略「恋愛マスターのマインドセット」
婚活の戦略「恋愛マスターのマインドセット」婚活の戦略「恋愛マスターのマインドセット」
婚活の戦略「恋愛マスターのマインドセット」
大和 金太郎
 
AGS Members' Day 2015 - Laboratory Working Group Presentation
AGS Members' Day 2015 - Laboratory Working Group PresentationAGS Members' Day 2015 - Laboratory Working Group Presentation
AGS Members' Day 2015 - Laboratory Working Group Presentation
ForumCourt
 
Critical reading
Critical readingCritical reading
Critical reading
Thorykz Achmads
 
Thủ Tục Ly Hôn Có Yếu Tố Nước Ngoài
Thủ Tục Ly Hôn Có Yếu Tố Nước NgoàiThủ Tục Ly Hôn Có Yếu Tố Nước Ngoài
Thủ Tục Ly Hôn Có Yếu Tố Nước Ngoài
Văn Phòng Luật Sư Số 5
 
Program rozwoju Ewa Rosik-Ogłaza - Certes
Program rozwoju Ewa Rosik-Ogłaza - CertesProgram rozwoju Ewa Rosik-Ogłaza - Certes
Program rozwoju Ewa Rosik-Ogłaza - Certes
Certes
 
Impression Management Strategy final ppt
Impression Management Strategy final pptImpression Management Strategy final ppt
Impression Management Strategy final ppt
Prajakta Patil
 

Viewers also liked (20)

文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
 
DSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイルDSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイル
 
学ばないDSL
学ばないDSL学ばないDSL
学ばないDSL
 
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】
 
RubyでDSL
RubyでDSLRubyでDSL
RubyでDSL
 
DSLについて語るときに僕の語ること
DSLについて語るときに僕の語ることDSLについて語るときに僕の語ること
DSLについて語るときに僕の語ること
 
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
Twitter API最新事情 - API Meetup Tokyo #1 #apijpTwitter API最新事情 - API Meetup Tokyo #1 #apijp
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~
 
この人と結婚していいの?を読んで
この人と結婚していいの?を読んでこの人と結婚していいの?を読んで
この人と結婚していいの?を読んで
 
DSLの過去と未来
DSLの過去と未来DSLの過去と未来
DSLの過去と未来
 
全角チルダ問題
全角チルダ問題全角チルダ問題
全角チルダ問題
 
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
 
婚活偏差値ランキングと傾向と対策
婚活偏差値ランキングと傾向と対策婚活偏差値ランキングと傾向と対策
婚活偏差値ランキングと傾向と対策
 
最高の自分を手に入れる方法
最高の自分を手に入れる方法最高の自分を手に入れる方法
最高の自分を手に入れる方法
 
婚活の戦略「恋愛マスターのマインドセット」
婚活の戦略「恋愛マスターのマインドセット」婚活の戦略「恋愛マスターのマインドセット」
婚活の戦略「恋愛マスターのマインドセット」
 
AGS Members' Day 2015 - Laboratory Working Group Presentation
AGS Members' Day 2015 - Laboratory Working Group PresentationAGS Members' Day 2015 - Laboratory Working Group Presentation
AGS Members' Day 2015 - Laboratory Working Group Presentation
 
Critical reading
Critical readingCritical reading
Critical reading
 
Thủ Tục Ly Hôn Có Yếu Tố Nước Ngoài
Thủ Tục Ly Hôn Có Yếu Tố Nước NgoàiThủ Tục Ly Hôn Có Yếu Tố Nước Ngoài
Thủ Tục Ly Hôn Có Yếu Tố Nước Ngoài
 
Program rozwoju Ewa Rosik-Ogłaza - Certes
Program rozwoju Ewa Rosik-Ogłaza - CertesProgram rozwoju Ewa Rosik-Ogłaza - Certes
Program rozwoju Ewa Rosik-Ogłaza - Certes
 
Impression Management Strategy final ppt
Impression Management Strategy final pptImpression Management Strategy final ppt
Impression Management Strategy final ppt
 

Similar to Techoyaji

印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
Seiji Deguchi
 
Mongo db勉強会の補足
Mongo db勉強会の補足Mongo db勉強会の補足
Mongo db勉強会の補足CROOZ, inc.
 
Contao Open Source CMS -- CMS大阪夏祭り 2015
Contao Open Source CMS -- CMS大阪夏祭り 2015Contao Open Source CMS -- CMS大阪夏祭り 2015
Contao Open Source CMS -- CMS大阪夏祭り 2015
Takahiro Kambe
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuronekoKohki Nakashima
 
Markdownでドキュメント作成
Markdownでドキュメント作成Markdownでドキュメント作成
Markdownでドキュメント作成
Yasuyuki Fujikawa
 
Confluence と DITA による Webマニュアル作成フロー
Confluence と DITA によるWebマニュアル作成フローConfluence と DITA によるWebマニュアル作成フロー
Confluence と DITA による Webマニュアル作成フロー
Takashi Yamaguchi
 
INTER-MediatorによるWebアプリケーション開発入門
INTER-MediatorによるWebアプリケーション開発入門INTER-MediatorによるWebアプリケーション開発入門
INTER-MediatorによるWebアプリケーション開発入門
Atsushi Matsuo
 
WCAGで学ぶアクセシビリティ
WCAGで学ぶアクセシビリティWCAGで学ぶアクセシビリティ
WCAGで学ぶアクセシビリティ
Saeki Tominaga
 
『RESTful Web サービス』読書会 第4回 9章 説明資料
『RESTful Web サービス』読書会 第4回 9章 説明資料『RESTful Web サービス』読書会 第4回 9章 説明資料
『RESTful Web サービス』読書会 第4回 9章 説明資料
Siena. N
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」ericsagnes
 
Task planner
Task plannerTask planner
いいパブッ!! - よくわかるEPUB 3
いいパブッ!! - よくわかるEPUB 3いいパブッ!! - よくわかるEPUB 3
いいパブッ!! - よくわかるEPUB 3
Hiroshi Takase
 

Similar to Techoyaji (12)

印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
印刷におけるデジタル活用入門 データベースによるワンソースマルチユースについて
 
Mongo db勉強会の補足
Mongo db勉強会の補足Mongo db勉強会の補足
Mongo db勉強会の補足
 
Contao Open Source CMS -- CMS大阪夏祭り 2015
Contao Open Source CMS -- CMS大阪夏祭り 2015Contao Open Source CMS -- CMS大阪夏祭り 2015
Contao Open Source CMS -- CMS大阪夏祭り 2015
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko
 
Markdownでドキュメント作成
Markdownでドキュメント作成Markdownでドキュメント作成
Markdownでドキュメント作成
 
Confluence と DITA による Webマニュアル作成フロー
Confluence と DITA によるWebマニュアル作成フローConfluence と DITA によるWebマニュアル作成フロー
Confluence と DITA による Webマニュアル作成フロー
 
INTER-MediatorによるWebアプリケーション開発入門
INTER-MediatorによるWebアプリケーション開発入門INTER-MediatorによるWebアプリケーション開発入門
INTER-MediatorによるWebアプリケーション開発入門
 
WCAGで学ぶアクセシビリティ
WCAGで学ぶアクセシビリティWCAGで学ぶアクセシビリティ
WCAGで学ぶアクセシビリティ
 
『RESTful Web サービス』読書会 第4回 9章 説明資料
『RESTful Web サービス』読書会 第4回 9章 説明資料『RESTful Web サービス』読書会 第4回 9章 説明資料
『RESTful Web サービス』読書会 第4回 9章 説明資料
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
 
Task planner
Task plannerTask planner
Task planner
 
いいパブッ!! - よくわかるEPUB 3
いいパブッ!! - よくわかるEPUB 3いいパブッ!! - よくわかるEPUB 3
いいパブッ!! - よくわかるEPUB 3
 

Techoyaji