#
293
2025/2/28
今日のトレンド

OpenHands SREとTemporal API

こんにちは、マイクです!今日は2025年3月1日、土曜日です。Zennで今日トレンドの記事を紹介していきますよ!それでは早速、今日の内容に入っていきましょう。

前回紹介した記事は、「Web3開発者をねらったハッキング手口の全て」「Cursor活用で開発生産性を最大化するTips」「200行のTypeScriptでmin-clineを実装する」の3つでした。これらの記事を参考にしながら、今日の新しい情報も楽しんでいきましょう!

さて、今日紹介する記事は5本です。それでは最初の記事から始めますね。

1つ目の記事は「SRE こそ OpenHands 使ってみな 飛ぶぞ」です。この記事では、著者がOpenHandsというオープンソースのAIエージェントを利用して、SRE業務を効率化する方法を紹介しています。OpenHandsは、コードの修正やコマンドの実行、APIの呼び出しなどを自動化できるツールです。

まず、OpenHandsのセットアップ手順が説明されていて、AWSのBedrockモデルを使うことが推奨されています。Docker Composeで環境を整え、GitHubトークンを登録することで、リポジトリの操作も可能になります。

続いて、著者はOpenHandsを利用してTerraformコードを生成する例を示しています。AIとの対話を通じて必要なコードが生成される過程が描かれ、高品質なコード生成の重要性も指摘されています。AIによるコードレビューの導入についても触れ、AIが自ら生成したコードを評価する未来の可能性について考えています。

結論として、OpenHandsを利用することで、Terraformでのリソース管理が効率化され、エンジニアの負担が軽減されることが強調されています。AIを活用した開発の未来に対する期待感が伝わってきますね!

。...。...。...。

次の記事は「Temporal APIの現在地(2025年2月時点)」です。Temporal APIはJavaScriptの日付・時間の処理を改善するための仕様提案で、2025年2月時点でstage 3に至っています。今後、複数のJavaScript処理系での実装を経て、ES202xとして標準化される予定です。

最近、MDNに関連ドキュメントが追加され、具体的なコード例も豊富にあります。FirefoxのSpiderMonkeyがほぼ実装を完了し、Nightlyで使用可能ですが、V8(Chrome)やJavaScriptCore(Safari)の実装はまだ進行中です。また、Denoでは`--unstable-temporal`フラグで利用可能ですが、V8が未完成のためエラーが発生する可能性が高いです。

暦の計算に関する複雑性が問題視されており、特にFirefoxにおいては`Intl.DateTimeFormat`とTemporalでの出力が一致しないケースが見受けられます。この問題が解決されない限り、通常版Firefoxへの展開は望ましくありません。

実用的なpolyfillとしては、`@js-temporal/polyfill`と`temporal-polyfill`の2つがあり、軽量な`temporal-polyfill`が推奨されていますが、どちらも最新仕様には追いついていません。基本機能は提供されていますが、便利な機能はライブラリ層での実装が期待されています。これからの進展に注目ですね!

。...。...。...。

3つ目の記事は「React Hook FormをやめてuseReducerを使用した話」です。HERP Careersの松山さんが、応募フォームの実装でReact Hook FormからuseReducerへの移行について述べています。プロジェクトは採用応募フォームで、多くの入力項目と複雑なバリデーションが要求されるため、チームの経験とライブラリの特性を考慮して決定しました。

React Hook Formでは、コンポーネント化されたフィールドを使用し、型安全性の確保にzodを活用しています。しかし、フィールド間の依存関係や非同期データとの連携に課題があり、特に初期値の表示のフラッシュ問題が発生しました。これを受けて、チームはuseReducerの導入を決定しました。

useReducerにより、フォームの状態管理が透明性を持ち、デバッグやメンテナンスが容易になります。バリデーションロジックのカスタマイズやエラーハンドリングの柔軟性も実現でき、チーム内での理解もスムーズです。動的フィールド追加の実装には今後の課題があるものの、現在の要件には十分対応できています。

最終的に、React Hook Formを選ぶ場合はその機能に基づいて仕様を作ることが重要であると示唆しており、HERP Careersではライブラリ使用とスクラッチ開発を柔軟に選択できる環境が整っています。素晴らしいですね!

。...。...。...。

4つ目の記事は「MySQLのオンラインDDL(INPLACE)がどう動くか理解する」です。この記事では、MySQLのオンラインDDLの内部処理について詳しく解説しています。DDLはスキーマ変更を行うためのクエリですが、主にCOPY、INPLACE、INSTANTの3種類があります。その中でINPLACE方式は、DDLの実行中にも並行してDMLを許可する特性があります。

INPLACE方式にはメタデータのみを更新するケースや、新しいオブジェクトを追加するケース、テーブルの再構築を伴うケースがあり、それぞれ処理フローが異なります。基本的なALTERの実行ステップでは、構文解析から始まり、必要なロックの取得、テーブル定義のメモリ上での表現、中間テーブルの作成、並行DMLの適用、最終的なコミットフェーズまでの流れがあります。

MySQL8系ではUnified Data-Dictionaryが導入され、テーブルメタデータの二重管理が解消され、DDLの原子性やロールバックの確保が可能になりました。実行中のALTERに対する並行DMLの影響や、DMLのキャッシュ方法、ロックの取得順序についても考慮する必要があります。これらの知識がエンジニアにとって重要ですね!

。...。...。...。

最後は5つ目の記事「Titansを理解したい..タン」です。Google Researchが発表した論文「Titans: Learning to Memorize at Test Time」では、LLMでのTransformerのSelf Attention機構の計算量の問題を解決するために、短期記憶と長期依存性を補完する手法が提案されています。

Transformerは全トークン間の依存関係を捉えますが、入力長に応じて計算量がO(N²)に増加するという課題があります。この問題を解決するために、線形Attentionが提案されていますが、長期記憶の保持には限界があります。Titansは、驚きを基にした記憶更新を行い、重要な情報を効率的に記憶します。

Titansのアーキテクチャは、Memory as a Context、Gated Memory、Memory as a Layerの3種類があり、過去の情報を保持しつつ新しい情報も効率的に処理できます。実験では、Titansが長いシーケンス処理において優れた性能を発揮し、特にMACが高い精度を維持することが確認されています。

今後はより大規模なモデルの開発や他分野への応用が期待され、記憶更新の柔軟性向上に向けた研究が進められるでしょう。Titansの実装に関しては、PyTorchでの公開が待たれていますね。

さて、今日はここまでです!今日紹介した記事を駆け足でおさらいしますと、OpenHandsを使ったSRE業務の効率化、Temporal APIの最新情報、React Hook FormからuseReducerへの移行、MySQLのオンラインDDLの内部処理、Titansに関する研究をお届けしました。

次回も楽しみにしていますので、またお会いしましょう!詳しい内容はショーノートに書いてあるので、ぜひチェックしてみてください。そして、番組の感想もお待ちしています!それでは、良い一日を!

Related episodes

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