Upgrade to Pro — share decks privately, control downloads, hide ads and more …

レガシーソフトウェアを再現性高く置き換える手法 〜「射撃しつつ前進」を支える技術〜

Avatar for tomoya yokota tomoya yokota
April 25, 2025
3

 レガシーソフトウェアを再現性高く置き換える手法 〜「射撃しつつ前進」を支える技術〜

Avatar for tomoya yokota

tomoya yokota

April 25, 2025
Tweet

Transcript

  1. Q. 物好きなんですね? A. いいえ! • レガシーソフトウェアバトルは ソフトウェアの技術洞察⼒‧メンタル管理が9割 ◦ 解決への道筋を⾃分の⼒で考える⾯⽩さ •

    事業価値と呪詛を⽣産し続けるソフトウェアに問題意識 ◦ ノウハウ次第で呪詛はだいぶ減らせることがわかった
  2. 「射撃しつつ前進」について Maybe this is the key to productivity: just getting

    started.  ⽣産性の鍵はたぶんこれなのです: ただ始める事 You have to move forward a little bit, every day.  毎⽇でも少しづつ進む必要があります
  3. 「射撃しつつ前進」について It doesn’t matter if your code is lame and

    buggy and nobody wants it. If you are moving forward, writing code and fixing bugs constantly, time is on your side  コードがバグで誰も欲しがらなくても問題ではないのです。  コードを書いてバグを直しながら前に進み続ける限り  時間はあなたの味⽅です
  4. 「射撃しつつ前進」について Fire and Motion, for small companies like mine, means

    two things. You have to have time on your side, and you have to move forward every day.  射撃しつつ前進、我々のような⼩さな会社にとって、  ⼆つの意味があります。  時間を味⽅につけること、毎⽇前進する必要があること
  5. Hyrumの法則 With a sufficient number of users of an API,

    it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.  API利⽤者が⼤量にいる状況下では、  仕様は意味を為しません。  誰かがあなたのシステムの全ての  観察可能な挙動に依存するからです https://www.hyrumslaw.com/ https://www.hyrumslaw.com/ https://jusths.tistory.com/219
  6. Hyrumの法則 A. ISO-8601は(厳密には)関係ないが正解。ライブラリの挙動が仕様になる。 ISO-8601や⽇付の概念の難しさについては今回は触れません😅 • 2022-06-22T14:50:01.608Z // タイムゾーンあり • 2022-06-22T14:50:01.608+09:00

    // タイムゾーンオフセット指定 • 2022-06-22T14:50:01.506608Z // ナノ秒指定 • 2022-07-13T19:09:40+0900 // オフセットがHHMM • 2022-07-18T11:30+09 // オフセットがHH • 2022-09-09T+0900 // 時間以降は省略だがオフセットがつく • 2022-09-09T+09 // 時間以降は省略だがオフセットがつく • 20130611T01:51:00Z // ⽇付フォーマットが変 • 2022-09-09T14.5 // 分以下が⼩数点の記法 • 0 // 0 • 2000-03 // 年⽉のみ • 2000-4-5 // 年⽉⽇のみ • 2000-04-05 // 時刻パートなし • 2000-04-05T // 時刻パートなし T あり • 2000-04-05T10 // 年⽉のみ • 57261-08-09 // 9999年以上 • +8335355-10-13 // 1000年以上は+がつくルールがあるらしい...
  7. ストラングラーパターン CaseStudy by yokotaso • 検索先はアプリの機能フラグで制御 • プロダクトカット‧テナントカットで レガシーコンポーネントへの依存を徐々に削っていく •

    レガシーさんは万が⼀に備えてしばらく運⽤する ◦ Elasticsearchのサーキットブレーカーが爆発して 検索できない状態になり切り戻した実績があります
  8. 置き換えの作戦⽴案 CaseStudy by yokotaso バッチ処理のやってることを超ざっくり説明 • 1. Cosenseに書かれたHelpfeel記法から質問⽂を展開する ◦ Helpfeel記法とは質問⽂を⽣成するためのDSL

    ◦ 「有給の取り⽅」、「有休の取り⽅」に展開される • 2. 形態素解析で動詞や形容詞の⽂法情報を付与する ◦ pythonで実装しているのはこれが理由 • 3. 質問⽂とナレッジの情報の紐付けたhelpdata.jsonを⽣成
  9. 置き換えの作戦⽴案 CaseStudy by yokotaso 技術的な制約と向き合う • 技術的制約はアイデア勝負なところがある • 技術的制約はガリガリまで削り込むこと ◦

    Nice to haveは全て捨てる • アイデアを思いつく喜びにはかえがたい ◦ StackOverflow/ Github issuesにものっていない ◦ 未来を作るのは君次第!
  10. 聞いていただきありがとうございました! 最後に⾃⼰紹介 yokotaso( 横⽥ 智哉 ) • 2011/4 ~ 2024/9

    サイボウズ ⼊社 ◦ クラウド基盤のミドルウェア開発に従事 • 2024/9 ~ Helpfeel ⼊社 ◦ バックエンドを中⼼に⾊々な仕事に従事 • 会場で気軽に 質問‧声をかけていただけると嬉しいです!