Elixirを書いていると将棋が強くなります(新しいことをはじめよう)

（この記事は、「[fukuoka.ex Elixir／Phoenix Advent Calendar 2019](https://qiita.com/advent-calendar/2019/fukuokaex)」の3日目です）
昨日は[kikuyuta](https://qiita.com/kikuyuta)先生の「[言語バトル時には秘匿しておきたい Elixir の急所](https://qiita.com/kikuyuta/items/9690e0905bf4fded937b)」です！こちらもぜひぜひ！


# はじめに :santa_tone1:
- 12月3日 |> 123 |> ひふみ |> ひふみん |> [加藤一二三](https://www.shogi.or.jp/player/pro/64.html)先生
- ということで、[Elixir](https://elixir-lang.org/)を書いていると[将棋](https://www.shogi.or.jp/)が強くなる話をします
- ポエムです
- 私は[加藤一二三](https://www.shogi.or.jp/player/pro/64.html)先生と同じく１月１日生まれです :birthday: 
- A Happy New Year!!!

# 結論
- 伸び悩んでいることがありましたら、ちょっと方向の違う新しいことに取り組むと、脳の弱い部分が鍛えられてめぐりめぐって良い結果につがなるとおもいます
- [アルケミスト 夢を旅した少年](https://www.amazon.co.jp/dp/404275001X) という本に通じる部分があるとおもいます
- そして、[Elixir](https://elixir-lang.org/) の使い手のことをアルケミストと呼ばれるのはただの偶然ではないでしょう
- **I Was Born To Love Elixir!!!**
- **We Are The Alchemists, my friends** 




# 私と将棋
- [藤井聡太](https://www.shogi.or.jp/player/pro/307.html)先生のデビュー戦、つまり対 [加藤一二三](https://www.shogi.or.jp/player/pro/64.html)先生戦が行われたのが2016/12/26です
    - ここから[藤井聡太](https://www.shogi.or.jp/player/pro/307.html)先生の２９連勝が続きます
    - ちなみにこのカードはまったくの偶然できまったそうです
    - スターは生まれながらにしてスターなんだと改めて気付かされます
- この[藤井聡太](https://www.shogi.or.jp/player/pro/307.html)先生のデビュー戦からさかのぼること、2016年8月に私は将棋を覚えました
    - そのとき私はもうすぐ４０歳に手が届きそうな年齢になっていました
    - 私はまったく駒の動き方をしらない状態で、小学生の甥にコテンパンにやられました
    - おもしろさを感じたのでしょうか、腐らず強くなりたいというおもいを強くしました
- [将棋ウォーズ](https://shogiwars.heroz.jp/)でおもにやっています
- ３級で足踏みがつづきましたが、２級にあがったとおもったらすぐに１級になりました
- この調子で初段もすぐかとおもいましたが、また足踏みが続いています
- 戦法の本や詰将棋の本をやってみましたがなかなか光がみえません
- そんなときに出会ったのが[Elixir](https://elixir-lang.org/)です

![スクリーンショット 2019-11-22 7.36.13 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/1f354f22-fe9e-d3af-de54-5f6131b42f19.png)
- 10分-1級の達成率が0%で低迷していた時期がありましたがちょっと増えてきました:rocket:

# 私と[Elixir](https://elixir-lang.org/)との出会い
- 2019/1/25(金) [kokura.ex#1：小倉Elixirコミュニティ発足【セッション／LTと懇親会】（19:30～）](https://fukuokaex.connpass.com/event/116855/) にひょんなことから出席をしまして、そのときに[Elixir](https://elixir-lang.org/)というプログラミング言語を知りました
    - 父が[Erlang](https://www.erlang.org/)で、母が[Ruby](https://www.ruby-lang.org/ja/)という説明が印象的でした
    - 最初は、関数型言語ときいて難しいんだろうなあと勝手に尻込みしていました
- とにかく [プログラミングElixir](https://www.amazon.co.jp/dp/4274219151) という本を買ってやってみることにしました
    - 2019-02-07 [e-ZUKA Tech Night vol.47 -CloudQ9最終成果発表会-](https://ezukatechnight.doorkeeper.jp/events/85543) にて訳者の方とお会いすることができて、もちろんサインをもらいました
- [Ruby](https://www.ruby-lang.org/ja/) は仕事で使っていました
- これが大きかったのだとおもいます
- 練習問題が書けたんですね
- これは自信になりました
- ただ表立った活動はなく、本を開いたり、開かなかったり、３月から8月くらいまではそんな感じで、**潜伏していました**
    - この間Qiitaデビューいたしまして、[Elixir](https://elixir-lang.org/)関連の記事をあげはじめました
        - [ElixirでSlackの絵文字(emoji)を一括エクスポート](https://qiita.com/torifukukaiou/items/4ebd31dbc0804c3f1dd3)
        - [Elixir](https://elixir-lang.org/)の記事を書きたくてデビューしたのか、デビューしてから[Elixir](https://elixir-lang.org/)のことを書きたくなったのかは忘れました
    - このころ英語の勉強をはじめました
        - 読む、聴く、書く、話すのうち -> 読むことに抵抗感をなくしたいとおもいました
        - [Elixir](https://elixir-lang.org/)の情報は英語が新鮮ですので
        - [英語多読](https://tadoku.org/english/)を参考に、[Oxford Owl](https://www.oxfordowl.co.uk/)というおそらくロビンマスク応援しているイギリスのちびっこたちが読んでいるであろう絵本を楽しむことからやっています
        - [Oxford Owl：多読の定番「ORT」が無料で読める！ 登録の手順と使い方](https://tadoku.org/english/oxfordowl)
- 表にでてくるきっかけは、2019-07-11 [e-ZUKA Tech Night vol.48 fukuoka.exにハイジャックされちゃう会](https://ezukatechnight.doorkeeper.jp/events/93368) です
- この会で、[ElixirConfJP 2019 小倉城](https://fukuokaex.connpass.com/event/138846/)のことを知りました
- 2019-07-14に、[Slackでなりすましコマンドをつくってみる 〜なりすましせずにはいられない〜](https://qiita.com/torifukukaiou/items/c543586ed28f4296c527) を書いたりしてみました

# [ElixirConfJP 2019 小倉城](https://fukuokaex.connpass.com/event/138846/)
- 2019/9/7 こちらにLT(Lightning Talks)枠で申し込みました
- 案内に、**国際**の文字が見えたので、英語でやらんといけんのやろうとおもって、英語でLTをやりました
- LT中、はじめと終わりにそれぞれ一節ずつ２曲歌いました
- Elixir Newbieと題して以下の話をしました
    - I Was Born To Love [Elixir](https://elixir-lang.org/).
    - `|>` この演算子いいよね(処理の順序とソースコードの記述順序が同じになる)
        - [Elixir](https://elixir-lang.org/)で書いたプログラムが美しいんですよね
    - Slackの絵文字ダウンロードは[Flow](https://hexdocs.pm/flow/Flow.html)って書くだけで3倍速くなるよ
    - How wonderful life is while [Elixir](https://elixir-lang.org/) is in the world.

# 一発屋で終わらないように
- [fukuoka.ex](https://fukuokaex.connpass.com/)
- [kokura.ex](https://fukuokaex.connpass.com/)
- [NervesJP](https://nerves-jp.connpass.com/)
- [清流elixir](https://elixir-sr.connpass.com/)
- [エリジョ](https://elijo.connpass.com/)
- これらの勉強会に参加させてもらっています
- リモート([Zoom](https://zoom.us/jp-jp/meetings.html))での参加も可能なのでたいへん助かっています！
- オーガナイザーのみなさま、ありがとうございます！

# もくもく会にて
- [プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問](https://www.amazon.co.jp/dp/479814245X) という本の問題を[Elixir](https://elixir-lang.org/)を使って書いています
- たいていの問題はどこかに再帰を使うと解ける傾向にあるとおもいます
    - ただし模範解答はそこからもう一歩踏み込んで、再帰ではない解法が紹介されています
- でもなんか再帰って好きなんですよ
- 美しいんですよね
- ただ、私は昔から再帰には苦手意識があってなかなか書けなかったんです
- 憧れだけはずっともっていました
- で、どういうわけだか不思議と[Elixir](https://elixir-lang.org/)だと再帰のプログラムが書けるようになったんですね
    - 父が[Erlang](https://www.erlang.org/)で、母が[Ruby](https://www.ruby-lang.org/ja/)
    - といったあたりや、近年、私が仕事で[Ruby](https://www.ruby-lang.org/ja/)を使う機会が多かったことが挙げられるかもしれません
- こうなると夢中になって[Elixir](https://elixir-lang.org/)で解くんです
- 制限時間20分とか関係ありません
- 自慢する話じゃなく恥ずべきところですが３時間くらい粘ってあれこれ取り組んでいます
    - 長考です
- **いいんです！　自分との闘い！**

```Elixir: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もくもく会 ～入門もあるよ～」](https://fukuokaex.connpass.com/event/148300/)で書いたコード
- 再帰を使えている!





**そろそろまとめます**

# まとめ
- [Elixir](https://elixir-lang.org/)を書く時間を増やしたことで、[将棋ウォーズ](https://shogiwars.heroz.jp/)での成績が少し上向いてきています
- 自分比ではありますが、詰将棋とか将棋ズバリそのものの勉強法を繰り返すより、ちょっとひねった刺激を脳に与えてあげたほうがよさそうです
    - 序盤・中盤・終盤だと、[Elixir](https://elixir-lang.org/)は **中盤** に効果があります(自分比です)
- ということで、なにかに行き詰まったらちょっと新しいことをはじめてみてはいかがでしょう！ という提案でございます
- そのちょっと新しいことというのが私にとっては、[Elixir](https://elixir-lang.org/)だったわけです
- とにかくやってみる、ゼロと踏み出した一歩では大違い、[アルケミスト 夢を旅した少年](https://www.amazon.co.jp/dp/404275001X)という本に通じる部分があるとおもっています
    - 踏み出したその一足は道となり、その一歩は**と金**に**成る**のです
    - [迷わず行けよ 行けばわかるさ **ありがとう!**](https://www.youtube.com/watch?v=BV_L31OSq-Q)
- **I Was Born To Love Elixir!!!**
- **We Are The Alchemists, my friends** 

## 中盤つよくなったよ！
![スクリーンショット 2019-11-22 7.33.55 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/1cc3f416-1b1e-7fe1-fe61-68aa69fd158b.png)

- 最近のとある一局のみの解析結果です
    - この一局に限っていえば序盤・中盤はかなりの**強豪**だったようです
    - ただ終盤がおそまつで、総合棋力は_4.19級_という体たらく
- 序盤・中盤でリードして終盤、本当は渡しちゃいけない駒を**調子に乗って**渡してしまっていて、相手の方に長手数の詰めがあった展開だったのだとおもいます
    - ただ私の感覚（レベル）では一度もピンチだとおもった場面はありませんでした
- 素人どうしで同じくらいの手合いですと断然攻めているほうが有利な傾向にあるとおもいます
- 攻められているほうは一旦守勢にはいると受けの手しかささなくなるみたいな
    - 私もそうです
    - だから意識して、私は劣勢のときには、王手がかからなくなった瞬間にとりあえず**[思い出王手](https://xn--pet04dr1n5x9a.com/%E5%B0%86%E6%A3%8B%E7%94%A8%E8%AA%9E/%E6%80%9D%E3%81%84%E5%87%BA%E7%8E%8B%E6%89%8B.html)**をするようにしています
    - だいたいそのまま負けますけど、勝ちを拾うこともあります
    - どうせ負けなら華々しく散りたいとおもっています
- この将棋は序盤から中盤での優勢をそのまま勝利につなげられたのだとおもいます


# 追伸
- [Elixir](https://elixir-lang.org/)のなにがいいの? という難しいことは私にはわかりません
- 山があったら登りますよね
- 寿司があったら食べますよね
- **いいものはいいんです! 美しいのです!**
- アルケミストとお慕いしている方々が書かれた発表資料などへのリンクをご紹介させていただきます
    - [ElixirとHaskellの根底にある同じもの、そして、Elixirが辿った道](https://speakerdeck.com/piacerex/elixirtohaskellfalsegen-di-niarutong-zimofalse-sosite-elixirgachan-tutadao)
    - [やや関数型を意識した風Elixir／Phoenixご紹介](https://www.slideshare.net/piacere_ex/elixirphoenix)
    - [Alchemist and D/OX](https://speakerdeck.com/ohr486/ox)
    - [Hacking Elixir How-To](https://speakerdeck.com/ohr486/hacking-elixir-how-to)
    - [これをまだ知らない Web エンジニアへ贈る 私が愛する Elixir/Erlang の楽しさと辛さ](https://speakerdeck.com/cooldaemon/erlang-falsele-sisatoxin-sa)
    - [Elixir=コスパ最強、これだけ覚えてください](https://twitter.com/zacky1972/status/1097462744188477440)


# 次回
次回は[hisaway](https://qiita.com/hisaway)さんの「[Elixirでコード変換してみよう](https://qiita.com/hisaway/items/9200e453c69db4c2bef0)」です！こちらも是非どうぞ～