作るぞ
つぶやき - なからなLife
で、「PHP+MySQLでとりあえず何か作るぞ」と宣言したが、作りたいもの決まった。
ブクマの拡張版。
しかも、PHPで。(^_^;)
ていうか、xoopsのモジュールとして。
なーんでか。
それはね、たまたま会社のイントラの管理者やってて、それがxoopsで動いているから。
商売柄、なかなか外に出せないネタが多いわけで、
それはブログであれ、掲示板であれ、ブクマコメントであれ、何かしら問題になるわけです。
で、ならばイントラで、と。
で、やるなら、手近にある構成がいいかなと。
イントラでブクマが使えるもうひとつのメリットとしては、
他のイントラコンテンツにブクマを張っても問題がない、ということ。
で、機能要件書いてみる。
- 今のはてぶ相当の機能がある(まあ、インスパイアという名のパクリ)
- ブクマ、コメントごとの、公開/非公開設定
- ブックマークでないオブジェクトをターゲットにできる。(人力検索で、参照先サイトがないようなヤツ相当)
- 他人が先行して登録したオブジェクトについても、自分なりのタイトル等で登録管理できる。
- コメントに対するコメント機能
- 蔵書管理をしたい。
1.今のはてぶ相当の機能がある
まさに今の「はてブ」の基本機能が気に入っているからこそ、良いところは継承したい。
ブクマ、スター、タグ、タグクラウド。カテゴリは微妙かな。タグとそんなに変わらないから。
2.ブクマ、コメントごとの、公開/非公開設定
すべて公開/非公開という今の「はてブ」の仕様への不満から。
やっぱり、単なるメモ程度にコメントを使うケースと、「こういう意見もったけど、みんなどう?」というコメントとは使い分けたい。
3.ブックマークでないオブジェクトをターゲットにできる
やはり、ちょっとした気づきがWebに起因するものじゃないときでも、一箇所にまとめたい。
Googleノートブックみたいにも使いたい、ということ。
4.他人が先行して登録したオブジェクトについても、自分なりのタイトル等で登録管理できる。
だれかが「はてブ」から「deli.cio.us」に移る理由に挙げていたもの。
確かに各自でコントロールしたいことも有る。
5.コメントに対するコメント機能
やっぱり議論から何かが生まれるきっかけを強化したい
&ブクマターゲットからの反論を見えやすくしたい
ということ。
id:naoyaが
ASCII.jp:津田大介が伊藤直也に聞く、「はてなブックマーク」の今と未来(中編) (4/4)
で語っている思想自体には賛同している。
そこで、「スター」並に簡単にコメントへのコメントが書き込めるユーザービリティーを用意しつつ、
ターゲットコメント自体がブクマ対象、かつ、一覧画面ではスレッドの存在がわかる
といったUIを想定。
ツリー構造になるから、DBとUIを工夫しないとクソ重い画面になりかねない。
6.蔵書管理をしたい
今の会社で仕事にちょっとだけでも関連しそうな書籍を1人あたりの予算枠内で自由に経費購入できる制度がある中、
「だれか持っていそう」を調べやすくする、という、業務寄りな目的。
となると、主要なところはこんな感じのオブジェクト構成になるかな。<ターゲットオブジェクト>スーパークラス
- レコードID
- 公開/非公開
- 登録者(ID管理になるだろう)
- 登録日時
以下の「ブック」「ブックマーク」「メモ」オブジェクトは、ターゲットオブジェクトを継承したオブジェクトとして扱う。
ただし、表記上、スーパークラスと同じ属性も記述しておく。
<ブックオブジェクト>:蔵書そのもの
- レコードID
- ISBN
- Amazonコード(画像、価格、タイトル等はすべてAmazonWebServiceAPIから取得する)
- 所有者(共有/個人)
- 公開/非公開
- 登録者
- 登録日時
- アマゾンからデータを取得する()
<ブックマークオブジェクト>:はてブの親エントリと同じ
- レコードID
- ブックマークURL
- 公開/非公開
- 登録者
- 登録日時
- URIからコンテンツの一部を取得する()
<メモオブジェクト>
- レコードID
- メモテキスト
- 公開/非公開
- 登録者
- 登録日時
<コメントオブジェクト>ターゲットエントリに紐付けるコメント。書評、登録内容へのコメントなど。
- レコードID
- ターゲットレコードID(親)
- コメント本文
- 公開/非公開
- 登録者
- 登録日時
<評価オブジェクト>評価(+)をつける。はてなスターと同じ。評価にもコメントにも評価を追記できる。
- レコードID
- ターゲットレコードID(親)
- 公開/非公開
- 登録者
- 登録日時
- 評価対象テキスト(はてなスターの文字列選択スター付与と同じ)
<タグオブジェクト>
- レコードID
- ターゲットレコードID(親)
- タグテキスト
すべてがレコードIDを保持し、そのレコードIDを親としてぶら下げるエントリを作ることができる。
これを1画面で行うと、途方も無いことになる。
DBは長らくいじっていたので、テーブル設計のイメージはつく。
が、PHPはどうしていいのかは、じぇんじぇんわかってない。
これから空き時間みつけながらだから、ゆっくりだろうねえ。
はてなが先にサービスVerUpして似たようなことしてくれたら、それはそれでありがたい。
で、これからPHP+MySQLの勉強をしようと思って買った本はコレ。
はてな内での紹介/他のエントリでの紹介はこちらで。
初めてのPHP & MySQL 第2版