こんにちは!マイクです!今日は2025年2月6日、火曜日ですね。今日も元気に「zenncast」をお届けします!さて、今日はZennでトレンドの記事をいくつか紹介しますよ。
前回紹介した記事には、「自作インタープリターをじぇいあいてぃーコンパイルでこうそくかする」や「2025ねんにデータフォームをつかうことへのかっとう」など、いくつかのトピックがありましたね。
それでは、今日紹介する記事は全部で5本です!どれも興味深い内容ですので、ぜひお楽しみに!
それでは、最初の記事からいってみましょう!
1つ目の記事は「LLMのげんかくをじこけんちする『RIG』」です。
このRIG、株式会社ナレッジセンスの須藤英寿さんが開発したもので、LLM(だいきぼげんごもでる)が生成する情報のせいかくさをたかめる手法なんです。LLMは時々、誤情報を生成してしまう、いわゆるハルシネーションがあるので、利用者はその情報の真偽を自分で判断しなければなりません。
RIGは、まずファインチューニングされたLLMがユーザーからの質問に対して回答し、その中に埋め込まれた検索クエリを抽出します。このクエリを基にData Commonsから関連情報を検索し、結果を根拠として提示することで、ユーザーはLLMの出力内容をより信頼できるものとして扱えるようになるんです。
さらに、RIGはLLMの推論を排除し、データの変換のみを行う点が特徴です。自然言語形式のクエリを使用することで、簡潔かつ厳密な検索を実現しています。そして、RIGを用いることで、LLMが正しい回答を得られる確率が58%に改善されたとのこと!信頼性の高い情報を得ることで、エンジニアがLLMをより効果的に活用できる可能性が広がりますね。
さてさて、次の記事にいきましょう!
2つ目の記事は「【VSCode】しこうさくごのすえたどりついたせっていかんりじゅつ」です。
この記事では、VSCodeの設定を効果的に管理するための方法として、プロファイル機能の活用が提案されています。設定を3つのカテゴリに分けて管理することで、開発環境を整理されたものにすることができるんです。
まず、全ワークスペースで有効化したい設定は既定のプロファイルで、次に特定のワークスペース内でチーム合意の設定を`.vscode/settings.json`で、最後に個人的な設定を各プロファイルにて管理します。これにより、設定の混乱を防ぎ、プロジェクト毎の柔軟な設定が可能になります。
著者は、プロファイル機能の導入により、設定のカオス化やワークスペース設定の変更の難しさが解決できたと述べており、プロファイルを作成する際には、既存のプロファイルからのコピーや空のコンテンツの作成が選べることも紹介されています。
このようにして、グローバル設定とワークスペース固有設定を明確に分離し、効率的な開発環境を実現することができるんですね。次の記事に行きましょう!
3つ目の記事は「NestJSとせんじゅつてきDDDのいいとこどりをしてバックエンドTypescriptのせっけいをしたはなし」です。
この話では、TypeScriptを利用したバックエンド開発において、NestJSの特徴を活かしながら戦術的DDD(ドメイン駆動設計)を導入し、サービス層の肥大化問題を解決する設計手法が紹介されています。
NestJSはTypeScriptファーストで型安全なコーディングを提供し、開発効率を向上させる機能を持っていますが、サービス層がユースケース、ドメイン、インフラ層を一括して担うことが多く、これが「Fat Service」になりがちです。
そこで、サービス層の処理をドメイン層、ユースケース層、インフラ層に分けることが提案されています。具体的には、ビジネスロジックをエンティティや値オブジェクトに閉じ込めるドメイン層、ユースケースに沿った処理を行うユースケース層、技術的実装を担うインフラ層に明確に分離します。
この設計により、各層の責務が明確になり、可読性や保守性、拡張性を向上させることができるんです。次は4つ目の記事にいきますよ!
4つ目の記事は「採点りゆうをしゅつりょくしながらローカルLLMをひょうかする【Elyza Tasks 100】」です。
この内容では、70Bクラスの大規模言語モデル(LLM)をElyza Tasks 100という日本語のベンチマークで評価する方法が記録されています。LangChainを用いて、LLMの出力結果、得点、採点理由を整理することが目的です。
具体的には、LLMにタスクを解かせ、その出力を採点用LLMで評価するという流れで進められます。評価プロセスでは、出力結果を基に採点し、思考過程を記録することで透明性を確保しています。
最終的には、評価内容をマークダウン形式で出力し、平均スコアや各問題の詳細な解説を含むドキュメントを生成するそうです。これにより、LLMの評価プロセスを効率化し、他のエンジニアにも役立つ情報を提供することを目指していますね。
さて、最後の5つ目の記事に行きましょう!
5つ目の記事は「初めてのuseSyncExternalStore」です。
`useSyncExternalStore`はReact 18から導入されたフックで、主に状態管理ライブラリやブラウザAPIとの連携に利用されます。このフックは外部ストアへのサブスクライブを可能にし、特に時間とともに変化するブラウザが公開する値を監視するのに適しています。
具体的な流れとしては、SSRやハイドレーション中に`getSnapshot`を使って初期表示を行い、その後は`subscribe`でイベントを監視し、状態の変更があれば再レンダリングを行うというものです。特に、状態管理が一貫性を持つことで、クライアントとサーバー間の状態差異によるちらつきを防ぐ点が重要です。
最終的に、このフックは初期レンダリングの一貫性を解決する重要な機能を提供するため、エンジニアにとって非常に有用なフックであると言えるでしょう。
さて、今日はここまでです!今日紹介した記事を駆け足でおさらいしますと、RIGによるLLMの信頼性向上、VSCodeの設定管理術、NestJSと戦術的DDDの組み合わせ、Elyza Tasks 100によるLLM評価、そしてuseSyncExternalStoreについてお話ししました。
次回もまたお会いできるのを楽しみにしています!詳しい内容はショーノートに書いてあるので、ぜひチェックしてくださいね。そして番組の感想も募集していますので、お気軽にお寄せください。では、またね!