3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hello World あたたたた Elixir編

Last updated at Posted at 2025-12-16

この記事は Hello World あたたたた Advent Calendar 2025 の記事です。

今日は Elixir(エリクサー) で Hello World あたたたた を実装して解説していきます。

そもそも「Hello World あたたたた」が何かは 1日目の記事 をご覧ください。

コーディング例

paiza.io で実際に動かしてみることができます。

defmodule Atatatata do
  def main do
    # 乱数初期化
    :rand.seed(:exsplus, {
      System.monotonic_time(),
      System.unique_integer(),
      :erlang.phash2(self())
    })

    loop("")
  end

  defp loop(hako) do
    # 0 または 1 をランダムに決める
    bit = :rand.uniform(2) - 1

    # char を決める(A or Ta)
    char =
      case bit do
        0 -> "A"
        _ -> "Ta"
      end

    # 画面に char を出力
    IO.puts(char)

    # char を hako に追加
    new_hako = hako <> char

    # 末尾が "ATaTaTaTa" なら終了
    if String.ends_with?(new_hako, "ATaTaTaTa") do
      IO.puts("OMA E WA MOU SHINDEIRU")
    else
      loop(new_hako)
    end
  end
end

Atatatata.main()

コードと文法の解説

変数の宣言・代入

Elixir の変数は Erlang と同様に イミュータブル(再代入不可) です。

bit = :rand.uniform(2) - 1
new_hako = hako <> char
  • 小文字始まりが変数名
  • 一度値を束縛(代入)したら変更できない

繰り返し

Elixir には while はありません。
再帰関数で繰り返しを表現します。

loop(new_hako)

終了条件を満たさない限り、自分自身を呼び出します。

条件判定

条件分岐は caseif を使います。

case bit do
  0 -> "A"
  _ -> "Ta"
end
if String.ends_with?(new_hako, "ATaTaTaTa") do
  ...
else
  ...
end
  • case はパターンマッチ
  • if はシンプルな真偽判定に便利

文字の出力

標準出力は IO.puts/1 を使います。

IO.puts(char)
  • 自動で改行が入る
  • Erlang の io:format より直感的

文字列の連結

デフォルトのエンコード方式は UTF-8 です。

new_hako = hako <> char
  • <> が文字列連結演算子
  • ++ はリスト用

文字列の末尾判定

String.ends_with?(new_hako, "ATaTaTaTa")
  • 標準ライブラリで判定できる
  • UTF-8 を意識せず使える

乱数生成

Erlang VM 上で動くため、乱数 API は Erlang と共通です。

:rand.uniform(2) - 1

seed の初期化も同様に行います。

:rand.seed(:exsplus, {...})

Elixir の概要と歴史

Elixir の特徴

  • Erlang VM(BEAM)上で動作
  • 並行処理・分散処理に強い
  • 標準ライブラリが読みやすく高機能
  • Web フレームワーク Phoenix が有名

Elixir の歴史

  • 開発者:José Valim
  • 誕生:2011年
  • 名前の由来:特にないそう。Erlangにいろんな制約があったので自分でプログラミング言語を作成することにした。

個人的なコメント

これまで名前しか聞いたことなかった。
Phoenix というElixirで書かれたWeb 開発フレームワークがあり、高性能・スケーラブルなWebアプリケーションの開発ができるそう。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?