Ubuntu Weekly Recipe

第282回 Discourseでディスカッション

この記事を読むのに必要な時間:およそ 5.5 分

人間と人間が交差するとき,ディスカッションは始まる。それはネットの世界でも同じです。今回はネット上でより快適な議論を行うためのプラットフォームである「Discourse」を紹介します。

次世代ディスカッションプラットフォーム「Discourse」

人はどんな些細なネタでも他人と論争できる生き物です注1)⁠折しもネット選挙解禁によって,ネット上での「建設的な政策論争」がこれまで以上に活発になる……可能性もゼロだとは言い切れなくもないという希望を持つことぐらいなら,ひょっとすると許されるんじゃないかという時代が到来しようとしています。

これまでのネット上での議論と言えば,MLなどのメールを使ったもの,IRCのようなチャット,フォーラムや掲示板,SNSのような各種Webサービスなどが使われています。Ubuntuの開発コミュニティも基本はIRCでの議論,広く意見を求める場合はMLという使い分けをしており,最近はGoogle+を使った公開・非公開討論も増えてきました注2)⁠

注1)
もちろん2人以上であることすら必須ではありません。1人5役ぐらいの脳内大会議を開催することはよくある話です。
注2)
開発者だけでなくユーザを含める場合は,LaunchpadやAskUbuntu,フォーラムも使います。

なぜDiscourse?

今回紹介するDiscourseは,⁠100%オープンソースな,次世代ディスカッションプラットフォーム」と名乗っています。とくにディスカッションスペースとしてよく利用されるフォーラムについては,既存のフォーラムソフトウェアがインターネットの進歩に関わらずユーザビリティがそれほど変わっていないこと,FLOSSでないソフトウェアがデファクトスタンダードとして蔓延していることから,将来的にフォーラムを置き換えられる存在になることを目標としています注3)⁠

注3)
たとえば,Ubuntu ForumもプロプライエタリなソフトウェアであるvBulletinを使っています。

どんなことができるの?

Discourse自体はRuby on Rails,PostgreSQL,Redisなどを使ったWebアプリケーションです。最近のソーシャルネットワークサービスで使われている機能なども取り込んで,次のようなことができます。

マルチプラットフォームに対応

IEやFirefox,Chrome,SafariといったマルチWebブラウザだけでなく,iOSやAndroidのようなモバイルOSにも対応することで,あらゆるプラットフォームで特別なアプリを用意することなくアクセスできるようになっています。

ページの自動ロード機能

旧来のフォーラムは1ページあたり何件かのコメントが表示され,続きは次のページへと移動する必要がありました。DiscourseはTwitterのタイムラインのように,ページの下端に到達すると次のコメントを自動的にロードしてくれます。

閲覧中に新しいコメントが追加された場合は,そのことがページ内部に通知されます。もちろんこれもリロードすることなく表示できます。

返信,引用だけでなくメンションによる通知機能

最近のSNSでは,書式の違いはあるものの「@名前」という形で特定の相手にメンションを飛ばすことができますが,Discourseにもこの機能が存在します。

返信や引用,メンションがあったときは,メールやページの通知領域を使って通知されます。よってフォーラムをMLのような使い方で使うことも可能です。

ソーシャルログイン機能

Discourseは,GoogleやTwitter,Facebookといった他サービスのアカウント情報を使ってログインすることができます。このためDiscourse用にアカウントを作成したりパスワードを管理する必要はありません。

より直感的な編集機能

投稿の編集部分の見た目は既存のフォーラムとそれほど違いはありません。しかしながら,編集すると即座にプレビュー画面に結果が反映されたり,ドラッグアンドドロップで画像を貼り付けられたり,URLを記述すると有名なサイトであればその内容が自動的に展開されたりと,便利な機能が最初から実装されています。編集中のデータを一時的に保存することも可能です。

REST API

最近のインターネットサービスの例に漏れず,DiscourseにもREST APIが用意されています。今はまだ開発中なためにAPIドキュメントが揃っているわけではありませんが注4)⁠将来的にはAPIを使ったより便利なアプリケーションが開発されるかもしれません。

Discourseのサイトにはテスト用のサンドボックス環境が用意されています。さらにUbuntuでも,Ubuntu用にカスタマイズされたDiscourseテストサイトが存在します。これらを試して,Discourseの雰囲気を掴むと良いでしょう。

注4)
といってもRuby on Railsを使っているので,config/routes.rbを見れば大体把握できるかと思います。

それではUbuntuにインストールしてみましょう

Discourseは生まれたばかりのプロジェクトなので,パッケージなどはまだ用意されていません。ただ,公式サイトに詳細なインストールガイドが用意されていますので,それに合わせてインストールしていきましょう注5)⁠

注5)
Discourseを動かすために必要なソフトウェアが一通りまとまったVagrant用のイメージも存在します。Vagrant 1.1.2以上の環境を用意出来るなら,これを使うのもいいでしょう。

必要なパッケージをインストール

Discourseを動かすためには,PostgreSQL 9.1,Redis 2.6,Ruby 1.9.3が必要です。そのため,これらをインストールできるUbuntuマシンを1台用意してください。もちろん物理マシンでも仮想マシンでもかまいませんし,サーバ版かデスクトップ版かは問いません。第265回のようにテスト用のUbuntuサーバを用意するのが簡単でしょう。今回はUbuntu 12.04.2 LTSで検証しましたが12.04以降であればどのリリースでも違いはないはずです。

まずは,必要なパッケージをインストールします。Rubyの環境のみRVMを使うのでここではインストールしません。メールサーバとPostgreSQLはtaskselを使ってインストールしています。

$ sudo apt-get update
$ sudo apt-get install tasksel
$ sudo tasksel install mail-server
$ sudo tasksel install postgresql-server
$ sudo apt-get install build-essential libssl-dev libyaml-dev git libtool \
    libxslt1-dev libxml2-dev redis-server libpq-dev gawk curl pngcrush

メールサーバの設定については,Ubuntu Server Guideなどを参考にしてください。今回はインストールガイドと同様に「Satellite System」を選択し,あとはそのままにしています。

Webサーバの準備

DiscourseはWebサービスなので,Webサーバが必要です。インストールガイドにはNginxとApache2両方の設定方法が記載されていますが,今回はより簡単なNginxのほうを使用します。

Ubuntu 12.04.2 LTSのNginxは若干古いので,Nginxの公式サイトに用意されているリポジトリから新しいバージョンをインストールすることにしましょう。ただし,パッケージの構成が公式リポジトリとは異なるために,まずは既存のパッケージをすべて削除する必要があります。

$ sudo apt-get remove '^nginx.*$'

$ cat <<'EOF' | sudo tee -a /etc/apt/sources.list.d/nginx.list
>
> deb http://nginx.org/packages/ubuntu/ precise nginx
> deb-src http://nginx.org/packages/ubuntu/ precise nginx
> EOF

$ curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install nginx

RVMを使ったRubyのインストール

前述のとおり,RubyをRVMを使ってインストールします。ちなみに,DiscourseのためだけにRVMをインストールすることも可能です。手順はインストールガイドの「Single-user installation」の項を参照してください。

$ \curl -s -S -L https://get.rvm.io | sudo bash -s stable
$ sudo adduser $USER rvm
$ newgrp rvm
$ . /etc/profile.d/rvm.sh
$ rvm requirements
$ rvm install 2.0.0
$ gem install bundler

やっていることは,RVMをインストールしたうえで現在使っているユーザをrvmグループに追加し,Ruby 2.0.0をインストールしているだけです。rvm requirementsの段階で,他に必要なパッケージがあれば自動的にインストールされます。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入