2025-11-23 TSKaigi Hokuriku 2025
Node.jsでネイティブにTypeScriptを実行するための機能「Type Stripping」が、11月11日にリリースされた新バージョン「Node.js v25.2.0」で安定版になったことが発表されました。 これにより本番環境などでもType Stripping機能を用いたTypeScriptファイルの実行が安心してできるようになりました。 Node.jsはTypeScriptをサポートしていなかった Node.jsはもともとサーバサイドのJavaScriptランタイムとして開発されたため、JavaScriptのスーパーセットであるTypeScriptの型指定や高度な命令などには対応していません。 Node.jsでTypeScriptファイルを実行するには、TypeScriptトランスパイラを用いてJavaScriptに変換するなどの方法があります。 この方法を用いたts-nod
みなさん、普段から開発者体験(DX)を気にしてますか? DXとは、開発中に感じる“心地よさ”や“効率の良さ”を指します。 車輪の再開発のようなDXを損なう体験がなければ開発はずっと楽しいんです! そこでこの記事では、「心から開発を楽しめる」相棒たちを10選紹介します! 1. Convex “SQLの呪縛”からの解放 歴史のあるSQLはどうしても、歴史に引っ張られます。 Supabaseとかを使ってると、Row Level SecurityやSQL Functionsとかで、死ぬほど書きにくいSQLを書かなきゃいけなくなることありますよね。まるでFirebaseの認証ルール並み。良くも悪くも結局SQLだから、隠しきれない歴史の重み、つまりDXの悪さがでてくる。 しかしConvexは一切そういうのはありません!!!! 全てがDXを中心に一から考えられて作られたサービス。そう、React時代のバ
はじめに TypeScriptで型を定義する際、interface と type のどちらを使うべきか。これは、多くの開発現場で一度は議論になるテーマではないかと思います。 世の中の多くのドキュメントや記事では、クラスへの implements のしやすさや、interface が持つ「宣言のマージ(Declaration Merging)」の利便性が紹介されることもあり、interface の利用が推奨されるケースもよく見かけます。 しかし、特にサーバサイドアプリケーションや、ある程度規模のあるシステムを開発する上で、私はこの「宣言のマージ」機能が、時として予期せぬ挙動や、場合によってはセキュリティ上のリスクを静かにもたらす要因になると感じています。 今回は、なぜ私がプロダクトコードにおいて interface の積極的な使用を避け、type エイリアスを好んで使うのか、具体的なシナリオ
はじめに TypeScriptでコンポーネントのPropsやオブジェクトの型を定義するとき、typeとinterfaceのどちらを使うべきか、一度は悩んだことがあるのではないでしょうか。 巷では「どちらでも良い」「チームで統一されていればOK」といった意見もよく見かけます。 しかし、私は 明確な理由をもって「基本的にはinterfaceを使うべき」 だと主張します。 この記事では私の実体験で遭遇したReactのPropsの深刻なパフォーマンス問題を例に交えながら、なぜinterfaceが優れているのか、そしてtypeはどのような場面で使うべきなのかを解説します。 type aliasを使いたくなる魅力と、その裏に潜む罠 まず、なぜ多くの開発者がtypeを選びがちなのでしょうか。 それは、開発体験の良さにあります。 typeで定義した型は、VSCodeなどのエディタでホバーすると、最終的に解
藤 吾郎 Starley株式会社のソフトウェアエンジニア。株式会社ディー・エヌ・エー、クックパッド株式会社、株式会社ビットジャーニー、ファストリー株式会社を経て2024年9月より現職。趣味はOSSのツールやライブラリの開発。二児の父。 Github:gfx Bluesky:@gfx.bsky.social ブログ:Islands in the byte stream 2025年のいま、私たちは「エージェンティックコーディング革命」の渦中にいます。Claude Code、Devin、Cursor といったコーディングエージェントが実装の多くを担い、アルゴリズムやアーキテクチャは瞬時に形になります。 このような時代に技術書を読む必要はあるのでしょうか。もちろん、あります。その理由は、この革命が単なる生産性の向上ではなく、超高速実装によって「量が質に転化する」という変化をもたらしているからです。
We Love You, TypeScriptFor nearly five years now, Motion has operated in a large TypeScript monorepo. At its peak, it was roughly ~2.5 million lines of code after excluding comments, node_modules, etc. To manage this, we used Vercel’s rather excellent Turborepo build system. This is not a blog post hating on TypeScript — quite the opposite! Motion would likely not even have survived until today wi
この記事では、TypeScript の開発環境を最速で整えます。単に動く環境ではなく、最低限必要なツールも一通りそろえていきます。(2025 年秋時点の情報です) この記事で作る開発環境について この記事のゴール bun run コマンドで TypeScript ファイルを実行できる bun repl コマンドで REPL を起動して TypeScript を実行できる bun tsc --noEmit コマンドで(厳しい)型チェックができる TypeScript Language Server でコード補完と型チェックができる bun biome コマンドでフォーマットとリントができる Biome の拡張機能でリントが開発中にも実行される Biome の拡張機能でフォーマットと自動修正が保存時に自動で実行される bun test コマンドでテストコードを実行できる Bun の拡張機能でテ
Connect, collaborate, and grow with a community of TypeScript developers. Elevate your skills through interactive coding challenges, discussions, and knowledge sharing
ZodやValibotは、unknownなデータを検証した上でTypeScriptの型をつけてくれる便利なライブラリですが、複雑なスキーマを書いてるとそのスキーマからどういう型になるのかテストを書きたくなりませんか? 私はなります。 例えば次のようなValibotのスキーマを書くと、InferInputでそのスキーマの型をとり出す事ができます。 import * as v from 'valibot'; const schema = v.object({ name: v.string(), }); // スキーマから { name: string } という型を取り出せる type Schema = v.InferInput<typeof schema>; こういう単純なスキーマであれば型のテストを書く必要はないのですが、実際にある程度複雑なスキーマを書いているときには、スキーマからどうい
本記事は、LINEヤフー株式会社のフロントエンドスペシャリスト、浜田真成さんによる寄稿です。 JavaScriptのビルドツールについて、その役割や歴史的な変遷をたどりながら、2025年現在の主要ツールの特徴と選定ポイントを解説します。LINEヤフーでのユースケースも交え、アプリケーション開発における最適なビルドツール選びの参考となる内容です。 はじめにこの記事は、Web開発におけるJavaScriptのビルドツールの役割やその特徴について解説するものです。 2025年現在までのビルドツール事情を整理し、アプリケーション開発者が「どのビルドツールを、何の目的で選択すべきか」を判断する1つの指針となれば幸いです。 1. ビルドツールの役割と歴史的変遷1-1. ビルドツールがなぜ必要なのかWebアプリケーション開発では、JavaScriptを用いることが主流です。 一方で、JavaScript
こんにちは! Legal Brain エージェントを開発している下山です。 Legal Brain エージェントはリーガル特化型 AI エージェントで、法律事務所や企業の法務部門での複雑なリサーチ業務を支援するリーガルリサーチ機能を提供しています。 このプラットフォームはマイクロサービス構成で、フロントエンドとバックエンドに TypeScript を採用することで開発サイクルを大幅に向上させました。本記事では、その実践事例をご紹介します。 プロジェクト概要と課題 Legal Brain エージェントではバックエンド(Go)とフロントエンド(TypeScript)で異なる言語を使用していたため、型定義の不整合や開発効率の低下といった課題に直面していました。 開発で直面した課題 バックエンド・フロントエンド間の型定義の不一致 異なる言語で開発することで、バックエンドとフロントエンド間で型定義の
こんにちは、よしこです。 この記事では、わたしの所属する株式会社ナレッジワークで最近コードベースに取り入れた「エラーハンドリング漏れ防止の仕組み」について紹介します。 背景 「通信を伴うアクションに失敗しても画面にエラーフィードバックが表示されない」という実装漏れをしてしまったことがあり、今後こういうことが起きないように仕組みで防止したいと思いました。 「忘れてしまった」という問題なので、テストで担保するのも難しいように思いました。実装するのを忘れてしまっているということは、テストを書くこともセットで忘れてしまっているはずだからです。 「気をつける」「チェックリストを作る」のような人間が注意する方向ではなく、「嫌でも気付く」「忘れていたらCIが通らない」のように、必要なハンドリングを強制する形にできないか?と思いました。 課題 実行時に通信エラーが起きる可能性があり、ユーザーフィードバック
tsx は TypeScript コードを事前トランスパイルすることなく、直接 Node.js で実行するためのツール。 https://github.com/privatenumber/tsx ところで最近の Node.js には Type Stripping という機能が入った。これを使うと、tsx なしで TypeScript コードを事前トランスパイルせずに実行できる。 https://nodejs.org/api/typescript.html#type-stripping 両者の違い 一見すると両者は機能的に同じものかのように思うけど、実は結構違いがある。 import specifier の指定方法が異なる 最も大きな違いは、「import specifier」の指定方法。import specifier というのは、以下の部分のこと。 import { add } './m
こんにちは、株式会社スマートバンクでサーバーサイドエンジニアをやっています、すてにゃん (id:stefafafan) です。今回は社内で活用している管理画面に対して実施した様々な技術的な改善を紹介していきます。 背景 改善サイクルの高速化 開発者体験の向上 依存ライブラリのメンテナンス AIエージェントを意識した改善 将来を見据えたコード品質の担保 Linterルールの有効化 TypeScriptの設定を厳格化 パッケージのバージョン指定やアップデート周りの調整 今後の課題と展望 終わりに 背景 スマートバンクではお問い合わせ対応や調査をするために社内向けに管理画面を用意しています。この管理画面は以下のスライドにあるように、ユーザー向けの機能とはリポジトリを分けて運用しています。 この構成を取ることで、プレゼンテーションロジック (UI) とドメインロジックを分離することができ、認知負荷
We're thrilled to announce type-aware linting in oxlint! The long-awaited no-floating-promises and related rules are here. This preview release aims to engage with the community for collaboration and discussion by documenting our decision process and technical details. Quick Start If oxlint is already configured, install oxlint-tsgolint and run oxlint with the --type-aware flag:
TypeScriptで定数をどのように表現するか、というのは意外に意見が分かれるテーマです。本稿では、enumの特徴とその代替手段を整理し、何を採用すべきかを考えてみます。 enumを推奨しないという意見が多いのは知っていても、何故そう言われているのか、を理解していますか? 「使ってはダメ」と思考停止するのではなく、この記事を読むことでメリット・デメリットを理解して自分で選択できるようになる、かもしれません! 列挙型(enum)とは enumはJavaScriptにはないTypeScript独自の構文で、定数を集合としてまとめて扱うことができます。 enum Mode { Auto = 'Auto', UDP = 'UDP', TCP = 'TCP', } const mode: Mode = Mode.Auto
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く