病みつきエンジニアブログ

機械学習、Python、Scala、JavaScript、などなど

社内ネットワークで使うための短縮URLサービス作った

社内専用環境とかで“性善説”に基いて運用できる、短縮URLを作ってみた。

github.com

demo

詳細は README に書いているが、

  • シンプルなUI
  • 命名もできるし、ランダムな文字列もいける
  • 既存の短縮URLの上書き(性善説だし :)
  • DynamoDBがバックエンドで安い
  • Dockerベース

ちなみに、イントラネットに置けるようにしたかったので、サーバーレスにはしてない。

モチベーション

Google社の勉強会とかにいくと、貼ってあるポスターに http://go/hoge みたいなリンクがあって(あるよね?)そういう“社内専用短縮URL”を実現したかった。

また、Slackのトピックには文字数制限があるが、どうしても制限を超える長いURLへのリンクを貼りたかったという事情があった。かといって、ここに貼りたかったリンクは社内専用の URL なので bit.ly とかの短縮 URL サービス使って短くするのも微妙だなということで作ってみた(例えば、社内のプロジェクト名などがURLからわかるのであまり出したくない)

f:id:yamitzky:20180110210156p:plain

技術スタック

技術的に新しいことをやりたかったので、Nuxt.js 使ってみた。1ページしかないので完全にオーバースペックだけど。

Nuxt.js は Vue.js の基本スタックを前提としていて(Vue, Vuex, vue-routerなど)、SSRとかもできるし、静的サイトジェネレータとしても使えてよかったし自分のウェブサイトとかも置き換えていきたい。

最近 Webpack 疲れみたいなことを考えて、 parcel とかも試したりしつつ、「Webpackの設定ファイルのメンテいらず」みたいなのは筋が良いんじゃないかなーと思ったりしている。

favicon

favicon は絵文字の「🔗」なんだけど、 Emoji Favicons | Favicon.io のサイトで生成したものを使った。とりあえず favicon 作りたいときには便利そう

Gif動画

GIPHY という Mac のアプリが使いやすかった。(教えてくれた同僚Nさんに圧倒的感謝 🙇)

あとがき

このOSSは定時に食い込みつつ作ったので宣伝しておくと、JX通信社ではサクッとモノづくりするのが大好きなメンバーを募集しています

追記

ブコメありがとうございます。

CSRFの罠

CORSは考えていたのですが、CSRFは盲点でした; 気になる方はぜひPull Requestをお願いします!

DynamoDB使いたくない

Dockerベースで動くようになっているので、 dynamodb-local などで永続化することは可能で、実際 docker-compose では dynamodb-local を使っています。

現在は DynamoDB と密結合になっているので、MySQLPostgreSQLSQLiteなどがアダプターとして付け替えられるように設計を拡張すればいけるかなと思います。ぜひPull Requedstをお願いします!

また、「社内ネットワーク」という言葉がちょっとミスリーディングだったかもしれないですのですが、へーしゃはAWSを使っているのもあって「社内からしかアクセスできないAWSのネットワーク」を含めています。