Adobe
製品
Acrobat
Creative Cloud
Creative Suite
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
その他の製品一覧
ソリューション
デジタルマーケティング
デジタルメディア
教育
金融機関
Web Experience Management
その他のソリューション
ラーニング サポート ダウンロード 会社情報
ご購入
アドビストア 安心のサポート& サービス
アカデミックストア 学生、教職員、個人向け
アドビライセンスストア 中小企業向け
ボリュームライセンスについて 企業、教育機関、官公庁向け
販売パートナー
キャンペーン情報
検索
 
情報 サインイン
ようこそ、 さん カート 注文状況 マイアカウント
マイアカウント
注文状況
アカウント情報の変更
コミュニケーションの設定を変更
サインアウト
サインインの目的 お客様のアカウントや体験版ダウンロード、製品の拡張機能、コミュニティエリアへのアクセスなどを管理するため
Adobe
製品 セクション ご購入   検索  
ソリューション 会社情報
サポート ラーニング
サインイン サインアウト 注文状況 マイアカウント
先行予約の提供開始予定日Date. 商品が発送されるまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。 先行予約の提供開始予定日Date. ダウンロードの準備が整うまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。
個数:
ご購入には学生・教職員個人版の購入資格の確認が必要です。
小計
カートの中身を見る
Adobe Developer Connection / Flashデベロッパーセンター /

Flash+Flash Liteを使った参加型抽選会システム「lot777.com」

著者 古本 光司氏

古本 光司氏
  • 株式会社24-7

Content

  • はじめに
  • lot777.comの概要
  • lot777.comの仕組み
  • アクセス集中への対処
  • lot777.comの今後の展開予定

作成日

8 October 2008

ページ ツール

Facebookでシェア
Twitterでツイート
LinkedInでシェア
ブックマーク
印刷

タグ

必要条件

ユーザーレベル

中級

必要な製品

  • Flash Professional CS3 (Download trial)

はじめに

「lot777.com」は、FlashとFlash Liteを使った参加型抽選会システムです。2008年9月6日に開催された北海道WEBコン FESTA 2008 「夏祭り!アドビ特集」にスピーカーとして参加した際に、「イベント会場内で携帯電話から参加できるようなコンテンツを発表しよう」という企画をもとに開発したシステムです。この記事では、lot777.comの概要と仕組みについて解説します。

図1 イベントでの会場風景
図1 イベントでの会場風景

lot777.comの概要

lot777.comは、数字のカウントアップを使った抽選です。まず、運営側は、カウントアップしていく最大の数字(MAXカウント)と当選番号を設定します。たとえば、MAXカウントを200とし、「20、50…110、160…」などの数字を当選番号としておきます。

抽選会参加者は、携帯電話を使ってエントリーを行います。エントリー方法は、まず、特定のアドレスでFlash Liteコンテンツにアクセスすると、0~9の数字がランダムに一定時間表示されるので、タイミングよくその数字のキーを押すとエントリーしたことになります。誰かがエントリーに成功すると、数字を「1、2、3…」とカウントアップしていきます。そして、上記の例でいえば、20番目や50番目にエントリーに成功した人が当選となるわけです。

