Do what want, Do when want.
  • TechBlog
  • Laravel
  • 短縮URLサービスがどんどん終了しているので、自分でOSSライブラリ「URL Shorter」開発してみた

短縮URLサービスがどんどん終了しているので、自分でOSSライブラリ「URL Shorter」開発してみた

はじめに

昨今、「短縮URL」サービスがどんどん終了しています。
私が一番使っていたサービスはGoogleの短縮URLだったのですが、いつまにか終了してしまっていました。

短縮URLサービスはめちゃくちゃ便利なんですが、いかんせん不正や詐欺に使われてしまうというデメリットがあります。
上記で書いた残り1つについても、いつ終わってしまうか分かりません。

そこで、「それならば自分用の短縮URLサービスを作ろう!」と思い立ち、開発し始めました。
かつ、どうせ作るなら、自分だけのものではなく、OSSライブラリとして開発することに決めました。
Laravel製なので、いま開発されているLaravelソリューションがあれば、そのパッケージに組み込むことで、短縮URL生成をかんたんに利用することが可能です。
GitHubにて、MITライセンスで公開済みです。
https://github.com/hirossyi73/url-shorter

せっかくの機会ですし、Qiitaでもご紹介することにしました。

短縮URL一例

機能

短縮URL生成機能

URLを入力すると、短縮URLを生成してくれます。

文字列の長さと、使用する文字は、設定ファイルで変更することが出来ます。
文字列が長ければ長いほど、重複は発生しにくいですが、文字列は短い方が短縮URLとしてはカッコいいです。
その辺はお好みで。

短縮URL生成ページの認証機能

Googleをはじめとした、各種短縮URLサービスが終了した原因の99.9999999%は、間違いなく、詐欺サイトや犯罪などに使われる「不正利用」だと思っています。

なので、今回開発したライブラリでは、短縮URL生成ページにパスワード認証を付けることができます。
パスワードを知らない人は短縮URLを生成出来ないので、不正利用に使われる可能性はグッと減るはずです。

プレビュー機能

短縮URLをブラウザで入力した際に、直接リダイレクトせず、プレビュー画面を表示することができます。
「本当にこのサイトにアクセスしますか?」的な機能ですね。

APIから短縮URL作成、URL復元

このライブラリでは、短縮URL作成とURL復元を、APIから呼び出すことができます。
なので、他のシステムから、「短縮URLを生成する」的なこともしやすいです。

ちなみに、API機能やパスワード認証機能は、設定によりオンオフが可能です。
用途によって、必要な場合のみオンにする・・・ということができるので、柔軟性は高いです。

Laravelから短縮URL作成、復元

もちろん、プログラムから直接短縮URLを生成することも可能です。
いま開発されているLaravelソリューションがあれば、そのパッケージに組み込むことで、短縮URL生成をかんたんに利用することが可能です。

use Hirossyi73\UrlShorter\Model\Shorter;

// 短縮URL生成
$shorter = Shorter::create([
    'url' => $url
]);
return $shorter->generate_url;

// 短縮URLからURL復元
$shorter = Shorter::findByGenerateUrl($generate_url);
return $shorter->url;

ライブラリ・ライセンス情報

Laravelフレームワークとして開発しています。PHP7.0.0以上、Laravel5.5以上。
ちなみに、最新(2020/07/12現在)のLaravel7での動作も確認しています。

ライセンスはMITです。
https://github.com/hirossyi73/url-shorter

その他

このライブラリですが、短縮URL生成ページを公開する予定はありません。
前述してますが、先行サービスが相次いで終了したのは、間違いなく不正利用です。公開するとなると、それらの不正利用の対処も必要になってきます。

なのでこのライブラリは、
・自分だけが短縮URL生成を行えるような設定で利用する
・社内で短縮URL生成など、限られた環境で利用する
・短縮URL生成のエンドポイントは公開せず、短縮URL生成はプログラムのみに絞る
このような用途が良いんじゃないか、と思っています。

良ければ、URL Shorter、ご利用ください!

開発案件募集!

  • 新しいプロジェクトを開始するけど、開発者が少ない…
  • 既存のプロジェクトで開発者が足りない…
  • 今の開発者のスキルがちょっと。。。別の開発者を検討したい
  • システム開発を委託したい!

これらの悩み、解決します!まずはお気軽にお問い合わせください。