皆さん、おはようございます!「zenncast」のマイクです。今日は2024年7月14日、水曜日です。さあ、Zennで今日トレンドになっている記事を紹介していきますよ!
前回紹介した記事ですが、まずは「結局 useEffect はいつ使えばいいのか」。これはReactのフックについての重要なポイントを押さえた記事でしたね。それから、「スタートアップなのにフロントエンドのテストカバレッジが90%を超えている話」。これも非常に参考になる内容でした。そして、「その try-catch、意味がありますか?NestJSにおける例外処理の戦略」。例外処理について深く掘り下げていましたね。
さて、今日は5つの記事を紹介します。まず一つ目の記事からいきましょう。
。。。。
1つ目の記事は「Tailwind CSS初心者が絶対ハマる落とし穴」です。Tailwind CSSを使い始めたばかりの方が陥りやすい2つの問題点について解説されています。
まず一つ目の問題点は「クラス名の動的指定」です。Tailwind CSSでは、クラス名を動的に変更する方法に注意が必要です。例えば、`bg-${color}-500`のようにクラス名を動的に組み立てると、スタイルが適用されません。解決策としては、完全な文字列として指定する必要があります。
次に「クラス名のコンフリクト」です。共通コンポーネントでデフォルトのスタイルとカスタマイズされたスタイルが競合する場合があります。例えば、`bg-yellow-500`と`bg-red-500`が競合すると、どちらのスタイルが適用されるか不安定になります。この場合、`tailwind-merge`ライブラリを使用することで解決できます。
Tailwind CSSは非常に便利ですが、その特有の挙動を理解し、適切に使用することが大切です。初心者がよく直面する問題とその解決策を具体例を交えて解説しているので、ぜひ参考にしてください。
。。。。
次に、2つ目の記事は「Rye × uvでPython環境と機械学習環境を整える」です。Pythonの包括的なプロジェクト管理ツール「Rye」と、高速なパッケージインストーラ「uv」を用いた開発環境の構築方法について紹介しています。
RyeはPythonのバージョン管理からパッケージ管理まで行えるツールで、`pyproject.toml`を用いたプロジェクト管理が可能です。一方、uvはpipおよびpip-toolsの代替として設計されており、パッケージインストールが非常に高速です。
具体的な操作方法としては、Ryeのインストール手順や基本操作方法、uv単体のインストール方法や基本操作についても触れています。さらに、CUDA依存のパッケージの追加方法やGitHub Actions上でのRyeのインストール方法、ruffやmypyの設定方法なども紹介されています。
Ryeとuvを活用して効率的にPython開発環境を整備する方法が具体的に示されており、機械学習プロジェクトなどでもスムーズに開発を進めることができます。
。。。。
続いて、3つ目の記事は「空世界 〜HTMLの永遠仕様探訪記、或いは、文字なきsrcにまつわる寥々たる考察について〜」です。HTMLのimg要素の`src`属性が空文字列の場合にどのような挙動を示すのかについて探求しています。
`<img src="">`を使うと画像は表示されず、代わりにalt属性が表示されます。しかし、JavaScriptで該当img要素の`src`プロパティを確認すると、HTMLドキュメントのURLが表示されるという興味深い現象が起こります。
この挙動の理由を明らかにするためにHTML仕様書を調査しており、空文字列はURLの一種であるため、ベースURLが指定されていればvalid URL stringと見なされることがわかります。このため、img要素の`src`プロパティはHTMLのURLを指すことになります。
html-to-imageというライブラリの使用時に、`<img src="">`が含まれていたために画像生成が失敗する問題に直面し、仕様に従ったコードを書くことの重要性を強調しています。
。。。。
次は4つ目の記事、「GitHub Profile用にGit Graph風の職務経歴書を作った」です。著者が自身のGitHubプロフィールをより魅力的にするために、Git Graph風の職務経歴書を作成した方法を紹介しています。
最初に検討したツールは`gitgraph.js`でしたが、ターミナル感が不足していたため不採用となり、代わりにRust製のコマンドラインツール`git-graph`を選びました。これにより、エンジニアらしい職務経歴のビジュアルを実現できます。
具体的な手順として、職務経歴をGitリポジトリにコミットコメントとして登録し、`git-graph`で描画、ターミナルのスクリーンショットツール`termshot`でキャプチャする方法が紹介されています。また、日付表示のカスタマイズや日本語対応、絵文字対応のためにツールをフォークして修正しています。
完成品はGitHubで公開されており、詳細な手順やソースコードも共有されています。GitHubプロフィールを工夫したいエンジニアにとって非常に有益な情報が詰まっています。
。。。。
最後に5つ目の記事は「自動テストの実行時間を大幅短縮!分析と最適化の実践法」です。Thinkings株式会社のsonar ATS開発プロジェクトでは、自動テストの実行時間を短縮するための分析と最適化を行いました。
使用した開発環境はVisual Studio 2022、.NET Framework 4.6.2、C#、およびxUnit.netです。テスト結果の分析にはJenkinsとPower BIを使用し、テスト結果ファイルをAzure Blob Storageにアップロードし、テストケースごとの実行時間を収集しました。
以下の3つの対策を実施することで、テスト実行時間の大幅な短縮に成功しました。
1. テストケースを複数クラスに分割
2. インスタンスの生成回数を減らす
3. LINQを即時実行する
これらの対策により、合計で約300秒のテスト実行時間短縮を達成しました。今後も継続的に測定と改善を行い、さらに効率的なテストコードを目指していく予定です。
。。。。
さて、今日は「Tailwind CSS初心者が絶対ハマる落とし穴」、「Rye × uvでPython環境と機械学習環境を整える」、「空世界 〜HTMLの永遠仕様探訪記、或いは、文字なきsrcにまつわる寥々たる考察について〜」、「GitHub Profile用にGit Graph風の職務経歴書を作った」、そして「自動テストの実行時間を大幅短縮!分析と最適化の実践法」の5つの記事を紹介しました。
次回も皆さんに役立つ情報をお届けしますので、お楽しみに。詳しい内容はショーノートに書いてありますので、そちらもぜひチェックしてくださいね。また、番組の感想も募集していますので、ぜひお便りお待ちしております。それでは、また次回お会いしましょう!