2019年2月13日のブックマーク (2件)

  • いかにして我々は10年もののPerlプロダクトをScalaでリプレースしたか - ScalaMatsuri 2019

    いかにして我々は10年もののPerlプロダクトをScalaでリプレースしたか はてなブックマークはサービス開始から10年以上が経ち、Perlで書かれたコードベースの肥大化・複雑化、アーキテクチャの老朽化によるメンテナンスコスト増大という課題を抱えていました。これらの課題への対処のため2015年にいちからシステムを作り直すプロジェクトがスタートし、最近このプロジェクトが完了しました!(※2019年3月現在は開発中) 作り直しに際して、すべてのコードベース・DBスキーマ・アーキテクチャなどを刷新し、コアアプリケーションの実装には堅牢なシステムの開発/運用に適しており社内での採用実績のあるScalaを採用しました。 このセッションでは、我々がどのようにしてレガシーなソフトウェアのリプレースプロジェクトを進めたか、Perlを得意とするエンジニアの多い環境でのScalaの採用、プロジェクトを通じて得

    ryota-ka
    ryota-ka 2019/02/13
    聞きた〜い
  • Haskellerのためのモノイド完全ガイド | 雑記帳

    Haskellにおけるモノイドについて解説記事を書いてみた。他の言語でも通用する話があるかもしれないし、ないかもしれない。 モノイドとは モノイドとは、ざっくり言うと「くっつける」演算ができる対象のことである。例えば、文字列やリストの連結、数の足し算や掛け算は「くっつける」演算の一種である。 モノイドには「くっつける」演算の他にもう一つ条件があって、モノイドは「くっつけても何も起こらない値」を持っていなければならない。例えば、文字列の場合は空文字列、リストの場合は空リスト、数の足し算の場合は0、掛け算の場合は1、という具合である。 というわけで、文字列、リスト、数の足し算、数の掛け算はいずれもモノイドの具体例である。ただし、同じ数の集合(整数、など)を考えていても、演算が異なる(足し算 vs 掛け算)場合は、異なるモノイドとみなす。 モノイドの定義をちゃんと書くと、モノイドとは集合 \(M

    ryota-ka
    ryota-ka 2019/02/13