WSL2上のDockerを用いてAsciidocの文書,スライドを書く
9/6 メモ吐き出し。
3行まとめ
- WSL2上で動かすDockerはいいぞ
- Windowsだと設定が面倒なAsciidocも簡単に使えるぞ
ということです。
Docker on WSL2はいいぞ
自前の環境を汚さずになにか作業したい場合,Dockerは非常に便利なツールです。
WSL1やDOSネィティブの環境でDockerを使おうとした場合,従来はHyper-Vが必要(Windows Homeでは無理)だったのですが,WSL2のUbuntu環境を立てることで,Ubuntu上でaptからDockerをインストールできます。
Docker on Windowとの比較としては
というのがあります。
例えばDockerの-v
オプションなどで現在のフォルダ名を教える時,以下のような違いがあってちょっと困りますがそういった違いをあまり気にせずに良くなります。
Ubuntu上でaptを用いたりDockerで構築した環境をWindowsから簡単に流用できるというのが非常に使い勝手が良いと感じます。
なぜAsciidocを使うのか
AsciidocとはMarkdownのようなマークアップ言語で,Latexのようにコンパイルをはさみはしますが,整った文章を生成することが出来ます。
一時期話題になったAWSの講義資料なんかもAsciidocで書いてあると思われ,非常に美しい体裁となっているのがわかります。
利点は大体ここに書いてあります。
Asciidoc文章の所感
下記の参考文献にもあるが表現力と記述の簡略性を鑑みると
という関係にあります。要はLatexほど面倒には書かずにMarkdownに書けない文章を書くということを目指します。
今の所特に顕著に差があるのは,
- 動画や画像,PlantUMLなどのメディアの挿入の自由度
- テーブルの表現力
- HTML文章の美しさ
- CIとの相性がいい:技術文書をAsciidoc で書いて、GitlabでCIしている話 - Qiita
などだと思います。
Asciidoc スライドの所感
Deck.jsやRevealjsにも対応しているのでAsciidocの文章はスライド形式にもすることが出来ます。
自分はあまりRevealjsにピンとこなかったので簡易スライド作成手段としてはまだMarkdown&Marpが使いやすいと思っていますが, Asciidoc文章をシームレスにプレゼン資料に変更できるのは十分に有用であるとは認識しています。
Asciidoc を使う
今回はDocker推しですが簡単な文章ならVSCodeの拡張機能でも使えます。
一部図表や,数式の記述にパッケージのインストールが必要になるためここではDocker上で文章を書く方法について書きます。
Asciidocのイメージをインストール
正式な方法もあるでしょうが,最新版が単純にほしければ一度走らせようとするだけでOKです。
docker run -it --rm asciidoctor/docker-asciidoctor
これで環境がたつので例えばUbuntuからあるディレクトリにあるファイルをコンパイルするには
docker run -it -v <your directory>:/documents/ asciidoctor/docker-asciidoctor asciidoctor <sample.adoc>
とすればhtmlに変換されたドキュメントが生成されます。
asciidoctor-pdfというコマンドを使えばPDFも作れますが,あんまりきれいではないのでhtmlのままにしてブラウザの印刷機能で印刷をかけることが自分は多いです。
先程のコマンドをコマンドプロンプトから走らせようとすると
wsl docker run -it -v $(pwd):/documents/ asciidoctor/docker-asciidoctor asciidoctor sample.adoc
となります。簡単でしょう?
Revealjsのプレゼン資料を作る
この辺はまだ自分でも調査中です。
恐らくスタンダードな見た目にしようとしたら以下のような感じになると思われます。
wsl docker run -it -v $(pwd):/documents/ asciidoctor/docker-asciidoctor asciidoctor-revealjs -a revealjsdir=https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.9.2 slide_sample.adoc
Gitlab CIと連携して静的なページを作成する。
この辺の話です。正直以下の記述以上に今の自分で言えることはないですが紹介までに。
まとめ
文章作成系とDockerの相性はめっちゃいいと思います。
Pythonの解析のところでも書きましたが,ある特定の作業にしかその環境を使わない場合,Dockerを使ってやるが非常にコスパがいいです。
最近のお気に入りはROSのGUI環境をDockerでたてちゃうやつとかでしょうか。
Docker上でGUIのROS1/ROS2を一瞬でセットアップする方法 - Qiita
容量とメモリをそれなりに食うのと,今の所WSL2がPCデバイスを認識できていないのがネックと言ったところでしょうか。