Thoughtworks Technology Radar、Vol. 31 を公開
(thoughtworks.com)技術/ツール/プラットフォーム/開発言語およびフレームワーク分野の最新トレンドを、Hold/Assess/Trial/Adopt の4段階で可視化して解説
コーディングアシスタンスのアンチパターン
- 予想どおり、今回の Radar では、開発者が一般的に利用している生成 AI と LLM に関する議論が中心となっている
- パターンは必然的にアンチパターンへとつながるが、これは開発者が避けるべき文脈化された状況を意味する
- 過熱する AI 分野では、いくつかのアンチパターンが現れ始めている:
- 人間とのペアプログラミングを AI の伴走者で完全に置き換えられるという誤った考え
- コーディング支援の提案への過度な依存
- 生成コードにおけるコード品質の問題
- コードベースのより速い成長率
- AI は抽象化を使うよりも、力任せな方法で問題を解決する傾向がある
- 例: Strategy デザインパターンの代わりに数十個の条件分岐を使う
- 特にコード品質の問題は、開発者とアーキテクトが「動くがひどい」コードに陥らないよう、継続的に注意を払うべき領域であることを強調している
- したがってチームメンバーは、単体テスト、アーキテクチャ適合性関数、その他の実証済みのガバナンスおよび検証技法といった優れたエンジニアリング実践に、より注力する必要がある
- これは、AI が複雑さによってコードベースを暗号化するのではなく、取り組みを支援していることを確認するためである
Rust is anything but rusty - Rust は決して錆びていない
- Rust は徐々に好まれるシステムプログラミング言語になりつつある
- 毎回の Radar セッションで、Rust は会話の文脈の中で繰り返し登場する
- 議論される多くのツールが Rust で書かれている
- Rust は、古いシステムレベルのユーティリティを置き換えたり、性能向上のためにエコシステムの一部を書き直したりする際に好まれる言語である
- Rust ベースのツールに最もよく付けられる形容は「驚異的に高速」であるようだ
- たとえば Python エコシステムには、著しく優れた性能を実現するための Rust ベースの代替があるツールがいくつも存在する
- 言語設計者とコミュニティは、先行言語の多くの落とし穴よりも少ない落とし穴で優れた実行速度を提供しつつ、中核 SDK、ライブラリ、開発ツールから成る非常に好ましいエコシステムを築くことに成功した
- チームの多くが Rust のファンであり、Rust を使う開発者の大半も Rust を高く評価しているように見える
WASM の漸進的な台頭
- WASM(WebAssembly) はスタックベースの仮想マシン向けバイナリ命令形式である
- ほとんどの開発者の関心事に対しては難解で低レベルに聞こえるが、人々はその意味を理解している。すなわち、ブラウザのサンドボックス内で複雑なアプリケーションを実行できる能力である
- WASM は既存の JavaScript 仮想マシン内で実行できるため、開発者は、以前はネイティブフレームワークや拡張でしか実装できなかったアプリケーションをブラウザに組み込めるようになる
- 主要4ブラウザ(Chrome、Firefox、Safari、Edge) は現在 WASM 1.0 をサポートしており、高度で移植可能かつクロスプラットフォームな開発に向けた興味深い可能性を開いている
- この数年にわたりこの標準を大きな関心を持って見守ってきたが、いまや正当なデプロイ対象としてその力を発揮し始めていることを喜ばしく思う
生成 AI ツールのカンブリア爆発
- 過去数冊の Radar で示されていた軌跡を踏まえれば、生成 AI が私たちの議論で目立って取り上げられることは予想していた
- それでも私たちは、言語モデルを支える技術エコシステムの爆発的拡大に依然として驚かされた:
- ガードレール、評価、エージェント構築ツール、構造化出力処理のためのフレームワーク、ベクトルデータベース、クラウドサービス、オブザーバビリティツール
- この急速で多様な成長は、多くの面で完全に理解できる
- 初期体験、すなわち自然言語プロンプトを言語モデルに与えるという単純さは、ソフトウェア製品エンジニアリングへとつながった
- これは、人々が ChatGPT に最初のプロンプトを送ったあとに抱いた夢や誇張された主張には及ばないかもしれないが、私たちは多くの顧客のもとで生成 AI の賢明で生産的な利用を目にしており、これらすべてのツール、プラットフォーム、フレームワークは、LLM ベースのソリューションを本番投入するうえで重要な役割を果たしている
- 2015年ごろの JavaScript エコシステムの爆発と同様に、この混沌とした成長はしばらく続くと予想される
[Techniques]
Adopt
-
1% canary
- カナリアデプロイを使って、新しいソフトウェアバージョンへの初期フィードバックを促し、リスクを低減する
- 新機能をユーザーの 1% にロールアウトする技法であり、チームはフィードバックを収集し、影響を観察し、必要に応じて対応できる
- モバイルアプリやエッジコンピューティングデバイス、ソフトウェア定義車両などの大規模デプロイに重要
-
Component testing
- テスト自動化は効果的なソフトウェア開発の礎である
- フロントエンドテストに焦点を当てて、安定性と速度を確保する
- コンポーネントテストには jsdom を使い、メモリ上で実行する
- エンドツーエンドテストにはブラウザツールを使う
-
Continuous deployment
- 可能な限り継続的デプロイの実践を採用する
- 自動化テストを通過したすべての変更を自動的に本番環境へデプロイする
- 迅速なフィードバックループと、顧客への素早い価値提供が可能になる
- 必要な成熟度を達成するためのロードマップを示した Valentina Servile の著書 "Continuous Deployment" を参照
-
Retrieval-augmented generation (RAG)
- 大規模言語モデルの応答品質を改善するための有力なパターン
- Jugalbandi AI プラットフォームなどのプロジェクトで成功裏に使われている
- 関連性が高く信頼できる文書の情報をデータベースに保存する
- プロンプトに関連する文書を検索して補強し、豊かなコンテキストを提供する
- より良い出力品質を生み出し、ハルシネーションを大幅に減らす
Trial
-
Domain storytelling
- ドメイン駆動設計(DDD) は私たちのソフトウェア開発アプローチの基盤となっている
- 多くのチームにとって DDD の開始は難しい
- ドメインストーリーテリングは、初期ドメインモデル開発の代替または補完策である
- ビジネス専門家の活動説明を図式化し、共有理解を明確にする
-
Fine-tuning embedding models
- 検索拡張生成に基づく LLM アプリを構築する際、埋め込みの品質は検索と応答に直接影響する
- 特定のタスクやドメインに対する埋め込みの精度と適切性を高められる
- ドメイン特化型 LLM アプリで精密な情報抽出が重要な場合、私たちのチームは埋め込みのファインチューニングを行う
- このアプローチの長所と短所を検討する必要がある
-
Function calling with LLMs
- 与えられたクエリと関連文書に基づいて、LLM が適切な関数を判断して呼び出す機能
- LLM がテキスト生成以上の機能を実行できるように拡張する
- 関数や API のトリガーを通じて、LLM は以前は独立した機能の範囲を超えていた作業を実行できる
- LLM は内部システムやデータベースに接続したり、ブラウザ経由でインターネット検索を行ったりすることも可能である
- 検索拡張生成とエージェントアーキテクチャの文脈で理解すべき抽象パターン
-
LLM as a judge
- 大規模データセットに対する質問に基づいて回答を提供できるシステムを構築しても、その回答にどう到達したかを追跡するのは難しい
- LLM を使って別のシステム(LLM ベースである場合もある) の応答を評価する
- 商品カタログの検索結果の関連性評価や、LLM ベースのチャットボットのユーザー誘導の方向性評価に使われる
- 評価者システムの慎重な設定と較正が必要である
- 効率向上とコスト削減につながる可能性がある
-
Passkeys
- FIDO アライアンスが主導し、Apple、Google、Microsoft が支援しており、主流での利用に近づいている
- 新しいログイン設定時にキーペアを生成し、Web サイトは公開鍵を受け取り、ユーザーは秘密鍵を保持する
- 非対称暗号を使ってログインを処理する
- ユーザーのデバイスに保存され、Web サイトには送信されない秘密鍵の所有を証明する
- Passkey へのアクセスは生体認証または PIN で保護される
- マルチプラットフォーム利用者向けに、CTAP を通じた鍵生成またはログインが必要なデバイス以外の別デバイスに Passkey を保管できる
-
Small language models
- 大規模言語モデル(LLM)は有用だが、その規模ゆえに問題が生じる可能性がある
- プロンプトへの応答に多くの計算資源を必要とするため、遅く高価になる
- モデルが専用で大規模なため、サードパーティのクラウドでホスティングする必要があり、機密データに問題が生じる
- ほとんどの場合、モデルの学習コストが過度に高い
- RAGパターンによりベースモデルの学習やファインチューニングの必要性は解決できるが、コストやプライバシーの問題は依然として残る
- Small language model(SLM)への関心が高まっている
- 重みと精度がより少ない(一般的に35億〜100億パラメータ)
- 適切なコンテキストで正しく設定されれば、LLMと同等またはそれ以上の性能を発揮できる
- サイズが小さいためエッジデバイスで実行可能
- GoogleのGemini Nano、MicrosoftのPhi-3シリーズなど、急速に進化している分野
- 大規模言語モデル(LLM)は有用だが、その規模ゆえに問題が生じる可能性がある
-
Synthetic data for testing and training models
- 機密性が高い、またはアクセスが制限されたデータソースに依存せず、実際のシナリオを模倣できる人工データの生成を含む
- 構造化データセット向けの合成データは広く研究されている
- 非構造化データ向けの合成データの再利用が増加
- 特に、LLMの学習またはファインチューニング用のラベル付きドメイン特化データが不足している企業で有用
- BonitoやMicrosoftのAgentInstructのようなツールは、テキスト文書やコードファイルなどの生データソースから合成インストラクション調整データを生成できる
- 手作業によるデータキュレーションへのコストと依存を減らしつつ、モデル学習を加速する
- 不均衡または希薄なデータの問題を解決するための合成データ生成も重要なユースケース
- 不正検知や顧客セグメンテーションのようなタスクで一般的
- SMOTEのような技術は、少数クラスのインスタンスを人工的に生成してデータセットのバランスを取る
- 金融のような業界では、GANを使ってまれな取引をシミュレーションし、モデルがエッジケースの検知に強くなるようにして全体的な性能を向上させる
-
Using GenAI to understand legacy codebases
- 生成AI(GenAI)と大規模言語モデル(LLM)は、開発者がコードを記述し理解するのを支援する
- 特に、ドキュメントが不十分、古い、または誤解を招くレガシーコードベースで有用
- レガシーコードベースの理解にGenAIを活用する技術と製品はさらに進化している
- 特にメインフレームのモダナイゼーションに向けたリバースエンジニアリング作業の支援で成功裏に使われている
- コードベースに関するナレッジグラフから情報検索を行う検索拡張生成(RAG)アプローチが有望
- ナレッジグラフは、LLMがテキストコードから導き出せる以上の構造的な情報をコードベースについて保持できる
- 自己説明性や凝集性に欠けるレガシーコードベースで特に役立つ
- 既存文書やAI生成文書、外部依存関係、ビジネスドメイン知識などでグラフをさらに強化し、AIの作業を容易にする機会もある
Assess
-
AI team assistants
- AIコーディング支援ツールは主に、個々の担当者の作業を支援・強化する文脈で議論されてきた
- しかし、ソフトウェア提供はこれまでもこれからもチームワークであるため、10倍エンジニアではなく10倍チームの実現を助けるAIチームアシスタントをどう作るかを考える必要がある
- 最近のツール市場の進展により、これを現実にするまであと一歩のところまで来ている
- Unblockedは、チームのあらゆる知識ソースを統合し、チームメンバーのツールに知的に組み込むプラットフォーム
- AtlassianのRovoは、最も広く使われているチームコラボレーションプラットフォームにAIを導入し、文書への新しいタイプの検索とアクセスを提供する
- 私たちは、知識増幅とチームの実践支援に向けたAIの可能性を自ら探求している
- Haivenチームアシスタントをオープンソースで提供し、要件分析のような非コーディング業務に対するAI支援から学習を始めている
-
Dynamic few-shot prompting
- few-shotプロンプティングに基づき、モデルの応答を導くため特定の例をプロンプトに動的に含める
- これらの例の数と関連性を調整することで、コンテキスト長と関連性を最適化し、モデルの効率と性能を改善する
- scikit-llmのようなライブラリは、ユーザーのクエリに一致する最も関連性の高い例を取得するために最近傍探索を用いてこの技術を実装している
- モデルの限られたコンテキストウィンドウをより有効に活用し、トークン消費を削減する
- オープンソースのSQLジェネレーターvannaは、応答精度の向上のために動的few-shotプロンプティングを活用している
-
GraphQL for data products
- データプロダクトの出力ポートとしてGraphQLを利用し、クライアントがプロダクトを利用する技術
- GraphQLを使って基盤データの複雑さを抽象化し、クライアントにより一貫性があり管理しやすいインターフェースを提供する統合APIレイヤーを作る
- データプロダクトでGraphQLを使うと、利用者はGraphQLスキーマを通じてデータ形式と関係性をシームレスに把握でき、使い慣れたクライアントツールを利用できる
- 私たちのチームは、LLMの助けを借りてビッグデータの洞察を探索・発見する特定のユースケースでこの技術を検討している
- LLMがユーザープロンプトと参照用GraphQLスキーマに基づいてGraphQLクエリを構築する
-
LLM-powered autonomous agents
- AutogenやCrewAIのようなフレームワークの登場により、単一エージェントおよび静的なマルチエージェントシステムを超えて進化している
- 複雑な活動を複数の小さなタスクに分解し、各エージェントに特定の役割を割り当てて実行させる技術
- 開発者はタスク実行のための事前構成済みツールを使い、エージェントは相互に対話しながらフローを調整できる
- まだ初期開発段階にあり、私たちのチームはエージェントが連続ループに陥る、または制御不能な動作をするといった問題に直面している
- LangGraphのようなライブラリは、フローをグラフとして定義できる機能により、エージェント間相互作用をより強く制御できるようにする
- この技術を利用する際は、タイムアウトや人間による監督を含むフェイルセーフ機構の実装を推奨する
-
Observability 2.0
- 従来の異種混在の監視ツールから、単一のデータストアにある構造化され高カーディナリティなイベントデータを活用する統合アプローチへの移行
- 豊富で生のイベントを詳細なメタデータとともに収集し、包括的な分析のための単一の信頼できる情報源を提供する
- イベントを生の形式で保存することで相関付けを簡素化し、リアルタイム分析とフォレンジック分析を支援し、複雑で分散したシステムへのより深い洞察を可能にする
- 高解像度の監視と動的な調査機能を提供する
- パフォーマンスのボトルネックなしに詳細な検査を行えるよう、高カーディナリティかつ高次元のデータ取得を優先する
- 統合データストアは複雑さを減らし、システム挙動の一貫したビューを提供し、オブザーバビリティの実践をソフトウェア開発ライフサイクルとより密接に整合させる
-
On-device LLM inference
- いまやWebブラウザやスマートフォン、ノートPCのようなエッジデバイス上で大規模言語モデル(LLM)を実行できる
- クラウドへ送信せずに機密データを安全に処理でき、エッジコンピューティングやリアルタイム画像・動画処理のようなタスクで非常に低いレイテンシを提供し、ローカルで計算を行うことでコストを削減し、インターネット接続が不安定または利用できない場合でも機能を提供する
- 研究開発が活発な分野であり、以前にはAppleシリコン上で効率的な機械学習を行うためのオープンソースフレームワークMLXが注目された
- Transformers.jsやChattyのような新しいツールも登場している
- Transformers.jsはONNX Runtimeを使ってブラウザでTransformerを実行できる(PyTorch、TensorFlow、JAXから変換されたモデルをサポート)
- ChattyはWebGPUを活用してLLMをブラウザ上でネイティブかつプライベートに実行し、機能豊富なAI体験を提供する
-
LLMからの構造化出力
- 言語モデルの応答を定義済みのスキーマに制限する実践を意味する
- 汎用モデルに特定の形式で応答するよう指示するか、JSONのような「基本」出力向けにモデルをファインチューニングすることで実現できる
- OpenAIは現在、構造化出力をサポートしており、開発者はJSON Schema、pydantic、またはZodオブジェクトを与えることでモデル応答を制限できる
- 関数呼び出し、API連携、外部統合などで、正確性とフォーマット準拠が重要な場合に特に有用
- コードとのインターフェース方法の改善だけでなく、チャート描画用のマークアップ生成のような幅広いユースケースも支援する
- モデル出力におけるハルシネーションの可能性を減らすのにも役立つ
Hold
-
AI生成コードへの過信
- GitHub CopilotやTabnineのようなAIコーディングアシスタントは非常に人気が高い
- StackOverflowの2024年開発者調査によると、「全回答者の72%が開発のためのAIツールに好意的、または非常に好意的」としている
- 私たちもその利点は認識しているが、コード品質に与える中長期的な影響については警戒しており、開発者に対してAI生成コードへの過度な安心感に注意を促している
- 数回の良い体験の後では、AIの提案をレビューする際の警戒心を緩めやすい
- GitClearの研究によれば、コードベースがより速く肥大化する傾向が見られ、これはより大きなプルリクエストと一致しているのではないかと疑われる
- GitHubのこの研究では、言及されているプルリクエストのマージ率15%増加が本当に良いことなのか、それとも人々がAIの結果を信頼しすぎて、より大きなプルリクエストをより早くマージしているだけなのかという疑問がある
- 私たちは今でも1年前に示した基本的な「導入時」の助言を使っており、自動化バイアス、サンクコストの誤謬、アンカリング、レビュー疲れに注意すべきだとしている
- また、プログラマーはAIをどこで、いつ使い、いつ信用すべきでないかについて、良いメンタルフレームワークを育てるべきでもある
-
全社的な統合テスト環境
- 一般的だが無駄の多い慣行であり、あらゆるものを遅くしてしまう
- 複製が難しく、開発のボトルネックとなる貴重な資源になりがちである
- 環境間で避けられないデータ不整合や設定オーバーヘッドのため、誤った安心感を与える
- 代替案(一時的環境や複数のオンプレミステスト環境)に対する一般的な反対理由は、皮肉にもコストである
- しかし、全社統合テスト環境によって生じる遅延コストは考慮されていない
- 開発チームが他チームの完了や依存システムの新バージョンのデプロイを待つ間に発生する
- その代わりに、チームは一時的環境を使い、実際のレプリカの代わりにフェイクやスタブを用いて、開発チームが所有するテストセットを低コストで立ち上げて破棄できるようにすべきである
- この代替案を支える他の技術として、契約テスト、デプロイとリリースの分離、平均復旧時間、そして本番テストへの重視が挙げられる
-
LLMの禁止
- 職場で包括的なLLM禁止を制定するのではなく、承認済みAIツール群へのアクセス提供に重点を置くべきである
- 禁止しても、従業員が未承認で潜在的に安全でない回避策を探すだけである
- パーソナルコンピュータ初期と同様に、人は障壁にかかわらず、自分が有効だと感じるツールを使って仕事を進める
- 安全で保証された代替手段を提供しなければ、企業は従業員が未承認のLLMを使うことで、知的財産、データ漏えい、責任リスクを招くことになる
- その代わりに、安全で企業承認済みのLLMやAIツールを提供すれば、安全性と生産性の両方を確保できる
- 適切に管理されたアプローチにより、組織はデータプライバシー、セキュリティ、コンプライアンス、コストの問題を管理しながら、従業員にLLMの能力を活用させることができる
- 最良の場合、AIツールへの適切に管理されたアクセスは、職場でAIをどう使うのが最善かについての組織学習を加速できる
-
ペアプログラミングをAIで置き換えること
- コーディングアシスタントについて語るとき、ペアプログラミングの話題は避けて通れない
- 私たちの職業は、ペアプログラミングと愛憎入り混じる関係にある
- それを強く支持する人もいれば、耐えられないと感じる人もいる
- 今やコーディングアシスタントは、人間が他の人間の代わりにAIと組んで、チームに対して同じ結果を得られるのかという疑問を提起している
- GitHub Copilotは自らを「あなたのAIペアプログラマー」とさえ呼んでいる
- 私たちは、コーディングアシスタントがペアプログラミングの一部の利点を提供できるとは考えるが、AIでペアプログラミングを完全に置き換えることは推奨しない
- コーディングアシスタントをペアプログラマーと見なすと、ペアリングの主要な利点の1つである、個々の貢献者ではなくチーム全体をより良い方向へ導く点を見落とすことになる
- コーディングアシスタントは、行き詰まりの解消、新技術の学習、オンボーディング、あるいは戦術的な作業をより速く進めて戦略的設計に集中できるようにすることに役立つ
- しかし、進行中の作業を少なく保つこと、引き継ぎや再学習を減らすこと、継続的インテグレーションを可能にすること、共同コード所有権を改善することなどのチーム協業上の利点には寄与しない
[Platforms]
Adopt : なし
Trial
-
Databricks Unity Catalog
- Lakehouseのファイル、テーブル、MLモデルのような資産のためのデータガバナンスソリューションである
- 外部ストレージやDatabricks管理下のデータを管理・クエリするために使える、管理型のオープンソースソリューションである
- ガバナンス、メタストア管理、データ検索を統合的に支援し、複数ツールを管理する必要性を減らせる利点がある
- Databricks管理型Unity Catalogには自動災害復旧がないことが欠点として確認された
- チーム側でバックアップおよび復旧機能を自前で構成する必要があった
- 中央集権的なソリューションだが、個々のチームが自分たちの資産を管理できるよう権限委譲が可能である
-
FastChat
- 大規模言語モデルの学習、サービング、評価のためのオープンプラットフォームである
- 複数のモデル(Llama 3.1、Mistral 7B、Llama-SQLなど)をOpenAI API形式で一貫してホスティングできる
- コントローラー・ワーカーアーキテクチャを使って、さまざまなモデルを複数のワーカーでホスティングする
- vLLM、LiteLLM、MLXなど多様なワーカータイプをサポートする
- ユースケースに応じて異なる種類のFastChatモデルワーカーを作成し、拡張できる
- 開発者IDEのコード提案は低レイテンシが必要なため、複数ワーカーへスケールさせる
- Text-to-SQLは需要が低く、複数ワーカーは不要である
- A/Bテストに活用できる
- 同一モデルに異なるハイパーパラメータ値を設定して最適値を特定できる
- ライブサービスでのモデル切り替え時に、無停止マイグレーションを検証できる
-
GCP Vertex AI Agent Builder
- 自然言語またはコードファーストのアプローチでAIエージェントを作成できる柔軟なプラットフォームである
- サードパーティーコネクタを通じて企業データとシームレスに統合される
- AIエージェントの構築、プロトタイピング、デプロイに必要なすべてのツールを提供する
- 開発者は最小限の設定でエージェントを迅速にプロトタイプし、複雑なデータ処理を扱うことができる
- 構造化/非構造化データを効率的に扱うナレッジベースや自動化された支援システムの構築に有用である
-
Langfuse
- LLMベースのアプリケーションの可観測性、モニタリング、評価のためのツールである
- トレーシング、分析、評価機能を通じて、完了結果の性能と正確性を分析できる
- コストとレイテンシを管理し、本番環境での利用パターンを理解することで、データに基づく改善が可能になる
- リクエスト・レスポンスの流れと中間段階の完全なトレーサビリティを提供する計測データを活用する
- RAGおよびLLMベースの自律エージェントと併用できる
- 低スコアの会話トレースを分析することで、アーキテクチャのどこを改善すべきか特定できる
-
Qdrant
- Rustで書かれたオープンソースのベクトル類似検索エンジン兼データベースである
- 多様なテキストおよびマルチモーダルな高密度ベクトル埋め込みモデルをサポートする
- MiniLM-v6やBGEのようなオープンソース埋め込みを、複数の製品ナレッジベースに活用できる
- マルチテナンシーをサポートするエンタープライズ向けベクトルストアとして利用される
- ベクトル埋め込みを別個のコレクションとして保存し、各製品のナレッジベースを分離する
- ユーザーアクセスポリシーはアプリケーション層で管理される
-
Vespa
- オープンソースの検索エンジンおよびビッグデータ処理プラットフォーム
- 低レイテンシと高スループットが必要なアプリケーションに適している
- 複数の検索技術を用いたハイブリッド検索を実装できる
- 多様なメタデータの効率的なフィルタリングとソートをサポートする
- 多段階ランキングを実装できる
- ドキュメントごとに複数のベクトルを重複なくインデックス化できる
- 複数のインデックス済みフィールドから一度にデータを検索できる
Assess
-
Azure AI Search
- ナレッジベースなどのアプリケーション向けに、構造化/非構造化データを処理するクラウドベースの検索サービス
- キーワード、ベクトル、ハイブリッド検索など、さまざまな種類の検索をサポートする
- PDF、DOC、PPT など一般的な非構造化データ形式を自動で取り込み、検索可能なコンテンツを生成できる
- Azure OpenAI など他の Azure サービスと統合されており、最小限の手動統合でアプリケーションを構築できる
- Azure 環境でホストされるプロジェクトに適しており、安定したパフォーマンスを示す
- カスタムスキルを通じて特定のデータ処理ステップを定義できる
-
Databricks Delta Live Tables
- 信頼性が高く、保守しやすく、テスト可能なデータ処理パイプラインを構築するための宣言的フレームワーク
- 宣言的アプローチでデータ変換を定義し、基盤インフラとデータフローを自動管理する
- 強力なモニタリング機能を提供し、データパイプライン全体の DAG を視覚的に表現する
- データリネージと依存関係の追跡に有用
- Databricks エコシステムと深く統合されているため、インターフェースのカスタマイズに制約がある場合がある
-
Elastisys Compliant Kubernetes
- 医療、金融、政府など、高度に規制された業界向けの特化型 Kubernetes ディストリビューション
- 自動化されたセキュリティプロセスを提供する
- マルチクラウドおよびオンプレミスをサポートする
- ゼロトラスト・セキュリティアーキテクチャを基盤として構築されている
- GDPR、HIPAA などの法令や ISO27001 のような統制への準拠が組み込まれている
-
FoundationDB
- 2015 年に Apple が買収し、2018 年にオープンソース化されたマルチモデルデータベース
- 厳密な直列化可能トランザクションを提供する分散 Key-Value ストアが中核
- 書き込みホットスポットを防ぐスマートなデータ分散や、新しいストレージエンジンなどの主要な改善が行われている
- アンバンドルドアーキテクチャにより、クラスターのさまざまな部分を独立してスケールできる
- 幅広い機能を備えているにもかかわらず、大規模クラスターの運用が容易
-
Golem
- 耐久性のあるコンピューティングのために明示的な状態機械アーキテクチャを採用した分散コンピューティングプラットフォーム
- 長時間実行されるマイクロサービスの Saga や AI エージェントオーケストレーションのワークフローに適している
- WebAssembly コンポーネントをサポート対象のあらゆる言語で記述できる
- 決定論的で、高速な起動時間をサポートする
-
Iggy
- Rust で書かれた永続的メッセージストリーミングプラットフォーム
- 複数のストリーム、トピック、パーティションをサポートする
- At-most-once 配信、メッセージ有効期限、QUIC/TCP/HTTP プロトコルでの TLS サポートなどを提供する
- 単一サーバーで高い読み書きスループットを達成する
- クラスタリングと io_uring のサポートが予定されており、Kafka の代替となる可能性がある
-
Iroh
- IPFS を発展させた分散ファイルストレージおよびコンテンツ配信システム
- 最大ブロックサイズの制限がなく、範囲ベースのセット照合によるデータ同期メカニズムを提供する
- WASM を通じたブラウザーサポートがロードマップに含まれている
- iroh.network を通じてクラウドサービスを利用できる
- 多様な言語向け SDK を提供し、IPFS よりもユーザーフレンドリー
-
Large vision model (LVM) platforms
- 動画ストリームや画像のセグメンテーション、合成、再構成、分析が可能な大規模ビジョンモデルプラットフォーム
- 拡散モデルや標準的な CNN と組み合わせて利用できる
- 本番環境への適用に関して課題が存在する
- 学習データの収集、オブジェクトのセグメンテーションとラベリング、モデルのファインチューニングなど
- V7、Nvidia Deepstream SDK、Roboflow などのツールが、こうした課題の解決に向けて登場している
- Deepstream と Roboflow は、動画ストリーム管理向けの GUI と API を統合して提供する
-
OpenBCI Galea
- ブレイン・コンピューター・インターフェース(BCI)向けの非侵襲型技術プラットフォーム
- EEG などの電気生理学的信号を使い、脳インプラントよりもリスクの低い代替手段を提供する
- VR ヘッドセット機能と BCI を組み合わせた OpenBCI の最新製品
- 時間同期された生理学的データストリーム、空間位置センサー、視線追跡を提供する
- Unity や Unreal でセンサーデータを利用できる
- オープンソースプラットフォームとして提供され、研究者によるイノベーションを支援する
-
PGLite
- PostgreSQL データベースの WASM ビルド
- Linux 仮想マシンなしで Web ブラウザー上で直接実行できる
- メモリ内の一時データベース生成、または indexedDB を通じたディスク永続化を提供する
- Electric と組み合わせることで、PostgreSQL ベースのリアクティブなローカルファーストアプリケーションを構築できる
-
SpinKube
- Kubernetes 上の WebAssembly 向けオープンソースサーバーレスランタイム
- WebAssembly のミリ秒単位の起動時間により、オンデマンドワークロード向けにより動的で柔軟なサーバーレスソリューションを提供する
- WebAssembly ベースのワークロードの開発とデプロイを簡素化する
-
Unblocked
- SDLC 資産およびアーティファクトの検索ツール
- ALM およびコラボレーションツールと統合され、コードベースと関連リソースの理解を支援する
- コードに対して即時かつ関連性の高いコンテキストを提供し、複雑なシステムの探索と理解を容易にする
- エンジニアリングチームが、作業に関連する議論、資産、ドキュメントに安全にアクセスできる
- 経験豊富なチームメンバーの知識を蓄積・共有し、すべてのメンバーが活用できるようにする
Hold : なし
[Tools]
Adopt
-
Bruno
- Bruno は、API テスト、開発、デバッグ向けの Postman と Insomnia のオープンソース・デスクトップ代替ツール
- シンプルなオフライン専用設計により、優れたコラボレーション、プライバシー、セキュリティを提供することを目指している
- コレクションは、独自のプレーンテキストマークアップ言語である Bru Lang で記述され、ファイルシステムに直接保存されるため、Git や任意のバージョン管理ツールで共有して共同作業できる
- デスクトップアプリと CLI ツールとして利用でき、公式の VS Code 拡張機能を提供しており、さらに他の IDE サポートも計画している
- 複数の Thoughtworks チームのデフォルトの選択肢になっているが、VPN やプロキシ環境で作業する際に予期せず失敗するリクエストが報告されているため注意が必要
-
K9s
- K9s は、より詳細なグラフとビューを統合して可視化機能を改善した
- ログとメトリクスをより適切に表現し、カスタムリソース(CRD)をより柔軟に表示できるようになった
- Pod に対する操作が拡張され、デバッグツール(例:
kubectl debug)との統合が強化され、マルチクラスター環境へのサポートも向上した - CRD へのサポートが大幅に改善され、これらのリソースをより適切に探索・管理できるようになり、カスタムリソースとのやり取りもよりスムーズになった
- ショートカットパネルも改善され、
kubectlに不慣れな開発者でもより使いやすくなった - K9s は当初、主に DevOps チームに焦点を当てていたため、これは重要な改善である
-
SOPS
- SOPSは、KMSで暗号化するさまざまなファイル形式をサポートする暗号化ファイルエディタである
- 秘密管理について、私たちの助言は常にソースコードから分離することだった
- しかし、インフラコードの精神に基づく完全自動化と、シードシークレットの管理・投入・ローテーションのためにいくつかの手動ステップ(Vaultのようなツールを使うなど)を伴う方法との間で選択しなければならないとき、チームはしばしばトレードオフに直面する
- たとえば、私たちのチームはインフラのブートストラップ用シード認証情報を管理するためにSOPSを使用している
- しかし状況によっては、レガシーなコードリポジトリから秘密情報を取り除けないこともある
- そのような場合、SOPSを使ってテキストファイル内の秘密情報を暗号化する
- SOPSは、暗号鍵のソースとしてAWSおよびGCPのKey Management Service (KMS)、またはAzure Key Vaultのようなクラウド管理型キーストアと統合できる
- また、クロスプラットフォームで動作し、PGPキーもサポートしている
- コードリポジトリで秘密情報を管理する必要があるとき、私たちの複数のチームではSOPSがデフォルトの選択肢になっている
-
Visual regression testing tools
- 私たちは以前にも視覚的リグレッションテストツールを取り上げており、アルゴリズムが生のピクセル単位の比較から、高度なパターンマッチングや光学文字認識(OCR)へと進化する様子を見てきた
- 初期の視覚的リグレッションテストツールは多くの偽陽性を生み、インターフェースが安定した開発後期でしか有用ではなかった
- BackstopJSは、セレクタとビューポートを設定してページの特定要素に対して正確に視覚テストを行うことで、この問題を回避している
- しかし機械学習によって、視覚要素が移動したり動的コンテンツを含んだりする場合でも、視覚要素をより正確に検出して比較しやすくなった
- こうしたツールはますます有用になっており、AIと機械学習の最新の発展を活用するのに適した位置にある
- ApplitoolsやPercyのようないくつかの商用ツールは、現在では視覚的リグレッションテストにAIを使っていると主張している
- 私たちのチームの1つはApplitools Eyesを広範に利用しており、その結果に満足している
- 視覚的リグレッションテストは、適切に書かれたエンドツーエンドの機能テストを置き換えることはできないが、テストツールボックスへの価値ある追加である
- 私たちは、包括的なUIテスト戦略の一要素として安全なデフォルトの選択肢になったため、これを採用している
-
Wiz
- Wizは、多くのプロジェクトでクラウドセキュリティプラットフォームとして選ばれている
- 私たちのチームは、変更を継続的に検査することで、類似ツールよりもリスクや脅威をより迅速に検出できる点を高く評価している
- Wizは、本番環境にデプロイされていない成果物(コンテナイメージ、インフラコード)と、本番ワークロード(コンテナ、VM、クラウドサービス)の両方において、設定ミス、脆弱性、漏えいした秘密情報を検出して警告できる
- 私たちはまた、開発チームと経営層の双方に向けた強力なレポート機能も高く評価している
- この分析は、脆弱性が特定のサービスにどのような影響を与えうるかを理解し、その状況に応じて問題を解決する助けになる
Trial
-
AWS Control Tower
- AWS Control Towerは、マルチチーム環境でAWSアカウントを管理するための最良の選択肢であり続けている
- 新しいランディングゾーンに自動適用されるセキュリティおよびコンプライアンスの統制を事前設定できる便利な仕組みを提供する
- これは「変更時点でのコンプライアンス」の例であり、新しいインフラが作成されるたびに統制が適用・検証されるため、後から手動のコンプライアンスチェックを行う必要がない
- AWS Control Tower Account Factory for Terraform(AFT)は前回のボリューム以降も進化を続けており、現在ではより多くのAWSリージョンで利用できる
- AFTを使うと、インフラコードのパイプラインによってControl Towerアカウントをプロビジョニングできる
- 私たちは、AFTがWebhookを送信したり特定のアクションを実行したりするようカスタマイズでき、GitHub Actionsのような外部ツールと安全かつ確実に統合できる点を気に入っている
- 私たちのチームはAWS Control Towerを使ったアカウント管理で大きな成果を得ているが、改善の余地があるときにはAWSがこのプロジェクトへのコミュニティ貢献を受け入れてくれることを望んでいる
-
CCMenu
- 継続的インテグレーションを実践するチームにとって、中央ビルドの状態を継続的インテグレーション(CI)システムから把握できることは重要である
- パンデミック以前は、チームルームの大型テレビ画面に表示されたダッシュボードがこの情報をひと目で提供していた
- リモートワークが継続する中、個々の開発者のワークステーションで動作するソリューションが必要になった
- Macでは、その隙間をThoughtworkerが作成した小さなアプリであるCCMenuが埋めている
- もともとCruiseControlの一部だったこのアプリは、JenkinsやTeamCityを含め、cctray形式で情報を提供できるあらゆるサーバーで動作する
- 最近の書き直しによってGitHub Actionsのサポートが追加され、より多くのCIサーバーや認証方式との、より深い統合への道が開かれた
-
ClickHouse
- ClickHouseは、リアルタイム分析のためのオープンソースのカラム指向オンライン分析処理(OLAP)データベースである
- 2009年に実験プロジェクトとして始まり、高性能で線形にスケールする分析データベースへと成熟した
- 効率的なクエリ処理エンジンとデータ圧縮機能により、事前集計なしでインタラクティブなクエリを実行するのに適している
- ClickHouseは、OpenTelemetryデータを保存するのに適した選択肢である
- Jaegerとの統合により、大量のトレースデータを保存し、効率的に分析できる
-
Devbox
- 開発ツールが進化しているにもかかわらず、多くのチームにとって一貫したローカル開発環境の維持は依然として課題である
- 新しいエンジニアをオンボーディングするには、しばしばさまざまなシステムで予測不能に失敗する可能性のあるコマンドやカスタムスクリプトを実行する必要があり、それが不整合を生むことがある
- この問題に対処するため、私たちのチームはますますDevboxに依存するようになっている
- Devboxは、仮想マシンやコンテナを使わずにNixパッケージマネージャーを活用し、再現可能でプロジェクト固有のローカル開発環境を作るための扱いやすいインターフェースを提供するコマンドラインツールである
- コードベースに対して一度設定すれば、新しいデバイス上で定義済み環境を再現するのに必要なのは1つのCLIコマンド(
devbox shell)だけであり、オンボーディングのワークフローを大幅に簡素化する - Devboxは、シェルフック、カスタムスクリプト、
devcontainer.jsonの生成をサポートしており、VSCodeとの統合が可能である
-
Difftastic
- Difftasticは、構文を認識する形でコードファイル間の差分を強調表示するツールである
- これはUnixの
diffコマンドのようなテキスト差分ツールとはかなり異なる - たとえばDifftasticは、JavaやTypeScriptのようにセミコロンで区切られる言語において、長い文を分割するために挿入された改行を無視する
- このツールは、プログラムの構文に影響を与える変更だけを強調表示する
- そのために、まずファイルを抽象構文木として構文解析し、その後ダイクストラアルゴリズムを使って木同士の距離を計算する
- 私たちは、大規模なコードベースをレビューするとき、変更内容を理解するうえでDifftasticが特に有用だと感じている
- Difftasticは、パーサーが利用できるあらゆるプログラミング言語で使用でき、標準で50以上のプログラミング言語と、CSSやHTMLのような構造化テキスト形式をサポートしている
- これは新しいツールではないが、人間が関与するレビューの重要性がますます高まるLLMコーディングアシスタントの時代において、注目に値すると私たちは考えている
-
LinearB
- ソフトウェアエンジニアリング・インテリジェンス・プラットフォームであるLinearBは、エンジニアリングリーダーに対し、継続的改善を支援するデータ駆動のインサイトを提供する
- ベンチマーキング、ワークフロー自動化、開発者体験と生産性向上への重点投資といった主要領域を整合させる
- LinearBを使用した経験は、エンジニアリングチーム内で改善と効率性の文化を醸成する能力を強調している
- 私たちのチームはこのプラットフォームを使って中核的なエンジニアリング指標を追跡し、改善が必要な領域を特定し、エビデンスベースの施策を実装した
- これらの機能は、ベンチマーキング、メトリクス収集の自動化、データ駆動の改善の実現というLinearBの中核的な価値提案とよく一致している
- LinearBはソースコード、アプリケーションライフサイクル、CI/CD、コミュニケーションツールと統合され、事前設定済みのエンジニアリング指標とカスタムエンジニアリング指標を用いて、開発者体験、生産性、チーム成果に関する包括的な定量的インサイトを提供する
- DORAの推進者として、私たちはLinearBがこれらの特定指標を重視し、効率改善に不可欠なソフトウェアデリバリー性能の主要側面を測定する能力を高く評価している
- 歴史的に、チームはDORA固有の指標収集に苦労しており、しばしば複雑なカスタムダッシュボードや手動プロセスに依存してきた
- LinearBは、これらの指標の追跡を自動化し、開発者体験、生産性、予測可能性に関する先回りした意思決定を支えるリアルタイムデータを提供する魅力的なソリューションであり続けている
-
pgvector
- pgvectorはPostgreSQL向けのオープンソースのベクトル類似検索拡張で、単一の適切に構成されたデータベース内で構造化データとともにベクトルを保存できる
- 専用ベクトルデータベースの一部の高度な機能は欠くものの、ACID準拠、ポイントインタイムリカバリ、その他PostgreSQLの強力な機能の恩恵を受けられる
- 生成AIベースのアプリケーションの増加に伴い、埋め込みベクトルを保存し、類似性のために効率よく検索するパターンが増えており、pgvectorがそれを効果的に解決していることを確認している
- 特にマネージドPostgreSQLを提供するクラウドベンダーをすでに利用しているチームにおいて、プロダクション環境でのpgvector利用が増加していること、そして独立したベクトルストアを必要とせず一般的なベクトル検索要件を満たす実証済みの能力を踏まえ、私たちはpgvectorの可能性に自信を持っている
- 私たちのチームは、構造化データと非構造化データを比較するプロジェクトでこれを有効活用しており、より広範な採用可能性を示している
- したがって、私たちはpgvectorをTrial段階へ移行している
-
Snapcraft build tool
- Snapcraftは、Ubuntu、その他のLinuxディストリビューション、macOSで、snapと呼ばれる自己完結型アプリケーションをビルドおよびパッケージングするためのオープンソースのコマンドラインツールである
- snapは、Linuxコンピュータ、仮想環境、車載コンピュータシステムを含むハードウェアプラットフォーム全体にわたって容易に配布・保守できる
- Snapcraftはsnap公開のためのパブリックなアプリストアを提供しているが、私たちのチームはビルドツールを使って自動運転システムをsnapとしてパッケージ化する一方で、パブリックなアプリストアには公開していない
- これにより、組み込みソフトウェアシステムをローカルでビルド、テスト、デバッグしつつ、内部アーティファクトリポジトリへ公開できる
-
Spinnaker
- SpinnakerはNetflixが作成したオープンソースの継続的デリバリープラットフォームである
- 第一級機能として、クラスタ管理とbakedイメージをクラウドへデプロイする機能を実装している
- 私たちは、マイクロサービスをデプロイするためのSpinnakerのオピニオンatedなアプローチを気に入っている
- 以前のバージョンでは、コードとしてパイプラインを構成できない点を指摘していたが、spin CLIの追加によりこの問題は解決された
- 私たちはシンプルなCDシナリオにSpinnakerを推奨しないが、複雑な状況では、同様に複雑なデプロイパイプラインとともに、多くの人にとっての第一選択ツールになっている
-
TypeScript OpenAPI
- TypeScript OpenAPI(またはtsoa)は、コードからOpenAPI仕様を生成するためのSwaggerの代替である
- コードファーストであり、TypeScriptのコントローラとモデルを唯一の信頼できる情報源として使用し、TypeScriptでOpenAPIツールを使う際により複雑なファイルや設定を必要とする代わりに、TypeScriptのアノテーションやデコレータを使用する
- 2.0および3.0のAPI仕様の両方を生成し、Express、Hapi、Koa向けのルートを生成できる
- TypeScriptでAPIを書くのであれば、このプロジェクトは検討する価値がある
-
Unleash
- 可能な限り最もシンプルな機能トグルを使うことが、引き続き私たちの推奨アプローチであるが、チーム規模の拡大と開発の高速化により、手作業で作られたトグル管理はより複雑になっている
- Unleashは、この複雑さに対処し、CI/CDを可能にするために、私たちのチームで広く使われている選択肢である
- サービスとして利用することも、セルフホストすることもできる
- 複数言語向けのSDKを提供し、開発者体験と管理のための親しみやすいUIを備えている
- OpenFeature仕様の公式サポートはまだないが、GoとJava向けにはコミュニティが保守するプロバイダを見つけられる
- Unleashは、単純な機能トグルだけでなく、セグメンテーションや段階的リリースにも利用できるため、スケールに対応した機能管理の有力な選択肢である
Assess
-
Astronomer Cosmos
- Astronomer Cosmosは、Airflowでdbt Coreワークフローに対するよりネイティブなサポートを提供するよう設計されたAirflowプラグインである
- プラグインをインストールすると、DbtDagがdbtワークフローをラップする際にdbtノードをAirflowのタスク/タスクグループへ変換し、エンジニアがAirflow UI上でdbt依存関係グラフと実行進捗を直接可視化できる
- また、dbtプロファイルの代わりにAirflow接続を使用できるため、設定の拡散を減らせる
- Airflowでのdbtジョブをよりスムーズにできる可能性を見込み、このツールを試している
-
ColPali
- ColPaliは、ビジョン言語モデルを用いてPDF文書を検索するための新しいツールであり、画像、図表、テーブルを含むマルチメディア文書からデータを抽出できる強力な検索拡張生成(RAG)アプリケーション構築の難しさに対処する
- テキストベースの埋め込みや光学文字認識(OCR)技術に依存する既存手法とは異なり、ColPaliはPDFページ全体を処理し、テキストと視覚コンテンツの両方を考慮した埋め込みを生成するために視覚トランスフォーマーを活用する
- この包括的なアプローチは、より優れた検索だけでなく、なぜ特定の文書が検索されたのかという推論も可能にし、データ豊富なPDFに対するRAG性能を大幅に向上させる
- 私たちはColPaliを複数のクライアントとテストし、有望な結果を確認したが、この技術は依然として初期段階にある
- 特に複雑な視覚文書データを持つ組織にとっては、評価する価値がある
-
Cursor
- AI支援プログラミングツールの競争は続いており、その中でも最も目立つのがCursorである
- Cursorは、コーディングワークフローにAIを深く統合し、開発者の生産性を高めるよう設計されたAIファーストのコードエディタである
- 私たちは以前のRadar評価でCursorに注目していたが、最近のCursorの継続的な改善が質的な変化をもたらしたことは明らかである
- 私たちの利用では、Cursorは既存コードベースに基づく強力なコンテキスト推論能力を示した
- GitHub Copilotのような他のAIコードツールがコード断片の生成や協調に傾く一方で、Cursorの複数行・複数ファイル編集機能はそれを際立たせている
- CursorはVSCodeをフォークして開発されており、開発者の直感に合う高速で直感的なインタラクション方法を提供する
- 強力な操作はctrl/cmd+Kとctrl/cmd+Lで実行できる
- Cursorは、開発者とのインタラクションおよびコードベース理解に関して、AIプログラミングツールの新たな競争をリードしている
-
Data Mesh Manager
- Data Mesh Managerは、一般的なデータメッシュプラットフォーム向けのメタデータ層を提供する
- 特に、OpenContractイニシアチブを使用してデータプロダクトの定義とデータ契約仕様に重点を置いており、関連するDataContract CLIを使ってビルドパイプラインに統合できる
- また、このアプリケーションはデータプロダクトとそのメタデータを検索・探索するためのデータカタログを提供し、データ品質メトリクスの定義やデータ品質ルール管理を含むフェデレーテッドガバナンスを可能にする
- この領域で最初に登場したネイティブツールの1つであり、既存プラットフォームをデータメッシュのパラダイム向けに改造しようとするものではない
-
GitButler
- Gitのコマンドラインインターフェースは強力で便利だが、複数のブランチを管理し、その中でコミットをステージングする際には非常に複雑であることで悪名高い
- GitButlerは、このプロセスを簡素化することを目指したグラフィカルインターフェースを提供するGitクライアントである
- Gitとは独立して未コミットのファイル変更を追跡し、それらの変更を仮想ブランチにステージングすることで、これを実現している
- これは、そもそも存在すべきではない問題への解決策だと主張することもできる。小さな変更を頻繁に行ってトランクにプッシュすれば、複数のブランチは不要だからだ
- しかし、ワークフローにプルリクエストが含まれる場合、特にPRをマージする前に長いレビューサイクルがあると、ブランチ構造は複雑になりうる
- これに対処するため、GitButlerはGitHubと統合されており、変更を選択的にプルリクエストとしてグループ化し、ツールから直接発行できる
- GitButlerは、PRプロセスに内在する複雑さを管理するための成長中のblipカテゴリに加わる、もう1つの項目である
-
JetBrains AI Assistant
- JetBrains AI Assistantは、コード補完、テスト生成、スタイルガイド準拠を支援するため、すべてのJetBrains IDEとシームレスに統合されるよう設計されたコーディングアシスタントである
- OpenAIやGoogle Geminiのようなモデルを基盤として構築されており、将来のセッションに向けてコーディングスタイルを記憶することで、一貫した出力を保証する能力が際立っている
- 私たちの開発者は、テスト生成機能が特に有用だと感じており、安定性の問題なくより長い出力を扱える点にも注目した
- しかし、一部の競合他社と異なり、JetBrainsは独自モデルをホスティングしていないため、サードパーティによるデータ処理を懸念する顧客には適さない可能性がある
- それでも、このツールがJetBrains IDEに統合されている点は、AIベースのコーディングアシスタントを検討するチームにとって有望な選択肢である
-
Mise
- ポリグロット環境で作業する開発者は、しばしば異なる言語やツールの複数バージョンを管理しなければならない状況に置かれる
- miseは、nvm、pyenv、rbenv、rustupなどを置き換えられる単一のツールを提供することで、この問題の解決を目指しており、asdfの代替にもなりうる
- Miseはシェル操作の速度向上のためRustで書かれており、シェルベースのshimを使うasdfとは異なり、miseはPATH環境変数を事前に変更することで、ツール実行時のオーバーヘッドをなくし直接呼び出せるようにしている
- これが、miseがasdfより高速である理由の1つである
- すでにasdfに慣れている開発者にとって、miseは同じ機能を提供しつつ、いくつかの重要な違いがある
- Rustで書かれているため高速であり、asdfにはないいくつかの機能も備えている。たとえば、同じツールの複数バージョンを同時にインストールでき、あいまい一致を含む、より寛容なコマンドを提供する
- また、リンター、テスト、ビルダー、サーバー、その他プロジェクト固有のタスクを実行するのに便利な統合タスクランナーも提供する
- 開発環境の管理に複数のツールを使わなければならないことや、他ツールの時折ぎこちない構文に少しうんざりしているなら、miseは間違いなく一見の価値がある
-
Mockoon
- MockoonはオープンソースのAPIモックツールである
- 直感的なインターフェース、カスタマイズ可能なルート、動的レスポンスに加え、モックデータセットの生成を自動化する機能も提供する
- MockoonはOpenAPIと互換性があり、ローカルでテストでき、開発パイプラインに統合可能なさまざまなシナリオを作成できる
- リクエストをインターセプトし、Mockoonで定義された呼び出しだけを偽装して「部分モック」を作成することもできる
- 部分モックは、特定のAPIルートやエンドポイントをシミュレートしつつ、他のリクエストを実際のサーバーへ転送するのに役立つ
- 部分モックは特定のシナリオでは有用だが、使いすぎると不要な複雑さにつながるリスクがある
- それを除いても、MockoonはモックAPIをすばやくセットアップし、開発ワークフローを改善・自動化するうえで有用なツールであり続けている
-
Raycast
- RaycastはmacOS向けのプレミアムランチャーで、キーボードからアプリケーションをすばやく起動し、コマンドを実行し、ファイルを検索し、作業を自動化できる
- 私たちのチームは、開発者向けの組み込み機能と、VSCode、Slack、Jira、Googleなどのサードパーティ製アプリやサービスとやり取りできる容易な拡張性を高く評価している
- Raycastは生産性重視で、コンテキストスイッチを最小限に抑えながら日常的な作業を簡素化したい人にとって有用なツールである
- Proユーザーは、特殊なAIベース検索アシスタントであるRaycast AIにアクセスできる
-
ReadySet
- ReadySetはMySQLおよびPostgreSQL向けのクエリキャッシュである
- 手動の無効化に依存する従来のキャッシュソリューションとは異なり、ReadySetはデータベースのレプリケーションストリームを活用してキャッシュを段階的に更新する
- 部分ビューのマテリアライズにより、ReadySetは従来のリードレプリカよりも低いテールレイテンシを実現する
- ReadySetはMySQLおよびPostgreSQLとワイヤ互換であるため、アプリケーションを変更せずにデータベースの前段に配置し、読み取りワークロードを水平方向にスケールできる
-
Rspack
- Webベースのフロントエンドに取り組む私たちのチームの多くは、Webpackのような旧来のバンドリングツールからViteへ移行してきた
- この分野の新たな参入者がRspackであり、18か月の開発を経て1.0バージョンがリリースされた
- Webpackの代替として設計されており、Webpackエコシステムのプラグインやローダーと互換性がある
- これは、複雑なWebpack設定を移行する際にViteに対する利点となりうる
- 私たちのチームがViteやRspackのような最新ツールへ移行する主な理由は、開発者体験、特に速度である
- 最後のコード変更に対するフィードバックを得るまでに1〜2分待たなければならないことほど、開発フローを損なうものはない
- Rustで書かれたRspackは、Webpackよりはるかに高速な性能を提供し、多くの場合はViteよりも速い
-
Semantic Router
- LLMベースのアプリケーションを構築する際には、リクエストを特定のエージェントへルーティングしたり、特定のフローを呼び出したりする前に、ユーザーの意図を判断することが重要である
- Semantic Routerは、LLMやエージェントのための超高速な意思決定レイヤーとして機能し、意味的な内容に基づいてリクエストを効率的かつ安定的にルーティングできる
- ベクトル埋め込みを使って意図を推論することで、Semantic Routerは不要なLLM呼び出しを減らし、意図理解のためのよりシンプルで費用対効果の高いアプローチを提供する
- その潜在力は意図推論にとどまらず、さまざまな意味タスクのための汎用コンポーネントへと広がっている
- 提供される速度と柔軟性により、LLMのオーバーヘッドなしに高速でリアルタイムな意思決定が必要な環境において、有力な選択肢として位置づけられている
-
ソフトウェアエンジニアリングエージェント
- 現在のGenAI分野で最もホットな話題の1つが、ソフトウェアエンジニアリングエージェントという概念である
- こうしたコーディング支援ツールは、エンジニアがあちこちでコード断片を書く以上のことを行う。解決できる問題の規模を広げ、理想的には自律的に、かつ人間の最小限の介入で作業を実行する
- これらのツールがGitHub IssueやJiraチケットを取り込み、計画やコード変更を提案したり、さらには人間がレビューするプルリクエストを生成したりできるという考え方である
- これはAIコーディング支援の影響力を高める次の論理的なステップだが、しばしば宣伝されるような広範なコーディング作業を扱える汎用エージェントという目標は非常に野心的であり、現在のツールの状態はそれを明確には示していない
- しかし、より複雑な問題に向けて開発者の時間を確保するため、より限定された範囲の単純な作業については、これが近いうちに機能する可能性があると私たちは見ている
- エージェントのベータ版が公開されているツールとしては、GitHub Copilot Workspace、qodo flow、JIRA向けTabnineエージェント、Amazon Q Developerなどがある
- SWE Benchベンチマークにはこの分野のさらに多くのツールが挙げられているが、AI分野のベンチマークは多少の懐疑をもって受け止めるべきだと注意している
-
uv
- Rustは起動性能が高速なためコマンドラインツールの作成に適しており、私たちは一部のツールチェーンがRustで書き直されているのを目にしている
- 以前のRadarでは、Rustで書かれたPythonリンターであるRuffに言及した
- 今回のVol.では、Rustで書かれたPythonパッケージ管理ツールであるuvを評価した
- uvの価値提案は「驚異的に速い」ことであり、ベンチマークでは他のPythonパッケージ管理ツールを大きく上回っている
- ただしRadarでの評価中、ビルドツールを秒単位で最適化することが限界的な改善にすぎないのではないかという議論もあった
- 性能以上に、パッケージ管理システムで重要なのはエコシステム、成熟したコミュニティ、そして長期的なサポートである
- とはいえ、プロジェクトチームからのフィードバックは、この小さな性能向上がフィードバックサイクルと全体的な開発者体験の改善に大いに役立ちうることを示していた。私たちはこの小さな性能改善を達成するために、CI/CDのキャッシュを手作業で非常に複雑にしがちな傾向があるが、uvはPython環境管理を簡素化する
- Python開発におけるパッケージおよびenv管理には、依然として改善の余地が大きいことを踏まえると、uvは評価する価値のある選択肢だと考えている
-
Warp
- WarpはmacOSおよびLinux向けのターミナルである
- 可読性を高めるため、コマンド出力をブロックに分割する
- Warpには、インテリジェントなコマンド提案や自然言語処理などのAIベース機能が含まれている
- また、ユーザーがコマンドと出力を整理し、注釈や説明を追加できるノートブック機能も含まれている
- こうした機能を活用することで、READMEファイルやオンボーディング資料を作成し、ターミナルのワークフローを構造化され対話的な形で提示・管理できる
- Warpは、柔軟なクロスシェルプロンプトであるStarshipと容易に統合でき、実行中のプロセス、使用中ツールの特定バージョン、Gitの詳細、現在のGitユーザーなどの情報を取得して、ターミナル体験をカスタマイズできる
-
Zed
- Atomテキストエディタープロジェクトが終了した後、制作者たちはZedという新しいエディターを作った
- Rustで書かれ、最新のハードウェアを活用するよう最適化されたZedは、高速に感じられる
- 多くのプログラミング言語サポート、組み込みターミナル、マルチバッファ編集など、現代的なエディターに期待される機能をすべて備えている
- AI支援コーディングは、複数のLLMプロバイダーとの統合を通じて利用できる
- 熱心なペアプログラマーとして、私たちはZedに組み込まれたリモートコラボレーション機能に魅了された
- 開発者はGitHub IDを通じて互いを見つけ、その後リアルタイムで同じワークスペース上で協業できる
- 開発チームがVisual Studio Codeエコシステムの魅力から離れられるのか、また離れたいのかを判断するには、まだ早い
- しかし、Zedは試してみる価値のある代替手段である
Hold
- CocoaPods
- CocoaPodsはSwiftおよびObjective-CのCocoaプロジェクトで長年愛用されてきた依存関係管理ツールである
- 10年以上にわたり、iOSおよびmacOS開発者にとって重要なツールとして機能してきた
- CocoaPodsチームは現在、このプロジェクトがメンテナンスモードへ移行し、積極的な開発は中止されると発表している
- CocoaPodsツールおよび関連リソースは引き続き利用可能だが、新機能の開発や改善は行われない予定である
- 開発者にはSwift Package Managerへの移行が推奨されている
- Swift Package ManagerはXcodeとのネイティブ統合を提供し、Appleによる長期的な支援が期待できる
[Language and Frameworks]
Adopt
-
dbt
- は、ELTパイプラインでデータ変換を実装するための強力で賢明な選択肢と引き続き見なされている
- エンジニアリングの厳密さを可能にし、SQLベース変換のモジュール性、テスト可能性、再利用性といった実践を可能にする点が評価されている
- Snowflake、BigQuery、Redshift、Databricks、Postgresなど、多くのクラウドデータウェアハウス、レイクハウス、データベースとうまく統合され、周辺には健全なコミュニティパッケージのエコシステムがある
- 最近導入された単体テストのネイティブサポート(dbt core 1.8+ および最近導入されたdbt Cloudの「versionless」体験)は、ツールボックスにおけるその地位をさらに強化している
- 新しい単体テスト機能により、静的なテストデータを簡単に定義し、期待される出力を設定し、パイプラインの増分モードとフルリフレッシュモードの両方をテストできるため、チームから高く評価されている
- 多くの場合、これによって同等の品質水準を維持しながら自作スクリプトを廃止できた
-
Testcontainers
- Testcontainersは、テスト実行のための信頼できる環境を作るのに有用なデフォルトの選択肢として受け止められている
- さまざまな種類のデータベース、キュー技術、クラウドサービス、WebブラウザーのようなUIテスト依存関係を含む一般的なテスト依存関係をDocker化する、複数言語に移植されたライブラリであり、必要に応じてカスタムDockerfileを実行できる
- 最近、テストセッションの視覚的な管理や、より複雑なシナリオの管理機能を提供するデスクトップ版が公開され、チームでは非常に有用だと判断している
Trial
-
CAP
- 分散メッセージングシステムでデータベース更新とイベント公開を原子的に実行するためのOutboxパターンを実装する.NETライブラリ
- 同じデータベーストランザクション内でイベントを公開する意図を記録することで問題を解決する
- いくつかのデータベースとメッセージングプラットフォームをサポートし、少なくとも1回の配信を保証するため有用である
-
CARLA
- 本番デプロイ前に自動運転システムをテストするために使われる、オープンソースの自動運転研究用シミュレーター
- 車両、地形、人間、動物などの3Dモデルを柔軟に作成・再利用できるため、多様なシナリオのシミュレーションが可能である
- 自動運転システムは、こうした動的オブジェクトを認識し、ブレーキなどの適切な措置を取らなければならない
- 自動運転システムの継続的な開発とテストのために活用されている
-
Databricks Asset Bundles
- 2024年4月にGAとなったDABsは、データチームでソフトウェアエンジニアリング実践の採用を促進するDatabricksの資産パッケージングおよびデプロイツールとして位置付けられている
- ワークフローやジョブ構成と、それらのジョブで実行されるコードをバンドルとしてパッケージ化し、CI/CDパイプラインを通じて複数の環境にデプロイできる
- 一般的な資産タイプ向けのテンプレートとカスタムテンプレートをサポートしており、データエンジニアリングやMLプロジェクト向けにカスタマイズされたサービステンプレートを作成できる
- エンジニアリングワークフローの主要な一部として、ますます多く採用されている
- ノートブックテンプレートを含めて本番環境へのデプロイをサポートしているが、ノートブックを本番化することは推奨していない
- 代わりに、保守性、回復力、拡張性の要件を支えるエンジニアリング実践に基づいて、本番コードを意図的に作成することを奨励している
-
Instructor
- LLMを使って構造化された回答(JSON、YAML など)を要求し、それをパースしてアプリケーションで利用する際に役立つライブラリ
- LLMは非決定的であるため、要求どおりに常に動作するとは限らない
- 意図した出力構造を定義し、LLMが要求した構造を返さない場合にリトライを構成できる
- ストリーム内の部分構造をパースする機能も提供し、応答全体を待たずに結果をストリーミングできる
-
Kedro
- MLOpsツールとして大幅に改善されており、モジュール性とエンジニアリング実践への注力を維持している
- 独立した
kedro-datasetsパッケージの導入により、コードとデータを分離するなど、モジュール性を強調している - CLI、スタータープロジェクトテンプレート、テレメトリー機能が向上
- 最近の VS Code 拡張機能の公開により、開発者体験が向上
-
LiteLLM
- さまざまなLLMプロバイダーのAPIとシームレスに統合されるライブラリで、OpenAI API形式を通じてやり取りを標準化する
- 幅広いプロバイダーとモデルをサポートし、補完、埋め込み、画像生成のための統一インターフェースを提供
- 各プロバイダー固有のエンドポイント要件に合わせて入力を変換し、統合を簡素化する
- キャッシュ、ロギング、レート制限、負荷分散など、本番アプリケーションに必要な運用機能を実装するためのフレームワークを提供
- 多様なモデルを容易に切り替えられるようにしており、モデルが急速に進化する現在の状況で必要な機能である
- 同一のプロンプトに対するモデル応答は多様であるため、一貫した呼び出し方法だけでは補完性能の最適化が難しい可能性があることを認識すべきである
- 各モデルは追加機能を独自に実装しているため、単一インターフェースだけですべての機能を満たすのは難しい場合がある
-
LlamaIndex
- ドメイン特化かつコンテキストベースのLLMアプリケーションを設計できるエンジンを含み、データ収集、ベクトルインデクシング、文書に対する自然言語での質疑応答などの作業を支援する
- LlamaIndexを使って文書収集を自動化し、文書埋め込みをインデックス化し、ユーザー入力に基づいてこれらの埋め込みをクエリするRAG(Retrieval-Augmented Generation)パイプラインを構築できる
- LlamaHubを使ってLlamaIndexモジュールを拡張またはカスタマイズし、好みのLLM、埋め込み、ベクトルストアプロバイダーとともにLLMアプリケーションを構築できる
-
LLM Guardrails
- LLMが有害、誤解を招く、または無関係な内容を生成しないようにするためのガイドライン、ポリシー、またはフィルターの集合
- 入力操作のような手法でシステムを悪用しようとする悪意あるユーザーからLLMアプリケーションを保護するためにも使用できる
- モデルがコンテンツを処理・生成する際に境界を設定し、安全網として機能する
- NeMo Guardrails、Guardrails AI、Aporia Guardrails など、この分野で台頭しているフレームワークが有用
- すべてのLLMアプリケーションにガードレールを配置し、ルールとポリシーを継続的に改善することを推奨する
- 責任ある信頼性の高いLLMチャットアプリを構築するうえで重要
-
Medusa
- 多くのショッピングWebサイト構築向けeコマースソリューションは、80/20の落とし穴に陥る傾向がある
- Medusaはバランスの取れた高度にカスタマイズ可能なオープンソースのコマースプラットフォームで、開発者が独自でカスタマイズされた購買体験を作れるようにする
- Next.jsとPostgreSQLを基盤に構築されており、ショッピングカートや注文管理から、ギフトカードモジュール、地域別税計算などの高度な機能まで、包括的なモジュール群によって開発プロセスを加速する
- いくつかのプロジェクトに適用され、価値あるフレームワークと評価されている
-
Pkl
- Appleで社内利用のために最初に作られたオープンソースの設定言語およびツール
- 主な機能は、設定ミスをデプロイ前に検出できる型およびバリデーションシステムである
- コード重複を減らし(環境オーバーライドなどの場合)、設定変更を本番環境に適用する前にバリデーションを実行できる
- JSON、PLIST、YAML、
.propertiesファイル生成およびコード生成を含む、幅広いIDEおよび言語統合を提供
-
ROS 2
- ロボットシステム開発のためのオープンソースフレームワーク
- プロセス間通信、マルチスレッド実行、サービス品質などの機能を扱うアプリケーションのモジュール式実装を可能にするライブラリとツールを提供
- リアルタイム機能の改善、モジュール性の向上、さまざまなプラットフォーム対応の拡大、妥当なデフォルト値の提供など、以前のバージョンと比べて改善されている
- 自動運転機能など、複雑で進化し続ける車載アプリケーションを持つメーカーにとって、ノードベースアーキテクチャとトピックベース通信モデルが特に魅力的である
- 自動車業界でますます多く利用されている
-
seL4
- SDVやその他の安全性が重要なシナリオでは、OSのリアルタイム安定性が重要である
- 参入障壁が高いため少数の企業がこの分野を独占しており、seL4のようなオープンソースソリューションは貴重である
- seL4は高保証・高性能のOSマイクロカーネルである
- 形式検証手法を用いて、OSの動作が仕様に「数学的に」準拠しているかを確認する
- マイクロカーネルアーキテクチャは、システム安定性を保証するために中核的責務を最小限に抑える
- NIOのようなEV企業がseL4エコシステムと協力しており、今後この分野でさらなる発展がある可能性がある
-
SetFit
- 現在のAIベースツールの大半は生成的であり、テキストや画像を生成し、GPTを利用している
- 従来型のテキストタスク(テキスト分類や意図判定)では、Sentence Transformerが好まれる
- SetFitはSentence Transformerをファインチューニングするためのフレームワークである
- 対照学習を用いることで、ごく少数の例でも異なる意図クラスを分離し、しばしば明確な分離を実現する
- Sentence Transformerは生成AIシステムでも役割を果たしうる
- LLMを使う顧客向けチャットボットシステムで、意図検出にSetFitを活用して成功しており、より厳格なフィルタリングのためにSetFitベースの分類器を選択している
-
vLLM
- クラウドまたはオンプレミスで実行できる、高スループットかつメモリ効率の高いLLM向け推論エンジン
- 複数のモデルアーキテクチャと人気のあるオープンソースモデルをシームレスにサポートする
- NVIDIA DGXやIntel HPCのようなGPUプラットフォームにDocker化したvLLMワーカーをデプロイし、開発者向けコーディング支援、知識検索、自然言語データベース対話などのために、Llama 3.1(8Bおよび70B)、Mistral 7B、Llama-SQL などのモデルをホスティング
- OpenAI SDK標準と互換性があり、一貫したモデルサービングを促進する
- AzureのAI Model Catalogは、カスタム推論コンテナを使ってモデルサービング性能を向上させており、高いスループットと効率的なメモリ管理により、vLLMをデフォルト推論エンジンとして使用している
- vLLMフレームワークは大規模モデル配備のデフォルトとして台頭しつつある
Assess
-
Apache XTable™
- 利用可能なオープンテーブル形式の中で明確な勝者はまだ現れていない
- Delta UniFormのようなツールは、これらの形式間の相互運用性を可能にする
- Apache XTable™は、Hudi、Delta、Iceberg間の双方向相互運用性を促進するApacheインキュベータープロジェクト
- これらの形式の機能差により、長期的に双方向相互運用性へ大きく依存すると、チームは「最小公倍数」ではなく「最小共通分母」の機能しか使えなくなる可能性がある
-
dbldatagen
- データエンジニアリング向けのテストデータ準備は大きな課題である
- 本番環境からテスト環境へデータを移送するのはリスクがあるため、チームはしばしばダミーデータや合成データに依存する
- dbldatagen(Databricks Labs Data Generator)は、テスト、ベンチマーク、デモなどのためにDatabricks環境内で合成データを生成するPythonライブラリ
- dbldatagenは数十億行を数分で生成でき、複数テーブル、変更データキャプチャ、マージ/結合処理などのさまざまなシナリオを支援しながら、大規模に合成データを生成できる
-
DeepEval
- DeepEvalは、LLMの性能を評価するためのPythonベースのオープンソース評価フレームワーク
- LlamaIndexやLangChainのような人気フレームワークで構築されたRAG(retrieval-augmented generation)やその他の種類のアプリを評価し、必要に応じてさまざまなモデルを比較する際のベースラインやベンチマークの設定に利用できる
- DeepEvalは、ハルシネーション検出、回答関連性、ハイパーパラメータ最適化など、LLM性能を評価するための包括的なメトリクスと機能を提供
- pytestとの統合を提供し、アサーションとともにCI(continuous integration)パイプラインへテストセットを簡単に統合できる
-
DSPy
- 今日のほとんどの言語モデルベースのアプリケーションは、特定のタスク向けに手動調整されたプロンプトテンプレートに依存している
- DSPyは、こうしたアプリケーションを開発するためのフレームワークであり、直接的なプロンプトエンジニアリングを不要にする別のアプローチを取る
- 代わりに、プログラムフロー(相互に積み重ね可能なモジュールを通じて)、最適化するメトリクス、学習またはテストするデータに関する高レベルの抽象化を導入する
- その後、定義されたメトリクスに基づいて基盤となる言語モデルのプロンプトまたは重みを最適化する
- その結果得られるコードベースは、PyTorchを用いたニューラルネットワーク学習と非常によく似ている
-
Flutter for Web
- Flutterは、iOSおよびAndroidアプリケーション向けのクロスプラットフォーム対応で知られている
- 現在はさらに多くのプラットフォームへ拡張されている
- 同じコードベースからiOS、Android、ブラウザ向けアプリを構築できる
- すべてのWebアプリケーションがFlutterに適しているわけではないが、プログレッシブWebアプリ、シングルページアプリ、既存のFlutterモバイルアプリをWebへ変換するケースには特に適している
- Flutterはすでに実験チャネルでWebAssembly(WASM)をコンパイルターゲットとしてサポートしており、これは潜在的なバグや性能問題を伴う活発な開発中であることを意味していた
- 最近のリリースでは安定化された
- WASMターゲットにコンパイルされたFlutter Webアプリケーションの性能は、JavaScriptコンパイルターゲットよりもはるかに優れている
- さまざまなプラットフォームでのネイティブに近い性能は、多くの開発者が当初Flutterを選んだ理由でもある
-
kotaemon
- kotaemonは、ナレッジベース文書向けのQ&Aアプリを構築するためのオープンソースのRAGベースツールおよびフレームワーク
- PDFやDOC形式を含む複数の文書タイプを理解でき、GradioベースのWeb UIを提供することで、ユーザーがナレッジベースを構成し、チャットインターフェースを通じて対話できる
- ベクターストアを備えた組み込みのRAGパイプラインを持ち、SDKで拡張可能
- また、Webベースのインラインプレビューと関連度スコア付きで、応答内にソース文書の引用を表示する
- RAGベースの文書Q&Aアプリケーションを求める人にとって、このカスタマイズ可能なフレームワークは非常に良い出発点となる
-
Lenis
- Lenisは、モダンブラウザ向けに設計された、軽量でありながら強力なスムーズスクロールライブラリ
- WebGLスクロール同期や視差効果のようなスムーズなスクロール体験を可能にし、柔軟で滑らかなスクロール操作を備えたページを構築するチームに最適
- 開発者たちは、Lenisがシンプルで使いやすく、スムーズスクロールを実現するための簡潔なアプローチを提供していると評価している
- ただし、このライブラリにはアクセシビリティ上の問題が生じる可能性があり、特に縦方向と横方向のスクロール操作は障害のあるユーザーを混乱させるおそれがある
- 視覚的には魅力的だが、アクセシビリティを維持するには慎重な実装が必要
-
LLMLingua
- LLMLinguaは、小型言語モデルを用いて不要なトークンを除去することでプロンプトを圧縮し、性能低下を最小限に抑えながらLLMの効率を高める
- このアプローチは、LLMがより長いプロンプトを効率よく処理しつつ、推論とコンテキスト学習を維持できるようにし、コスト効率、推論レイテンシ、コンテキスト処理といった課題に対応する
- 追加学習なしでさまざまなLLMと互換性があり、LlamaIndexのようなフレームワークもサポートするLLMLinguaは、LLM推論性能の最適化に適している
-
Microsoft Autogen
- Microsoft Autogenは、AIエージェントの生成とオーケストレーションを簡素化するオープンソースフレームワークであり、複雑なタスクを解決するためのマルチエージェント協調を可能にする
- 自律型およびhuman-in-the-loopの両ワークフローをサポートし、さまざまなLLMやエージェント間相互作用のためのツールとの互換性を提供する
- あるチームは、各エージェントがコード生成、コードレビュー、文書要約といった特定スキルを担うAIベースのプラットフォームを構築するために、クライアント向けにAutogenを使用した
- フレームワークを使って適切なモデルとワークフローを定義することで、チームは新しいエージェントをシームレスかつ一貫して作成できる
- LlamaIndexを活用してワークフローをオーケストレーションし、エージェントが製品検索やコード提案のようなタスクを効率的に管理できるようにしている
- Autogenは、とくに本番環境で可能性を示した一方で、より多くのエージェントが追加されるにつれて、スケーラビリティや複雑性管理への懸念が残っている
- エージェントベースシステムの拡張における長期的な実行可能性を評価するには、さらなる検証が必要
-
Pingora
- Pingoraは、高速で信頼性が高く、プログラマブルなネットワークサービスを構築するためのRustフレームワーク
- もともとCloudflareがNginxの欠点を解消するために開発したPingoraは、すでにRiverのような新しいプロキシがその上に構築されており、大きな可能性を示している
- ほとんどの人がCloudflare級の規模に直面するわけではないが、柔軟なアプリケーションレイヤールーティングがネットワークサービスに不可欠となるシナリオには直面する
- Pingoraのアーキテクチャにより、セキュリティや性能を犠牲にすることなく、そのような状況でRustの機能を最大限に活用できる
-
Ragas
- Ragasは、検索と生成の両コンポーネントを評価するという課題に対応しながら、検索拡張生成(RAG)パイプラインの性能を評価するために設計されたフレームワーク
- 忠実性、回答関連性、コンテキスト活用といった構造化メトリクスを提供し、RAGベースシステムの有効性評価を支援する
- 開発者たちは、上位k件の検索や埋め込みモデルなどのパラメータを微調整するために、定期的な評価を実行するうえで有用だと感じている
- 一部のチームは、プロンプトテンプレートやモデルが変更されるたびに毎日実行されるパイプラインへRagasを統合している
- メトリクスは堅実な洞察を提供する一方で、このフレームワークが複雑なRAGパイプラインのあらゆるニュアンスや複雑な相互作用を捉えきれない可能性があるという懸念もあり、追加の評価フレームワークを検討することが推奨される
- それでもRagasは、本番環境におけるRAG評価を簡素化し、データ駆動の改善をもたらす能力によって際立っている
-
Score
- 独自の内部開発プラットフォームを実装する多くの組織は、開発者とプラットフォームホスティングチームの間で組織標準を適用するために、独自のプラットフォームオーケストレーションシステムを構築する傾向がある
- しかし、コンテナワークロードを安全かつ一貫性があり、コンプライアンスに準拠した形でホスティングするための舗装道路型デプロイプラットフォームの基本機能は、組織ごとに似通っている
- こうした要件を記述するための共通言語があればよいのではないだろうか?
- Scoreは、この分野で標準となる可能性を示している
- YAML形式の宣言的言語であり、コンテナ化されたワークロードをどのようにデプロイするか、そして実行に必要な具体的なサービスやパラメータを記述する
- ScoreはもともとHumanitecのPlatform Orchestrator製品向けの構成言語として開発されたが、現在はオープンソースプロジェクトとしてCNCF(Cloud Native Computing Foundation)の管理下にある
- CNCFの支援により、ScoreはHumanitec製品を超えて、より広く利用される可能性がある
- KubernetesとDocker Composeという2つのリファレンス実装とともに公開された
- Scoreの拡張性は、他のプラットフォーム向けのコミュニティ貢献につながることが期待される
- ScoreはKubevela向けのOpen Application Model(OAM)仕様と類似点があるが、アプリケーション全体よりもコンテナワークロードのデプロイにより焦点を当てている
- SSTともやや重なる部分はあるが、SSTは内部エンジニアリングプラットフォームではなく、クラウドインフラへ直接デプロイすることにより関心を向けている
- Scoreは、今後の発展を注視している
-
shadcn
- shadcnは、再利用可能でコピー&ペーストできるコンポーネントを提供することで、従来のコンポーネントライブラリという概念に挑戦している
- このアプローチはチームに完全な所有権と制御権を与え、MUIやChakra UIのような一般的な従来ライブラリではしばしば不足しがちな、容易なカスタマイズと拡張を可能にする
- Radix UIとTailwind CSSで構築されたshadcnは、あらゆるReactベースのアプリケーションにシームレスに統合できるため、制御性と拡張性を優先するプロジェクトに適している
- プロジェクトにコンポーネントをコピー&ペーストするプロセスを支援するCLIも含まれている
- 隠れた依存関係を減らし、密結合な実装を防ぐ利点もあるため、shadcnはフロントエンド開発に対してより実用的で適応力のあるアプローチを求めるチームにとって魅力的な代替案として注目されている
-
Slint
- Slintは、Rust、C++、またはJavaScriptアプリケーション向けのネイティブユーザーインターフェースを構築するための宣言的GUIフレームワーク
- ライブプレビュー、レスポンシブUI設計、VS Code統合、ネイティブなユーザー体験といった重要な機能を備えたマルチプラットフォームUIフレームワークだが、特に組み込みシステムに対する有用性を強調したい
- 組み込みアプリケーションを開発するチームは、従来UI開発の選択肢が限られており、それぞれに固有の長所と短所があった
- Slintは、使いやすいHTMLに似たマークアップ言語を使用し、直接マシンコードにコンパイルされることで、開発者体験と性能の完璧なバランスを提供する
- ランタイムにおいても、組み込みシステムにとって重要な低いリソース使用量を誇る
- 要するに、SlintはWebおよびモバイル開発で実証された実践を組み込みエコシステムへ持ち込むため、好感を持っている
-
SST
- SSTは、アプリケーションの実行に必要なすべてのサービスとともに、クラウド環境へアプリケーションをデプロイするためのフレームワーク
- SSTは単なるIaCツールではなく、アプリケーション環境を定義できるTypeScript APIを備えたフレームワークであり、Git pushをトリガーとしてアプリケーションをデプロイするサービス、そして生成されたアプリケーションを管理しSST管理機能を呼び出すGUIコンソールも備えている
- SSTはもともとAWS Cloud FormationとCDKを基盤としていたが、最新バージョンはTerraformとPulumiの上に実装されており、理論上はクラウドに依存しない
- SSTはNext.jsやRemixを含む複数の標準的なWebアプリケーションフレームワークのデプロイを標準でサポートしているが、ヘッドレスAPIアプリケーションもサポートしている
- SSTは独自のカテゴリーに属するように見える
- Kubevelaのようなプラットフォームオーケストレーションツールとの類似点はあるが、AWS Lambda呼び出しを開発者のローカルマシンで実行される関数にプロキシするライブモードのような、開発者向けの利便機能も提供している
- 現時点でSSTはまだやや興味深い存在にとどまっているが、発展に伴って注目に値するプロジェクトであり、ツールカテゴリーの一部でもある
10件のコメント
ありがとうございます。面白いですね。
お疲れさまでした……ありがとうございます!
途中で触れられている Lenis というスクロールライブラリについて少し考えを述べると、Apple のホームページのような滑らかなスクロールアニメーションは、私には少し使いづらく感じられました。
マウスのスクロールホイールを回しながら見ると、アニメーションがずっと途切れるように感じますし、下矢印キーを押して移動しようとすると速すぎて内容を読むのが難しいと感じました。
結局、Windows でスクロールホイールをクリックして、ごくわずかに動かしてゆっくり下に進むのが、そういうウェブサイトを「楽しむ」唯一の方法なのですが、それほどの価値があるのかはよく分かりません。一言で言えば、良いテクニックなのかよく分からない、ということです.
Databricksが怖いほどたくさん出てきますね
読んでいて力尽きた。うう
GeekNewsに掲載されたことのある製品/サービスを整理しました。
Platforms - Assess
Platforms - Trial
Language and Frameworks - Adopt
Language and Frameworks - Assess
Language and Frameworks - Trial
Tools - Adopt
Tools - Assess
Tools - Trial
ありがとうございます。面白いですね〜
よく拝見しました。ありがとうございます。
とても面白く読ませていただきました。ありがとうございます。
Thoughtworks Technology Radar, Volume 30
Thoughtworks Technology Radar, Volume 29
Thoughtworks Technology Radar, Volume 28
Thoughtworks Technology Radar, Volume 27
Thoughtworks Technology Radar, Volume 26
ThoughtWorks Technology Radar, Volume 23
ThoughtWorks Technology Radar, Volume 22
ThoughtWorksが6か月ごとに発行する技術ニュース - Radar Vol.21