モノノフ日記

普通の日記です

Jobeet - 2日目: プロジェクト

Jobeet - Day 2: The Project - Symfony

手を抜くとかいいながら結局全部訳しちゃいました。意訳してるところも結構ありますが。。今回は要件定義の話で、まだコードは全く出てきません。毎日これくらいのボリュームだったら進めるの楽だなぁ。
あとFabienがコメントでmockup作るのに使ったツールを紹介してます。チュートリアル読んでる人はみんな買えばいいと思うよ、とか言ってます(超訳)

前回までのJobeet

まだ1行もPHPコードを書いていませんが、昨日は環境を整え、適切なセキュリティ設定を付与した空のsymfonyプロジェクトを作りました。チュートリアルに沿っているなら、新しいアプリケーションのための素敵なsymfonyのデフォルトページが表示されているディスプレイを見れて、うれしがっていることでしょう。
しかし、あなたはもっとサイトをよくしたいと考えていると思います。symfonyアプリケーション開発の肝心な詳細を学習したいと。ここらでsymfony開発の解説を再開することにしましょう。
本日は、いくつかの基本モックアップを使ってJobeetの要件について説明していきます。

プロジェクトの宣伝

最近、世間の話題は恐慌について話されてます。失業者が復活してくるだろう、と。
symfony開発者はそのことはそんなに心配していないだろうし、だからこそsymfonyを第一に学習したいと考えているんだと思う。しかし良いsymfony開発者を見つけることもかなり難しい。
どこでsymfony開発者を見つけれますか? どこでsymfonyのスキルを宣伝できますか?
必要なのは良い求人掲示板を見つけることです。それはものすごいことを言ってるって? 考えてみてください。専門的な求人掲示板が必要です。そこではエキスパートな人材を見つけることができるし、簡単に素早く、そして楽しみながら仕事を探したり募集したりできます。
もはや求人検索サービスではありません。Jobeetは場所となります。Jobeetはたった1機能だけのオープンソースの求人掲示板ですが、その機能は良いものです。掲示板としての利用、カスタマイズや拡張、Webサイトに貼ったりなど全てのことが簡単にできます。難しい設定など一切無しで多言語に対応するし、当然ユーザエクスペリエンスを高めるための最新のWeb2.0技術も使えます。プログラムでやり取りするためのフィードやAPIも提供されます。
そういう掲示板はもう存在してるって? 利用者として見れば、インターネット上にJobeetのような求人掲示板はたくさん見つかるでしょう。しかし上記で述べたような豊富な機能を持ったオープンソースの掲示板を見つけてみてください。
加えて、symfonyを使って24時間以内に開発できるって誰が言いました? さぁ、今すぐにでも始めましょう!

プロジェクトユーザストーリー

コーディングに入る前に、プロジェクトの具体的な例について説明しましょう。次のセクションではプロジェクトの最初のバージョン/イテレーションで実装したい要素について簡単なストーリーをつけて説明します。
Jobeetは4種類のユーザを持ちます:

admin
マジックパワーを持ったWebサイトのオーナーです
user
仕事を探すためにサイトを訪ねます
poster
仕事を掲載し募集します
affiliate
自分のWebサイトでいくつかの仕事を再公開します

プロジェクトは2つのアプリケーションから構成されます。frontend(下記のF1~F7)はユーザがWebサイトと情報をやり取りところになり、backend(B1~B3)はadminがWebサイトを管理するところになります。
backendアプリケーションはセキュアでアクセスするには証明書が必要となります。

ストーリー F1:ホームページ上でユーザは最新の有効な状態の仕事を見れます

ユーザがJobeetサイトにやって来たら、有効な状態の仕事のリストを見ます。仕事のリストはまずカテゴリーで、次に掲載日順(新しい仕事が上に)にソートされています。各仕事ごとに就業場所、役職、会社名が表示されます。
各カテゴリーごとに最新の10個の仕事が表示され、それ以降を見るにはリンクをクリックする仕様になります。(F3で詳しく)
ホームページ上でユーザは仕事のリストを絞り込むことができ(F2で)、新しい仕事を掲載することも可能です(F5で)。
f:id:Kiske:20081203074914p:image

