Shinjuku.ts #1を開催しました
こんにちは。エンジニアの宮本唯です。先日、TypeScriptのLT会Shinjuku.ts#1を開催しました。
これまでフォルシアでは、rustのLTイベントShinjuku.rsを20回にわたって開催してきました。Shinjuku.rsでは多くの方にご登壇いただきrust好き同士の交流の場となってきましたが、この度新しく typeScript好きの方々に対しての活動を広げるべく Shinjuku.tsを開催する運びとなりました。
今回は記念すべき第一回、良いスタートダッシュを切るべく ~TypeScriptたのしい!私の好きな言語です!~ というテーマを設定し登壇者を募集しました。その甲斐があってかはわかりませんが、イベント当日は登壇者のTypeScript好きが伝わってくる講演が目白押し。この記事では各講演の内容を、運営者目線でレポートします。
LTの様子
フォルシアのフレームワークとTypescript | Taku Hatano さん
1人目は、フォルシア5年目エンジニアのTaku Hatanoさんです。
フォルシアでは独自のWebフレームワークを取り入れていますが、現在最も新しいフレームワークは第3世代です。世の中に便利な技術スタックが出てくるたび、それらを取り入れながらアップデートを続けてきました。開発言語にTypeScriptが取り入れられたのは今の第3世代からです。
開発言語を変更すると、エンジニアの勉強すべきことが一気に増えてしまいます。第2世代から第3世代に移行するにあたっても、社内では学習コストに対する懸念がありました。しかしながら、いざTypeScriptを導入してみるとその恩恵は大きく、今や型のない生活には戻れなくなっています。
とくに今回は
- リクエストパラメーターに型をつけられること
- インターフェースを使って実装を分離できること
の2点についてどのようなメリットがあったかを説明してくださいました。
籏野さんの講演を聞いてから改めて自分の開発しているソースコードを見ると、TSの恩恵をうまく生かしながらフォルシアのアプリが作られていることがわかりました。
登壇者 HatanoさんのFORCIA CUBEの記事はコチラ。
一か月半かけて、TypeScript本を写経した話 | ツノ さん
2人目は、connpassページから外部LT枠で応募していただいたツノさんです。
写経とは仏教において経典を書写する修行のこと、IT業界でもストイックなエンジニアは写経に励んでいます。ただしエンジニアが写経するのは多くの場合経典ではなく、プログラムのソースコードです。今回ツノさんには、『プロを目指す人のためのTypeScript入門』を一か月半かけて写経したときのお話をしていただきました。
写経のコツは1日たりとも休まないこと、毎朝7時に起きて速攻でコーディングしてから出社していたツノさんのGitHubには見事な芝が生えていました。教科書をただ読むだけではなく一字一句写経することで、これまで苦手意識のあった技術をちゃんと理解したり、便利な機能を新しく知ることができたようです。
私はとても体たらくな人間なので写経から逃げていましたが、社内でも写経を推す声があり、ぜひ明日か明後日くらいから取り組んでみようと思います。
TypeScript(WebGL)+React+Viteで、さくっと Geodesic Polyhedron を描画してみた | tsuji さん
3人目はフォルシア新人エンジニアのtsujiさんです。
「頂点がおおよそ均等に分布する球ってどうやって構成するんだろう...?」ある休日ふと疑問に思ったtsuji青年、多面体から構成されたGeodesic Polyhedronが答えとなることに気づき、TypeScriptなどを使って描画することにしました。
実装には複数のフレームワークが使われています。
- Vite ... 開発環境の構築
- React ... canvas とボタンの生成
- WebGL ... 画面に描画する部分
とくにWebGLで画面に描画する部分では、色づかいやアニメーションなど見た目にもこだわって実装したそうです。
tsujiさんは私と同じ新人エンジニアですが非常に高い技術を持っており、先輩社員から「とても新人とは思えない!」という声をよく聞きます。同期で語り合ったブログではこの講演の内容についても触れているので、よろしければご覧ください!
Type Level Chording | ytaka さん
4人目はフォルシアOBのytakaさんです。
LTのタイトルは "Type Level Chording"、TypeScriptの型をつかって音楽を奏でようという斬新な企画です。今回の目標は、コード名からコードの音を型推論することです。たとえば、C
からは [C, E, G]
、 Cm7
からは [C, D#, G, A#]
を推論させます。
推論の際カギになるのは音を数字に置き換えるとコードの構成音が文字式で表せること、たとえばmajorコードは [n, n+4, n+7]
、minorコードは [n, n+3, n+7]
と表すことができます。この性質を糸口として、TypeScriptの機能でやりたいことをどんどん実現していきます。
- 数値同士の足し算 ... Indexed Access Types, Variadic Tuple Types, Recursive Conditional Types
- 数値型から文字列型への変換 ... Template Literal Types
- 文字列型から数値型への返還 ... Improved Inference
- 剰余を取る ... Type Inference in Conditional Types
ほか
ytakaさんはフォルシアで活躍されていた元社員です。Shinjuku.tsを開催するにあたっても、ytakaさんにぜひ登壇してほしいと運営から声を掛け快諾をいただきました。内容自体が面白かったのはもちろん、スライドの構成や話し方にも工夫があり、自分が発表するうえでも学ぶところが大きかったです。
Red Coder が TypeScript で競技プログラミングに挑戦して挫折した話 | てんぷらさん
最後はフォルシア3年目エンジニアのてんぷらさんです。
課題に対してプログラミングを使って答えを作成する競技プログラミングは、フォルシアエンジニアにとって国技的存在です。競技プログラミングで使用される言語はC++やPythonが一般的ですが、TypeScriptで競技プログラミングはできるのでしょうか?フォルシア最強競技プログラマーのてんぷらさんがTypeScriptでのAC(正解)に挑みます。
TypeScriptで競技プログラミングをやろうとする時に壁となるのは、MAX_SAFE_INTEGER
と実行時間制限です。競技プログラミングの問題の途中式には 2^63
程度の大きさの値まで出てきますが、TypeScriptでは使用可能な整数は 2^53
未満に制限されているため、オーバーフローしてしまいます。 また、掛け算にBigIntを使用した場合は、処理が遅く問題の実行時間制限に引っかかります。
しかしここで諦めないのがレッドコーダー tempura0224、大きな整数同士の掛け算を行う高速なプログラムを自作しACを獲得しました。
現在は競技プログラミングから離れてしまったてんぷらさんですが、業務プログラミングの世界では次々と成果を出しています。今後の活躍にも目が離せませんね。
てんぷらさんのブログ記事はこちら
余談~運営について~
今回はTypeScriptをテーマとした初のイベントでしたが、運営も新人エンジニアが中心となって行いました。
運営の1人である私が担当したのは、
- 参加者募集ページの作成
- 社内登壇者の募集
- 当日のスポンサートーク
などです。
普段の業務の中で時間を作り準備をするのは大変でしたが、開催後のアンケートではたくさんのありがたいお言葉をいただき、疲れが飛ぶ思いでした。今後も、運営の知見を蓄えつつ、TypeScriptに限らない様々なイベントを開催予定です。皆様のご参加ご登壇をぜひお待ちしております。
宮本 唯
新卒1年目エンジニア。先日のワールドカップではVARの技術の高さに感動しました。フォルシアのwebフレームワークもテクノロジー発動でしょ!
フォルシアではフォルシアに興味をお持ちいただけた方に、社員との面談のご案内をしています。
採用応募の方、まずはカジュアルにお話をしてみたいという方は、お気軽に下記よりご連絡ください。
※ 弊社社員に対する営業行為などはお断りしております。ご希望に沿えない場合がございますので予めご了承ください。