ハッシュタグ機能を実装してみる

ハッシュタグを作ってみる

RYです。
今日は最近作ったハッシュタグのデータベースに関して書いていきます。
久しぶりに技術ネタですね。

その前に、そもそもなんで作りたかったのか?

なんでハッシュタグを作ろうと思ったかなのですが、ユーザー同士を簡単に繋ぎたかったんですよね。
例えば
「React.js詳しい人いないかなー」
とかいうのをすぐに調べたいのです。
他にも「ラブライブ!好きな人いないかなー」とか、「ポケモンGO一緒にやってくれる人探したいよー」とかそんな感じに使えるだろうなーと。

作るのは決まった。どう作るか。

どう実装するかは色々な方法があるんですけど、今回は普通のRDBで”Toxi” solutionを使おうと思います。
詳細は以下のページより。
他の方法も紹介されていますが、このToxi法はタグのマッピング用テーブルを使うのがポイントですね。
http://tagging.pui.ch/post/37027745720/tags-database-schemas

簡単に解説

まず、タグテーブルがあります。
最低限必要なのはIDとタグの文字列。

そして、そのタグIDとユーザーIDをマッピングするタグマップテーブルが必要です。

あとはユーザーIDがあるユーザーのテーブル(これは元々あるでしょう)があれば出来ます。

RDBでは極々自然な考え方だと思います。

そんな感じで作ってみる

まずタグマップ

create table tag_map (
  id int auto_increment,
  user_no int(10) unsigned,
  tag_id int,
  created_at timestamp not null default current_timestamp,
  updated_at timestamp not null default current_timestamp on update current_timestamp,
  primary key(id)
);

次にタグ自体のやつ

create table hashtags (
  id int auto_increment,
  tag varchar(140),
  created_at timestamp not null default current_timestamp,
  updated_at timestamp not null default current_timestamp on update current_timestamp,
  primary key(id)
);

今回は楽になるようにちょっとしたビューも作りました。
そんな感じで…

さて、適当なデータを作って試してみましょう

select * from user_hashtag where user_no = 1;
+----+--------+--------------------+---------+------------+
| id | tag_id | tag                | user_no | user_name  |
+----+--------+--------------------+---------+------------+
|  1 |      1 | php                |       1 | 矢澤 にこ   |
|  2 |      2 | javascript         |       1 | 矢澤 にこ   |
|  3 |      3 | ラブライブ!        |       1 | 矢澤 にこ   |
+----+--------+--------------------+---------+------------+

これでプログラミングのみならず、アニメでも他のユーザーと繋がれるようになりました!
めでたしめでたし

About the author

Ryu Seino
Ryu Seino

2015年入社。
コンシューマー向けWebサービス、商社の基幹システムなどを担当した後、2016年の途中から管理部システム課に所属となる(ちなみに一人しかいない)。
好きな動物はペンギン🐧
都内にて一人飲酒業務に精を出していたが、諸事情により活動休止。
最近の趣味としては銭湯(含スーパー銭湯)に行く事と水族館に行く事。

Ryu Seino By Ryu Seino

最近の投稿

アーカイブ

カテゴリー

タグクラウド

コーポレートサイト

メタ情報