ちょっぴり OSS に貢献 & Erlang はじめました
初マージ!
なんか手元で 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 本を購入しました!
まだ9章に入ったところで、Erlang の基礎と関数プログラミングの初歩についての最終章ですが、シンタックスは予想通りシンプルで読みやすいと思います。 10章以降が楽しみです。すごい H 本 を読んでた時のワクワク感を思い出します。
対処したい問題
複雑なバッチシステムが身近に転がってるのですが、
- インプットとアウトプットの形式が各モジュールによってバラバラ
- バッチの実行順序制御が完全に匠の技でかなり危うい
- どこかで落ちた時、落ちた場所を気合と根性で結果から遡ってる
- 何かのモジュールが落ちた時、インフラエンジニアに再起動を依頼してる
- スケール困難なアーキテクチャになってる
といった状態で正直関わりたく無さしかありません。
アクターモデルの考え方を適用すれば、少しはマシになるんじゃないかなと妄想しています。
おわりに
すごい E 本 600 ページ近くもあるよ!