PHPMatsuriの裏側

イベントの内容は参加者の参加報告が色々とあがっているので、私はイベントの裏側を紹介しようと思います。
去年まではGoogleグループベースのMLで議論をして、PHPMatsuriのサイトとPaypal決済連携機能も自前で用意してやっていました。
今までの問題点として、MLだとメールに気付きにくかったり読んでるのかどうかわからない点、自前のサイトを用意する負荷、Paypal連携での問題(主にアカウントロックがかかり本人確認のプロセスが不明で負荷が高い)、などがありました。

今年は、Facebookグループによる議論、Candycaneを用いたチケットベースのタスク管理、Githubを使ったサイト構築、イベントアテンド(ATND.org)でのチケット販売に切り替えました。それぞれの利点やTipsを紹介します。

1点今までと変わらない点として、予算管理や経費管理などドキュメントはGoogleスプレッドシートを用いている点です。

Facebookグループ

Facebookグループを使ったのは、スタッフ全員がアカウントを持っていてアクティブに使っていて、投稿があったりメンションがあると通知されて気付きやすい点、だれがそのポストを読んだかわかる点、ファイル共有(バージョン管理付き)もある点など、メリットがあったのが理由です。
ただ、各スレッドを一覧で見る機能や、タグ付けする機能、検索する機能がないために後から議論を追うのが難しくなるのが難点でした。今回はFacebookグループのイベント機能を使って大きな単位でスレッドをまとめていきました。
例えば、スポンサーイベントというのを作って、スポンサーに関することは全てそのイベントに対してスレッドを作っていきます。
後からスポンサーの情報を追いたいときはそのイベント内を見ればよいので楽になります(根本的な解決にはなってませんが。。。)
1点注意点としては、イベント作成時にイベント開催日時をイベント後の将来の日付にしたほうが良いです。指定した日付を過ぎるとイベントページにリンクが出てこなくなるからです。

Candycane

CandycaneRedminePHPクローンとして誕生し、その後開発が進んで独自の機能が増えてきたオープンソースソフトです。去年の団長の安藤さんを中心に開発が進んでいます。安藤さんがCandycaneのプラグインとしてFacebook連携機能を作ってくれて、これがすごく便利でした。
https://github.com/yandod/candycane-plugins

まず、Facebookアカウントでログインでき、チケットを管理するプロジェクトへのアクセスは、そのFacebookグループのメンバーに限定できる機能があります。これでいちいちメンバーの管理をCandycaneでする必要もなく、スタッフも手軽にログインできるのでチケット管理が浸透します(この機能がなかったら面倒でチケット管理機能が使われない可能性もあったので良かったです)
もう1点は、チケットを作る際にFacebookグループにも投稿する機能があり、チケットを作るとFacebookグループにも新規スレッドでポストされます。これによってチケット管理の動向をログインすることなくFacebookで一元化して参照できますし、そのスレッドを元にFacebookグループで議論が始まって、その内容をあとでまとめてチケットに戻すという効果もありました。

もしあなたのプロジェクトでも上記とは違った機能がほしくなった場合は、Candycaneにリクエストを送ると実装してくれるかもしれません。

チケット販売

今までのPaypal連携を使って自前でチケットを販売するのは問題が多く、それらを解決するコストが高かったので今回はイベントATNDを使いました。チケット1枚につき8%の手数料を払えばよく、イベント後に銀行口座にすぐに入金してくれるので助かりました。
チケット販売サイトは結構あるのですが、Paypalをベースとしていないところで、クレジットカード以外の決済もできるという点でATNDを使いました。Paypalをベースとしているところだと、Paypalの問題が発生するとそれに巻き込まれるので避けました。
また、毎年クレジットカード以外の決済の要望をいただくので、それもあったほうが良いかなと思いました(今回はコンビに決済機能を利用)。このように、毎度スタッフが苦労して個別対応しているのが無くなったので負荷が下がりました。
問題点としては、イベントATNDの有料チケット販売は一度公開してチケットが買われると画面に出している説明文が消せずに追記しかできなくなる点、チケット販売枚数が減らせない点、複数のチケットを販売している時は各チケットの残数がわかりにくい点がります。あと、ATNDのアカウント作成時にホットペッパーアカウントが必須なところでしょうか。
一番苦労したのはやはりチケットが売れてからの編集制限です。テストチケットを作って色々と実験して問題ないと思って公開したら制限がかかってしまったので、もう少しわかり易い注意書きとかどのタイミングで何に制限がかかるか分かるヘルプがあると良いかなと思いました。
今後やるとしたら、チケットは1種類にして説明文は最小限でイベント独自のサイトにリンクで飛ばしてそちらで説明を読んでもらうようにして、最初のチケット販売枚数は最小限で出して、後から増やしていくようにするのが良いと思います。

Githubによるサイトホスティング

今年はGithub Pages機能を使ったサイトホスティングに切り替えました。理由はチケット販売を外だしして動的な要素はブログ記事ぐらいしかなくなったからです。スタッフのほとんどがGitを使えるのでメンテナンスも楽でした。
Github Pagesは多少動的な機能もサポートしていて、例えば1ページを構成するのに複数のファイルをincludeする機能によってヘッダ、フッタファイルが共通化できたり、ブログ記事を決められたディレクトリ構成で書けばブログ記事のタイトル一覧を出せます。
ただ動的な要素を使う場合は、実際にプレビュー画面を見るために、テストリポジトリを用意してそこにpushして見るか、Jekyllというソフトウェアをローカルに立てて確認する方法になるので、それらが難しい場合は全て静的な要素でやるのが良いと思います。

Jekyllのインストール方法(Ubuntu編)

sudo apt-get install ruby1.9.1-dev
sudo gem install jekyll
sudo gem install RedCloth

git@github.com:YOUR_REPOSITORY/testrepo.git
cd testrepo
jekyll --server --auto --base-url '/testrepo'

下記でアクセスできる
http://localhost:4000/testrepo/

またgithub pagesはnginxのリバースプロキシーが間に入り、それがブラウザのキャッシュ指定をしてしまうため、数時間単位でコンテンツを書き換えるようなものには向きません。

まとめ

記事が長くなって疲れました。
また来年、北海道で会いましょう!

別記事「PHPMatsuri2012福岡」はこちら
http://d.hatena.ne.jp/cakephper/20121229/1356760548