読者です 読者をやめる 読者になる 読者になる

なからなLife

geekに憧れと敬意を抱きながら、SE、ITコンサル、商品企画、事業企画、管理会計、総務・情シス、再び受託でDB屋さんと流浪する人のブログです。

作るぞ

PHP MySQL


つぶやき - なからなLife
で、「PHP+MySQLでとりあえず何か作るぞ」と宣言したが、作りたいもの決まった。


ブクマの拡張版。
しかも、PHPで。(^_^;)
ていうか、xoopsのモジュールとして。


なーんでか。


それはね、たまたま会社のイントラの管理者やってて、それがxoopsで動いているから。


商売柄、なかなか外に出せないネタが多いわけで、
それはブログであれ、掲示板であれ、ブクマコメントであれ、何かしら問題になるわけです。
で、ならばイントラで、と。


で、やるなら、手近にある構成がいいかなと。


イントラでブクマが使えるもうひとつのメリットとしては、
他のイントラコンテンツにブクマを張っても問題がない、ということ。


で、機能要件書いてみる。

  1. 今のはてぶ相当の機能がある(まあ、インスパイアという名のパクリ)
  2. ブクマ、コメントごとの、公開/非公開設定
  3. ブックマークでないオブジェクトをターゲットにできる。(人力検索で、参照先サイトがないようなヤツ相当)
  4. 他人が先行して登録したオブジェクトについても、自分なりのタイトル等で登録管理できる。
  5. コメントに対するコメント機能
  6. 蔵書管理をしたい。


1.今のはてぶ相当の機能がある
まさに今の「はてブ」の基本機能が気に入っているからこそ、良いところは継承したい。
ブクマ、スター、タグ、タグクラウド。カテゴリは微妙かな。タグとそんなに変わらないから。


2.ブクマ、コメントごとの、公開/非公開設定
すべて公開/非公開という今の「はてブ」の仕様への不満から。
やっぱり、単なるメモ程度にコメントを使うケースと、「こういう意見もったけど、みんなどう?」というコメントとは使い分けたい。


3.ブックマークでないオブジェクトをターゲットにできる
やはり、ちょっとした気づきがWebに起因するものじゃないときでも、一箇所にまとめたい。
Googleノートブックみたいにも使いたい、ということ。


4.他人が先行して登録したオブジェクトについても、自分なりのタイトル等で登録管理できる。
だれかが「はてブ」から「deli.cio.us」に移る理由に挙げていたもの。
確かに各自でコントロールしたいことも有る。


5.コメントに対するコメント機能
やっぱり議論から何かが生まれるきっかけを強化したい
&ブクマターゲットからの反論を見えやすくしたい
ということ。


id:naoya
ASCII.jp:津田大介が伊藤直也に聞く、「はてなブックマーク」の今と未来(中編) (4/4)
で語っている思想自体には賛同している。


そこで、「スター」並に簡単にコメントへのコメントが書き込めるユーザービリティーを用意しつつ、
ターゲットコメント自体がブクマ対象、かつ、一覧画面ではスレッドの存在がわかる
といったUIを想定。
ツリー構造になるから、DBとUIを工夫しないとクソ重い画面になりかねない。


6.蔵書管理をしたい
今の会社で仕事にちょっとだけでも関連しそうな書籍を1人あたりの予算枠内で自由に経費購入できる制度がある中、
「だれか持っていそう」を調べやすくする、という、業務寄りな目的。


となると、主要なところはこんな感じのオブジェクト構成になるかな。<ターゲットオブジェクト>スーパークラス

  1. レコードID
  2. 公開/非公開
  3. 登録者(ID管理になるだろう)
  4. 登録日時


以下の「ブック」「ブックマーク」「メモ」オブジェクトは、ターゲットオブジェクトを継承したオブジェクトとして扱う。
ただし、表記上、スーパークラスと同じ属性も記述しておく。
<ブックオブジェクト>:蔵書そのもの

  1. レコードID
  2. ISBN
  3. Amazonコード(画像、価格、タイトル等はすべてAmazonWebServiceAPIから取得する)
  4. 所有者(共有/個人)
  5. 公開/非公開
  6. 登録者
  7. 登録日時
  8. アマゾンからデータを取得する()


<ブックマークオブジェクト>:はてブの親エントリと同じ

  1. レコードID
  2. ブックマークURL
  3. 公開/非公開
  4. 登録者
  5. 登録日時
  6. URIからコンテンツの一部を取得する()


<メモオブジェクト>

  1. レコードID
  2. メモテキスト
  3. 公開/非公開
  4. 登録者
  5. 登録日時


<コメントオブジェクト>ターゲットエントリに紐付けるコメント。書評、登録内容へのコメントなど。

  1. レコードID
  2. ターゲットレコードID(親)
  3. コメント本文
  4. 公開/非公開
  5. 登録者
  6. 登録日時


<評価オブジェクト>評価(+)をつける。はてなスターと同じ。評価にもコメントにも評価を追記できる。

  1. レコードID
  2. ターゲットレコードID(親)
  3. 公開/非公開
  4. 登録者
  5. 登録日時
  6. 評価対象テキスト(はてなスターの文字列選択スター付与と同じ)


<タグオブジェクト>

  1. レコードID
  2. ターゲットレコードID(親)
  3. タグテキスト


すべてがレコードIDを保持し、そのレコードIDを親としてぶら下げるエントリを作ることができる。
これを1画面で行うと、途方も無いことになる。

DBは長らくいじっていたので、テーブル設計のイメージはつく。
が、PHPはどうしていいのかは、じぇんじぇんわかってない。
これから空き時間みつけながらだから、ゆっくりだろうねえ。


はてなが先にサービスVerUpして似たようなことしてくれたら、それはそれでありがたい。


で、これからPHP+MySQLの勉強をしようと思って買った本はコレ。

はてな内での紹介/他のエントリでの紹介はこちらで。
初めてのPHP & MySQL 第2版