 
      
  
 
  
  MCP(Model Context Protocol)とはアプリケーションが LLM にコンテキストを提供する方法を標準化するプロトコルです。MCP を使用することで、LLM は外部ツールやサービスからコンテキストを取得するだけでなく、コードの実行やデータの保存など、さまざまなアクションを実行できるようになります。この記事では MCP サーバーを TypeScript で実装する方法を紹介します。 MCP(Model Context Protocol)とはアプリケーションが LLM にコンテキストを提供する方法を標準化するプロトコルです。多くの LLM ではユーザーに適切な回答を提供するために追加のコンテキスト情報を必要とします。例えば、今日の天気の情報をユーザーから求められたとしても LLM が学習したデータにはその情報は含まれていないため、正確な回答ができません。このような状況では L
 
      
  はじめに こんにちは、ダイニーの ogino です。 TypeScript のコンパイラは今まで TypeScript で実装(セルフホスト)されていました。 それが TypeScript 7.0 から、Go による実装に移植され、10 倍高速になります。 本記事は、移植に関して筆者が疑問に感じた点を、GitHub discussion や TypeScript lead architect のインタビュー動画などから調べてまとめたものです。 移行の背景 今回 Go に移植される背景は、大規模な TypeScript コードベースをコンパイルする際のスピードの遅さにあります。 例えば VSCode のコードベース (150 万行) に対して tsc を実行すると、約 80 秒もかかります。 TypeScript のコンパイルは大きく以下の段階に分けられ、その内の check が特に複雑で重
 
      
  はじめに バックエンド開発にもTypeScriptを利用する事例、増えてますね。NestJSはTypescriptバックエンドの中でも、唯一のopinionatedなフレームワークとして採用しました(特に大規模な開発を目指している弊社では相性がいい)。しかし、実際にNestJSを使って開発を進めると「too much」と言われる前評判とは異なり、「not enough」という印象を受けました。特に、DDDの観点からすると、DTO(Data Transfer Object)やControllerなどプレゼンテーション層は整備されているものの、Service層にユースケース層、ドメイン層、インフラ層の役割を一括して詰め込んでしまい、結果として「Fat Service」になりがちです。 そこで、本記事ではNestJSの機能を活かしつつ、戦術的DDDのパターンを導入して、Service以下のコード
 
      
  初めに モチベーション 私はこれまでドメイン駆動設計で設計されたシステムの開発案件に参画した経験はありますが、1からドメイン駆動設計で設計での設計を行った経験がありませんでした。そのため個人でシステムを開発している際に設計に悩むことがあり、自身で1からドメイン駆動設計ベースの設計ができるようになることを目指して学習を進め、その過程で得た知見をまとめています。 特に以下のような点に焦点を当てています。 ドメイン駆動設計の理論をTypeScriptのコードベースで理解する 既存のドメイン駆動設計システムを理解するだけでなく、新規設計ができるようになるための知識の整理 ドメイン駆動設計(DDD)とは ドメインとは「システムが対象とする業務領域」のことです。 例えばECサイトでは商品管理、在庫、注文、配送などがドメインとなります。 ドメイン駆動設計の本質は、このような現場の業務知識やルールを深く理
 
      
  本記事はこちらの改訂版です。コードも改良しています。 三項演算子は本当に読みにくいのか コードをドキュメントのように読みやすくすることは非常に多くのメリットがあります。 そして、プログラミング言語自体にも読みやすくするためだけに存在する構文があります。 その1つが三項演算子です。 いやいや、三項演算子は読みにくいだろう、と思われた方は多いと思います。 しかし、読みやすいケースがあることも私は経験しています。 あなたも経験しているかもしれません。 なぜ、読みやすさに差が出るのか。調べていった結果、ポイントが分かりました。しかし、それを言語仕様として持っているものはありません。 そこで、TypeScript で読みやすい三項演算式を書くためのメソッドを開発したのでご紹介します。 そのメソッドを使った TypeScript のコードは、次のようになります。 Python の条件式(三項演算子)に
 
      
  「TypeScriptではじめる型システム」という記事をn月刊ラムダノートに寄稿しました。 新刊を発売しました "『n月刊ラムダノート』Vol.4 No.3(2024)発行のお知らせ https://t.co/PGppk1aRRA— lambdanote (@lambdanote) 2024年10月4日 どんな内容? TypeScriptの極小サブセットに対する型検査器を書き、それを通して型システムを体感してみよう、という内容です。 詳しく言うと、boolean型とnumber型と関数型しかないTypeScriptサブセット言語がターゲットです。 型検査器の実装言語にもTypeScript(処理系はDeno)を使います。 TypeScriptづくしの一品です。 わかる人向けに言うと、「型システム入門」という本(通称TAPL)の単純型付きラムダ計算に相当する内容をTypeScriptで説明し
