皆さん、こんにちは!マイクです!今日は2024年9月24日、月曜日ですね。今日はZennでトレンドの記事をいくつか紹介したいと思います!
さて、前回紹介した記事についてですが、今回はそれに触れずに進めてまいりますので、早速今日の内容に移りましょう!
今日紹介する記事は全部で5本です!それでは、さっそく1つ目の記事からいきましょう!
1つ目の記事は「部分型関係から考えるTypeScriptの`keyof`と`never`と`unknown」です。TypeScriptの`keyof`はオブジェクト型のキーを取り出す演算子ですね。たとえば、`type T = { a: number, b: string }`の場合、`keyof T`は`"a" | "b"`と表現されます。`keyof never`や`keyof unknown`の結果を理解するためには、部分型関係の概念が重要です。この部分型関係とは、型`A`が型`B`の部分型であるとき、`A`に型付けされた項は`B`としても型付け可能な関係を指します。特に、`keyof`は与えられた型の部分型関係を逆転させる特性があり、これを利用することで、`keyof never`は`string | number | symbol`、`keyof unknown`は`never`となります。これにより、TypeScriptの挙動を予想しやすくなるんですね。このような型の性質を理解することは、プログラマーにとって実践的なメリットをもたらします。
。...。...。...。
次に2つ目の記事は「vercel ai で書き捨ての Deno CLI を書き直した」です。こちらでは、DenoとVercelのAI SDKを用いたコマンドラインツールの開発プロセスが紹介されています。従来のAI CLIツールはストリーミング処理やツール応答の構築が煩雑でしたが、新たなスクリプトを作成することでこれを簡素化しました。AI周りのCLIツールで直面する課題としては、ストリーミング処理とAI側からの問い合わせに基づくツール応答の構成が挙げられます。特に、WebSocketやWebWorkerなどの知識が必要で手間がかかりますが、Vercelの`ai`ライブラリを使用することでこのプロセスを簡略化しています。Denoを使うことで、依存関係を一ファイルにまとめて記述でき、書き捨てのスクリプトを手軽に作成できる点も魅力です。今後の開発においても、再利用可能なコピペ元を提供することが期待されます。
。...。...。...。
さあ、3つ目の記事は「ドメイン駆動設計におけるバリデーションの実装方法への一つの解答(Golang版)」です。ドメイン駆動設計(DDD)において、バリデーションをどこで、どのように実施するかは多くのエンジニアにとっての課題です。この記事では、エンティティや値オブジェクト内でバリデーションを行うことにより、検証ロジックの重複を避け、一貫性を保つ方法が提案されています。著者は自作の`validationcontext`パッケージを使用し、さまざまなバリデーションパターンを比較しながら実装方法を説明しています。各エンティティや値オブジェクトが自身の整合性を確認できるような設計が推奨されており、これによりメンテナンス性が向上します。また、DDDに取り組む際に参考にした書籍も紹介されていて、初心者にとっても有益な情報が提供されています。
。...。...。...。
続いて4つ目の記事は「最速奪還への道 - FastEnum v2.0 開発奮闘記」です。FastEnumはC# / .NET向けの高速enumユーティリティです。v1.0が登場したのは2019年ですが、5年の間にC# / .NETの技術が進歩し、特にSource Generatorの登場により、コンパイル時に最適化されたソースコード生成が可能になりました。v2.0ではSource Generator方式を採用し、他のライブラリが抱える属性ベースのアプローチの問題を解決しています。この新しい方式により、ユーザーはほとんど変更なしでアップデートが可能となりました。ベンチマーク結果では、v2.0がv1.0の倍以上の速度を達成しましたが、仮想関数テーブルによるオーバーヘッドがあることも判明しました。これを解決するために、C# 11から導入されたインターフェイスの静的抽象メンバーを利用し、オーバーヘッドを排除するアプローチに修正されています。最終的に、高性能と一貫性を提供しつつシンプルな使用感を維持することに成功したということで、ぜひ新しいAPIを試してみてください!
。...。...。...。
最後に5つ目の記事は「汚いコードと対処法 - 君はコードなんか汚いと思いながら」です。この記事では、汚いコードの具体例とそれに対する改善策が述べられています。特に、命名の重要性や冗長な名前の排除、マジックナンバーの排除、一貫性の保持、非同期処理の管理など、コードの可読性やメンテナンス性を向上させるためのポイントが挙げられています。リファクタリングの実践も重要で、最終的には可読性が高く、メンテナンスしやすいコードにするためのアプローチが紹介されています。このように、汚いコードを改善するためには、命名規則やコードの一貫性、適切な構造化が必要であり、エンジニアは常にリファクタリングを意識してコードを書くことが強調されています。
さて、今日紹介した記事を駆け足でおさらいしますと、TypeScriptの`keyof`、DenoとVercelのAI SDK、ドメイン駆動設計のバリデーション、FastEnumの開発、そして汚いコードの改善策についてお話ししました。次回またお会いできるのを楽しみにしています!詳しい内容はショーノートに書いてありますので、ぜひチェックしてくださいね!番組の感想もお待ちしています!それでは、またお会いしましょう!マイクでした!