今日の注目トピック

reduceを避ける判断を可読性から考える。reduceはmapやfilterより自由度が高いぶん、accumulatorの型と更新規則を読み手が毎回復元する必要があります。
JavaScriptAPI DesignReadability

reduceを避ける判断を可読性から考える

これは何?配列を一つの値へ畳み込むreduceについて、実務codeで敬遠される理由をAPIの理解costから考察した記事です。

reduceはmapやfilterより自由度が高いぶん、accumulatorの型と更新規則を読み手が毎回復元する必要があります。単純なloopや専用methodの方が目的を直接表せる場面では、短さより認知負荷を優先すべきだと論じます。

なぜ重要か

抽象度の高いAPIはcode量を減らしてもreview時間を減らすとは限りません。teamで使う表現は、局所的な短さではなく変更時の誤読costで選ぶ必要があります。

読むべき人
application developer、code reviewer
HN
155 points / 234 comments
VerusでRust codeの性質を機械証明。Amazon Scienceはsystems codeへghost codeやproof annotationを加え、memory safetyを越えた機能的性質を検証する手順を紹介しました。
RustFormal VerificationVerus

VerusでRust codeの性質を機械証明

これは何?VerusはRust風のsyntaxで事前条件・事後条件・不変条件を書き、実装が仕様を満たすことをSMT solverで検証するtoolchainです。

Amazon Scienceはsystems codeへghost codeやproof annotationを加え、memory safetyを越えた機能的性質を検証する手順を紹介しました。通常のRust compilerが保証しないalgorithmの正しさを、実行codeと結び付けて扱います。

なぜ重要か

形式検証の導入costはありますが、暗号・storage・protocolなど失敗costが高い部分でreview可能な保証を増やせます。証明対象と信頼境界を小さく切る設計が鍵です。

読むべき人
systems engineer、security engineer
HN
122 points / 21 comments
Lambda 90分実行はLMIと非同期呼び出しが前提。最大90分はLambda Managed Instances上の非同期呼び出しまたは一部event source mappingに限られ、同期呼び出しは15分のままです。
AWS LambdaServerlessCDK

Lambda 90分実行はLMIと非同期呼び出しが前提

これは何?AWS Lambdaの長時間処理枠をCDKで構成し、従来の15分上限を越える条件を実測した技術記事です。

最大90分はLambda Managed Instances上の非同期呼び出しまたは一部event source mappingに限られ、同期呼び出しは15分のままです。S3 eventから20分処理を完走できましたが、VPC、最低memory、version発行、常駐環境のcostが伴います。

なぜ重要か

設定値を伸ばすだけの変更ではなく、実行基盤とcost modelが変わります。長時間処理ではretry、idempotency、途中状態の保存も合わせて設計すべきです。

読むべき人
cloud engineer、serverless application developer
Zenn
45 signal / 0 comments
React Fragment refで複数DOMを一括操作。FragmentInstanceを介してevent listenerやfocus、layout観測などを子要素群へ適用できます。
ReactFragmentDOM

React Fragment refで複数DOMを一括操作

これは何?ReactのFragmentへrefを付け、wrapper要素を増やさず複数の子DOMを一つの範囲として扱う新しいAPIの応用例です。

FragmentInstanceを介してevent listenerやfocus、layout観測などを子要素群へ適用できます。DOM構造を変えずに横断操作できますが、実験的APIの性質と子要素の変化を考慮する必要があります。

なぜ重要か

不要なwrapperを避けつつ命令的操作を局所化できます。一方で宣言的data flowを迂回しやすいため、適用範囲とfallbackを明確にする必要があります。

読むべき人
frontend developer、UI library author
Zenn
47 signal / 0 comments
frontendの責務語彙を仕様・実装・testで統一。自然言語仕様とcodeの対応が時間とともにずれる問題に対し、責務catalogを中心に要件からtestまでtrace可能にします。
FrontendSpecificationTestingTraceability

frontendの責務語彙を仕様・実装・testで統一

これは何?画面要件を責務の単位へ分解し、設計書、component、testで同じ識別子を使って差分を機械検査する開発手法です。

自然言語仕様とcodeの対応が時間とともにずれる問題に対し、責務catalogを中心に要件からtestまでtrace可能にします。命名規約と検査scriptで未実装・未test・孤立した実装を検出します。

なぜ重要か

AI生成を含む変更量が増えても、仕様とcodeの対応を人の記憶だけに頼らず確認できます。形式化costと粒度の維持がtradeoffです。

読むべき人
frontend lead、QA、product engineer
Zenn
44 signal / 0 comments