有限状態機械をデータ構造として:数十億のURLのインデックス作成

2025-08-14

この記事では、有限状態機械(FSM)をデータ構造として使用して、順序付き集合とマップを表す方法を探求し、Rustのfstクレートによる効率的なインデックス作成を示しています。FSMの構築について詳しく説明し、TrieとFSAの構築を網羅し、2015年7月のCommon Crawlアーカイブから16億以上のURLをインデックス化する例を示します。メモリマップ、正規表現とのオートマトン交差、Levenshtein距離によるあいまい検索、ストリーミング集合演算などの手法についても説明します。著者は、さまざまなサイズと特性を持つ複数のデータセットにおいて、他の圧縮スキーム(gzip、xz)と比較してFSTのベンチマークを作成しています。

続きを読む

Rustにおけるpanicとunwrap():いつ、どのように使うか?

2025-05-21

この記事では、Rustプログラミング言語における`panic`と`unwrap()`の使い方について詳しく説明しています。著者は、`panic`を一般的なエラー処理には使用せず、プログラムのバグのシグナルとして使用するべきだと主張しています。`unwrap()`はテスト、コード例、プロトタイピングでは許容できますが、プログラムクラッシュにつながる可能性があるため、本番環境では注意して使用する必要があります。著者はランタイム不変量を詳細に説明し、すべての不変量をコンパイル時不変量に移行できない場合がある理由を説明しています。最後に、著者は可能な限り`expect()`を`unwrap()`よりも使用するよう推奨し、`unwrap()`の使用に対してlintを行うべきかどうかについて議論しています。

続きを読む
開発