ストーリー F2:ユーザはカテゴリーに属する全ての仕事を見ることができます

ユーザはホームページ上のカテゴリー名か "more jobs" リンクをクリックすると、日付順にソートされたカテゴリーに属する仕事を全部見ることができます。
リストにはページ番号がつけられていて1ページには20個の仕事が表示されます。
f:id:Kiske:20081203074956p:image

ストーリー F3:ユーザはキーワードで仕事のリストを絞り込めます

ユーザは検索結果を絞り込むためにキーワードを入力できます。キーワードは就業場所、役職、カテゴリー、会社名からマッチングされます。

ストーリー F4:ユーザは仕事をクリックすることで詳細な情報を見ることができます

リストから見たい仕事を選択することで詳細な情報を見ることができます。
f:id:Kiske:20081203074955p:image

ストーリー F5:ユーザは仕事を掲載できます

仕事の掲載をすることが可能です。仕事の情報は下記の項目から構成されます。

  • 会社名
  • 契約条件(フルタイム、パート、フリーランス)
  • ロゴ(任意)
  • URL(任意)
  • 役職
  • 就業場所
  • カテゴリー(選択したカテゴリー内で表示されます)
  • 仕事の説明(URLとメールアドレスは自動でリンクが張られます)
  • 応募要項(URLとメールアドレスは自動でリンクが張られます)
  • 公開設定(アフィリエイトサイトへ公開するかどうかの設定)
  • メールアドレス(募集者のメールアドレス)

仕事を掲載するためにアカウントを作る必要はありません。
プロセスはたった2つのステップからなっており単純です。まず仕事についての説明の必須項目を全て埋めることです。そうすると確認用のページが表示され入力項目の確認をします。
たとえユーザがアカウントを持っていなくても、固有のURLのおかげで項目を後から修正することも可能です(仕事を掲載したときにユーザは保護用のトークンを受け取ります)。
掲載された仕事は30日間有効です(ここの設定はadminが変更できます - B2で詳しく)。30日を過ぎた仕事は期間を延長したりできますが、有効な期日から5日以内に行わねばなりません。
f:id:Kiske:20081203074954p:image

ストーリー F6:アフィリエイトの申請ができます

アフィリエイトをするための必要な申請をすると、Jobeet APIを利用できる権限がもらえます。申請には下記の情報を入力する必要があります。

  • 氏名
  • メールアドレス
  • WebサイトのURL

アフィリエイトアカウントはadminによって有効にされなければなりません。(B3で詳しく) 有効になるとすぐに登録メールアドレスへAPIを利用するためのトークンキーが送られます。

ストーリー F7:アフィリエイトをする人は現在の有効な仕事のリストを取得できます

アフィリエイトユーザはトークンキーを使って呼んだAPIから現在の仕事リストを取得できます。このリストはXML、JSON、YAMLフォーマットで返されます。
リストは仕事に使用可能な公開情報を含んでいます。
ユーザは返される仕事の数を制限でき、固有のカテゴリーだけに絞り込むこともできます。

ストーリー B1:adminはWebサイトを設定します

adminはサイト上で利用可能なカテゴリーを編集できます。
その他にもいろいろな設定変更ができます。

  • ホームページに表示される仕事の最大数
  • 表示言語
  • 仕事の掲載日数
ストーリー B2:adminは仕事を管理します

adminは掲載された仕事の編集や削除が可能です。

ストーリー B3:adminはアフィリエイトユーザを管理します

adminはアフィリエイトユーザを作成したり編集することができます。有効にしたユーザや無効にしたユーザに対し責任があることになります。
新しくアフィリエイトユーザを有効にした際、システムはユーザが利用するユニークなトークンキーを発行します。