2020/02/14 に公開 2457 views

このエピソードについて

@potato4d が極北の TypeScripter @uhyo_ に、 LINE 証券における TypeScript の実践状況について聞いてみました。

PR

TSConf JP に LINE 株式会社は協賛しています。

Show Note

  • ゲスト紹介
  • Background for LINE financial
    • 基本情報
      • LINE証券:LINEで株が買える
      • 去年8月にリリースした比較的新しいプロダクト
      • 技術的にはTypeScript+React、いわゆるSPA
      • LINEのSPAの中でも比較的大規模(TS10万行)
      • フロントエンドのメンバー13人(業務委託3人含む)
    • TypeScript初経験
      • 立ち上げ時はTypeScript初経験のメンバーがほとんど(1人経験者がいた)
      • プロジェクト開始時に議論したがTS不要という意見も多かった
      • 技術的チャレンジの一つであると考え採用、今では手放せない
    • タイトなスケジュール・品質の重要性
      • 新しいプロダクトなので新機能の開発が活発
      • 金融はLINEが力を入れている分野の一つ、やりたいこと色々
      • スケジュールはタイト化
      • プロジェクトの規模が増大、人も増える
      • 大規模→コード品質の重要性が上がる
      • しかし品質向上のために時間をあまり使えないという問題
    • 品質の向上に向けて
      • 品質向上に効率を求めるならやはり機械的なチェックが有効
      • TypeScriptの重要性もプロジェクトの成長とともに増大
        • 最初から入れててよかった!
      • eslint-typescriptやstylelintルールも独自に開発して運用
  • LINE証券におけるReact/TypeScript運用の現状
    • 現在のコードの状況
      • 良くも悪くも自由がある
      • ステート管理ライブラリを使用しない(厳密には全く使っていないわけではないが)
      • 良い点:無意味なコーディング規約が無い
      • 悪い点:統一感の無さ
      • クオリティが低いわけではない(もちろん全てが理想的ではない)
      • 自由を可能にするチームの力量
      • チームの好きなところ:議論ができるところ
    • noImplicitAnyの話
      • 配属されてとりあえずまずソースコードを読む
      • 最初にtsconfig.jsonを見た
      • noImplicitAnyがfalse!!!
      • 正直ショックを受けた
      • 割とすぐ(配属1ヶ月くらい)noImplicitAnyをtrueにしようぜと提言
      • 受け入れられて、手分けして作業したが一度断念
        • 忙しくなって時間が取れなくなった
      • どのように解決したかは TSConf JP スポンサートークにて
  • プロダクトにおいて TypeScript をどこまでディープに使うか
    • JS 一本で来た人が新規に TS を始める場合、入れるべきオプションは?
    • 基本的には全て
    • Strict系というコンパイラオプションがある(strictNullChecksとか)
      • オンにするとチェックが厳しくなる
      • 新規開発ではこれらのオプションを使わない理由はない
    • noImplicitAny という例外
      • オフにすることでJavaScriptからTypeScriptの移行を容易化
      • まあ新規開発だとオフにする理由がない
      • オフにすると負債がたまりやすい
  • 型パズルとかしてる?
    • 積極的に行っている
    • 書き捨てられる型パズルを意識
      • メンテナンスコストが高いのは認めざるを得ない
      • もしメンテナンスが厳しかったら捨てられるようにする
      • 「愚直な書き方もできるけど型パズルでスマートな書き方ができる」ところに使う
  • 外部ライブラリの型定義
    • @types の型が間違っている場合は Pull Request を出す
    • マージまでの間はバイパスするファイルを一枚用意し、 declare module する
  • これからの目標
    • まだまだTypeScriptを推していく
      • とりあえずTypeScriptが普及してきたのは良いこと
        • TypeScript Meetup 2で「TypeScriptを使わない理由はもう無い」という旨の発表をmizchiさんがしていた
      • 次のステップは「安全性への意識」を高めること
        • 厳しめのTypeScript
        • それが唯一解でないことは知っているが、安全性に関する知見をもっと広めると余地がある
        • 選択肢を広げる
  • PR
    • TSConf
      • LINEがプラチナスポンサー
      • スポンサートークで「noImplicitAnyに長期戦を挑んだ話」
    • 商業誌執筆中

Refs

  • BGM&SE
    • 魔王魂/騒音のない世界/OtoLogic