【TSKaigi2025】新卒RubyエンジニアのDay1参加レポート
はじめに
社会人2年目の新卒エンジニアです!
普段は(一応)フルスタックで開発を行うRubyエンジニアとして業務に従事しております。
1年目はひたすら社内の開発業務を覚えることに精一杯でしたので、社外との交流はほとんど行っておりませんでした。
2年目になり、少し業務に慣れてきたことと、もっと視野を広くすることを目的として技術カンファレンスに参加することに決めました。
とは言っても登壇は流石に実力も度胸もございませんので、今回は一般参加で技術カンファレンスとはどのようなものかを知るためにTSKaigiに参加させて頂きました。
いろいろ間違ったこと書いてるかもですがその時は何も見なかったことにするか、
優しく教えてください🙇♂️🙇♂️🙇♂️
TSに関する事前知識
先ほどRubyエンジニアと説明したこともあり、なぜTypeScriptのカンファレンス?と疑問を持たれた方もいるかと思います。
そうです、私はTypeScriptをほとんど書いたことがございません。
(弊社のインターンの時にフロントエンドで少しReactを書いたのと、個人開発でAWS CDKを扱った際にTypeScriptを使ったくらいです。)
流石に何も知らないわけではないですが、現状の理解としては、、、
- typescriptって静的型付け言語みたいに扱えるやつ
- Reactを書くときに使うやつ
- 最近裏側をgoに置き換えるとか(最近リリースされたみたいです...よね?)
といった、開発で日常的に使用されているエンジニアの方からすれば、まだまだ浅いレベルです。
参加理由
ではなぜそのような状況でTSKaigiに参加したのか。RubyやってるならRubyKaigiとかあるのでは?
と思った方もいらっしゃると思います。
理由は簡単です。単純に興味があるからです。
今までRubyの開発をしておりましたが、動的型付けの自由度が高い反面、実行時にエラーが発覚することも多く、型安全性への憧れがございました。そこでTypeScriptの静的型付けによる開発体験や、コンパイル時にエラーを検出できる仕組みを実際に学んでみたいと考えました。
⚠️注意!RubyはRubyの良さがあり、現在も開発で利用しております!
そこで、まずは飛び込んでみようということで参加をすることにしました。
平日でしたので弊社のCTOに業務として参加させて頂けるかお伺いしたところ、大変ありがたいことにご了承をいただけました。(業務時間を二日削るということは、それに匹敵するほど吸収・社内に発信してくださいとも言われました。。。)
本当にありがとうございます。(インプット・アウトプット頑張ります。)
当日の動き
時間 | セッション |
---|---|
10:00~ | 入場 |
10:40~ | オープニングトーク |
11:00~ | The New Powerful ESLint Config with Type Safety |
11:50~ | スキーマと型で拓く Full-Stack TypeScript |
12:20~ | ランチ(めっちゃ美味しかったです!) |
12:40~ | 企業展示巡り |
13:40~ | TypeScriptで実践するクリーンアーキテクチャ |
14:20~ | TSConfigからTypeScriptの世界を覗く |
15:00~ | AI Coding Agent Enablement in TypeScript |
15:50~ | AWS LambdaをTypeScriptで動かして分かった課題 |
16:30~ | fast-checkとneverthrowのPBT+Result型 |
17:10~ | LT会 |
17:40~ | 企業展示巡り |
TSKaigi1日目に参加した率直な感想
TypeScriptを知らない私でも、意外と理解できることが多くて驚きました。 というのが一番の感想です。
正直、「TypeScriptの記法がわかった上での話ばかりで全然わからないかも...」と不安だったのですが、実際に聞いてみるとアーキテクチャ設計やテスト手法、AI活用など、Rubyで開発していた私でも「あ、これはRubyでも同じような課題があるな」と納得できる話が意外と多くございました。
特に印象的だったのは、言語は違えど開発者が向き合う課題は共通しているということです。エラーハンドリングの難しさや、保守性の高いコードを書く重要性といったテーマは、TypeScriptだからというより「良いソフトウェア開発」の話として共感できました。
一方で、型の扱い方や型システムの設計については、やはり知らないことばかりでした。Union型やResult型といった概念は新鮮で、「こんな表現力があるのか...」とこれからちゃんと基礎知識を学習しなければならないと感じました。
気になったセッション深掘り
1. The New Powerful ESLint Config with Type Safety (Anthony Fu)
発表者さまのセッションURL
🎯 ESLint Flat Configの革新性
Anthony FuさんによるESLint Flat Configの紹介が印象的でした。
従来の設定方式と比較して、より直感的で理解しやすい構造になったとのことです。
主な改善点として理解したのは:
- 設定の可視性向上:どのプラグインがどのルールを提供しているか分かりやすい
- ファイルごとの細かい設定が可能
- 設定内にドキュメントを含められる
🛠️ 実践的な活用例
- ESLint Stylistic: Linterとしての活用
-
antfu/eslint-plugin-command: Codemodとしての活用
- コメントアウトで指定すると記述すると自動反映される(多分...英語の理解も足りてなかったです)
2. スキーマと型で拓く Full-Stack TypeScript (Sohei Takeno)
発表者さまのセッションURL
🏗️ GraphQLを軸としたアーキテクチャ設計
SANUサービスの1年半にわたる移行プロジェクトの実例が非常に参考になりました。
設計思想として印象に残ったこと:
- フロントエンドとバックエンドの明確な分離
- GraphQLスキーマを契約とした開発
- Union型という仕組みを活用した柔軟な型設計
GraphQLは名前は聞いたことがございましたが、実際の活用例を聞くとこれほどフロントエンドとバックエンドの開発体験を向上させるものなのかということを学びました。
スピードを犠牲にしない3つの工夫
- 開発時:Next.jsによるサーバー起動の簡素化
- 運用時:CI/CDパイプラインの最適化
- 型生成:GraphQL Codegenによる自動化
💡 学びのポイント
- スキーマ設計時にドメインの言葉を意識する重要性
- 型によるドメインの適切な分離手法
- AI活用においてもスキーマが有効な制約として機能する可能性
3. AI Coding Agent Enablement in TypeScript
発表者さまのセッションURL
🤖 AIとTypeScriptの相乗効果
LLMを活用した開発において、TypeScriptの型システムが果たす役割と、LLMとの向き合い方について聞けた。
AIの解空間を絞る3つのアプローチ
-
型による制約
- anyという何でも許可する型を避け、明示的な型定義をする
- これにより、AIが生成するコードの品質も向上する
-
古典的手法の重要性
- 静的解析による即座のフィードバック
- テストによる品質保証
- LLMよりも高速な検証サイクル
-
デザインシステムのMCP化
- Figmaとの連携による自動コンポーネント生成
- ソースコードそのものがドキュメントとして機能
4. fast-checkとneverthrowのPBT+Result型
発表者さまのセッションURL
🛡️ 型安全なエラーハンドリング
従来の例外処理アプローチの課題を解決する話を聞いた。多分。
従来の課題
- エラーが起きた時に、どんな種類のエラーかが分からない
- 例外処理が型で表現されていない
Result型によるアプローチ
- 成功と失敗を型で明示的に表現する仕組み
- エラーの種類も型で表現できる
- より安全なエラーハンドリングが可能
🧪 プロパティベーステストとの組み合わせ
fast-checkというツールを使った、ランダムな入力値での自動テスト手法も紹介されていました。これもかなり高度な内容で、今の私には実践は難しそうですが、このようなアプローチがあるのかと勉強になりました。
適用の指針
- ドメイン層中心での利用
- システム規模が大きい場合に効果的
- 細かい処理には過度に適用しない
学んだこと
開発者が向き合う課題は言語を問わず共通している
エラーハンドリング、保守性の高いコード設計、テスト戦略、AI活用など、TypeScriptならではの話というよりも「良いソフトウェア開発」の共通課題が多かったのが印象的でした。Rubyで培った経験も無駄にならず、むしろTypeScriptの型システムでより安全に同じ課題に取り組めそうだと感じました。
型で「意図」を表現するという考え方
TypeScriptのような静的型付け言語では型で「このデータはこういう構造であるべき」「この関数はこういう値を返すべき」といった意図を明示的に表現できるということです。バグ防止だけでなく、コードの可読性や保守性にも大きく影響しそうです。Rubyの動的な自由度も良いところがございますが、大きなプロジェクトでは型による制約があった方が安心できそうです。
まとめ
TSKaigi 2025 Day1は、TypeScript初心者の私にとって「TypeScriptって面白そう!」と心から思えるイベントでした。
最初は「TypeScriptをほとんど知らない状況で大丈夫だろうか...」と不安もございましたが、実際にセッションを聞いてみると開発者として共感できる話も多く、TypeScriptの世界にも足を踏み入れてみたいという気持ちになりました。技術的に難しい部分もたくさんございましたが、それがかえって「もっと勉強してみたい」というモチベーションにつながっています。
自分の技術的視野が広がった、本当に有意義な1日でした。
会社にはカンファレンス参加をご許可いただき、本当に感謝しております。学んだことを活かして今後会社にも貢献できるよう頑張ります。
Discussion