1. エンジニアストーリー by Qiita
  2. #30 TypeScriptにのめり込んで..
2023-09-29 23:41

#30 TypeScriptにのめり込んでいる理由

今回からのゲストはTypeScript入門の著者でエンジニアのuhyoさんです。

uhyoさんとお送りする1回目のテーマは「TypeScriptにのめり込んでいる理由」です


<トークテーマ>

・学生時代どのようなことをしていたのか?

・TypeScriptにのめり込んでいる理由・

・今TypeScript以外にのめり込んでいるもの

・TypeScriptとJavaScriptの使い分け/棲み分け


<uhyoさんのQiitaページ>

https://qiita.com/uhyo


<Twitterハッシュタグ>

#エンジニアストーリー

<メッセージフォーム>

https://forms.gle/ZgRruUzqG6b8DGNCA


See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.

サマリー

清野俊文さんは日本最大級のエンジニアコミュニティQiitaのプロダクトマネージャーです。彼は"TypeScriptにのめり込んでいる理由"というポッドキャストで、エンジニアのキャリアやモチベーションについて話しています。TypeScriptを好きになった理由は、初めての静的型付け言語の体験が強く印象に残ったためです。それ以降、JavaScriptを書く際には基本的にTypeScriptを使うようになったとのことです。また、TypeScriptに興味を持っているうひょさんは、大学でOCAMLなどの関数型言語を学び、それがTypeScriptの知識やテクニックにつながっていると感じています。彼は何でもTypeScriptにできるようにしており、TypeScriptを使わない理由がないと考えています。

