これは Ruby アドベントカレンダー 2022 の23日目の記事です。
Quarto とは何か?
Quarto は、Pandoc 上に構築されたオープンソースの主に科学技術分野での利用を想定した出版システムです。
Quarto は下記の特徴を持つ、と https://quarto.org/ は主張しています。
- Python、R、Julia、および Observable を使用して動的なコンテンツを作る。
- ドキュメントをプレーンテキストのマークダウン、または Jupyter ノートブックでもって執筆する。
- 高品質の記事、レポート、プレゼンテーション、Web サイト、ブログ、書籍を HTML、PDF、MS Word、ePub などで公開する。
- 数式、引用、相互参照、図パネル、吹き出し、高度なレイアウトなどを含む、科学に関するマークダウンを用いて執筆する。
2 番目のリスト項目内の「マークダウン、または Jupyter ノートブックでもって執筆」って所はまあまあ重要です。
「ふーん、R マークダウンや Myst マークダウンと何か違うの?」って思われるかと思います。
ぶっちゃけ機能的にすげー変わるかというとめちゃくちゃは変わらん気もします。
が「R でも Python でも 同じ Quarto という出版システム (と qmd というマークダウン拡張) によって科学的な記述が簡単に行える」ってあたりがうれしいんじゃないかなと。
3 と 4 番目のリスト項目もほぼほぼ「Rマークダウン / Myst マークダウン のオイシイ所」なんですが、ここも先のリスト項目同様の点がうれしいんじゃないかなと。
で「Ruby と何か関係あんのか?」
「関係ある」というか「関係を持たせることができる」というか、「関係を持たせて Ruby も Quarto 恩恵の仲間入りさせたい」と思っています。
前節の Python、R、Julia、および Observable を使用して動的なコンテンツを作る。
と述べた所は、
Jupyter、Rmd および Observable を使用して動的なコンテンツを作る。
とした方が正確です。
Ruby は IRuby カーネルを用いて Jupyter から利用することが可能です。
そのため Ruby も Quarto の恩恵を受けることができます。
で「どうやったらそれ試せるの?」
https://github.com/kozo2/quarto4rubydata の赤丸のバッジをクリックすると Ruby で Quarto を試していただけます。
Jupyter 環境が立ち上がるまで時間がかかるかもしれませんが気長にお待ちください。
(「立ち上がるまで遅い!」and「自分で Docker 使える」という方はご自身でローカルでDockerイメージのビルド+実行を行っていただくことも可能です。)
あとは赤線の ipynb ファイルをダブルクリックしていただいて、そこに書かれている通りの操作を行っていただければ
下記のような html が ipynb から生成され、「Ruby で Quarto」を(最低限で)試していただけたことになります。
ipynb からこんな html が作れて何がうれしいの?
先の html だと「Code ブロックを畳む・開く」程度しか凝れてませんが、
Quarto を使うと他にも凝った html を generate することができます。
先の try_irubykernel_with_quarto.ipynb
に続いて redamber.ipynb
も Terminal 内で quarto render redamber.ipynb --to html
してみてください。
すると添付画像のように
- 画面右側に目次が追加されている
- テーブルに css が適用されている
これは ipynb の最初の raw
セルに下記の Quarto 用オプションを書いているからです。
---
title: "redamber"
format:
html:
toc: true
css: table4ruby.css
code-fold: true
jupyter: ruby
---
こんな感じで Quarto を使うと
- Jupyter での Ruby 試行
- ↑ の成果を共有するための html 等での publishing (スタイリングとか目次付けたりをオプション追加だけで実現)
のワークフローがシステマチックに行えるようになります。
もっといい例がほしいんだけど...
今の所、上記くらいしか例を作れていません。
が今後もっと魅力的なコンテンツを作ろうと思います。
もしこの投稿に興味を持たれたら red-data-tools の gitter にご参加ください。
では。