図2 誰かがエントリーするたびに数字がカウントアップされていきます。(抽選が終了するまで、1人で何度でもエントリーすることが可能です
図2 誰かがエントリーするたびに数字がカウントアップされていきます。(抽選が終了するまで、1人で何度でもエントリーすることが可能です
図3
図3 携帯電話のFlash Liteコンテンツ上では、ランダムに数字が一定時間表示され、その数字のキーを押すとエントリー成功となります(http://lot777.com/entry/では、このFlash Liteコンテンツを見ることができます)。 エントリー時のカウントアップ番号が当選の場合は、Flash Liteコンテンツ上にその当選番号が表示されます。抽選会が終了後、その当選番号の表示された携帯電話を見せて賞品を受け取ります。ハズレの場合は、最初の画面に戻り、再度エントリーを行うことができます(当選するまで、何度でもエントリーできます)

そして、会場のスクリーンには抽選会の状況を表示するFlashコンテンツを映しておきます。現在のカウントアップの状況、各数字の当選/ハズレ状況などが表示されるようになっています。

図4
図4 抽選会の状況を表示するFlashコンテンツ。抽選会の進行に応じて、スタート画面/抽選を開始するまでのカウントダウン/抽選状況の表示/抽選の終了と切り替わります。上記は抽選状況の表示しているところです。赤い数字は当選番号を示していて、黒い数字はハズレ番号となります。また画面下の数字は現状の状況を示しています

lot777.comの仕組み

今回のシステムは、データベースを中心軸として構成しています。

携帯電話でエントリーが成功すると、その情報がFlash LiteコンテンツからPHPを経由してデータベースへ渡されます。データベース側では、その情報を元にカウントを増やしたり、Flash Liteコンテンツに現在のカウント数と当選結果などを返します。その結果をもとにFlash Liteコンテンツでは、ハズレや当選、受付終了などの状況を表示します。

図5 Flash Liteコンテンツとデータベースとのやりとり
図5 Flash Liteコンテンツとデータベースとのやりとり

Flashコンテンツは定期的にデータベースの情報を取得し、その状態をコンテンツに表示していきます。Flashコンテンツは、完全にデータベース内の情報によってコンテンツの表示が切り替わるようになっているため、異なるPCで閲覧してもほぼ同期の取れた内容を表示することが可能です(ただし、コンテンツ内のアニメーションは同期しません。カウントアップの状況などが同期します)。

図6 Flashコンテンツとデータベースとのやりとり
図6 Flashコンテンツとデータベースとのやりとり

データベースの情報をそのままFlashコンテンツへ表示させることは、当初、それほど難しくはないと思っていたのですが、意外と苦労した部分でもあります。参考までに、以下に簡単な Flash コンテンツ側の処理の流れを説明します。

【STEP1】

データベースから定期的に情報を取得するため、下記のような感じでタイマー処理を行っています。一定時間経過するとデータベースにアクセスし情報を取得します。

private function setTimer():void {               //タイマー処理               waitTimer = new Timer(3000, 1);               waitTimer.addEventListener(TimerEvent.TIMER, compTimer);               waitTimer.start(); } private function compTimer(e:Event):void {               //DB接続               joinDB(); }

【STEP2】

データベースから情報を取得した後、フラグの状況によってコンテンツ表示を振り分けます。抽選会の進行状況も把握するため、「beforeModeState」の変数名を見て分かるように、1つ前の状況を常に記憶させています。

if (startFlag && lotFlag || endFlag && beforeModeState != 0 && beforeModeState != 1) {               //抽選状況表示               showNumberMode(); } else if (startFlag) {               //カウントダウン               showCountDownMode();               beforeModeState = 2; } else {               //スタート画面               showStandbyMode();               beforeModeState = 1; }

【STEP3】

まず、スタート画面表示の場合、スタートボタンを表示させる処理を行います。そしてスタートボタン処理も設定し、クリックされた場合、データベース内のスタートフラグをONに変更する処理を行っています。

また、この時、同時にSTEP1のタイマーを再び始動させています。スタート画面時もデータベース監視のタイマーを動作させることで、異なるPC環境でも同期が取れるようになります。

private function showStandbyMode():void {                             //スタートボタンの表示処理               :                             //タイマー始動               setTimer();   } //スタートボタン処理 private function standbyClickListener (e:MouseEvent):void {               //スタートフラグをONにする               startFlagOnDB(); }

【STEP4】

スタート画面でボタンが押された場合、データベース内のフラグが変動され、なおかつ一定時間ごとにデータベース接続を行っているので、STEP2の条件分岐がカウントダウンの処理に変更されます。カウントダウンもタイマーを使って表示させていきます。カウントダウンが終了したら、今度はデータベース内の抽選フラグをONに変更する処理を行います。

//カウントダウン開始処理 private function countDownStart():void {               countDownTimeCount = 4;               countDownTimer = new Timer(1000, countDownTimeCount);               countDownTimer.addEventListener(TimerEvent.TIMER, countDownTimerEnd);               countDownTimer.start(); } //カウントダウン完了処理 private function countDownTimerEnd(e:Event):void {               countDownTimeCount--;               if (countDownTimeCount > 0) {                             CountDown.timeTxt.text = countDownTimeCount.toString();               } else {                             lotFlagOnDB();               } }

【STEP5】

カウントダウン後、またデータベース内のフラグが変動されるため、STEP2の条件分岐が抽選状況表示の処理へ変更されます。抽選状況表示の処理では、携帯電話からエントリーされたカウントに合わせ、数値テキストを生成していきます。また、この時に、あまりにも大量のテキストを生成するとFlashコンテンツの表示で処理落ちが発生してしまうため、一定数を超えた場合は個数を制限してテキストが生成するようにしています。つまり、数秒間にエントリー数が何百もあった場合は、数字を飛ばしてテキストを生成することとなります。また、当選数字に関しては、必ず生成されるように処理を行っています。

private function showNumberMode():void {                             //生成するテキストの個数の確認               :                             //規定以上の個数の場合は制限内に変更               :                             //当選数字のチェックと当選数字の生成               :                             //通常数値テキスト生成               :                             //終了フラグの確認               if (endFlag) {                             //抽選終了処理                             :                                           } else {                             //抽選継続処理                             :                             //タイマー始動                             setTimer();               } }

所々の細かい処理は割愛していますが、基本処理としては、常にタイマーを始動させ、データベースの情報を取得、そしてフラグなどの状況によって各表示処理を行うことになります。http://labs180.com/lot/でも概略説明を掲載しているので、参考にしてみてください。

アクセス集中への対処

今回のイベントでは100名を超える参加者が予想されていました。携帯電話からのアクセスとはいえ、数秒の間に集中したアクセスが予想されたため、アクセスを分散させる工夫を施しています。

前述のように、携帯電話からエントリーを行う場合は、一定の短い間隔でランダムに表示される数値キーを押すことでエントリーができる仕組みにしています。ただ単にボタンを用意してエントリーさせるのではなく、ちょっとしたゲーム性を取り入れることで、ほんの少しエントリーにプレミア感を付加する効果があるとともに、参加者がエントリーを行うタイミングにズレが生じます。そのほんのわずかな時間差でも、アクセスを分散することが可能になります。

さらに、当然のことながら確率的には「ハズレ」が多くなります。その場合、携帯電話では、ハズレの結果表示を一定時間表示させて、それから最初の画面に戻るようにしています。この最初の画面に戻るまでの待機時間の長さをランダムに変動し、再エントリーするまでの時間差を生み出すようにしています。

このように、あまり気付かれない箇所に細かい工夫を取り入れることでアクセスの集中を防ぐようにしています。

以上で、lot777.comの解説は終了です。

lot777.comの今後の展開予定

lot777.comを応用していくと、抽選会だけではなくアンケートやクイズなど様々な展開が可能となります。機会があればまたイベントやセミナーなどで活用していきたいと思っています。

さらに、イベントのような限定的な参加ではなく、誰もが参加できるようwebで展開する携帯とPCを連動させたコンテンツに発展させていきたいと考えています。

製品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • モバイルアプリ
  • Photoshop
  • Touch Apps

ソリューション

  • デジタルマーケティング
  • コンテンツオーサリング
  • Web Experience Management

業種別ソリューション

  • 教育
  • 金融機関

サポート

  • ヘルプ&サポート
  • 注文と返品
  • ダウンロードに関するヘルプ
  • ユーザー登録に関するヘルプ

ラーニング

  • ADC: Adobe Developer Center
  • Adobe TV
  • Design Magazine
  • Photoshop Magazine
  • Focus In

ご購入方法

  • アドビストア
  • アカデミックストア
  • アドビライセンスストア
  • ボリュームライセンスについて
  • 販売パートナー
  • キャンペーン情報

ダウンロード

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

会社情報

  • プレスルーム
  • パートナープログラム
  • 企業の社会的責任(英語)
  • 採用情報
  • 投資家の皆様へ(英語)
  • イベント&セミナー
  • Legal(英語)
  • セキュリティ
  • お問い合わせ
国・地域および言語の選択 日本(変更)
国・地域および言語の選択 閉じる

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

利用条件 | プライバシーポリシーとCookie (更新)

Reviewed by TRUSTe: site privacy statement