こんにちは。プログラマーの山中です。

やはり今季は暖冬でしたね! 滋賀の南東部に位置する我が家の畑の端に植わっている梅の木が例年より早く花を咲かせました。(アイキャッチ画像は山中家の梅です)まだ少し肌寒いですが、春の兆しが見られて気分が上がりますね(`・ω・´) (この記事を執筆した翌日の3月1日に雪が降りましたけれども・・・)

さて、 前回の記事 では SNS サイト構築のためのディストリビューションである Drupal Commons を紹介しました。 Drupal Commons はインストールが完了した時点で SNS の主要な機能を構築することができる便利なディストリビューションですが、 実際に SNS サイトを構築するにはテーマを決めて、その機能が必要かどうか見極める必要があります。 不要な機能はサーバの無駄遣いですし、何より利用者にとって利用価値がなければ存在する意味がありません。

Drupal では ディストリビューションを使わなくても十分 SNS を構築することができますので、この記事では最初から SNS の機能がひととおり入っている Drupal Commons は使用せず、 Drupal のコアのモジュールとコントリビュートモジュールを使用して実装します。

今回は「母校の同窓用SNSサイトの構築」にテーマを絞り、以下の流れで機能開発を行う想定で、この記事では開発準備(モジュールの選定)までご紹介できればと思います。

  • テーマの決定
  • 機能の選定
  • モジュールの選定 ← 今回の記事はここまで
  • 各モジュールの設定・機能開発
  • テーマ開発

まずは必要な機能の選定を行いましょう。

SNS に必要な機能の選定

まずはアイディアを出して、そこからどんな機能が必要なのかを見定めましょう。

今回の SNS サイトのテーマは「母校の同窓生専用SNS」なので、同窓生同士のコミュニケーションの場が必要です。 そこで、以下の機能が必要だと考えました。

  • ユーザー関連の機能
    • ユーザーの登録 / 編集 / 削除
    • ユーザー入力項目(名前 / 写真 / 卒業年度 / 学科 / 部活 / サークル / 学部 / 学科)
    • 友達登録機能 / ユーザーグループ機能
    • プライベートメッセージ
    • Facebook / mixi から登録情報をインポートすることができる
    • メールで招待された人だけユーザー登録できる機能(過去の mixi を参考)
  • コミュニティ機能(グループ機能)
    • 部活別 / サークル別
    • 委員会別
    • 学部別 / 学科別
    • 卒業年度別
    • 自由コミュニティ(公開/非公開の選択が可能)
  • 投稿機能
    • 日記
    • イベント作成・出欠管理機能 (Twipla や Facebook のイベントを参考)
    • フォーラム / 掲示板
    • タイムライン機能とタイムラインへの投稿 (Twitter や Facebook のタイムラインを参考)
    • 各投稿機能に対するコメントの投稿

たくさんのアイディアが出ましたが最初から多くの機能をリリースすると SNSの運用が うまくできず、失敗するかもしれません。 Drupal は後から機能の追加を行うことができます。失敗した時のリスクを最小限に抑えるため、ここでは最初の機能は必要最低限のものを実装することにします。 更に機能を絞った結果、以下の機能を実装することに決まりました。

  • ユーザー関連の機能
    • ユーザーの登録 / 編集 / 削除
    • ユーザー入力項目(名前 / 写真 / 卒業年度 / 部活・サークル / 学部・学科)
  • 投稿機能
    • イベント作成・出欠管理機能
    • フォーラム( 掲示板 )

アイディア画像

機能の選定が完了したので次は機能を実装するためのモジュールを探しましょう。

SNS に必要な機能を実装するためのモジュールの決定

前のセクションで絞り込んだ機能ごとにモジュールを決めていきます。

以下のモジュールを使って実装します。

モジュール名機械名実装できる機能
ユーザー関連の機能
Field UIfield_uiユーザーやコンテンツ(ノード)の入力フィールドの管理画面を表示する
Optionsoptions卒業年度の入力に使用
ドロップダウン / ラジオボタン / チェックボタン
を使用することができる
Taxonomytaxonomy部活・サークル や 学部・学科の入力に使用
一般的にカテゴリ分けやブログのタグなどに使用される
投稿機能: イベント作成・出欠管理機能
Flagflagイベント参加/不参加のボタンに使用
サイト上のお気に入りやブックマークなどの機能でよく使われるモジュール
Flag actionsflag_actionsイベント参加/不参加の切り替えとボタンクリック時に送信されるメールの設定を行う。
Datedateイベントの日付を設定する日付フィールドを作成するために使用
Date Popupdate_popupDate で用意したフィールドのウィジェットに pop up 形式で表示されるカレンダーから日付を入力することができるウィジェットを追加
Viewsviews参加者/不参加者一覧を確認するために使用
コンテンツを一覧表示するためによく利用される
Views UIviews_ui管理画面から Views の設定を行うためのモジュール
BlockblockViews で作成する参加者/不参加者一覧はブロックとして生成するので必要
(Drupal コアのモジュール)
Date APIdate_apiDate モジュールに必要
Display SuitedsViews で作成した参加者/不参加者一覧ブロックを横ならびに表示するために使用
通称 DS
Display Suite UIds_ui管理画面から DS の設定を行うためのモジュール
投稿機能: フォーラム
Forumforumフォーラム機能が使用できる
  • ※ その他 Field, Field SQL storag, Node, Text, User などのモジュールが必要ですが、 これらのモジュールは Drupal の中核となる System モジュールで必須のモジュール群ですので一覧からははずしています。
  • ※ また、リストには入っていませんが日本語化のために Locale, Localization update(l10_update) がインストールされています。

ひとまずこれで準備が整いましたね。 以上、同窓用SNSサイトの構築の準備編でした。

次の記事では機能開発を行います(/・ω・)/


共に働く新しい仲間を
募集しています

スタジオ・ウミは「Drupal」に特化したサービスを提供する Drupal のエキスパートチーム。
フルリモート&フレックス制だから、働く場所を選ばず時間の使い方も自由です。
そんなワークライフバランスの整った環境で、当ブログに書かれているような
様々な技術を共に学びながら、Drupalサイト開発に携わってみたい方を募集しています。
まずはお話だけでも大歓迎!ぜひお気軽にご連絡ください。