どうも、みなさんこんにちは!マイクです!今日は2024年6月27日、木曜日です。さて、今日もZennでトレンドの記事をご紹介しますよ!
まずは、前回紹介した記事について少し触れてみましょう。覚えてますか?「LLMで1年間開発して学んだこと」や「next/imageを使いこなす」など、あの興味深い内容でしたね。特に、Rust製の次世代エディタ「Zed」は注目を集めました。
さて、今日紹介する記事は全部で5本です。どれも興味深いので、お楽しみに!
では、早速1つ目の記事からいってみましょう。。
1つ目の記事のタイトルは「JavaScriptで100行で作る!数式言語のインタプリタ」です。この記事では、JavaScriptを使って簡単な数式言語のインタプリタを作成する方法が紹介されています。数式言語とは、整数の四則演算と変数の代入/参照機能を持つシンプルな言語です。例えば、`a = 3 + 4 * 2`のような数式を計算できます。
具体的な手順としては、まず抽象構文木(AST)というプログラムの構造を木の形で表現するものを理解し、次に数式言語のASTを表すためのクラスを定義します。そして、ASTを解釈し実行する関数`evalProgram()`を定義します。この関数はASTを再帰的にたどり、演算を実行します。実際のコード例も紹介されており、プログラミング言語のインタプリタがどれほどシンプルに作れるかがわかります。この記事は、プログラミング言語を作ってみたいという方にとって非常に参考になる内容です。。
さて、次に2つ目の記事です。。
タイトルは「スクリーンショットを使ってRAGの精度向上。「DSE」を解説」です。この記事は、RAG(Retrieval-Augmented Generation)の精度向上手法である「Document Screenshot Embedding(DSE)」について解説しています。ウォータールー大学の研究者によって提案されたこの技術は、文書内の画像や表も考慮することで検索精度を高めるものです。
DSEの主な手法としては、まず文書のスクリーンショットを撮影し、視覚エンコーダーでベクトル化します。そして、そのベクトルをマルチモーダルな言語モデルに入力し、最終層の出力をスクリーンショットのベクトルとして使用します。ユーザーからの質問も同様にベクトル化し、コサイン類似度が高い文書を検索します。この技術により、従来のテキストベースの手法よりも多様な情報を検索に活かせる点が強みです。。
続いて3つ目の記事です。。
タイトルは「Temporalの近況(主にScopeを狭める話)」です。TemporalはJavaScriptの新しい日時操作のグローバルオブジェクトで、既存のDateオブジェクトの課題を解決するために開発されています。最近のアップデートでは、新しいタイムスタンプの構文RFC 9557の承認や、使用頻度が低い機能の削減が注目されています。
具体的には、`Temporal.TimeZone`と`Temporal.Calendar`の削減、簡単なワークアラウンドで代替可能なヘルパーメソッドの削除が予定されています。これにより、Temporal全体のAPIの約1/3が削減される見込みです。Temporalは既存のDateオブジェクトの問題を解消するための意欲的な機能を持ち、今後の動向に注目が集まります。。
次に4つ目の記事です。。
タイトルは「Next.jsとHono RPCで安全・爆速開発」です。この記事では、AV検索データベース「AVベース」を作成する際にNext.jsのAPI Routesを利用していたが、エラーハンドリングやHTTPメソッドの管理が手間だったため、Honoを導入した話が紹介されています。Honoは高速で多様なランタイムに対応し、型推論を利用したRPC機能が特徴です。
具体的なプラクティスとしては、Next.jsのAPI RoutesでHonoを使用し、ルーティングとハンドラーを分離、スキーマ定義をzodで行う、Honoのmiddlewareを定義、Hono RPCを使用するなどがあります。これにより、サーバー・クライアント間の型が統一され、開発効率が向上しました。この記事は、Next.jsとHono RPCを用いたAPI/クライアントの実装に興味がある方にとって非常に有益です。。
最後に5つ目の記事です。。
タイトルは「TURN サーバを Arm インスタンスで運用しています」です。MIXIのモンストサーバチームでは、マルチプレイ機能を支えるためにTURNサーバを運用しており、最近その運用を見直してArmインスタンスを導入しました。これにより、コスト効率が向上しました。
具体的な変更点として、EC2のTURNサーバを1つのIPアドレスに統一し、Armインスタンスを採用しました。また、coturnのPrometheusメトリクスを収集する仕組みも導入し、運用の効率化を図りました。AWSのGravitonベースのインスタンスタイプを使い、coturnをソースからビルドすることで最新のバグフィックスを適用しつつ、Prometheus対応のビルドを実現しました。これにより、MIXIのモンストサーバチームは、より効率的でコスト効果の高い運用を実現しています。
さて、今日紹介した記事を駆け足でおさらいしますと、「JavaScriptで100行で作る!数式言語のインタプリタ」、「スクリーンショットを使ってRAGの精度向上。「DSE」を解説」、「Temporalの近況(主にScopeを狭める話)」、「Next.jsとHono RPCで安全・爆速開発」、そして「TURN サーバを Arm インスタンスで運用しています」でした。次回も面白い記事をたくさん紹介しますので、お楽しみに!詳しい内容はショーノートに書いてありますので、ぜひチェックしてくださいね。
番組の感想も募集していますので、どしどしお寄せください。それでは、次回もお楽しみに!マイクでした!