一度に140字しか扱えないマイクロブログヒウィ比ー利用増大の影響で、短縮URLの利用もかなり伸びていることでしょう。世の中には、いろいろな短縮URLサービスがあります。
でも、これ他人任せにしておいて大丈夫? という疑問。今やクラウド化が流行で、短縮URLサービスなんかもある意味クラウド化の一つのような気がするけれども、URLを圧縮して転送してくれるサービスがいつ終了するかわからないわけで。終了しないまでも、仕様変更とかややこしい。
さらに、spamやら騙しリンクやら、一見するとわからない短縮URLが増えてきて、たいへん! 信用が高いとは言えない短縮URL。それを打開するために、短縮URLが参照しているURLを調べるサービスとかもあることはあるんだけれども、面倒臭い。
だったら、短縮URL生成を自前でやればいいわけです。世界最大級の通販も、世界最大級の動画サイトも、世界最大級の写真共有サイトも、外国の新聞社も、その辺は自前で用意しているようですね。よーし。
ところで、なぜ短縮URLなんて必要?
ヒウィ比ーなんて使ってないし……と思えば、不要のヒトも多いでしょう。でも、たとえばグーグルマップを使って場所について打合せをしている場面で、「じゃ、地図はメールで送っておきます」なんてなことになったら、どうよ?
たとえば南牧村役場の場所を伝えるのに、このようなURLです。
http://maps.google.co.jp/maps?f=q&source=s_q&hl=ja&geocode=&q=%E5%8D%97%E7%89%A7%E6%9D%91%E5%BD%B9%E5%A0%B4&sll=36.321908,139.003294&sspn=0.024895,0.045748&brcurrent=3,0x601c2764e490f955:0x351c45926d9a34fc,0&ie=UTF8&hq=%E5%8D%97%E7%89%A7%E6%9D%91%E5%BD%B9%E5%A0%B4&hnear=%E5%8D%97%E7%89%A7%E6%9D%91%E5%BD%B9%E5%A0%B4&z=15&iwloc=A
メールで勝手に折り返されちゃった場合、5行とか6行とかに渡ってしまいます。相手がインターネット的な事情を理解していて、その分割された行を丁 寧に繋ぎ直して地図を見てくれたらいいですが、1行目だけで地図を見ようとすると、もはやその情報は全く役に立たないことでしょう。
これを、せめて1行で表現できるように圧縮できたらなぁ——、というのが短縮URLの効能です。
【註】2011.08
グーグルマップは独自で短縮URLのサービスを開始したようです。
http://gigazine.net/news/20110824_googlemap_url_shortner/
そして、巷のサービスを使うのではなく、自分の意思で継続したり削除したりできるよう、管理権を掌握したいのです、というのが今回の目的。
短いドメインを用意しよう
圧縮されたドメインが「https://s.photopierre.com/xyz/」でもいいです。でも、せっかく短くするんだから「photopierre.com」の部分も短くなるといい。でも、ニッポンでインターネットが世に広まってから干支も一巡り以上。なかなか1文字2文字の空いているドメインが見つかりませんでした。そもそも、3文字以上じゃないと駄目なコト多いですし。
でも、改めてURL取得なんてしなくてもよいかなとも思います。ただし、専用のサブドメインにしておくと、URL重複なんかにも対応できて便利です。「https://s.photopierre.com/xyz/」でいえば、「s.」の部分です。
YOURLSを使う
いろいろな道具がありますけれども、今回は、オープンソースのYOURLSを使うことにしました。こんなことくらいなのになかなか多機能で便利そうな気配なので。
【リンク】http://yourls.org/
こゆとき、外国語がサラっと理解できないから余分な時間を無駄に費やしてしまいます。社内公用語を英語にすることが国際化だ、とは言いませんけれども、さーっと流し読みして理解できるといいですな。
この度、使わせていただくのは、バージョン1.5。zipファイルをダウンロードして展開すると、いろいろファイルが登場します。
各種設定の前に、MySQLを用意
データベースを使って元URLと圧縮URLを紐付けするようになっているらしいので、MySQLを用意します。
- ユーザー名
- パスワード
- データベース名
- データベースホスト
YOURLS設定
ひとまず、この中の、[includes]→[config-sample.php]を開いて、各種設定をします。フォトピエール的バイアス不要の場合は、http://yourls.org/#Config 見ればよろし。
まずは、14行目から始まるMySQLの設定
「‘」(クォーテーション)「,」(コンマ)「;」(セミコロン)などの記号を紛失しないように。
YOURLS_DB_USER
MySQLのユーザー名YOURLS_DB_PASS
MySQLのパスワードYOURLS_DB_NAME
MySQLのデータベース名YOURLS_DB_HOST
データベースのホスト。localhostのことが多いかもYOURLS_DB_PREFIX
データベースのテーブル名のプレフィックス。データベースに何かこだわりの構成が必要でなければこのままで。
続く33行目からのオプション設定
YOURLS_SITE
運用するドメイン。末尾の「/」は不要。「https://s.photopierre.com」などYOURLS_HOURS_OFFSET
タイムゾーン。ニッポンなら「9」、ミッドウェイなら「-11」
“Timezone GMT offset”って書いてあるのでGMTに対する数字を入れるのかと思ってしまいましたが、実際には、サーバーの時間との時差を記します。ニッポンのサーバーでニッポン時間ならば「0」でした。YOURLS_UNIQUE_URLS
短縮前のURLが同じだったとき、新たに短縮URLを生成するか否か。- true
元URL短縮URLは1組のみ生成 - false
同じ元URLに対して、リクエストした数だけ短縮URLが生成される(bit.lyなどのように)
- true
YOURLS_PRIVATE
管理ページにパスワードをかけるか否か。運用してみて不便を感じるまでtrueでいいでしょう。YOURLS_COOKIEKEY
クッキーをハッシュ値化するための暗号鍵で、利用者が記憶しておく必要のないもの。自分で決めるのが難しければハッシュキージェネレーターが用意されているので、何度かリロードしてみて表示されたどれかにしておけばよいでしょう。逆に、ダウンロードして展開したconfig_sample.phpに書かれているモノをそのまま使うのは芳しくないと思われます。一度はジェネレーターを開いて、何か違うモノにした方がセキュアと言えるでしょう。- YOURLSクッキーキージェネレーター http://yourls.org/cookie
yourls_user_passwords
管理ページにログインできるユーザーとパスワード。1行の左のクォーテーションで囲まれた方にはユーザー名、「=>」に続く右側のクォーテーションで囲まれた方には、そのユーザーのパスワード。コンマで区切って複数のユーザーを指定することも可能。「‘username2’ => ‘password2’」などの使わない値は消去しておかないと、乗っ取られやすい。
例: 'photopierre' => 'password', 'ahoyaro' => 'otherpass'
この例では、「photopierre」というアカウントに「password」というパスワード、「ahoyaro」というアカウントに「otherpass」というパスワードの2つを設定したという意味です。
60行目からの短縮ルール設定
YOURLS_URL_CONVERT
- 36
大文字小文字を区別しない(英字+数字の36文字で) - 62
大文字小文字を区別する(英字大文字小文字+数字の62文字で)
- 36
yourls_reserved_URL
短縮URLとして使用されない予約されたキーワードのリスト。
文字列がランダムに生成されると偶然否定的な意味の単語のような組合せになることがあるわけで、紛らわしいキーワードを定義しておく。
例:'porn', 'faggot', 'sex', 'nigger', 'fuck', 'cunt', 'dick', 'gay'
includes/config_sample.php
として開きましたが、これを、user/config.php
として保存。
そしたらインストール
zipファイルを展開したファイル群に、user/config.php を加えたものを全部、使うサーバーにアップロードします。アップロード完了後、そのサーバーの /admin/ にアクセスすると、インストール確認画面(うちの場合なら http://gnpp.jp/admin/)。
[Install YOURLS] をクリックすると、インストールが始まるよー!
ありゃ、「.htaccess」が無いぜと来たよ。http://code.google.com/p/yourls/wiki/htaccess を参考に、作ってアップロード。ちなみに、ルートにインストールした場合。サブディレクトリにインストールしたならば、RewriteRuleのファイル名の前にディレクトリ名が必要。
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /yourls-loader.php [L]
ちなみに、wwwナシで統一する方法なんかも書き加えておくといいかもね!
では、さっそくログイン
改めて /admin/ にアクセスするとログイン画面が表示され、ログインする。
あんれま、ちゃっかりYOURLSが先に登録されるようになってる!
では、早速、「Enter the URL」にフォトピエールのURL http://www.photopierre.com を入れて、URLを圧縮してみましょう。ちなみに、その右側にある「Custom short URL」には「pp」と入れてみましたよ。そしたら、こんな。
いきなり、ソーシャルへの投稿画面なんかも付属して来ちゃうわけですね。なるほどー。
ブックマークレットとかAPIとか
付属する機能もいろいろある。/admin/tools.php を開くと、ブックマークレットやら、APIの使い方が出てくる。にゃるほどね!そうすると、URL圧縮が便利になったり、他のアプリケーションから自動的に短縮URLを作り出して引き出すことができるということね(たぶん)。
例えば、twitterfeedなどでYOURLSを使うにはどうしましょう?
- 自分のYOURLS管理画面にアクセス、「Tools」をクリック
- 後半「Secure passwordless API call」の項にあるsignature tokenを記憶
- twitterfeedの管理画面から編集画面に入り、Advanced Settingsの中を調整。Shorten link throughに【custom】を選択して出現するテキストフォームに、先ほどの記憶したsignature tokenを利用して、入力。
http://設置したドメイン/yourls-api.php?action=shorturl&format=simple&signature=【記憶したsignature token】&url=%@
やりたいことに1歩近づけた気がする。
【追記】2012.11
連番ではなく乱数にするプラグインAssign random keywordsについて書かれています。→いとーけーのページ