dogwood008の開発メモ!

最近のマイブームは機械学習, Ruby on Rails。中でも機械学習を使った金融商品の自動取引に興味があります。

レガシーの代わりにレジェンドを使いたい話

古いシステムを指す言葉として「レガシーシステム」というように「レガシー」という言葉を使うことがある。特にシステムのリプレイスを行う際に、新しいシステムと対比させ古いシステムをこう呼ぶことが多い。一般的に、レガシーシステムは古いアーキテクチャやフレームワークを使用していることが多い。

これはコンピューター業界では1970年代頃から使われ始めた言葉だとwikipediaには書かれている(要検証)1。しかし私はこの「レガシー」という言葉があまり好きではない。レガシー自体は遺産とか受け継いだものとかいった意味2ではあるが、どうしてもマイナスのイメージがついてまわるように私は思う。

これによってどのような不都合が生じるかと言うと、システムリプレースの際に生じる人と人との気持ちのミスコミュニケーションが挙げられる。例えば、システム A をシステム B にリプレースする際に、レガシーシステムをシステム A の代名詞に使う場合がある。この時、システム A をディスる気持ちはなくとも、A を作ったあるいは導入した人が、Aのことをレガシーと言われることで、システムや人格を否定されたような気持ちや面白くないような気持ちになってしまいかねない。これはその場の話の流れや話し方、声のトーン、Aの開発・導入者と自分との関連性、その他もろもろのたくさんの要素によって結果は異なりうる。

これが起こりうるのが私がレガシーという言葉を使いたくない理由である。自分の意図しないところで人の気持ちを毀損したくはないし、実際に金を稼いでいたり業務を円滑に回しているのは、紛れもなくそのレガシーシステムなのである。尊敬こそすれ、今にそぐわないから過去の遺物というのはそれは少し違うのではないかと私は思う。最初からレガシーと無縁のシステムを作ることは不可能なのである。できていたらレガシーシステムは生まれない。旧システムが通ってきた軌跡があるから、新システムをより良いアーキテクチャで組めたり、地雷を避けたり、素早く開発することができるのである。

そこで旧システムの代名詞として、私はレガシーではなくレジェンドを使いたい。それぞれの意味は完全には同じではなく、レジェンドは伝説という意味3を持っている。自分の頭の中ではレジェンドはプラスのイメージを持っていて、レガシーと呼ぶよりしっくりくる。

これはただの言葉遊びかもしれない。レガシィをレジェンドに置き換えたとしても使う文脈や意味は全く同じである。しかし、それだけで言葉の持つイメージが良くなるのであれば儲けものだとも考える。ちなみに「技術的負債の返済」という言葉もあるが、これも同様の理由であまり好きな言葉ではない。ITエンジニアリング業界での共通の用語として定着した言葉なので仕方なく使用するが、例えば「システムの大掃除」4等、別の呼び方もあっただろうなと思う。

少し文脈は違うが、 AWS ではデータベースの「マスター - スレーブ」を「マスター - リードレプリカ」と呼称している。この理由は公式には発表されていなそう5である。「スレーブ」が「リードレプリカ」と全く同じ意味を持っているというわけではない6が、(それらの違いが異なる結果にならない限りは)よく似ているまたはほとんど同じ意味として使用できる。

初対面の人に説明もなしにレジェンドシステムと言えば、おそらく何言ってるんだこいつと思われるであろう。なので、私は頭の中ではレジェントシステムと思いつつも、これからも発声の時にはレガシーシステムと言うことになるだろう。スレーブとリードレプリカの場合、頭文字は S と RR で異なるが、レガシーとレジェンドであればどちらも L である。なので L システムと発声しておけば間違いがなくて良いかもしれない。あまりまとまっていない文章だが、今思ってることを忘れないようにするためにこれを記録した。


  1. Legacy system

  2. legacyの意味・使い方・読み方 | Weblio英和辞書

  3. legendの意味・使い方・読み方 | Weblio英和辞書

  4. クソザコセンスしか持ち合わせていないので、もっと良い代替案もあるだろう

  5. AWSのソリューションアーキテクトの人は宗教上の理由とおっしゃっていた

  6. マスター昇格の速さが違ったり、直接アクセスできるかなどの違いがある