(この記事は、「fukuoka.ex Elixir/Phoenix Advent Calendar 2019」の3日目です)
昨日はkikuyuta先生の「言語バトル時には秘匿しておきたい Elixir の急所」です!こちらもぜひぜひ!
はじめに
- 12月3日 |> 123 |> ひふみ |> ひふみん |> 加藤一二三先生
- ということで、Elixirを書いていると将棋が強くなる話をします
- ポエムです
- 私は加藤一二三先生と同じく1月1日生まれです
- A Happy New Year!!!
結論
- 伸び悩んでいることがありましたら、ちょっと方向の違う新しいことに取り組むと、脳の弱い部分が鍛えられてめぐりめぐって良い結果につがなるとおもいます
- アルケミスト 夢を旅した少年 という本に通じる部分があるとおもいます
- そして、Elixir の使い手のことをアルケミストと呼ばれるのはただの偶然ではないでしょう
- I Was Born To Love Elixir!!!
- We Are The Alchemists, my friends
私と将棋
-
藤井聡太先生のデビュー戦、つまり対 加藤一二三先生戦が行われたのが2016/12/26です
- ここから藤井聡太先生の29連勝が続きます
- ちなみにこのカードはまったくの偶然できまったそうです
- スターは生まれながらにしてスターなんだと改めて気付かされます
- この藤井聡太先生のデビュー戦からさかのぼること、2016年8月に私は将棋を覚えました
- そのとき私はもうすぐ40歳に手が届きそうな年齢になっていました
- 私はまったく駒の動き方をしらない状態で、小学生の甥にコテンパンにやられました
- おもしろさを感じたのでしょうか、腐らず強くなりたいというおもいを強くしました
- 将棋ウォーズでおもにやっています
- 3級で足踏みがつづきましたが、2級にあがったとおもったらすぐに1級になりました
- この調子で初段もすぐかとおもいましたが、また足踏みが続いています
- 戦法の本や詰将棋の本をやってみましたがなかなか光がみえません
- そんなときに出会ったのがElixirです
- 10分-1級の達成率が0%で低迷していた時期がありましたがちょっと増えてきました
私とElixirとの出会い
- 2019/1/25(金) kokura.ex#1:小倉Elixirコミュニティ発足【セッション/LTと懇親会】(19:30~) にひょんなことから出席をしまして、そのときにElixirというプログラミング言語を知りました
- とにかく プログラミングElixir という本を買ってやってみることにしました
- 2019-02-07 e-ZUKA Tech Night vol.47 -CloudQ9最終成果発表会- にて訳者の方とお会いすることができて、もちろんサインをもらいました
- Ruby は仕事で使っていました
- これが大きかったのだとおもいます
- 練習問題が書けたんですね
- これは自信になりました
- ただ表立った活動はなく、本を開いたり、開かなかったり、3月から8月くらいまではそんな感じで、潜伏していました
- この間Qiitaデビューいたしまして、Elixir関連の記事をあげはじめました
- ElixirでSlackの絵文字(emoji)を一括エクスポート
- Elixirの記事を書きたくてデビューしたのか、デビューしてからElixirのことを書きたくなったのかは忘れました
- このころ英語の勉強をはじめました
- 読む、聴く、書く、話すのうち -> 読むことに抵抗感をなくしたいとおもいました
- Elixirの情報は英語が新鮮ですので
- 英語多読を参考に、Oxford Owlというおそらくロビンマスク応援しているイギリスのちびっこたちが読んでいるであろう絵本を楽しむことからやっています
- Oxford Owl:多読の定番「ORT」が無料で読める! 登録の手順と使い方
- この間Qiitaデビューいたしまして、Elixir関連の記事をあげはじめました
- 表にでてくるきっかけは、2019-07-11 e-ZUKA Tech Night vol.48 fukuoka.exにハイジャックされちゃう会 です
- この会で、ElixirConfJP 2019 小倉城のことを知りました
- 2019-07-14に、Slackでなりすましコマンドをつくってみる 〜なりすましせずにはいられない〜 を書いたりしてみました
ElixirConfJP 2019 小倉城
- 2019/9/7 こちらにLT(Lightning Talks)枠で申し込みました
- 案内に、国際の文字が見えたので、英語でやらんといけんのやろうとおもって、英語でLTをやりました
- LT中、はじめと終わりにそれぞれ一節ずつ2曲歌いました
- Elixir Newbieと題して以下の話をしました
一発屋で終わらないように
- fukuoka.ex
- kokura.ex
- NervesJP
- 清流elixir
- エリジョ
- これらの勉強会に参加させてもらっています
- リモート(Zoom)での参加も可能なのでたいへん助かっています!
- オーガナイザーのみなさま、ありがとうございます!
もくもく会にて
- プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問 という本の問題をElixirを使って書いています
- たいていの問題はどこかに再帰を使うと解ける傾向にあるとおもいます
- ただし模範解答はそこからもう一歩踏み込んで、再帰ではない解法が紹介されています
- でもなんか再帰って好きなんですよ
- 美しいんですよね
- ただ、私は昔から再帰には苦手意識があってなかなか書けなかったんです
- 憧れだけはずっともっていました
- で、どういうわけだか不思議とElixirだと再帰のプログラムが書けるようになったんですね
- こうなると夢中になってElixirで解くんです
- 制限時間20分とか関係ありません
- 自慢する話じゃなく恥ずべきところですが3時間くらい粘ってあれこれ取り組んでいます
- 長考です
- いいんです! 自分との闘い!
lib/code_iq_17.exs
defmodule CodeIq17 do
def order(list_of_lists, 0), do: list_of_lists
def order(list_of_lists, n) do
for(
x <- list_of_lists,
y <- [0, 1],
z = Enum.at(x, -1, 1),
(z == 0 && y == 1) || z == 1,
do: x ++ [y]
)
|> order(n - 1)
end
end
iex(1)> c "lib/code_iq_17.exs"
iex(2)> CodeIq17.order([[]], 30) |> length
2178309
- kokura.ex#2:「Elixirもくもく会 ~入門もあるよ~」で書いたコード
- 再帰を使えている!
そろそろまとめます
まとめ
- Elixirを書く時間を増やしたことで、将棋ウォーズでの成績が少し上向いてきています
- 自分比ではありますが、詰将棋とか将棋ズバリそのものの勉強法を繰り返すより、ちょっとひねった刺激を脳に与えてあげたほうがよさそうです
- 序盤・中盤・終盤だと、Elixirは 中盤 に効果があります(自分比です)
- ということで、なにかに行き詰まったらちょっと新しいことをはじめてみてはいかがでしょう! という提案でございます
- そのちょっと新しいことというのが私にとっては、Elixirだったわけです
- とにかくやってみる、ゼロと踏み出した一歩では大違い、アルケミスト 夢を旅した少年という本に通じる部分があるとおもっています
- 踏み出したその一足は道となり、その一歩はと金に成るのです
- 迷わず行けよ 行けばわかるさ ありがとう!
- I Was Born To Love Elixir!!!
- We Are The Alchemists, my friends
中盤つよくなったよ!
- 最近のとある一局のみの解析結果です
- この一局に限っていえば序盤・中盤はかなりの強豪だったようです
- ただ終盤がおそまつで、総合棋力は_4.19級_という体たらく
- 序盤・中盤でリードして終盤、本当は渡しちゃいけない駒を調子に乗って渡してしまっていて、相手の方に長手数の詰めがあった展開だったのだとおもいます
- ただ私の感覚(レベル)では一度もピンチだとおもった場面はありませんでした
- 素人どうしで同じくらいの手合いですと断然攻めているほうが有利な傾向にあるとおもいます
- 攻められているほうは一旦守勢にはいると受けの手しかささなくなるみたいな
- 私もそうです
- だから意識して、私は劣勢のときには、王手がかからなくなった瞬間にとりあえず**思い出王手**をするようにしています
- だいたいそのまま負けますけど、勝ちを拾うこともあります
- どうせ負けなら華々しく散りたいとおもっています
- この将棋は序盤から中盤での優勢をそのまま勝利につなげられたのだとおもいます
追伸
- Elixirのなにがいいの? という難しいことは私にはわかりません
- 山があったら登りますよね
- 寿司があったら食べますよね
- いいものはいいんです! 美しいのです!
- アルケミストとお慕いしている方々が書かれた発表資料などへのリンクをご紹介させていただきます
次回
次回はhisawayさんの「Elixirでコード変換してみよう」です!こちらも是非どうぞ~