技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL はじめに 新たに書きました。 MySQLを使っても会社は潰れない 久々に記事を書いたのでどうぞお手柔らかに... 私が過去2年間で行った技術選定の成功と失敗を振り返り、その学びを共有したいと思います。 文才無いので淡々と箇条書きでいきます Twitterエンジニア垢作りました。エンジニアのお友達がいません。 @uncode_jp 注意 意見を押し付けるものではありません。ただ建設的な議論は大事だと思う。 自分の意見は明確に、歯切れのよい表現を意識している。人それぞれだよねみたいな感じに逃げたくない。技術選定に結論はある(過激)。 ただし技術選定にはコンテキストがあり、例えばプロダクトのフェーズや組織の事情によって当然結論は変わる可能性がある。 OSSの開発者さん達は偉大ですごい。あ
 
      
  ソート順の選択プルダウンがある一覧系ページを実装するとき、選択肢たちの管理方法に頭を悩ませることが多いと思います。 商品一覧ページの概要 ソート順プルダウンの選択肢たち 上の画像に示したような場合だと、 《クエリパラメータ》と《選択肢》の間の相互変換 ?sort=price&order=desc <--> 「価格が高い順」 《select の状態に使うための文字列》と《選択肢》の間の相互変換 <option value={id}>{label}</option> クエリパラメータが sort order の2つあり、それらをそのまま流用できないので 最低限でも、これらの変換ロジックを用意しておく必要がありますね。 この記事では、このような「選択肢と、それにまつわる変換ロジック群」を整理する方法を、高凝集・SSoT (Single Source of Truth; 信頼できる唯一の情報源)
 
      
  切り替えを辞めた Cloudflare から別サービスへの移行をしており Cloudflare Workers を利用しないことに決めた HTTP リクエスト経由での DuckDB 処理をしたいので Node.js だと厳しい sqlc-gen-typescript のメンテナンスが怪しい 今のまま Go を継続することにした。
 
      
  Next.js では Next.js 13.2 より実験的な機能として、型安全なルーティングを利用できます。この機能を使うことでリンク先のパス名を静的に検査できるため、typo などのエラーを事前に防ぐことができます。 なお、型安全なルーティングを利用するためには App Router と TypeScript を使用している必要があります。 型安全なルーティングの利用方法 型安全なルーティングを有効にするためには、experimental.typedRoutes フラグを有効にする必要があります。next.config.mjs に以下のように設定します。 /** @type {import('next').NextConfig} */ const nextConfig = { experimental: { typedRoutes: true, }, }; export default
 
      
  Digitization部 Bill One Entry*1グループの秋山です。 はじめに Domain Modeling Made Functionalというスゴ本 補講:Make Illegal States Unrepresentable バックエンドの処理を抽象化する 手続き型プログラミングの典型例 課題1:制約のないエラーハンドリング 課題2:低い可読性 課題3:エラーハンドリングの低い網羅性 Railway Oriented Programming TypeScriptで型安全にエラーハンドリングする ステップ1:サブ関数の出力はResult型で表現する ステップ2:サブ関数にResult型を入力できるようにする ステップ3:サブ関数を連結する ステップ4:網羅的にエラーハンドリングする おわりに 付録 TypeScriptの全文サンプル はじめに エラーハンドリングは重要な処
