注:記事内「短縮.jp」は、サーバ契約が終了したためリンクを外してあります(2010/6/27)
----------

Twitter を利用している人であれば、bit.ly や ow.ly といった URL 短縮サービスをご存知であろう。
通常はこういった外部サービスを使うことが多いのだが、自分専用または自社専用の URL 短縮サービスを作ることもできる。これにより、自分のドメイン短縮サービスを提供できる。自ドメインで提供する場合、例えば次のようなメリットがあると思われる。

 ・外部サービスへの依存から脱却できる
 ・ユーザーに安心感を与えられる

前者の場合、突然サービスが停止してしまうといったリスクや、アクセス データを外部サービスに握られてしまうというリスクを回避できる。また、後者の場合、自分しか使えないドメイン名で提供できるので、どこに飛ばされるか分からないという不安感を軽減できる。例えばニューヨーク タイムズは自社の短縮 URL を「nyti.ms」というドメインで提供しているが、これによって読者はジャンプ先がニューヨーク タイムズであることが確認できる。

こういった自分用 URL 短縮サービスを作るには、大きく分けて 2 つの方法がある。

 A. 自分で用意するサーバで提供する(レンタルサーバ、自宅サーバ含む)
 B. 外部インフラを利用する

今回は A で実現する方法について説明する。


◆◆ オープンソース ソフトウェア Yourls ◆◆


サーバにインストールできる URL 短縮サービス ソフトウェアはいくつか存在する。例えば次のサイトで紹介されている。

 9 OpenSource URL shortening apps to make your own services
 7 Open Source And Free URL Shortener Scripts To Create Your Own

本記事では、上記サイトにも紹介されている「Yourls」で試してみたい。ホームページはこちらである。

 YOURLS: Your Own URL Shortener
 http://yourls.org/

Yourls は PHP のオープンソース プログラムで、よくある短縮サービスを Web サーバ上で提供できる。パスワードで保護して自分だけが利用できるようにすることも、パスワードなしで利用できるようにすることもできる。また WordPress のプラグインとも連携し、書いた記事の URL を自動で短縮することもできる。

必要なもの
 ・自分のドメイン。***.com や ***.jp など(1 年間で 500 〜 3,000 円程度で購入可能)
 ・自分の Web サーバ。レンタル サーバでも、自宅/自社サーバでも可

サーバ要件
 ・PHP 4.3 以降
 ・MySQL 4.1 以降
 ・mod_rewrite が有効
(2010 年 5 月 16 日時点の情報。こちらも参照のこと)

必要な知識
 ・初歩的な PHP の表記
 ・MySQL との接続方法
 ・Web サーバの設定方法
 ・独自ドメインの設定方法
 ・外部にサービスを公開する場合は、セキュリティの知識
 ・辞書を使って説明を読める程度の英語力

普段 Web サーバの管理をしたり、PHP を使ったりしている方であれば、非常に容易にインストールして運用できると思う。どちらの知識もほとんどない私でも何とか完了できた。


◆◆ 導入手順 ◆◆


次に導入方法であるが、私自身の行なった手順で説明する。私の環境と異なる部分については、適宜読み替えていただきたい。

今回私は「短縮.jp」という独自ドメインを「チカッパ!」というレンタルサーバで使用した。日本語ドメインを使用した理由は、既存のアルファベットのみのサービスと違っていて面白そうだという点と、日本語で文字数を節約できる(「短縮」は 2 文字)という点である。

この独自ドメインとサーバは連携済みという前提で説明する。

結果を先に示すと、こうなった。
 http://短縮.jp/(リンクは切れ)

これは外部公開ページである。このように外部公開ページを設置することもできるし、自分だけが見られる管理ページのみにすることもできる。


1. Yourls をダウンロードする

Yourls のサイトにアクセスし、[Download] から zip ファイルをダウンロードする。

100516_1


今回は本記事公開時点で最新版の「yourls-1.4.3.zip」をダウンロードした。
ダウンロードしたら、適当な場所に解凍しておく。


2. MySQL を設定する

Yourls のファイルに情報を書き込む必要があるので、まず MySQL の設定をしておく。設定して必要になるのは、次の情報である。
 ・MySQL のユーザー名
 ・パスワード
 ・データベース名
 ・ホスト名

私が使うチカッパ!レンタル サーバーの場合、MySQL でデータベースを作成すると、設定情報が次のように表示される。

100516_2


この写真で、
 ・サーバー(MySQLバージョン): mysql***.chicappa.jp → ホスト名
 ・ユーザー名: OA000*** → MySQL のユーザー名
 ・データベース名: OA000***_nishinotest → データベース名
となる。パスワードは表示されていない。


3. Yourls の config ファイルを設定する

zip ファイルを解凍すると「yourls-1.4.3」というフォルダが出てきたはずだ。この「includes」フォルダの中に「config-sample.php」というファイルがあるので、テキスト エディタなどで開く。

まず、前のステップで作成した MySQL データベースの情報を設定する。下の写真のように、「MySQL settings」エリアにユーザー名、パスワード、データベース名、ホスト名を書き込む。

100516_3


テーブルのプリフィックス(MySQL tables prefix)も設定できるが、今回はデフォルトのままとしておいた。

