RailsにおけるエレガントなSQLiteマルチテナント

2025-04-27

この記事では、Railsを使用してマルチテナントアプリケーションを構築する際の経験について説明しています。各テナントは、独自の独立したSQLiteデータベースを持っています。著者は当初、従来のデータベース接続管理方法を使用していましたが、高負荷下で接続エラーが発生しました。様々な調査の結果、Rails 6以降の`connected_to`メソッドとカスタムミドルウェアを組み合わせることで、安全で効率的なテナントデータベースの切り替えを実現し、マルチスレッドと接続プールの管理問題を巧みに解決しました。さらに、Rackストリーミングレスポンスボディの処理に関するヒントも共有しています。この記事は、高性能でスケーラブルなマルチテナントアプリケーションを構築する上で貴重な参考資料となります。

続きを読む

Tailwind CSS 4とFOMOの罠:開発者の戒め

2025-04-07

この記事では、Bun.jsに依存するTailwind CSS 4を使用中に発生した著者の苛立たしい経験について述べられています。AVX2命令セットの欠如により、古いMac Proでクラッシュしたのです。この問題のデバッグに数日かかり、最終的に新しいコンピュータを購入してTailwind CSS 4を諦めることになりました。著者はテクノロジー業界における「Fear Of Missing Out(FOMO)」と、新しいテクノロジーを盲目的に追いかけることの落とし穴について考察しています。この経験は、トレンドに流されるのではなく、個人のニーズとプロジェクトの現実を優先し、慎重にテクノロジーを選択することの重要性を強調しています。

続きを読む
開発

エレガントなUI取り消しスタックアルゴリズム:インデックスエラーの回避

2025-03-26

この記事では、UI取り消しスタックアルゴリズムの巧妙な実装を紹介します。従来のインデックスベースのアプローチではなく、2つのスタック(undoStackとredoStack)を使用して取り消しとやり直し操作を管理することで、一般的なインデックスエラーやオフバイワンエラーを巧みに回避します。コードは簡潔で理解しやすく、structuredClone()を使用してJavaScriptの参照渡しによる問題に対処し、冪等性を確保しています。完全なコード例も提供されています。

続きを読む

Ruby関数でSQLiteを強化する

2025-01-27

この記事では、Ruby関数を統合することでSQLiteの機能を向上させる方法を示しています。著者は、ユーザー定義関数(UDF)を作成して、SQLクエリ内でRubyコードを直接呼び出し、時間順序付きUUIDの生成、正規表現の一致、統計指標(標準偏差やパーセンタイルなど)の計算などの機能を実現しています。また、アプリケーションのプロセス外でカスタム関数にアクセスする際に問題が発生しないように、SQLITE_DIRECTONLYフラグの使用についても説明しています。全体として、これはSQLiteの柔軟性と機能性を向上させる強力な方法であり、特にデータ探索と分析に役立ちます。

続きを読む
開発