雀巽の日記帳

雀巽が綴る日常の記録

ちょっぴり OSS に貢献 & Erlang はじめました

初マージ!

github.com

なんか手元で RuboCop 動かしたら Error が出るのでソースを覗いてみたら、RuboCop 側に原因がありそうだったので Pull Request を出してみました。 そして無事マージ!1行requireを追加という微妙な貢献を果たしました。

直すことよりも、CONTRIBUTING を見て適切な PR を作成するのに力を使いました。あまりに自信がなかったため、コミットメッセージや PR の英文は隣りに居た id:Yasaichi くんに見てもらいました。超感謝!

Erlang

話ぶっ飛びますが、最近 Erlang を始めました。惹かれた理由はアクターモデルなところです。

非同期な並行処理を書くのは現在のところアクターモデルが良いんじゃないかという話をこれまた id:Yasaichi くんとしたのがきっかけです。 Akka (Scala, Java) や Elixir という選択肢も合ったのですが、Akka vs Erlang - Qiita とか Elixir ご紹介とか色々な記事を見た結果、Erlang が一番シンタックスやら言語の在り方やらが気に入ったので Erlang にしました。

Elixir は ErlangシンタックスRuby 風にして馴染みやすくしたものとのことですが、何も知らない状態でソースを眺めた時、Elixir よりも Erlang のほうが個人的には「読みやすそう & 馴染みがある」と感じました。Akka (Scala) と Erlang を見比べた時も、なんだか Erlang の方がシンプルで好きだなぁと、直感的に思いました。

コード自体はまさに関数型言語といった感じで、構文は簡潔でとても読みやすいです。

最高のプログラミング言語(または私は如何にして心配するのを止めてコードを愛するようになったか)

まさしくこんな印象でした。

と、言うわけで、すごい E 本を購入しました!

ymotongpoo.hatenablog.com

まだ9章に入ったところで、Erlang の基礎と関数プログラミングの初歩についての最終章ですが、シンタックスは予想通りシンプルで読みやすいと思います。 10章以降が楽しみです。すごい H 本 を読んでた時のワクワク感を思い出します。

necojackarc.hatenablog.com

対処したい問題

複雑なバッチシステムが身近に転がってるのですが、

  • インプットとアウトプットの形式が各モジュールによってバラバラ
  • バッチの実行順序制御が完全に匠の技でかなり危うい
  • どこかで落ちた時、落ちた場所を気合と根性で結果から遡ってる
  • 何かのモジュールが落ちた時、インフラエンジニアに再起動を依頼してる
  • スケール困難なアーキテクチャになってる

といった状態で正直関わりたく無さしかありません。

アクターモデルの考え方を適用すれば、少しはマシになるんじゃないかなと妄想しています。

おわりに

すごい E 本 600 ページ近くもあるよ!