はじめに
今年も高校生向けプログラミング講座「福岡県Rubyキャンプ」に参加しました。
ハウインターナショナルからは、 @tsuruoka91 と @torifukukaiou の2名でコーチを務めました。
他社さまも含めて総勢10名程度のコーチ陣がそろいました。
<開催報告> 令和5年度高校生向けプログラミング講座「福岡県Rubyキャンプ」
参加してみて感じたことを記します。
コーチの役割
私は、コーチとして参加しました。
私はこのキャンプを主導するような立場ではなく、協力者の一人として、コーチに名乗るほどのものでもないのですが、名乗りを挙げてキャンプの一部分に参加しました。
私の主な役割は、高校生といっしょにRubyのプログラミングを楽しむことです。
今回が2回目の取り組みで、第二回開催です。
日程は、2023年の11月4日(土)、5日(日)と11月11日(土)、12日(日)の四日間で行われました。
約20名くらいの高校生が自らの意思で参加を決めたそうです。
豪華なカリキュラムでした。
なんとまつもとゆきひろさんと九州工業大学の田中和明先生の講演付きです。
私は11月11日(土)と12日(日)に参加して高校生2人とともにRubyでプログラミングすることを楽しみました。
大谷翔平選手の気持ちで! コーチする
コーチ役はつまり大谷翔平選手の気持ちで参加すればよいのだと私はそう解釈しました。
大谷翔平選手は全国の小学校にグローブを3個ずつ配りました。それを手に取って野球に興味を持ってくれた子どもたちといつか野球を共にすることが楽しみだと述べられています。
「いつかキャッチボールしようぜ」と。
私は高校生へのコーチを通じて、「いつかいっしょにコードを書こうぜ!」という気持ちで、2日間を楽しみました。
「福岡県Rubyキャンプ」の様子
ワイワイ、ガヤガヤとした雰囲気でした。
プログラムができてうれしさ爆発、うまく動かなくて静寂、ブレークタイムでITエンジニアってどういう仕事なのか語ったり、いまどきの高校生の関心事をきたり……。
私はできるだけ本人たちの自主性に任せました。質問されたらもちろん答えますが、プログラムの答えを手取り足取り教えることはしませんでした。いずれひとり立ちしなければならないときがくるのです。その訓練です。2人組にコーチしたのですが、先にできた人にまだできていない人のサポートをしてもらいました。そうすることで、先にできた生徒の理解はさらに深まりますし、詰まっている人も同学年で気兼ねなく疑問点を聞くことができます。
こう書くとずいぶん冷たい感じがするかもしれませんが、終始ニコニコ、和やかな雰囲気で「元氣があればなんでもできる!」で私達のグループは進行しました。
感心したこと
高校生向けプログラミング講座「福岡県Rubyキャンプ」の最後に、参加した高校生一人ひとりから感想を述べてもらうコーナーがありました。
多くの高校生が「とても楽しかった」と感想を述べられていました。
目がまぶしいくらいにキラキラと輝いていました。
将来が楽しみです。
X(旧Twitter)
福岡県Ruby・コンテンツビジネス振興会議さんのツイートです。
本日は高校生向け #福岡県Rubyキャンプ の3日目です!応用編で県内Rubyエンジニアコーチの元、高校生達がRubyプログラミングに挑戦しています。https://t.co/h7QNw4sgck pic.twitter.com/uc7xj1qQAz
— 福岡県Ruby・コンテンツビジネス振興会議 (@Fukuoka_Ruby) November 11, 2023
高校生向け #福岡県Rubyキャンプ は本日が最終日です。プログラミングは初めての生徒さんや経験ある方でも、皆さん楽しそうに課題に取り組んでいます。 pic.twitter.com/kkLZqaWDEQ
— 福岡県Ruby・コンテンツビジネス振興会議 (@Fukuoka_Ruby) November 12, 2023
(左下の写真に私がちらっと写り込んでいます。)
RubyとElixir
私の記事では、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の作者José Valimさんは、Elixirを作る上で影響を受けた言語にRubyを挙げられています。
José Valim - Cognicast Episode 120
The main, the top three influences are Erlang, Ruby, and Clojure.
完全に私見です。
ElixirがRubyから一番色濃く影響を受けているのは、 A PROGRAMMER'S BEST FRIEND だとおもっています。A PROGRAMMER'S BEST FRIEND は、Rubyの公式ページの先頭のところに書いてあります。
Elixirにのめり込むと自然と海外の方との交流が増えます。出会う人がみな親切でジェントルマンです。国内のコミュニティもそうです。みなマヂでいい人ばっかりです。
100マス計算
みなでがんばった100マス計算を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()
こんな感じでどうでしょうか。
実行結果の例です。
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 ?
Elixirという素敵なプログラミング言語があるんです!
その素敵具合は「Elixir Saves Pinterest $2 Million a Year In Server Costs」によく現れています。開発者も経営者もこの事実に瞠目することでしょう。 $2 Million/年の節約ですってよ!、奥さん。
おわりに
高校生向けプログラミング講座「福岡県Rubyキャンプ」に、大谷翔平選手の気持ちでコーチとして参加しました。
2024年1月13日(土)には、Rubyフェスタがアクロス福岡で開催されるそうです。
また再び『高校生向けプログラミング講座「福岡県Rubyキャンプ」』が開催される際には出来るだけ協力したいと思っています。
過去の記事
2022年