高校生向けプログラミング講座「福岡県Rubyキャンプ」にコーチとして参加してきました！

https://qiita.com/advent-calendar/2023/ruby

# はじめに

今年も[高校生向けプログラミング講座「福岡県Rubyキャンプ」](https://www.digitalfukuoka.jp/topics/253?locale=ja)に参加しました。
[ハウインターナショナル](https://www.haw.co.jp/)からは、 @tsuruoka91 と @torifukukaiou の2名でコーチを務めました。
他社さまも含めて総勢１０名程度のコーチ陣がそろいました。




[＜開催報告＞ 令和５年度高校生向けプログラミング講座「福岡県Rubyキャンプ」](https://www.digitalfukuoka.jp/topics/253?locale=ja)

https://www.digitalfukuoka.jp/topics/253?locale=ja


参加してみて感じたことを記します。



# コーチの役割

私は、コーチとして参加しました。
私はこのキャンプを主導するような立場ではなく、協力者の一人として、コーチに名乗るほどのものでもないのですが、名乗りを挙げてキャンプの一部分に参加しました。
私の主な役割は、**高校生といっしょに[Ruby](https://www.ruby-lang.org/ja/)のプログラミングを楽しむこと**です。
今回が2回目の取り組みで、第二回開催です。

日程は、2023年の11月4日（土）、5日（日）と11月11日（土）、12日（日）の四日間で行われました。
約20名くらいの高校生が自らの意思で参加を決めたそうです。

豪華なカリキュラムでした。
なんと[まつもとゆきひろ](https://twitter.com/yukihiro_matz)さんと九州工業大学の[田中和明](https://www.ccr.kyutech.ac.jp/professors/iizuka/i3/i3-2/entry-714.html)先生の講演付きです。
私は11月11日（土）と12日（日）に参加して高校生2人とともに[Ruby](https://www.ruby-lang.org/ja/)でプログラミングすることを楽しみました。

# 大谷翔平選手の気持ちで！　コーチする

コーチ役はつまり大谷翔平選手の気持ちで参加すればよいのだと私はそう解釈しました。
大谷翔平選手は全国の小学校にグローブを3個ずつ配りました。それを手に取って野球に興味を持ってくれた子どもたちといつか野球を共にすることが楽しみだと述べられています。
「いつかキャッチボールしようぜ」と。

私は高校生へのコーチを通じて、「いつかいっしょにコードを書こうぜ！」という気持ちで、2日間を楽しみました。

# 「福岡県Rubyキャンプ」の様子

ワイワイ、ガヤガヤとした雰囲気でした。
プログラムができてうれしさ爆発、うまく動かなくて静寂、ブレークタイムでITエンジニアってどういう仕事なのか語ったり、いまどきの高校生の関心事をきたり……。

私はできるだけ本人たちの自主性に任せました。質問されたらもちろん答えますが、プログラムの答えを手取り足取り教えることはしませんでした。いずれひとり立ちしなければならないときがくるのです。その訓練です。２人組にコーチしたのですが、先にできた人にまだできていない人のサポートをしてもらいました。そうすることで、先にできた生徒の理解はさらに深まりますし、詰まっている人も同学年で気兼ねなく疑問点を聞くことができます。

こう書くとずいぶん冷たい感じがするかもしれませんが、終始ニコニコ、和やかな雰囲気で「元氣があればなんでもできる！」で私達のグループは進行しました。

# 感心したこと

[高校生向けプログラミング講座「福岡県Rubyキャンプ」](https://www.digitalfukuoka.jp/topics/253?locale=ja)の最後に、参加した高校生一人ひとりから感想を述べてもらうコーナーがありました。
多くの高校生が「とても楽しかった」と感想を述べられていました。
目がまぶしいくらいにキラキラと輝いていました。

将来が楽しみです。

# X(旧Twitter)

[福岡県Ruby・コンテンツビジネス振興会議](https://twitter.com/Fukuoka_Ruby)さんのツイートです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">本日は高校生向け <a href="https://twitter.com/hashtag/%E7%A6%8F%E5%B2%A1%E7%9C%8CRuby%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%97?src=hash&amp;ref_src=twsrc%5Etfw">#福岡県Rubyキャンプ</a> の3日目です！応用編で県内Rubyエンジニアコーチの元、高校生達がRubyプログラミングに挑戦しています。<a href="https://t.co/h7QNw4sgck">https://t.co/h7QNw4sgck</a> <a href="https://t.co/uc7xj1qQAz">pic.twitter.com/uc7xj1qQAz</a></p>&mdash; 福岡県Ruby・コンテンツビジネス振興会議 (@Fukuoka_Ruby) <a href="https://twitter.com/Fukuoka_Ruby/status/1723177753485386177?ref_src=twsrc%5Etfw">November 11, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">高校生向け <a href="https://twitter.com/hashtag/%E7%A6%8F%E5%B2%A1%E7%9C%8CRuby%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%97?src=hash&amp;ref_src=twsrc%5Etfw">#福岡県Rubyキャンプ</a> は本日が最終日です。プログラミングは初めての生徒さんや経験ある方でも、皆さん楽しそうに課題に取り組んでいます。 <a href="https://t.co/kkLZqaWDEQ">pic.twitter.com/kkLZqaWDEQ</a></p>&mdash; 福岡県Ruby・コンテンツビジネス振興会議 (@Fukuoka_Ruby) <a href="https://twitter.com/Fukuoka_Ruby/status/1723519461163258012?ref_src=twsrc%5Etfw">November 12, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


（左下の写真に私がちらっと写り込んでいます。）

---

# [Ruby](https://www.ruby-lang.org/ja/)と[Elixir](https://elixir-lang.org/)

私の記事では、[Elixir](https://elixir-lang.org/)のことを必ず触れることにしています。

```elixir
iex> "Elixir" |> String.graphemes() |> Enum.frequencies()
%{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}

iex> "A PROGRAMMER'S BEST FRIEND" |> String.graphemes() |> Enum.frequencies()
%{
  " " => 3,
  "'" => 1,
  "A" => 2,
  "B" => 1,
  "D" => 1,
  "E" => 3,
  "F" => 1,
  "G" => 1,
  "I" => 1,
  "M" => 2,
  "N" => 1,
  "O" => 1,
  "P" => 1,
  "R" => 4,
  "S" => 2,
  "T" => 1
}
```

[Elixir](https://elixir-lang.org/)の作者[José Valim](https://twitter.com/josevalim)さんは、[Elixir](https://elixir-lang.org/)を作る上で影響を受けた言語に[Ruby](https://www.ruby-lang.org/ja/)を挙げられています。

[José Valim - Cognicast Episode 120](https://cognitect.com/cognicast/120)

> The main, the top three influences are Erlang, Ruby, and Clojure.

完全に私見です。
[Elixir](https://elixir-lang.org/)が[Ruby](https://www.ruby-lang.org/ja/)から一番色濃く影響を受けているのは、 **A PROGRAMMER'S BEST FRIEND** だとおもっています。**A PROGRAMMER'S BEST FRIEND** は、[Ruby](https://www.ruby-lang.org/ja/)の公式ページの先頭のところに書いてあります。
[Elixir](https://elixir-lang.org/)にのめり込むと自然と海外の方との交流が増えます。出会う人がみな親切でジェントルマンです。国内のコミュニティもそうです。みなマヂでいい人ばっかりです。

![スクリーンショット 2022-11-14 11.53.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/f7736594-6606-1475-1d9b-d856fbb8664a.png)

## 100マス計算

みなでがんばった100マス計算を[Elixir](https://elixir-lang.org/)で書いてみます。

```elixir
defmodule Awesome do
  @xs 1..10 |> Enum.shuffle()
  @ys 1..10 |> Enum.shuffle()

  def run do
    @ys
    |> Enum.map(fn y ->
      @xs
      |> Enum.map(&pad_leading(&1 * y))
      |> Enum.join(" ")
      |> String.pad_leading(43, pad_leading(y) <> "|")
    end)
    |> List.insert_at(0, header())
    |> Enum.join("\n")
    |> IO.puts()
  end

  defp header do
    String.duplicate(" ", 4)
    |> Kernel.<>(Enum.map(@xs, &pad_leading/1) |> Enum.join(" "))
    |> Kernel.<>("\n")
    |> Kernel.<>(String.duplicate(" ", 4))
    |> Kernel.<>(String.duplicate("-", 39))
  end

  defp pad_leading(n) do
    n
    |> Integer.to_string()
    |> String.pad_leading(3)
  end
end

Awesome.run()
```

こんな感じでどうでしょうか。

実行結果の例です。

```elixir
     10   9   4   6   2   7   1   3   5   8
    ---------------------------------------
  2| 20  18   8  12   4  14   2   6  10  16
  3| 30  27  12  18   6  21   3   9  15  24
  5| 50  45  20  30  10  35   5  15  25  40
  8| 80  72  32  48  16  56   8  24  40  64
 10|100  90  40  60  20  70  10  30  50  80
  9| 90  81  36  54  18  63   9  27  45  72
  1| 10   9   4   6   2   7   1   3   5   8
  4| 40  36  16  24   8  28   4  12  20  32
  7| 70  63  28  42  14  49   7  21  35  56
  6| 60  54  24  36  12  42   6  18  30  48
```

# What is [Elixir](https://elixir-lang.org/) ?

[Elixir](https://elixir-lang.org/)という素敵なプログラミング言語があるんです！
その素敵具合は「[Elixir Saves Pinterest $2 Million a Year In Server Costs](https://paraxial.io/blog/elixir-savings)」によく現れています。開発者も経営者もこの事実に瞠目することでしょう。 **$2 Million/年の節約ですってよ！、奥さん。**

https://paraxial.io/blog/elixir-savings



# おわりに

[高校生向けプログラミング講座「福岡県Rubyキャンプ」](https://www.digitalfukuoka.jp/topics/253?locale=ja)に、大谷翔平選手の気持ちでコーチとして参加しました。

２０２４年１月１３日（土）には、[Rubyフェスタ](https://www.frubyfesta.com/)がアクロス福岡で開催されるそうです。

https://www.frubyfesta.com/


また再び『高校生向けプログラミング講座「福岡県Rubyキャンプ」』が開催される際には出来るだけ協力したいと思っています。

[Ruby](https://www.ruby-lang.org/ja/)と[Elixir](https://elixir-lang.org/)から目が離せません。

---

# 過去の記事

## 2022年

https://qiita.com/torifukukaiou/items/84c03b8d31c19ca20711