00:01
日本最大級のエンジニアコミュニティ Qiita プロダクトマネージャーの
清野俊文です。この番組では、日本 で活躍するエンジニアをゲスト
に迎え、キャリアやモチベーション の話を深掘りしながら、エンジニア
の皆さんに役立つヒントを発信 していきます。今回からのゲスト
うひょさんの学生時代
は、TypeScript入門の著者で、エンジニア のうひょさんです。よろしくお願いします。
うひょ こんにちは、うひょです。よろしくお願いします。
清野 よろしくお願いします。軽く 自己紹介をお願いしてもいいですか?
うひょ うひょと申します。2019年4月に
LINE株式会社という会社に新卒 で入社しまして、そこでフロントエンド
エンジニアとしてキャリアを始め ました。その後、2022年の中頃に転職
しまして、今は株式会社バベルという ところでプリンシパルエンジニア
という肩書きでやっております。どうぞ よろしくお願いします。
清野 よろしくお願いします。今日は 本当にうひょさんとお話しできる
とても楽しみにしてました。
うひょ こちらこそ光栄です。ありがとうございます。
清野 ありがとうございます。それでは うひょさんとお送りする第一回
目のテーマは、TypeScriptにのめり 込んでいる理由になります。いろいろ
お話最初に伺う前に、うひょさん が本当に僕もいつも記事とか、とても
参考にさせていただいてるんです けど、学生時代とか仕事とか、具体
面どういうことやってるのかな っていうところ、意外と知らない
なと思ってるので、最初にそういう ところをいろいろお伺いできたら
なと思ってます。
うひょ わかりました。
清野 ということで、最初にズバリ 聞いていきたいなと思うんですけど、
学生時代ってどういう勉強してた というか、どういう学生だったとか
ってありますか。
うひょ 高校までは、いわゆる普通の 進学校といいますか、そういった
ところで勉強していたんですけれども、 大学入るときに東京に出てきまして、
大学院まで、修士まで行ったんです けれども、そのときの専門が実は
プログラミング言語理論でして、 いわゆるコンピューターサイエンス
のど真ん中といいますか、そういった ところの勉強をしておりました。
清野 今、お話聞いて初めて知ったん ですけど、うひょさん、東京ご出身
ではないんですね。
うひょ はい。実は札幌出身なんです。
清野 そうなんですね。札幌なんですね。 じゃあ、ずっと高校までは札幌で
ずっと勉強してて、大学院に進学 するタイミングで東京に来たっていう
感じですかね。
うひょ そうです。
清野 今、プログラミング専攻してる ってお話もあったと思うんですけど、
プログラミング自体は大学入って から勉強し始めたみたいな感じ
ですか。
うひょ いや、実はもうちょっと前から やってまして。
清野 そうなんですね。
プログラミングとの出会い
うひょ 具体的に言うと小学5年生の時からですね。
清野 小学5年生からやってたんですか。
うひょ はい。そうなんです。
清野 ええ。
清野 小学5年生の時にそもそもパソコン
触ってたってことですもんね。プログラミング やってたってこと。
うひょ そうですね。初めて与えられた
Windows 98のパソコンを触っており ました。
清野 ええ。
うひょ なんか本当に家にあるパソコン
でこうプログラミング勉強してた というかやってたみたいな感じ
なんですか。
清野 そうですそうです。いや自分の
書いたプログラムをフロッピーディスク に保存していたことが懐かしい
ですね。
うひょ ええ。すご。そうなんですね。なんか
その時にプログラミングを始めた きっかけとかってあったりする
んですか。
清野 はい。実は最初にプログラムを書く
1年くらい前にウェブサイトを作り たいなって思ったんですよ。当時は
2004年とかそれくらいなんですけれども まだSNSはそんなに盛んではなくて
個人サイトが非常に幅を大きか せている時代といいますか。そんな
中で私も個人サイトをいろいろ 巡っていましてこれ自分も作って
みたいなというふうに思って当時 のHTMLの本なんか買ったりしまして
それでHTMLを組んで簡単なウェブサイト なんか作っていたんですけれども
しばらくしてこれなんか動かない なって気づきまして動かすには
どうしたらいいか調べたんですよ。 それがJavaScriptでしたね。
いやJavaScriptにそのタイミング で触れてるというか
そうなんですね
そこからずっとやってらっしゃ るって感じなんですね
はい。なので初めてのプログラミング
言語がJavaScriptということになります ね。
そうなんですね。確かに僕の 知り合いとかも初めてプログラミング
触った言語ってJavaScriptっていう 子が多い気がします。結構みんな
ウェブサイトを作りたいとかそういう ところからのめり込む子がやっぱ
多かったりするんですかね
そうですね。当時はダイナミック HTMLとか呼ばれていた時代であんまり
大したこともできなくて今はもう ブラウザーにステータスバーっていう
のがないですけれども当時はあった のでそこに文字を流して喜んで
いたりとかそういうのが最初のJavaScript との出会いでしたね
そうなんですね。じゃあプログラミング 歴って今歴で言うとどんぐらいやって
らっしゃるんですか
JavaScript歴18年です
18年すごい。もう僕は大学に 入ってからプログラミング始めた
口なので本当にまだ7年8年ぐらい とかなので大先輩だなと思いました
ありがとうございます。なんか今お話の 中でウェブいろいろ触っててって
お話もあったと思うんですけど もともとインターネットとかが
好きだったみたいな感じなんですか
インターネットはどうして 好きだったのかっていうのも正直
覚えていないんですけれども当時 それこそWindows98の時代にちゃんと
インターネットの回線が実家に あったわけですね。そっから自然
にという感じなんだとは思います
へえ僕も小学生の時実家に パソコンあったなと思いつつ全然
それ作ろうとか思わなかったので なんかすごいやっぱ当時からもの
作りが好きだったんだなってお話 聞いてて思いました。なんかちょっと
話戻っちゃうんですけどそこから 大学入ってプログラミングの勉強
をやってらっしゃったというお話 もあったと思うんですけどなんか
最初はウェブ開発みたいなそういう ところからプログラミング始めて
どっちかというと大学ではサイエンス 系っぽいことをやってらっしゃ
ったのかなというお話聞いてたら 感じたんですけどそこの違い
とかってありました勉強をする 内容の
そうですねもう大学での 研究はプログラミングというより
大学での勉強とウェブサービスの制作
どっちかというと数学というような 状態でしたね本当にプログラム
の書き方を勉強するとかそういう のとはかなり違って大学生なので
曲がりなりにも論文みたいなもの を書いたりもするんですけれども
具体的なプログラムなんて全然出て こなくて本当に数学の論文かみたいな
ものが15ページくらい並んでいるん ですそういったものの書き方とか
そういった理論とかそういうのを 大学では主に勉強していましたね
そうなんですねあるあるですよ ねプログラミングやりたくて大学
入ったけど意外とプログラミング やらないみたいななんやかんや
で独学でやってるみたいな
そうですね私も大学時代 ウェブに関係するプログラムは
結構書き続けてはいましたけれども それはもうほとんど独学でしたね
そうなんですねなんかぶっちゃけ 大学生活って楽しかったですか
それで言うと結構楽しかった ですよ
そうなんですね
コンピューターサイエンス の理論的な部分そういうのも結構
もともとやってみたいなと思って 選んだところではありますので
それで勉強したことっていうのは 結構なんでしょう満足している
といいますかやってよかったな と思っています
そうなんですねありがとうございます なんか当時ってウェブサービス
みたいなのってどういうの作って いたとかってあったりするんですか
そうですね本当に小学生 中学生くらいのときはウェブで
ちょっとしたゲームが遊べるっていう のがあってそれがいわゆるCGIゲーム
の時代だったんですね何でしょう 掲示板とかも当時はプログラミング
言語で言うとパールとかで作られている ものが多くて私も結構パール
を触ってそういったプログラム を作ったりしていまして当時箱庭
諸島っていうCGIゲームが実はあったん ですよみんなでコマンドを実行
して自分の島を作っていくっていう ゲームなんですけれどもそのサーバー
がパールで組まれていましてなので 私はそのソースコードをダウンロード
してきまして自分でちょっと改造 して自分のサービスとして公開
していたそんなこともありましたね そうなんですねそれやって
たのって2000年代とかじゃない そうですね2000年代です
すごいそうなんですね そうなんですその後2010年代
になるとノードJSと出会いまして パールじゃなくてそこからJavaScript
でサーバーが書いていくようになるん ですけれどもその前がパールでした
ね じゃあ本当にCGIで各時代 からずっとやっていたって感じ
なんですね大学ではどういうウェブサービス とか作ってました大学の時点で結構
プログラミング歴十数年とかですね 多分
それくらいはありますね ですよねそのときにどういう
コード書いてたのかなっていう のがすごい気になります
そうですね大学時代も 結構ずっとメンテナンスしていた
ものというのがあって最初に高校 時代にノードJSで組んだものなんです
TypeScriptの初めての体験
けれども人狼っていうゲームあります があれをオンラインでできるテキスト
ベースでチャットで会話しながら できるっていうサービスを作り
ましてそれが2010年か2011年かそれ くらいそれは結構大学に入って
からも社会人になってからもずっと メンテナンスし続けているサービス
の一つです
そうなんですねじゃあ結構 もう作って終わりじゃなくてそれを
ちゃんと運用しているというか ずっとメンテナンスもやってらっしゃ
るんですね
そうですね
すごいな
実はそれ以外にはサービス って呼べるものはあんまり作って
いなくて特に大学に入ってから はどちらかというとちょっとした
HTML1ページで終わるような簡単な ものとかあるいはノードJSだとNPM
で公開するようなライブラリとか そういうのを作るほうにちょっと
ずつ興味が移っていってました ね
そうなんですね結構じゃあ 本当にものづくりっていうところ
もいろいろやりながら新しい領域 もいろいろやりつつみたいな
そうですね
ちっちゃいときにプログラミング を1回始めてみるのはすごいなるほど
なと思ったんですけど三浦さん ってそこがもうずっと続いてる
わけじゃないですかずっと続け られてるってことは多分好きだったり
とか面白いと思ってるってこと なのかなと思うんですけどそこの
面白さってどういうところなの かなっていうの聞いてもいいですか
プログラミングと静的型付け
三浦 そうですね好きなみではあります けれどもやっぱり自分の書いた
ものがその通りにちゃんと動く っていうことこれは結構自分に
とって面白い体験だったなという ふうに思いました何でしょうやっぱり
当時はまだ小さい子供だったので 機械が自動的に動くってだけでも
結構すごいことのように感じるん ですよねしかもそれが自分が作った
ものである自分の書いた通りに 動くものである自分の作りたかった
ものが作れるわけですねそうい ったところには当時結構喜びを
感じていたなというふうに思って います
三浦 そうなんですねそれって今 大人になってもずっとやってらっしゃ
ると思うんですけどそこの面白 さというか最初の原初体験という
かそういうのってずっと同じ感じ なんですかね
三浦 そうですね今でも思いついた ものを結構すぐ作りたくなる立ち
なんですよちょっとしたギャグっぽい ものとか一発ギャグというんです
かねそういったものを最近は結構 作ったりもしていて自分そういう
のを思いついたらもうずっとそこ から空いてる時間全て手を動か
していないと気が済まないような 立ちでそれでできた公開っていう
ところまでいって満足するそういう ことを結構最近でもやっていまして
それは小さい時からずっと変わらない 考え方といいますかそういうところ
に面白さを感じているのかなと思います
おだしょー 本当にずっとプログラミング
を作ったものづくりとかそういう のが本当に面白くてやってらっしゃ
るっていう感じなんですね
三浦 そうですねそれは一番根本 にあると思います
おだしょー なるほどありがとうございます ちなみになんですけどプログラミング
以外の趣味って何かあったりします かすごい本当プログラミングの
お話はいっぱい聞くなと思いつつ 逆にそれ以外のところ趣味とか
あるのかなってちょっと思いました
三浦 そうですねプログラミング 以外は普通のオタクみたいなもの
ですよゲームなんかは結構好き ですし逆に言うとゲームくらい
しかプログラミング以外に大きい 趣味ないかもしれないですね
おだしょー そうなんですねゲーム とプログラミングやってる時間
の割合ってどんな感じだったり します普段
三浦 最近半々くらい
おだしょー そうなんですねでもすごい な本当にプログラミングが好きで
ずっとやってるっていう感じなん ですね
三浦 そうですね気づけばもう人生 ずっとやっていますね
おだしょー もうねっからのハッカー ですねそこから今社会人になって
こう本当にものづくり楽しいって ところからこうお仕事も実際さ
れてると思うんですけどなんか こうまた仕事になるとそこら辺
てこういろいろ事情が変わって きたりするのかなって思ったり
していてなんか結構その趣味を 仕事にしたら逆に趣味のこと嫌い
になっちゃったとかなんかそういう 話とかも世の中って結構あった
りすると思うんですよね
三浦 うんうん
おだしょー なんかそこら辺の感覚 とかってどうですか
三浦 そうですね仕事で書くプログラム と趣味で書くプログラムはなんだ
かんだ言って結構違うものだな というふうに思いますね
おだしょー はいはいはい
三浦 まあ仕事だと何でしょうやっぱり 個人で書くものよりもさらにいわゆる
メンテナンス性って言うんですかね そういったところを重視しない
といけなかったりとか他のメンバー がスムーズに理解できるという
かいわゆる読みやすいメンテナンス しやすいコードですねこれもそう
いったところに趣味で書くよりも 比重が大きかったりとかそういった
ところで結構違いは感じるところ がありますね
おだしょー うんうんありがとうございます なんかそういうこうなんだろう
な仕事で書くとか仕事としていろいろ コードを書いて世の中にプロダクト
出していくってなるとやっぱり そういう今お話しいただいてる
ようなところとかを考えていかない といけないなと思うんですけど
そこを考えていくのは何ですか ね鬱陶しいなと思ってるのかそこ
はそこで楽しんでるのかという とどういう感じですか
それは結構楽しんでいますね
そうなんですね
はいそのメンテナンス性が高い コードみたいなことを考えたとき
にじゃあそれって結局どういう コードなんだみたいなところで
それこそ技術の記事も書いたことも ありますし結構論理立てで考え
られるところかなというふうには 思っていましてその論理立てで
考えるっていうプロセスは結構 私好きなのでその意味ではそういう
仕事のために必要なことという のも楽しんでやっているかなと
思います
そうなんですねなんかそのプログラミング っていうところとまたちょっと
何だろうなちょっと文脈が違う というか違う考え方をするところ
もそこはそこで楽しめているって ことなんですね
そうですねそれも私にとっては プログラミングの楽しいところ
の一つと言いますかそういうふう に思ってます
そうなんですねそこを含めてプログラミング みたいなそういう感じってこと
ですねありがとうございますなんか 本当にいろいろうひょさんのお話
今伺って本当にプログラミング とかものづくりがお好きな方なんだ
なって改めて感じましたありがとうございます 先ほどかずとJavaScriptのお話とか
いろいろ聞いてたと思うんですけど やっぱり僕のうひょさんの印象
ってTypeScriptの人みたいな印象が すごい僕の中であってなんか本当に
TypeScriptをすごいやってらっしゃ るなって思うんですけどなんかその
TypeScriptを好きになった理由という か何かいつぐらいからそもそも
TypeScript触ってんのかなみたいな こういうお伺いしてもいいですか
TypeScriptを最初に触ったのが2013 年か2014年かそれくらいですね
TypeScriptが出たのって2011年とか でしたっけ11年ぐらい
確か最初のパブリックバージョン が2012とかそれぐらいだったような
気がします
本当に初期の頃からTypeScript触 ってるってことなんですか
そうですね当時はもう主にJavaScript でサーバー側のノードJSのプログラム
なんかも書いていたときですので それでどこから情報仕入れたのか
もう忘れちゃいましたけどなんか TypeScriptっていうものがあるらしい
ぞということを聞きつけてですね 早速当時作ろうと思っていたプログラム
に組み込んでみたというか取り 入れてみたんですよTypeScriptを
それでこれは普通にいいなという ふうに思いましてそこから基本的に
JavaScriptを使うときはTypeScriptで 書くっていう習慣が始まっていき
ましたね
そうなんですね何か具体的にこう いいなって思ったところってどういう
ところなんですか
当時のそれまでの私っていつも あんまりいわゆる静的片付け言語
っていうのをやっていなかったん ですだってJavaScriptとPerlですから
ね主に
無関係ないですね
実は子供時代にJavaもちょっと やってみようかなと思ったんですけ
どパブリックスタティックボイド メインがちょっと何回やっても
覚えられなくてですね ちょっと 挫折してしまってそっちの道にあん
まり行かなかったんですけれども そうなんですね
なので初めての本格的なといいます か静的片付けの言語というのが
TypeScriptだったんです それもTypeScript いいなと思ったら一員なのかもしれない
ですね
なるほど なんかそこで型に対して の印象が変わったみたいな感じ
なんですか
そうですね それまで特に型を嫌い していたとかそういったわけでは
全然ないんですけれども ちゃんと 型のあるプログラミングっていう
んですか そういうものを初めて しっかりと体験しまして それは
TypeScriptの印象として私の中では やっぱり強いところですね
そうなんですね そこをきっかけ に静的片付け言語っていうところ
を触ってらっしゃるのかなと思 うんですけど 逆にTypeScript以外の
関数型言語の経験から得た知見
静的片付け言語 ちょっと興味がある とか 実際触ってるみたいなのあった
りするんですか 今って
大学時代に入ってから それは結構 やっていまして
そうなんですね
TypeScript以外だとよく触っていた のはOCAMLラスト あの辺りですね
じゃあ 結構そこら辺も何だろう な 関数型言語も触るし 結構 いわゆる
手続き型っぽいやつもいろいろ 新しいパラダイムのやつも触れ
ばみたいな感じだったんですか
そうなんです 特にOCAMLはまさに 関数型言語なんですけども 実は
これ大学の授業で習いまして OCAMLっていう言語は関数型言語みたいな
確か講義だったと思うんですけど それを通して学びまして 関数型
の考え方っていうのを知って こんな ものもあるんだ 面白いなという
ふうに思った記憶がありますね
そうなんですね そこら辺でいろいろ 触った経験が またTypeScriptの知見
とかテクニックにつながってる とかってあったりしますか
それは大いにあると思います
そうなんですね
特に やっぱりOCAMLから学んだ 関数型的な考え方っていうんですか
さらに論理的なところだと いわゆる カリーハワード同型とかの辺も
ちょっと勉強はしたんですけれども そういった考え方っていうのは
そういう関数型言語だけではなくて 一般のプログラミング言語にも
通じるところがあると思ってまして 実際 私のTypeScriptプログラミング
にも結構 その考え方っていうのは 役に立っています
そうなんですね 確かに最近の言語 って 手続き型言語でも結構 関数
型言語のエッセンスを取り入れて いく流れがあるというか
そうですね
結構 どっちの書き方もできる みたいなのが多かったりするので
確かに そこら辺勉強しておくと 参考になるのかなって改めて思い
TypeScriptを使いたい理由
ました ありがとうございます ちなみになんですけど これ ちょっと
トレンドっぽい話にもなるのかな と思うんですけど TypeScriptっていう
言語があって JavaScriptっていう言語 もあるじゃないですか この使い分け
というか どこでもTypeScriptを使った ほうがいいのか それとも こういう
場面だったらJavaScriptでもいいよね とか ここは逆にJavaScriptじゃなくて
TypeScriptのほうがよかったとか そういうのってあるのかなみたいな
お伺いしてもいいですか
はい 結構 私は何でもTypeScriptに しちゃうほうで 逆にあえてTypeScript
を使わなくてJavaScriptでいいやって 思うのは それこそ1ファイルで
ちょっとシェルスクリプトの代わり に使うみたいな それくらいのこと
が多いかなと思います
そうなんですね その理由とかって あったりしますか
単純にTypeScriptの提供する方っていう のがあって損はないなというか
あって困ることが特にないんですよ ね 結構 世の中だとTypeScriptをして
しまうと いわゆるトランスファイル が挟まるのが面倒くさいみたいな
そういう考え方もあると思うん ですけども 結構 それこそ 電脳
とかそういったツールが その辺り の障壁っていうのを取っ払って
くれているかなと思いますので 本当にTypeScriptを使わない理由が
ないというのが正直な感想ですね
なるほど ありがとうございます これも結構 いろいろ論争を呼ぶ
かもしれないんですけど TypeScript 型を書けるっていうメリット
の一方 型を書かないといけない みたいな語られ方をする場面も
あるかなと思ってて そこら辺って どう考えてたりしますか 型を書く
ことの億劫さみたいなものって どう考えてるのかみたいなところ
ですね
そうですね 本当に小さいプログラム だったら いちいち型書くの大変
だなみたいな気持ちも分からん でもないなとは思いますけども
その一方 ある程度ちゃんとした プログラムであれば 型っていう
のは確かに実際の動作には関わ らないけど プログラムの設計
の一部だなというふうに私は思 っています 型書くにしろ書かない
にしろ 何でしょう 例えばインターフェース とかそういったものの設計はある
と思うんですよね であれば それが頭の中なのかドキュメント
なのか そういった別のところに あるのか それともソースコード
の上に型として書かれているのか そういう違いなんじゃないかな
と私は思っております
なるほど じゃあもうそもそも 型書かなければ型のこと考えなくて
いいはないっていう
そうなんですよね これも結構よく 言われますけど 型を書かない人
は多分頭の中に全部 型に相当する ものが入ってるんだとか そういう
言い方もたまにされますね
ありますよね なるほど 確かに動物的 型づけ言語でも 最近アノテーション
もちゃんとつけるというか 結局 型は書いてないけど ドキュメント
は書いてるみたいなのは多い気が するので 結局そういうことなの
かなって 僕も今お話聞いてて 感じました
うひょさん 今日はありがとうございました
こちらこそありがとうございました
まだまだお話ししたりないので 次回もうひょさんとお送りできれば
なと思います 今回はうひょさんの今までのお話
とTypeScriptについていろいろお話 伺いました だから本当に今まで
うひょさんのことをここまでいろいろ お伺いしたことなかったので すごい
いろいろ新鮮な気持ちでお伺い することができたなと思ってます
さて この番組では感想や質問 リクエストなどお待ちしております
番組詳細欄にあるリンクよりお 気軽にご投稿ください Xではハッシュ
タグエンジニアストーリーをつけて ポストしてください そしてApple
PodcastやSpotifyのPodcastではレビュー もできますので こちらにも感想
を書いてもらえると嬉しいです キータ株式会社はエンジニアを
最高に幸せにするというミッション のもと エンジニアに関する知識
を記録 共有するためのサービス キータ 社内向け情報共有サービス
キータチームを運営しています ぜひカタカナでキータと検索して
チェックしてみてください お相手 はキータプロダクトマネージャー
の清野俊文でした
23:41

コメント

スクロール