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

TSConf JP に LINE 株式会社は協賛しています。
Show Note
- ゲスト紹介
- @uhyo_
 - 2019年 新卒
 - LINE 証券のフロントエンドを担当
 - 安全性の極北から見るTypeScript Speaker
 
 - 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
 - それが唯一解でないことは知っているが、安全性に関する知見をもっと広めると余地がある
 - 選択肢を広げる
 
 
 - とりあえずTypeScriptが普及してきたのは良いこと
 
 - まだまだTypeScriptを推していく
 - PR
- TSConf
- LINEがプラチナスポンサー
 - スポンサートークで「noImplicitAnyに長期戦を挑んだ話」
 
 - 商業誌執筆中
 
 - TSConf
 

