<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Elixir on okuzawatsの日記</title><link>https://okuzawats.com/categories/elixir/</link><description>Recent content in Elixir on okuzawatsの日記</description><generator>Hugo</generator><language>ja</language><copyright>© 2019 okuzawats</copyright><lastBuildDate>Sun, 07 Jun 2026 21:27:00 +0900</lastBuildDate><atom:link href="https://okuzawats.com/categories/elixir/index.xml" rel="self" type="application/rss+xml"/><item><title>Elixirへの誘い</title><link>https://okuzawats.com/blog/elixir/</link><pubDate>Sun, 07 Jun 2026 21:27:00 +0900</pubDate><guid>https://okuzawats.com/blog/elixir/</guid><description>Elixirは、動的型付け・関数型の特徴を持つプログラミング言語です。Erlangの仮想環境であるBEAM上で動作します。BEAM上で動作することにより、並列処理や分散処理に強みがあります。つい先日（2026年6月3日）発表されたv1.20では「段階的型付け」と呼ばれる型システムが導入され、型付けが強化されました。
Elixirはメインストリームにあるとは言えない言語ですが、上記のとおり非常に魅力的な特徴を持っています。自分は何年か前に軽く学んだきりでしたが、再度入門していきます。
早速、Elixirのインストールからしていきましょう（macOS Tahoe 26.3.1）。今回はElixirのバージョン管理にmiseを使います。mise.toml に以下を書きます。
[tools] elixir = &amp;#34;1.20.0&amp;#34; mise install FizzBuzzを書きます。先に全体を俯瞰し、その後で詳細を語ります。いろいろな書き方をできると思いますが、調べながら自分にとって最も学習的な書き方を目指しました。
defmodule FizzBuzz do @moduledoc &amp;#34;run FizzBuzz.&amp;#34; # `fizz/1` true if `n` is divisible by 3 defguardp fizz(n) when rem(n, 3) == 0 # `buzz/1` true if `n` is divisible by 5 defguardp buzz(n) when rem(n, 5) == 0 @doc &amp;#34;returns FizzBuzz, Fizz, Buzz or the number in string.&amp;#34; def run(n) when fizz(n) and buzz(n), do: &amp;#34;FizzBuzz&amp;#34; def run(n) when fizz(n), do: &amp;#34;Fizz&amp;#34; def run(n) when buzz(n), do: &amp;#34;Buzz&amp;#34; def run(n), do: &amp;#34;#{n}&amp;#34; end まず defmodule ですが、モジュールを定義するマクロです。Elixirにおけるモジュールとは、関数に名前空間を与える役割を持っているようです。Javaなどの言語におけるclassはインスタンスを作ることができますが、Elixirにおけるモジュールはインスタンスを作ることはできません。</description></item></channel></rss>