LINE テクノロジー&エンジニアリング大全

LINE証券のフロントエンド開発チームがこだわる“型安全”――noImplicitAnyがもたらす効果

この記事を読むのに必要な時間:およそ 3 分

インタビュイー

LINE フィナンシャル開発センター Front-endチーム フロントエンドエンジニア 鈴木僚太(右)
LINE フィナンシャル開発センター Front-endチーム フロントエンドエンジニア 水牧稜太(左)

画像

LINE証券フロントエンドにおける型安全性への取り組み
(LINE DEVELOPER DAY 2020)
URL:https://linedevday.linecorp.com/2020/ja/sessions/5101

2020年11月に開催された「LINE DEVELOPER DAY 2020」において,LINE フィナンシャル開発センター Front-endチームのフロントエンドエンジニアである鈴木僚太氏は「LINE証券フロントエンドにおける型安全性への取り組み」と題して講演を行いました。ここで話題として取り上げられた型安全についての取り組み,そしてTypeScriptのコンパイラオプションである「noImplicitAny」を有効にした背景などについて,講演を行った鈴木氏,そして同じくLINE証券のフロントエンド開発に携わる水牧稜太氏にお話を伺いました。

徐々に浸透した型安全の重要性

――LINE証券でフロントエンド開発に利用しているTypeScriptには,どういったメリットがあると考えていますか。

鈴木:TypeScriptの魅力として,まず挙げられるのはJavaScriptとの互換性です。もともと型のないプログラミング言語であるJavaScriptに,型を付けたようなプログラミング言語がTypeScriptなので,JavaScriptの経験さえあればTypeScriptでのプログラミングもそれほど難しくありません。実際,LINE証券のプロジェクトでTypeScriptを採用したときも,それ以前にTypeScriptを使ったことがないメンバーは結構いました。

TypeScriptを採用したメリットとしては,型があることによる安全性が大きいと考えています。TypeScript以外の選択肢もありますが,フロントエンド開発でそれ以外の言語を使って型の安全性を得ようとすると,JavaScriptと大きく異なってしまいハードルが高くなってしまうという問題がありました。

例:TypeScriptなら型エラーの検知や入力補完が可能

例:TypeScriptなら型エラーの検知や入力補完が可能

例:TypeScriptなら型エラーの検知や入力補完が可能

――型の安全性に関する理解は,すぐにチーム内に浸透したのでしょうか。

水牧:チーム全体の雰囲気として,新しいものを抵抗なく受け入れるところがあり,TypeScriptを用いて型を定義することについても,⁠とりあえずやってみよう」という雰囲気で始まりました。

ただ,型の重要性は最初から理解されていたわけではなく,それなりにコードを書いてから徐々に良さがわかってきたという感じです。しっかりと正確な型を書くように心がけコードを書き進めることで,型の恩恵にあずかる場面が増え,それによりさらに正しい型を書こうという意識が芽生えてくるといったイメージです。

それとTypeScriptに強い人ということでチームにジョインした鈴木の布教もあり,チーム内に型の重要性が徐々に浸透しました。

――チームに型の重要性を伝えるために,具体的にどういったことを行ったのでしょうか。

鈴木:最初はとにかく型をちゃんと書いたほうが良いということを重点的に伝えました。TypeScriptを使っていても,その恩恵を100%享受できているかはどうかは別問題です。そこで,たとえばコードレビューなどを通して,TypeScriptを使っているのに恩恵を受けられていないといった場面があれば,自分の考えを伝えて,こういうふうにやるとTypeScriptの嬉しさがもっとも引き出せるんだということをチームのメンバーに共有してきました。

悪い例(上)と良い例(下⁠⁠。下のほうがより厳しい型定義で型の恩恵を受けやすい

悪い例(上)と良い例(下)。下のほうがより厳しい型定義で型の恩恵を受けやすい

悪い例(上)と良い例(下)。下のほうがより厳しい型定義で型の恩恵を受けやすい

――コンパイルオプションで暗黙のany型をエラーにする「noImplicitAny」を有効にしたとのことですが,これを決めたときのチームの反応はどうだったのでしょうか。

鈴木:新しいことはとりあえずやってみようというチームなので,私が「noImplicitAnyがオフになっているよ,オンにしましょうよ」と言ったときは「とりあえずやってみよう」という感じでした。

ただ,それが即座に浸透したかどうかは別の話だとも思っています。実際に取り組み始めたとき,noImplicitAnyによって発生したコンパイルエラーに対処してくれる人を募集したのですが,そういったことに興味を持つかどうかはチームメンバーの中でも個人差があります。やれば確実に改善になるのですが,直接的に新しい機能が増えるというような話ではないため,どこまで興味を持つかは人によって違うなと感じました。

noImplicitAny有効化によるコンパイルエラー。関数の引数を書かないとコンパイルエラーが発生し,危険なany型が推論されるのを防ぐことができる

noImplicitAny有効化によるコンパイルエラー。関数の引数を書かないとコンパイルエラーが発生し,危険なany型が推論されるのを防ぐことができる

著者プロフィール

川添貴生(かわぞえたかお)

株式会社インサイトイメージ代表取締役。企業サイトの構築及び運用支援のほか、エンタープライズ領域を中心に執筆活動を展開している。

メール:mail@insightimage.jp


馮富久(ふぉんとみひさ)

株式会社技術評論社クロスメディア事業室室長。

1975年生まれ。横浜市出身。1999年4月株式会社技術評論社に入社。入社後から『Software Design』編集部に配属され,2004年1月に編集長へ就任。同2004年9月に『Web Site Expert』を立ち上げ,同誌編集長に就任,現在に至る。その後,2008年9月に設立したクロスメディア事業部(現クロスメディア事業室)に配属。現在,社外活動として電子書籍を考える出版社の会の代表幹事やWebSig 24/7のモデレーター,TechLIONプロデューサーなども務める。過去にIPAオープンソースデータベースワーキンググループ委員やアックゼロヨン・アワード他各賞審査員などの経験を持つ。

Twitte ID:tomihisa(http://twitter.com/tomihisa/