質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

Q&A

解決済

2回答

2979閲覧

DropboxやGoogle DriveのようなURLを自動生成する手段を知りたい。

Gazelle

総合スコア136

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

0グッド

0クリップ

投稿2016/03/08 10:14

表題の通りですが、具体的に書きます。

使用言語

使用言語はウェブアプリケーションを作成する言語であれば問いません。
具体的な例や、URLなどがあると大変助かりますが、ヒントとなるアルゴリズムだけでも構いません。

なにが知りたいか

DropxboxやGoogle Driveなど、ファイルを共有する際に自動でランダムなURLを生成していると思います。

このURLの作成方法はどのようにしているのかが知りたいです。

どのように」の部分を掘り下げると、下記のような管理・生成方法になります。

  • ランダムなURLを生成する方法。
  • ランダムなURLの管理方法:データベース関係
  • ランダムなURLのルーティング周り。

若干質問が欲張りな気がしますが、ヒントとなることだけでもわかれば大変助かります。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

いろいろ方法はあると思いますが、私が簡単に実装するなら。

  • URL の生成:時刻やユーザ ID などを材料にハッシュ関数で文字列を生成。その一部を使う、URL で使用可能なものにマッピングするなどして「一意文字列」を生成。万が一すでに払い出した「一意文字列」と重複する場合は再生成する。ハッシュ関数は md5 でも十分な場合が多いと思います。url は「http://example.com/path/to/service/<一意文字列>/」 とでもします。
  • URL の管理:一意性のチェックのために生成した「一意文字列」が主キーになるようなテーブルを用意するのが単純ですが、インデックス張れば何でもいいような。というか、他のテーブル構造との関連で決まるところです。
  • ルーティング : 特筆することはないです。「http://example.com/path/to/service/<一意文字列>/」にアクセスがきたときに「一意文字列」を取り出して DB から必要な情報を引く、というだけです。

投稿2016/03/08 10:29

unau

総合スコア2468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Gazelle

2016/03/16 07:07

ありがとうございます!自作する際に必要な情報とその処理を考えていましたが、回答にありますように同じような流れに帰着しました。自分の考えと照らし合わせることができため、大変参考になります!
guest

0

既に解凍がついているので、簡単に...

自分で作るなら「ランダムな URL 」と言われている一意文字列の部分に UUID を使うと思います。

UUID
https://ja.wikipedia.org/wiki/UUID

RFC4122 - A Universally Unique IDentifier (UUID) URN Namespace
https://www.ietf.org/rfc/rfc4122.txt

PHP なら 下記 uniqid マニュアルの下に UUID を作成する Class が、書かれていますので、ご参考に
http://php.net/manual/en/function.uniqid.php

投稿2016/03/08 11:59

CHERRY

総合スコア25175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Gazelle

2016/03/16 07:09

用語などの参考リンク感謝します!また、PHPにClassが用意されている情報も助かります。一度ソースコードを読んで見ようと思います!ご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問