好きなポート番号で占いができるサービスを作ってみた

入社後エンジニア部隊に配属され、隣に座っていた同僚に挨拶をした時の返しの第一声が忘れられません。

「好きなポートは何番ですか?」

これって自己紹介なのでしょうか...それとも好きなポート番号から僕の性格が分かっちゃったりするんでしょうか?ところで、みなさんの好きなポートは何番でしょうか?ちなみにボクは、23番が好きでした(笑)。

livedoor Techブログ : tracerouteの仕組み

これを見て、ポート番号で占いできるサービスを作りたくなってしまったので作ってみた。

ポート番号占い

これは何?

自分の好きなポート番号を入力すると、該当するポート番号のプロトコルを勝手に擬人化してプロフィールをでっちあげた上で、そのプロフィールを元に性格を占っちゃうサービスです。

最初は、「ポート番号○○番が好きな人は、こんな性格です。」みたいなサービスにしようと思ったんですが、占いの文言を一から考えるのは非常に面倒くさい…。何かAPIで占い結果が持ってこれたりしないかな? と思って探してみたら、ちょうどいいサービスを発見。

http://www.a-uranai.com/api.html

「これなら、ポート番号からに適当にプロフィールをでっちあげちゃえば、好きなポート番号を元に占いができるじゃん。」という発想で、今の形になりました。

"詳細な占い結果を見る"のリンクからツカエル!相性占いさんのページに行ってもらうと更に詳しい占い結果が見られるので、選んだポート番号によって、自分自身がどんな運勢なのか見てもらえると面白いのではないかと。

でも、自分的には、「俺の好きなHTTPたんは萌えキャラだと思ってたのに、おばあちゃんだったなんて…。(´・ω・`)」とか、「ftpさん、最近出番も少なくなったけど、周りから愛されてるんだね…。」とか、勝手に擬人化して楽しむのが良いんじゃないかと思っています。

一応、ランキングの雛型になるように、ある程度有名どころのプロトコルは自分で1票入れてみたんですが、いまいち萌えキャラが少ないですな。(笑) それに、なぜだか女性ばかり…。プロトコル界は女性上位な世界なのか。

ちなみに、サービス作りながら「好きなポートは何番ですか?」の問いの答えを考えていたんですが、自分だったら、「堅実そうなSSHたんです。」…でしょうかね…。

SSHは、ポート番号占いによると15歳の男子中学生にも関わらず、"あなたは百獣の王ライオンらしく、とても強気な人です。"という事らしいので、なかなかに逞しい男の子のようです。(笑)

どんな仕組みなの?

せっかくなので、どんな風に作ってあるのか、簡単にご紹介だけ。

まず、ポート番号一覧が欲しかったので、IANAのポート番号一覧表のページのテキストから、ポート番号とプロトコル名なんかを抽出してくるプログラムを作って、一旦DBに格納しています。

これを使って、Ajaxでポート番号から該当するプロトコル名を引っ張ってきて検索できるようにしています。

プロトコルを決めて"占う"ボタンが押されると、ポート番号とプロトコル名をセットにしたものを元にハッシュ値を取って、そこからビット演算で順番にシフトしながら、プロフィール構築に必要な値を展開しています。

なので、種を作るアルゴリズムが変わらない限り、同じ条件なら必ず同じ結果になるようになっています。

これで、占いAPIに投げる為に必要な情報ができあがるので、後はHTTPでリクエストを投げて取得した結果を占い結果として表示しています。

今回は、ポート番号の話を元に作ったのでポート番号占いにしましたが、一意に決まる種さえあれば同じ仕組みでいけるので、"HTTPレスポンスコード占い"とか、"コマンド名占い"とか作っても面白いかもしれないですね。


という訳で、ぜひ遊んでみて下さいね〜。