Help us understand the problem. What is going on with this article?

goo.glも終わるしGoとGAEで短縮URLサービスをつくろう

More than 1 year has passed since last update.

goo.glは終わってしまうようなので、短縮URLサービスをみんな自分で作るといいと思います。QRコードも表示できるので、スマホにURLを送るときも簡単です。

ソースコード:juntaki/url-shortener
完成品:https://s.juntaki.com

38465564-40d7b79e-3b58-11e8-978f-304193d4f5c3.gif

前提

  • GAE
  • 短めのドメイン

つかいかた

reCAPTCHAを使うので、登録しておきましょう。Invisibleなやつを選んでおきます。
reCAPTCHA: Easy on Humans, Hard on Bots

ソースコードはここから入手してください。
juntaki/url-shortener

app.ymlを編集して、URLを自分のドメインに、SITE_KEYを先程取得したものに変更します。

env_variables:
  BASE_URL: "https://s.juntaki.com"
  RECAPTCHA_SITE_KEY: "6Lc48lAUAAAAAFehXaHNp0Ys-lS1iUfNtUXd_-eR"

secret.ymlのファイルを作ります。

env_variables:
    RECAPTCHA_SECRET: "<your-recaptcha-secret>"

あとは適当なプロジェクトにデプロイしたら完成です。

gcloud config set project <project-name>
gcloud app deploy

技術的な解説

短いURLをつくる方法

適当なハッシュ関数で〜と考えていましたが、ぶつからなくても、長くなっては意味がないです。単純ですが、既存のURLとぶつからなくなるまで、下記の文字から3つランダムで選びます。

var letters = []rune("23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz")

文字は、Base58から数字の1と小文字のoの2文字を取り除いたBase56のセットになっています。発表スライドなどでパッと見せても見間違えにくいです。
56*56*56=17万通り近くあるので、そんなに枯渇することもないでしょう。

QRコードを作る

skip2/go-qrcode: QR Code encoder (Go)
これを使いました。Base64エンコードして、テンプレートに組み込んでしまえば、画像の配信を考えなくて良いので簡単です。

reCAPTCHAを使う

単に使ってみたかっただけですが、お手軽さとスパム対策を考えると、ちょうどよい選択肢でした。
button id='submit'とあるサンプルをコピペして使うと、そのまま使えないシンプルな罠が仕掛けてあったり、このサンプルは本当に使わせる気があるのだろうか・・・
Developer's Guide  |  reCAPTCHA  |  Google Developers
jquery - javascript submit() is not a function? - Stack Overflow

まとめ

GAEなので維持費0円でURL短縮サービスがつくれました。いいかんじの背景画像などをつけると、独自感が出てよいのではないでしょうか。
リダイレクトするときに、ログを取っておくとアクセス解析みたいなことも簡単にできると思います。

m3dev
インターネット、最新IT技術を活用し日本・世界の医療を改善することを目指します
https://m3.recruitment.jp/engineer/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした