RailsでIDの代わりにUUIDを利用する
はじめに
Railsでモデルを作成する場合、主キーとしてIDなるカラムが自動的に作成されます。このカラムは新しくリソースがcreateされるに応じて、インクリメントされていきます。
内部的に利用されるのみで、外部に露出しないシステムや、この値に対して特定の意味をもたせているシステムであれば、そのまま放置しても問題ないと思います。
しかしながら、そうでない場合、とりわけIDの値がユーザの目に触れるような場合は、UUIDに変更するべきでしょう。
実装
IDをUUIDに変更するには、マイグレーションファイルの修正に加えて、FriendlyIdというgemを利用します。Rails Style Guideがオススメしておりました。
https://github.com/norman/friendly_id
具体的にはマイグレーションファイルでIDを無効化の上、代わりにUUIDというカラムを追加。更にこれをIDとして外部から参照する為に、FriendlyIdによる指定を入れます。
これによってIDの代わりにUUIDでリソースにアクセスできるようになりました。
思い起こせばtwitterも、一時期はRailsのデフォルトのIDで運用がされておりましたね。今でもその時の名残を、以下のようなツイートから感じることができます。
just setting up my twttr
— jack (@jack) March 21, 2006
IDをUUIDにすることで、サービスがどれだけ流行っていないか、隠すことができます。サービスのリリース当初こそ必須の対応ではないでしょうか。