イベント「【タイミー/Voicy/令和トラベル】Backend LT〜技術選定における“見極める力”とは〜」での登壇資料 https://reiwatravel.connpass.com/event/306794/
 
      
  ここまで見てきた3社の事例は、いずれもプログラミング言語「Ruby」とそのWebアプリケーションフレームワーク「Ruby on Rails(以下、Rails)」で開発したアプリケーションにモジュラーモノリスを導入するものだった。Railsでアプリを開発すると通常はモノリスになるため、サービスの成長によって巨大なモノリスが出来上がる。これをモジュラーモノリス化することで、開発生産性を上げていた。 モジュラーモノリスはアーキテクチャーなので、実際にはプログラミング言語やフレームワークには依存しない。freeeの事例でも、Railsのシステムに加え、開発言語として「Go」を採用したシステムにモジュラーモノリスを導入していた。 今回は、開発言語として「TypeScript」、そのサーバーサイド実行環境として「Node.js」を採用したUbieの事例を取り上げる。同社は、消費者向けの症状検索エンジン
 
      
  はじめに 最近、Next.js、TypeScript、Tailwind CSSを使って技術ブログを立ち上げました。(まだあまり更新は進んでいませんが…) このプロジェクトを通じて構築した開発環境がわりと快適だったので、誰かの参考になるかもしれないと記事を書いてみることにしました。 できる限りわかりやすく詳細な説明を心がけましたが、その結果、記事のボリュームが大きくなってしまいました。長文ですが、興味のある方はぜひ読んでみてください🙏 また、この記事内で紹介した内容をセットアップしたリポジトリを公開しています。 Next.jsのボイラープレートとして活用可能ですので、興味のある方はぜひ覗いてみてください。
 
      
  はじめに 皆さんこんにちは、株式会社エムアイ・ラボのエンジニアです! 今回はソフトウェア設計のSOLID原則について学習したので、弊社のメインの開発言語であるTypeScriptのサンプルコードを使って共有できればと思います。 SOLID原則は、オブジェクト思考プログラミングにおいて、ソフトウェアがメンテナンスしやすく、拡張や変更に強いソフトウェア設計を行うための原則です。 SOLID原則にはSOLIDの頭文字をそれぞれとった、5つの原則があります。 単一責任の原則(Single Responsibility Principle) 単一責任の原則とは、クラスが一つの機能や責任を持つべきで、クラスが変更される理由は一つであるべきというです。 クラスが一つの機能や責任のみを持つようにすることにより、コードは再利用可能でテストが容易になります。 単一責任の原則を遵守している例 以下のBirdクラ
 
      
  ひさしぶりにblog記事書きます 本エントリはカケハシ Advent Calendar 2023 Part 2の 15日目の記事に入れてもらってます。カケハシ Advent Calendar Part 1 もあり、様々な職種の方が記事を書いているので、ぜひご覧ください。といってもそもそもこのblogでは初出であるカケハシってなんだ?という話からしなければなりません。このAdventが書くきっかけになったのですが、そのあたりの近況報告も兼ねて最近こんなことをやっているというアップデート記事です。 転職していました 実際に新しい所属になったのは今年の10月1日からで、もう2ヶ月半くらい経っているのですが、本当にあっという間でした。Twitterではいろいろ投稿していたので見ていた方はご存知かも知れません。現在は株式会社カケハシというところで、ソフトウェアエンジニアとして新しい事業ドメインを起ち
 
      
  この記事は 一休.comのカレンダー | Advent Calendar 2023 - Qiita 10日目の記事です。 昨今は Web アプリケーション開発の世界でも、関数型プログラミングのエッセンスを取り入れるような機会が増えてきました。 とはいえ、一つのアプリケーションを 1 から 10 までがっちり関数型プログラミングで構成するというわけではなく、そのように書くこともあればそうでない従来からの手続き的スタイルで書くところもあるというのが現状で、どこまで関数型プログラミング的な手法を取り入れるかその塩梅もまちまちだと思います。まだ今はその過渡期という印象も受けます。 本稿ではこの辺りを少々考察してみたいと思います。 先日、Qiita Conference 2023 Autumn で以下のテーマで発表を行いました。 この発表では「関数型プログラミング最強!」という話をしたわけではなく、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
