あまの原ふりさけ見ればかすがなるみ笠の山にいでし月かも
Advent Calendar 2022 56日目1の記事です。
I'm looking forward to 12/25,2022
私のAdvent Calendar 2022 一覧。
はじめに
Elixirを楽しんでいますか
Mix.install/2のサンプル集であるmix_install_examplesからex_docを紹介します。
What's Mix.install/2 ?
Mix.install/2は、Elixir 1.12から追加されました。
Elixirでライブラリ(Hex)を追加するのは、1.11まではmix new
でプロジェクトを作らないといけないなど、ひと手間必要でした。
Mix.install/2を使うことで、ちょっとした1ファイルで収まるようなスクリプトを書く際に.exs
のみで完遂できるようになりました。
具体例
具体例です。
私がよく使ういつものサンプルです。
Qiita APIを使わせていただいて、Elixir
タグがついた最新の記事を20件取得しています
Mix.install [{:req, "~> 0.2.1"}]
"https://qiita.com/api/v2/items?query=tag:Elixir"
|> URI.encode()
|> Req.get!(finch_options: [pool_timeout: 50000, receive_timeout: 50000])
|> Map.get(:body)
|> Enum.map(& Map.take(&1, ["title", "url"]))
Qiitaさん、いつもありがとうございます!!!
ex_doc.exs
おもしろそうなサンプルってことで、今日はExDocを楽しんでみます。
朗報です。
What's ExDoc ?
ExDoc is a tool to generate documentation for your Elixir projects. To see an example, you can access Elixir's official docs.
要はドキュメントをいい感じに作ってくれます。
Elixirは、プログラミング言語としてはヤングで後発の部類に入ります。
2022/05/24でようやく10年です。
後発の強みというものもありまして、Elixirのドキュメントは、本体から各種ライブラリまで、すべてExDocで書かれています。
どのドキュメントも見方が同じなので、調べ物がしやすいです。
ドキュメント中で、g
キーを押すと他のライブラリのドキュメントに飛べたりします。
ためしにやってみましょう。
まず
にアクセスしてみてください。
そうして、つぎにg
キーをおしてください。
そうするとポップアップがでます。
今回は、ex_doc
とでも打ち込んでみてください。
一文字ずつ、「e」「x」「_」と打ち込んでみてください。
次の「d」「o」くらいでそろそろex_doc
で候補がでてくるとおもいます。
一文字ずつ打ち込むことで候補が絞り込まれていく様子をみるとことができるとおもいます。
ただし、少し古い形式で書かれていると、g
によるジャンプができない場合があります。
Run
それでは、ex_doc.exsを動かしてみます。
以下、そのまま掲載します。
Mix.install(
[
{:ex_doc, "~> 0.28.0"}
],
elixir: "~> 1.13"
)
{:module, module, beam, _} =
defmodule Foo do
@moduledoc """
A module.
"""
@doc """
A function.
"""
def foo do
end
end
tmp_dir = Path.join(System.tmp_dir!(), "mix_install_ex_doc")
beam_path = "#{tmp_dir}/_build/dev/lib/example/ebin/#{module}.beam"
File.mkdir_p!(Path.dirname(beam_path))
File.write!(beam_path, beam)
Hex.start()
defmodule Example.MixProject do
use Mix.Project
def project do
[
app: :example,
version: "1.0.0",
build_path: "#{unquote(tmp_dir)}/_build",
lockfile: "#{unquote(tmp_dir)}/mix.lock",
deps_path: "#{unquote(tmp_dir)}/deps"
]
end
end
Mix.Task.run("docs", ~w(--formatter html --main Foo --output #{tmp_dir}/doc --open))
今回のプログラムは少し複雑に見えるかもしれません。
Mix.install/2でやってみよう! シリーズの一種のお遊びだとおもいます。
安心してください。
実際にあなたのプロジェクトにExDocを導入するのはもっと簡単です。
簡単だと言っている導入方法については、誌面の都合でこの記事では説明をしません。
別の記事で書きます。(書いたことあるかも?、ないかも?)
実行
git clone https://github.com/wojtekmach/mix_install_examples.git
cd mix_install_examples
elixir ex_doc.exs
結果
ドキュメントが出来上がって、な〜んとブラウザでドキュメンを開いてくれました。
私はmacOS Catalinaを使っています。
Wrapping up 



Enjoy Elixir
$\huge{Enjoy\ Elixir🚀}$
今回は、mix_install_examplesの中から、ex_doc.exsをご紹介をしました。
あなたがみているElixirのドキュメント、それ、ExDoc形式で書かれています!
今後も他のサンプルをご紹介していきます。
また、シンプルでいい例をおもいついたら、プルリクを送ってみるのはいいかもしれません。
私は、おもいついた場合には、プルリクを送ってみる気でいます
以上です。
付録
以下、付録です。
Elixirの誕生日は、2012年5月24日です。
そのため、今年の2022年5月24日は10周年を迎えます。
iex> Date.diff(~D[2022-05-24], ~D[2022-02-25])
88
そうそう!
2月24日発売予定のWEB+DB PRESSで、ElixirとPhoenixの特集がでますよ〜
Elixir、Phoenixをはじめられたばかりの方も、腕におぼえがある方も、どんなものなのかなあと様子見をきめこんでいる方も、
つまりは
$\huge{全人類のみなみなさま!!!}$
お手にとって、お楽しみください!!!
We, @tamanugi @torifukukaiou @the_haigo @mokichi_s12m including me, wrote featured articles for WEB+DB PRESS Vol.127 about Elixir and Phoenix! It's being published on 24, Feb.https://t.co/UPNiVU1zG9
— 栗林健太郎 (@kentaro) February 4, 2022
Elixir
最後の最後に、Elixirについて紹介します。
- |>でスイスイ、プログラミングしていくことができる素敵なプログラミング言語です
- さっそくプログラムの例を示します
-
Qiita APIを使わせていただいて、
Elixir
タグがついた最新の記事を20件取得しています - ここでは雰囲気をつかんでいただければ大丈夫です
Mix.install [{:req, "~> 0.2.1"}]
"https://qiita.com/api/v2/items?query=tag:Elixir"
|> URI.encode()
|> Req.get!(finch_options: [pool_timeout: 50000, receive_timeout: 50000])
|> Map.get(:body)
|> Enum.map(& Map.take(&1, ["title", "url"]))
Webアプリケーションを楽しむなら
IoTを楽しむなら
AIを楽しむなら
もっとElixirのことを知りたい方へオススメの書籍
- プログラミングElixir(第2版) -- オーム社
- Elixir実践ガイド -- インプレス
- アルケミスト − 夢を旅した少年 -- KADOKAWA
コミュニティ
-
elixir.jp Slack workspaceに参加してみてください
- マヂ、やさしい人ばっかりのコミュニティ
- あなたの困ったをきっと解決してくれるでしょう
-
NervesJP Slack workspaceでは、NervesやIoTが好きな愉快なfolksたちがあなたの訪れを歓迎します
- たくさんのコミュニティがあります
(EDI/fukuoka.ex/kokura.ex & LiveView JP の @piacerex さん作)
Elixirコミュニティに初めて接する方は下記がオススメです
Elixirコミュニティ の歩き方 -国内オンライン編-
https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian
(piyopiyo.ex & エリジョ の nakoさん(@kn339264) 作、素敵な資料)
Elixirのイベント情報
@koga1020 さんが作成されたイベントカレンダーがあります。
https://elixir-jp-calendar.fly.dev/
気になるイベントにはぜひ参加してみましょう!!!
上記サイトの解説記事はこちらです。
I organize autoracex.
And I take part in NervesJP, fukuoka.ex, EDI, tokyo.ex, Pelemay.
I hope someday you'll join us.
We Are The Alchemists, my friends!