この回では、今回のプロジェクトの概要などを紹介します。

今回のプロジェクトでは、OpenPNE3上でSNSメンバーがSNSメンバーに向けて行うことができるアンケート用プラグインを作ります。

OpenPNE3上の規約では、symfonyのプラグインと明確に区別するために、プラグイン名はop*****Pluginとすることになっていますので、このプラグインをopVotePluginと命名します。

今回のチュートリアルでは、簡易ものにするため以下のような機能の実装を前半部に行います。

  • SNSユーザがアンケートを作成できる機能
  • SNSユーザがアンケートに回答できる機能
  • 形式は、アンケート作成者が提供した選択肢からラジオボタンで1つ選ぶ形式
  • 回答は1つの質問につき1メンバー1回のみ行うことができる。

ここまでのチュートリアルでの作業の成果として、opVotePlugin0.9.0-alphaし、パッケージ化します。そして、Github上へのソースコードの公開方法を紹介します。

その後のチュートリアルでは、OpenPNE3の機能をフル活用するための機能を紹介するための機能をいくつか紹介していこうと思います。そのため、後半部では以下の機能を実装します。

  • モバイルへの対応
  • アンケート管理機能(管理画面)
  • メール投稿によるアンケートの開始
  • アクセス制御(フレンドのみまで公開のアンケート)
  • アンケート結果の開示申請(アンケート結果の非公開機能)
  • APIの公開

画面設計

新規で作成する画面は、「アンケート一覧画面」・「アンケート作成画面」・「アンケート回答画面」・「アンケート結果画面」が想定できるでしょう。

アンケート回答画面のイメージ
myImage

アンケート結果画面のイメージ
myImage(2)

データベース設計

前半までは、以下のデータ設計で開発を行います。この設計では、後半部で取り扱う機能に耐えることはできませんが、マイグレーションにより解決するつもりです。
マイグレーションは後半で紹介します。

db

member_idはコアのmemberテーブルの外部キーとなっています。

VoteQuestion
質問を格納するテーブルです。
VoteQuestionOption
選択肢を格納するテーブルです。
VoteAnswer
回答を格納するためのテーブルです。

VoteAnswerでも、VoteQuestionの外部キーを持っていますが、これは1メンバー1票かどうかの確認をするための作業を簡略化するためのものです。

また次回

次回は、プラグインのディレクトリ構成などについて紹介していきます。