@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