Flickrの短縮URL用にRubyでbase58実装

FlickrのURLには、正規のURLのほかに、公式に短縮URLが用意されています。このFlickrの短縮URLは、base58 というアルゴリズムで生成されているそうです。

Short URLs

https://flic.kr/p/{base58-photo-id}

スポンサーリンク

ruby の gem でも base58 というのを見つけたのですが、勉強がてら車輪の再発明をやってみました。base58 のアルゴリズム自体は、Perl/Objective-C/JavaScript の例ですが以下が参考になりました。

Aggressive Engineer: Base58について勉強+Encode::Base58コード解読
Flickrの短縮URLを生成する方法(Base 58によるエンコード) – A Day In My Life

base58 の Ruby 実装

base58 でエンコード・デコードを行う Ruby コードです。ついでに、Flickr の photo_id から短縮URLを生成する flickr_url_shortener というメソッドもおまけ。BASE58_ALPHABET の文字列は、小文字のl(エル)、大文字のI(アイ),O(オー)が抜けて58文字になっています。

Ruby gem での実装例

rubygem の base58 実装は以下を参照。
https://github.com/dougal/base58/blob/master/lib/base58.rb

Flickraw(https://github.com/hanklords/flickraw)という、Flickr 用便利 gem の base58 エンコードの実装は以下のようになっていました。

やってることは同じですね。Flickraw を使うと、Flickr の URL 短縮のための base58 エンコードは以下のように行えます。

スポンサーリンク
私は以下の本で Ruby を覚えました。メタプログラミングRubyは入門を超える内容で難しめです。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!