#
163
こんにちは、マイクです!今日は2024年10月22日、火曜日ですね。今週も「zenncast」にお越しいただき、ありがとうございます!今日はZennでのトレンド記事をいくつかご紹介します。

さて、前回ご紹介した記事については、Go 1.24のツール管理やJSランタイムの意見、そしてReactでのToDoアプリ作成についてお話ししましたが、今日は新しい内容に進みますね。

本日は5つの記事を紹介しますので、楽しみにしていてください!

まず最初の記事です。タイトルは「まだLLM API呼び出しで消耗してるの?LiteLLMによるAPI呼び出し共通化のススメ」です。

LiteLLMは、様々なLLM APIをOpenAIフォーマットで統一的に呼び出すことができるライブラリです。LangChainなどと比べて、LiteLLMは必要最小限の機能に特化しているため、軽量で使いやすいのが特徴です。最近ではDSPyなどの有名ライブラリもLiteLLMに移行しており、活発に開発が進められています。

主な機能はAPI呼び出しの共通化で、例えばAzure OpenAI、Vertex AI、Amazon BedrockのAPIをほぼ同じコードで呼び出せます。異なるAPIを比較したり、簡単に切り替えたりすることが容易になります。また、エラー処理も共通化されており、タイムアウトなどの例外を一元管理できる「Router」機能も便利です。

デメリットとしては、呼び出しの際にオーバーヘッドが発生すること、特に短い出力の場合にレイテンシーが増加する点が挙げられます。とはいえ、AIエンジニアにとって非常に役立つツールになるでしょう。

次に、2つ目の記事です。タイトルは「いかにして JSONB を安全に扱うか」です。

PostgresのJSONBデータ型は処理が高速で、インデックス作成も可能ですが、厳格な型付けの中で半構造化データを扱うことはアンチパターンとされています。しかし、適切に設計・運用することで、柔軟なデータ管理が可能になります。

PostgresにはJSONBに対するスキーマバリデーション機能はありませんが、JSON Schemaを用いたバリデーションが可能です。信頼性の高い拡張を利用するか、自前のロジックを実装するかの二つの方法があります。特に、`supabase/pg_jsonschema`という拡張を使用すれば、JSONBのバリデーションを行うことができます。

このように、JSONBを活用することで、柔軟かつ安全なデータ管理が実現できます。データベース設計時には、適切なバリデーション手法を選択することが重要です。

続いて、3つ目の記事です。タイトルは「【技術選定】 0→1 の SaaS に採用して感じた GraphQL への向き合い方」です。

ハコベルシステム開発部の大石さんが、物流DXを目的としたSaaSプロダクトの開発におけるGraphQL採用の経験をシェアします。AIアルゴリズムを用いて業務効率化を目指すこのプロジェクトでは、フロントエンドにTypeScript、バックエンドにGoを採用し、API通信にはGraphQLを使用しました。

GraphQLを選んだ理由は、スキーマ駆動開発の実現やクライアントからのデータ取得を柔軟に行える点です。約2年で356回のスキーマ変更があり、GraphQLの導入によってプロダクトは大きく成長しました。

GraphQLのメリットは多いですが、設計の難易度が上昇し、後から設計を見直すことが困難になる点がデメリットとして挙げられます。初期段階から設計を型化することが重要です。

次に、4つ目の記事です。タイトルは「実践例で考える nuqs を使った Next.js の URL パラメータ管理」です。

この記事では、Next.jsにおけるURL状態管理の課題を解決するために、nuqsを利用した実践例を解説しています。煩雑なURLSearchParamsの操作や型安全性の欠如に対処するため、nuqsの導入を提案しています。

基本的な使い方としては、ボタンのクリックでクエリパラメータを変更する方法や、Linkコンポーネントで動的に生成する方法を紹介しています。特定の文字列リテラルやEnum型を使った型安全なクエリパラメータ管理も可能です。

さらに、独立したクエリパラメータ管理のケースとして、タブコンポーネントでの管理方法や検索ボックスからの遷移時の引き継ぎ方法も示されています。nuqsを使用することで、従来の複雑な操作から解放され、よりシンプルで直感的な状態管理が可能になります。

そして最後、5つ目の記事です。タイトルは「GitHubActionsでProjectsにfield設定しながら紐付け」です。

この記事では、GitHub Actionsを使用して、特定のプロジェクトに自動的にissueやPRを紐づけるワークフローの作成方法を説明しています。特定のプロジェクトに関連付け、StatusとProductフィールドを設定することが主な要件です。

実装手順は、ワークフロー構成やGitHub CLI使用、フィールド設定の3つです。issueやPRが作成された際に、自動的にプロジェクトに紐づけ、必要なIDを取得してフィールドを設定します。

このワークフローにより、開発環境を効率的に整えることができ、著者はこの経験を通じてエンジニアとしてのスタートを切ることができたと述べています。

さて、今日は5つのトピックをご紹介しました。LiteLLM、JSONBの安全な扱い、GraphQLの向き合い方、nuqsのURL管理、GitHub Actionsのワークフローについてお話ししました。

次回もお楽しみに!詳しい内容はショーノートに書いてありますので、ぜひご確認ください。また、番組の感想もお待ちしています!それでは、また次回お会いしましょう!

Related episodes

内容の近いエピソードを推薦しています