次にドメイン名などのサイト情報を設定する。config-sample.php ファイルの MySQL 設定エリアの少し下に、「Site options」というエリアがある。次のように書き込んで設定する。

100516_4


私はドメイン名に日本語を使っているため、ファイルは UTF-8 で保存してみた。これで動くには動いたが、サーバやデータベースの文字コードに詳しくないため、最適の方法かどうかは分からない。

管理ページにパスワードを設定する(Private にする)とは、http://<ドメイン名>/admin/ ページにアクセスしたときにパスワードを要求するかどうかということである。この管理ページは、外部公開 Web ページとは別のものなので注意していただきたい。いくら管理ページ(http://<ドメイン名>/admin/)のパスワードを設定しても、外部公開 Web ページ(http://<ドメイン名>/)を設置している場合、第三者に使われる。
とりあえず自分だけで使いたいという場合は、ここでユーザー名とパスワードを設定して true(デフォルト)にし、外部公開 Web ページを設置しないことをお勧めする。

上記の写真以外にもいくつか設定項目があるので、簡単に説明する。
 ・Timezone GMT offset
  タイムゾーンのオフセット。0 のままでも、恐らく MySQL の値を取得する

 ・Allow multiple short URLs for a same long URL
  同一の元 URL に対し、複数の短縮 URL を許可するか

 ・A random secret hash used to encrypt cookies
  クッキー暗号化のためのハッシュ値(私はよく分からない)

さらにこの下に「URL Shortening settings」という設定エリアがある。私はデフォルトのままとしたが、もし必要であればこちらも設定する。
 ・URL shortening method: 36 or 62
  短縮 URL で大文字・小文字を区別する(62)か、しない(32)か

 ・Reserved keywords
  NG ワード。元 URL に含まれている場合、短縮 URL は生成しない

設定を書き込んだら、「config.php」という名前で保存する。
(上記の通り、日本語ドメインを使うのであれば文字コードに注意する必要があるかもしれない)


4.(オプション)外部公開用 Web ページを設定する

もし http://短縮.jp/ のような外部公開用 Web ページを設置する場合、この手順を行なう。公開せずにとりあえず自分だけで使うのであれば、この手順を行なう必要はない。

「yourls-1.4.3」フォルダの直下にある「sample-public-front-page.php.txt」というファイルを開く。
ここでスタイルやタグなどを設定する。ファイルを見れば分かるが、細かな設定をする場合、HTML や PHP プログラミングの知識が必要となる(逆に言えば、それが分かれば高度にカスタマイズしたページを作れる)。
ちなみに私は最低限必要そうな部分のみを残し、余計な機能(Twitter への簡易投稿など)は削除しておいた。

これを「index.php」という名前で保存する。


5. サーバにアップロードする

FTP ツールなどを使用して、「yourls-1.4.3」フォルダの中身を Web サーバにアップロードする。
この際、.htaccess の作成や robots.txt の設定など、各自の要求に合わせて必要な作業を行なう。
(私は Web サーバの設定には明るくないため、この辺りの設定は各自で調べて行なっていただきたい)


6. インストールする

サーバへのアップロードが完了したら、Yourls をインストールする。
まず、ブラウザに「http://<ドメイン名>/admin/」と入力してアクセスする。表示された画面の [Install YOURLS] ボタンをクリックしてインストールする。

100516_5


うまくインストールが完了すると、下のような画面が表示される。[YOURLS Administration Page] というリンクがあるので、それをクリックする。

100516_6


もしすでにインストール済みであるというようなメッセージが表示されたら、「http://<ドメイン名>/admin/」にアクセスしてみる。

ログイン パスワードを設定した場合、ログインすると次のような管理ページが表示される。

100516_7


(デフォルトで 2 つ入っているが、消しても問題ない)


7. 管理ページで使う

上記の管理ページが表示されたら、試しに URL を短縮してみる。
下の例では、自分のブログの URL(http://blog.nishinos.com/)を短縮している。

100516_8


この際、「Custom short URL」に文字を入力すると、自分の好きな文字列を URL に付加できる。
[Shorten The URL] をクリックすると、次のように短縮される。この場合「1」が短縮 URL である。つまり、「http://<ドメイン名>/1」である。私の場合、「http://短縮.jp/1」(リンクは切れ)にアクセスすると「http://blog.nishinos.com/」にジャンプする。

100516_9



8.(オプション)外部公開 Web ページで使う

手順 4 で外部公開 Web ページを設定した場合、上記の管理ページではなく、外部から短縮サービスを利用できる。

私の場合、「http://短縮.jp/」(リンクは切れ)が外部公開 Web ページなので、そこにアクセスしてみる。
ここでは試しに、私のブログ記事の 1 つの URL(http://blog.nishinos.com/archives/2637052.html)を短縮してみる。

100516_a


[短縮] をクリックすると、次のような画面が表示される(これは私が作成した画面なので、各人によって異なる)。自動的に「2」が短縮 URL となっている。

100516_b


また、管理ページ(http://<ドメイン名>/admin/)を見ると、次のように「2」が追加されている。

100516_c





以上が Yourls の設定と使用方法である。

Yourls の設定で不明な点があればコメントをいただきたい。分かる範囲でお答えする。ただ、Web サーバの設定や PHP プログラミングなどは私は分からないので、各自で調べていただきたい。