皆さん、こんにちは!「zenncast」のマイクです。今日は2024年5月28日、火曜日です。今日もZennでトレンドの記事を紹介していきますよ!

前回は「Zig探訪 - comptime編」、「Next.js 15 RCまとめ」、「Next.jsで、たった3行で型安全なルーティングを行う」といった記事を紹介しましたね。覚えていますか?Zig、Next.js、型安全なルーティングといったキーワードがありましたね。

さて、今日は5つの記事を紹介します。それでは早速、最初の記事から見ていきましょう!

。。。。

最初に紹介する記事は「イテレータによってGoはどう変わるのか - Gopher Day Taiwan 2024 基調講演登壇レポート」です。

株式会社ナレッジワークの上田さんが、GopherDay Taiwan 2024で、Go1.23で導入予定のイテレータについて講演しました。イテレータは、任意のデータ構造をシーケンシャルにアクセスできる仕組みで、for range文の変更として提案されています。これにより、関数がfor range文で使用可能になり、標準ライブラリに新たな関数が加わる予定です。また、golang.org/x/exp/xiterパッケージが提供され、Filter関数やMap関数などが追加される見込みです。

イテレータの導入により、Goのエコシステムが大きく変わると期待されています。台湾でのカンファレンス参加を通じて、日本の技術コミュニティに良い影響を持ち帰りたいと上田さんは語っています。Go1.23のイテレータについても今後の展開が楽しみですね!

。。。。

次に紹介する記事は「ESP32のC/C++の関数をアセンブリ言語化し手作業で最適化してみる」です。

この記事では、ESP32シリーズを対象に、C/C++で作成した関数をアセンブリ言語に変換し、手作業で最適化する手法を紹介しています。特に、Xtensaのゼロオーバーヘッドループ機能や浮動小数点演算にかかる待機時間などに着目し、命令の順序を工夫することで処理時間を短縮する方法を解説しています。

さらに、ESP32-S3のSIMD命令を利用して、並列処理を行うことで処理速度をさらに向上させる方法も紹介しています。手作業での最適化を通じて、処理時間を大幅に短縮することができました。この記事を通じて、アセンブリ言語での最適化の基礎から高度なテクニックまでを学ぶことができますね。

。。。。

次の記事は「レビュー待ちプルリクを減らす GitHub Actions」です。

ラブグラフのエンジニアチームは、プルリクエストの数が増加し、レビューの遅延が課題となりました。この問題を解決するために、GitHub Actionsを活用してレビュー待ちのプルリクエストを自動でSlackに通知するシステムを構築しました。これにより、情報がプッシュ型になり、検索の手間が省け、複数リポジトリのレビュー待ち状況を一括で管理できるようになりました。

具体的なGitHub Actionsの設定例も紹介されており、レビューリマインドが自動化されることで、レビュー待ちの数が減少しました。今後も自動化を進めて、エンジニアの手作業を減らしていく予定です。

。。。。

続いての記事は「Rust製TypeScript Linterにおける型情報Lintルールの模索」です。

Rust製のTypeScript Linterは、型情報を利用したLintルールを持っていませんが、型安全性を高めるためには非常に有用です。Rust製Linterが型情報Lintルールを実装するための手段として、tsserverの利用、Alternative TypeScript Compilerの利用、Type Inferenceの実装といった方法が考えられます。

現在、Rust製LinterのBiomeとOxcは型推論の実装を検討しており、deno_lintも型情報Lintルールの実装について議論が続けられています。将来的には、型情報Lintルールを持つRust製TypeScript Linterが登場する可能性がありますね。

。。。。

最後に紹介する記事は「KotlinでUnion Typeを使いこなそう」です。

この記事では、TypeScriptでお馴染みのUnion TypeをKotlinでどのように実現するかについて解説しています。Kotlinには直接的なUnion Typeは存在しませんが、`sealed class`を使うことで同様の機能を実現できます。具体的な実装例を通じて、Kotlinでの柔軟な型の取り扱い方を学ぶことができます。

Kotlinの`when`式は、全てのケースが網羅されていることをコンパイル時にチェックし、型安全性を強化します。これにより、保守しやすいコードを書くことが可能です。TypeScriptとKotlinは異なる言語ですが、型の扱い方において互いに学べる点が多くありますね。

。。。。

さて、今日紹介した記事を駆け足でおさらいしましょう。「イテレータによってGoはどう変わるのか」、「ESP32のC/C++の関数をアセンブリ言語化し手作業で最適化してみる」、「レビュー待ちプルリクを減らす GitHub Actions」、「Rust製TypeScript Linterにおける型情報Lintルールの模索」、「KotlinでUnion Typeを使いこなそう」でした。

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

Related episodes

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