みなさん、おはようございます!今日は2024年11月18日、日曜日です。FMラジオ「zenncast」、MCのマイクです!今日も元気にお届けしていきますよ〜。さて、今回はZennでトレンドの記事を紹介していきますので、ぜひお楽しみに!
それでは、早速今日の内容に入っていきましょう!
1つ目の記事は「なぜ DuckDB を採用したのか」です。DuckDBを自社で採用した理由は、主に運用コストの削減にあります。中小規模のサービスにおいては、ログ解析や統計情報の可視化が低コストで実現できるのが大きな利点なんです。具体的には、DuckDBをgo-duckdbで利用することで、HTTPリクエスト単位でのデータ処理が可能になり、クライアント側でのデータ蓄積も実現しています。
自社パッケージ製品のログ解析では、従来はjqやPythonを使っていましたが、DuckDB CLIを使うことでSQLによる解析が簡単にできるようになりました。特に、圧縮されたJSON Lines形式のログファイルを一度に読み込んで処理できるのがポイントです。これにより顧客にもSQLを基にした解析方法を提案しやすくなりました。
また、ログ保存の方法も進化しています。従来のマネージドTSDBではコストが高かったため、Fluent Bitを使ってログをS3互換のオブジェクトストレージに保存し、DuckDBで解析する方法に切り替えました。これでCPUリソースの消費を抑えつつ、必要な時にだけ処理を行う戦略が取れるようになりました。
さらに、DuckDB-Wasmを使ってブラウザ上での統計情報の可視化も進めています。これにより、サーバーリソースを使わずにクライアント側でSQLを実行できるメリットがあります。今後は、クライアント側の統計情報を蓄積する仕組みや、自社パッケージ用の可視化ツール開発も検討中です。DuckDBは自社にとって非常にコスト削減や解析の効率化に貢献する優れたツールですね。
。...。...
2つ目の記事は「Macを買い替えたら、まず実行するセットアップのスクリプトがこちらです」です。テックリードのクリタ氏が、Macの新モデルのリリースを機に、買い替え時に実行するセットアップスクリプトを紹介しています。このスクリプトはM2チップの前PCで動作確認済みで、必要なものだけを簡単にインストールすることを目指しています。
クリタ氏の開発環境には、Docker、React(Typescript)、Ruby、Flutter、Firebase、AWS、Githubが含まれています。スクリプトにはHomebrewのインストールから始まり、日常的に使うアプリや開発ツールの設定が含まれています。
具体的には、Homebrewのインストール、Google Chrome、Slack、Zoomなどのアプリのインストール、JSツールのインストール、DockerやAWS CLI、Firebase CLIなどの開発ツールのインストール、Ruby環境の設定、エディタ(VSCode、RubyMineなど)のインストール、SSHキーの生成、GPGによる署名コミット設定などが挙げられます。
このスクリプトを使って簡単に開発環境を整え、新しいPCライフを快適にスタートできることを目指しています。クリタ氏は、これをきっかけにTerraformの学習も進めたいと考えているようです。新しいMacを手に入れたら、ぜひチェックしてみてくださいね!
。...。...
3つ目の記事は「初めてDefinitelyTypedにPRを出した話」です。この話では、筆者がUTF-8とShift-JIS間の文字列変換を行うライブラリ「encoding-japanese」にパッチを送った際に、TypeScript用の型定義ファイルがDefinitelyTypedで管理されていることを知り、型定義を更新する必要性を感じてコントリビュートを決意した経緯が語られています。
DefinitelyTypedはJavaScriptライブラリの型定義を管理するリポジトリで、npmを通じて型定義が配布されるため、ライブラリ本体とは独立してメンテナンスされます。これにより、ライブラリ更新に型定義が追いつかないことや、第三者による型定義のメンテナンスの課題が生じることがあります。
筆者は型定義の修正手順として、リポジトリのクローン、型定義の修正、テストコードの更新、コードのフォーマット、バージョンの更新、そしてPRのオープンを行いました。特に、型チェックを通過するテストコードを追加し、他のパッケージに影響がないかを確認したそうです。PRは迅速にマージされ、リリースも行われました。
DefinitelyTypedは8953プロジェクトを抱える大規模なpnpm workspaceで、整った手順に従ってコントリビュートができるため、実際には思ったよりも簡単に作業が進められたとのこと。もしライブラリの型定義に問題があれば、ぜひコントリビュートを検討してみてください!
。...。...
4つ目の記事は「FlutterKaigi2024のコードから学ぼう!」です。2024年11月21日から22日に開催されるFlutterKaigiの公式アプリが公開され、そのソースコードも閲覧可能です。運営チームのエンジニアによるコードを通じて、依存関係管理やデザイン、開発環境の工夫について学ぶことができます。
特に注目すべきは、melosを用いた依存関係の管理です。これにより、各パッケージが厳格に分けられ、間違いが減少します。アプリ内では、Material Designの最小タップ範囲をチェックし、アクセシビリティの向上にも寄与しています。
GET_STARTEDセクションでは、VSCodeやfvmを使用するプロジェクトに役立つ情報が得られます。さらに、デバッグの容易さやDart 3からの新機能であるfinalクラスの活用も紹介されており、保守性を高めることができるそうです。
FlutterKaigiのアプリコードは、エンジニアにとって非常に有益なリソースです。参加者同士で知見を共有し、より良い開発を目指しましょう!
。...。...
5つ目の記事は「TypeScript のコンパイルと Node.js 実行の流れ」です。TypeScriptはJavaScriptを拡張した言語で、静的型付けによってコードの安全性を向上させますが、そのままではNode.jsで実行できないため、JavaScriptにコンパイルする必要があります。
具体的な手順として、新しいフォルダを作成し、package.jsonを生成し、TypeScriptのコンパイラーをインストールします。次に、TypeScriptファイルを作成し、tscでコンパイルを行うことでJavaScriptファイルを生成し、Node.jsで実行します。
tsconfig.jsonはTypeScriptのコンパイル設定ファイルで、コンパイル対象のファイルや除外ファイル、コンパイル動作の制御を指定します。開発時には、tscでの手動コンパイルを避けるために、ts-nodeやtsxのようなツールを使うと便利です。
TypeScriptを適切に理解することで、プロジェクト内での開発効率を高め、より安全なコードを書くことが可能になります。次回はCommonJSとESModulesについての解説が予定されていますので、お楽しみに!
それでは、今日の内容を駆け足でおさらいしますね。
1つ目は、DuckDBの導入によるコスト削減と解析の効率化について。2つ目は、Macの買い替え時に実行するセットアップスクリプトの紹介。3つ目は、DefinitelyTypedへのコントリビュートの体験談。4つ目は、FlutterKaigi2024の公式アプリコードの学びについて。5つ目は、TypeScriptのコンパイルとNode.js実行の流れについてでした。
次回もお会いできるのを楽しみにしています!詳しい内容はショーノートに書いてあるので、ぜひチェックしてくださいね。また、番組への感想もお待ちしています!それでは、今日はここまで。ありがとうございました!