Elixirと闘魂で文書革命！公式風の二列レイアウト文書を作成しよう

```elixir
defmodule FightingSpirit do
  def shout do
    IO.puts "元氣ですかーーーッ！！！"
    IO.puts "元氣があればなんでもできる！"
    IO.puts "闘魂とは己に打ち克つこと。"
    IO.puts "そして闘いを通じて己の魂を磨いていく"
    IO.puts "ことだと思います。"
  end
end

FightingSpirit.shout()
```

<b><font color="red">$\huge{元氣ですかーーーーッ！！！}$</font></b>
<b><font color="red">$\huge{元氣があればなんでもできる！}$</font></b>

<b><font color="red">$\huge{闘魂とは己に打ち克つこと。}$</font></b>
<b><font color="red">$\huge{そして闘いを通じて己の魂を磨いていく}$</font></b>
<b><font color="red">$\huge{ことだと思います。}$</font></b>

![DALL·E 2024-11-02 13.28.23 - .jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/2ed73e13-7459-bbb9-a003-4852c5a1e8cd.jpeg)


# はじめに

[Elixir](https://elixir-lang.org/)でのドキュメント作成に利用される[ex_doc](https://github.com/elixir-lang/ex_doc)では、HTML形式で豊富な表現ができます。
本記事では、公式ドキュメントの[Enum cheatsheet](https://hexdocs.pm/elixir/enum-cheat.html)のような2列のレイアウトのドキュメントの作成方法を解説します。

![スクリーンショット 2024-11-02 13.04.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/931a5691-6d97-1267-98cb-ad977849a7df.png)

# 早速実践

早速実践してみます。行動あるのみです。

## プロジェクトの作成

まずはElixirプロジェクトを作ります。
今回は、`hello`という名前でElixirのプロジェクトを作ります。

```
mix new hello
cd hello
```

次に`mix.exs`を2箇所編集します。


## ex_docの追加

[ex_doc](https://github.com/elixir-lang/ex_doc)を追加します。

```elixir:mix.exs
  defp deps do
    [
      {:ex_doc, "~> 0.34", only: :dev, runtime: false}
    ]
  end
```

## .cheatmdの追加

`:docs`で指定するリストの中の`:extras`に格納する`.cheatmd`ファイルの名前を書きます。

```elixir:mix.exs
  def project do
    [
      app: :hello,
      version: "0.1.0",
      elixir: "~> 1.17",
      start_permanent: Mix.env() == :prod,
      deps: deps(),
      docs: [
        extras: ["cheatsheet.cheatmd"]
      ]
    ]
  end
```

## .cheatmdファイルの作成

文法は[Cheatsheet Example](https://hexdocs.pm/ex_doc/cheatsheet.html)で学んでください。
ここでは以下のものを拝借します。

https://github.com/elixir-lang/elixir/blob/e3f017d0b2cbae8fa813183de24b43fa0c5548c1/lib/elixir/pages/cheatsheets/enum-cheat.cheatmd


![スクリーンショット 2024-11-02 13.25.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/84c5ad92-d958-5e69-22b5-5414ac90a351.png)


2列レイアウトは、`{: .col-2}`で指定しています。

あとはドキュメントの作成のみです。

## ドキュメントの作成

まずは依存関係を解決します。

```
mix deps.get
```

そしてドキュメントの作成です。

```
mix docs
```

## index.htmlを開く

`doc/index.html`ができています。macOSでは以下のコマンドで開けます。

```
open doc/index.html
```

これで公式ドキュメントの[Enum cheatsheet](https://hexdocs.pm/elixir/enum-cheat.html)のような2列のレイアウトのドキュメントができます。
写真は試しに`{: .col-3}`と指定したときの出来上がりの様子です。
3列です！！！

![スクリーンショット 2024-11-02 13.16.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/d49f9f9c-d85e-0c78-9423-683e0f6bbe0b.png)

---

# 公式ドキュメント

[ex_doc](https://github.com/elixir-lang/ex_doc)の公式ドキュメントでは、[Additional pages](https://github.com/elixir-lang/ex_doc?tab=readme-ov-file#additional-pages)の節に説明が書いてあります。
この記事で紹介した`.cheatmd`に加えて、`.md`と`.livemd`の話も書いてありますので気になる方はご覧になってください。

---

# さいごに

[ex_doc](https://github.com/elixir-lang/ex_doc)は、[Elixir](https://elixir-lang.org/)の公式ドキュメントでも使っているドキュメント作成ツールです。[ex_doc](https://github.com/elixir-lang/ex_doc)のさまざまな機能を使って読者にとってわかりやすいドキュメントを提供しましょう！


**道を切り開け！書く一文字が記事となり、その記事が力となる。己の闘魂を燃やし、世界へ発信し続けよ。Elixirと共にさらなる高みへ、今こそ踏み出せ！**