FFXIVの一次情報が目下のところ少ないながらも、それらを独自の視点を交えて紹介したり、各種の機能別サイトの萌芽(このサイトもその一つであるつもりです)が見えたりしています。ということでそうした関連サイトへのリンク集のページを作っています。
そして、じきにそうしたサイトが増えるであろう事は自明なので、Arkのサンプルアプリケーションとしてリンク集を作りつつ、GitHubで公開しようと思います。
- Arkによるリンク集サンプルアプリケーション(1) 企画~要件定義編
- Arkによるリンク集サンプルアプリケーション(2) 外部設計編
- Arkによるリンク集サンプルアプリケーション(3) 詳細設計編
- Arkによるリンク集サンプルアプリケーション(4) Scaffold(雛形作成)編
- Arkによるリンク集サンプルアプリケーション(5) Model(モデル)編
- Arkによるリンク集サンプルアプリケーション(6) View(ビュー)編
- Arkによるリンク集サンプルアプリケーション(7) Controller(コントローラー)編
基本的には「自分が作りたいから作った」という、車輪の再発明的なものです。ただ、作るからにはちゃんとした最近の作法で作りたいものですし、作る経緯なども紹介してみたいという気持ちもあります。Catalystの例は色々ありますが、Arkの例はまだ少ないので、その意味でも一つの参考になればいいなと思います。
ということで、第1回目は企画と要件定義です。
自家発電アプリの要件はアイデアメモで結構
私が勤めている金融ユーザー系システム会社であれば別ですが、個人が趣味の範囲で自分のために作るようなアプリケーションの企画書なんて、たかが知れています。せいぜいがアイデアメモですし、本来は戒めるべき実装の話などが混じっても来ています。
肩肘を張った企画書を作っている間にテストとコードを書いてしまう方がよほど生産的なので、これはさっさと行ってしまいましょう。
コンセプト
リンク集アプリケーション(以下、本アプリと呼称)について、あれが欲しい、これは要らないといった程度を記します。結構「やらないこと」を記述していますが、漠然とした「これをやる」を書くことと同様に、「これをやらない」と書くことでアプリケーションのイメージを固めることが出来ます。
- リンク集が主コンテンツではなく、ウェブサイトやウェブログやその他のコンテンツを主として運営している個人を想定(つまり自分自身)。当該個人が精選したリンク集のページを手軽に取り扱うというコンセプトである。
- 「黙っていてもリンクがどんどん増える」というようなSEO狙いの(無味乾燥な)リンク集ではなく、管理者の意向を反映させたお勧めリンク集という位置付けとしたい。
- あくまでサンプルアプリなので、あまり大風呂敷を広げないようにしたい。
- 出来ればリンクデータは共有したいかも。これは今後の話になるかも知れないけど。ただ、共有対象はリンク基本データのみとし。管理者コメントは別(サイト毎の味を出す)。
- 自動相互リンクという仕組みもあるし、仮登録~承認という仕組みもあるが、壮大なリンク集を作ることが目的ではないので、登録をワークフロー化することの是非は考えたい。取り敢えずこのような訪問者登録型リンク集の仕組みは先送り。
- アンテナ的な機能は実装しない。餅は餅屋。ユーザー(閲覧者)への関連サイトの紹介という目的にとどめ、ユーザーの常用するポータル的な使い方は想定しない。その意味では、ソーシャルブックマークサービスと連携したい。「この(リンク先の)サイトをはてなに追加」など。
- ランキングは採否が微妙。利用者による集合知という利点もあれば、リンク集運営者の意向を反映しにくくなるという欠点もある。大体、人気のあるウェブサイトというものはリンク集によらず一定の傾向を示すので、であればわざわざ自サイトでリンク集を公開する意味がないのではないか、とも思う。
- JSONやYAMLをアウトプットとするWeb API的な機能は提供しない。それらの稼働サンプルは、別途開発中のFFXIV統合アプリケーション「Amikeco」をご覧いただくこととする。
- 逆アクセスカウントは採否未定。取り敢えず先送り。やるならApacheログからデイリーでカウントする方が正確だしフェアだし汎用的(リンク集アプリケーション以外へのリンクも計数可能であるため)である。
機能要件
リンク先サイト
- リンク先サイト(以下、サイトと呼称)は複数のカテゴリに所属出来ること。
- サイトの属するカテゴリは多階層を構成出来ること。
- サイトは複数のタグに所属出来ること。
- サイト毎に存在するエントリーの項目は、URL, 題名, サイト自己紹介文, サイト管理者ハンドル, 登録年月日, 更新年月日, タグ群(has-many), リンク集運営者コメントを含めること(バナー画像は不要としたい)。固定長や固定形式で事足りる項目以外は、可変長のデータを原則とすること。
閲覧
- 本アプリのユーザー(以下、ユーザーと呼称)は、カテゴリ別のページ・タグによる分類ページ・新規登録ないし更新サイトのページから、目的のサイトのエントリーを表示出来ること。
- ユーザーは任意の文字列でサイトを検索出来ること。
- 各ページはサイトのエントリの全ての情報を表示した一覧形式とすること(わざわざ個別のページを設ける必然性がない)。
- 検索結果は全角・半角や大文字・小文字の表記揺れを吸収すること。
- 文字列項目は入力文字列との適合(マッチ)で検索出来ること。なお、前方一致・後方一致などのオプションは提供しない。
- サイト名・更新日時・登録日時・管理者名による並べ替えを行えること。
- 全ての画面に於いて必要最低限のオンラインヘルプを備えていること(先送り検討中)。
- 将来的に英・日・独・仏・エスペラントの5言語対応とすること。まずは日本語のみとするが、設計および実装にあたっては将来的な多言語対応の余地を残すこと。
- 閲覧環境は特段限定しないこと。ただし、携帯電話からのアクセスについては、当初はフルブラウザ方式(携帯電話キャリアのプロクシーサーバー経由)にのみ対応する。
編集
- 本アプリの管理者(以下、管理者と呼称)は、ユーザー向け表示ページから新規追加ページへ1アクションで遷移出来ること。
- 管理者は、ユーザー向け表示ページからサイト編集ページへ1アクションで遷移出来ること。
- 初回登録日時および最終更新日時は自動で更新すること。
- リンク先コメントには1行の短文を超えて任意のマークアップ文字列を記述出来ること。また、管理者はそれを容易にマークアップ出来ること(Markdownを使用する)。
その他管理
- 初心者が簡単に配備(デプロイ)出来るようにすること(先送り検討中)。
- 管理者向けのマニュアルを備えていること(先送り検討中)。
- 管理用にリンク切れ確認処理も欲しい。cronでデイリーで回して、異常があれば管理者にメールする(メンテの503とリンク切れっぽい404くらいはスクリプト側で判断する)。
非機能要件
性能要件
- 各ページの閲覧に要する平均時間を3秒とすること(これはFFXIVの推奨環境に於ける描画時間と、通信時間などを含むend to endタイムである)。
- サーバー負荷を抑えること。使用頻度にもよるが、XREA計数によるところの負荷率100pt/日を超えないこと。また、転送量50MB/日を超えないこと。
- リソース面でのスケーラビリティー(システム的にも、運用的にも)を確保すること(まああまりに酷いことをしなければこれは問題にならなさそう)。
その他
- HTMLおよびCSSは可能な限りW3C勧告の標準仕様に準拠すること。ただし、やむを得ず標準化に背く場合には、範囲を最小限とし、かつ開発ドキュメントにその経緯を残すこと。
コメントする