04:11フォローする開発部の土岐です。SolutionことDKSです。「いつまでくじ引きで引っ張るんだ!」「どれだけお前はくじ引きが好きなんだ!」という心の声を押し殺しながら迎えた今回。ガラポンアダプタリリース」の巻であります。「もはや挽回の機会は無いのか・・・」と、もやもやしつつも、いつの間にか忘れたりしていました。そこに、まさかの再活躍の場が降って沸いたことから話は始まります。~ITの力で日本を元気に!~」にて、参加企業が提供する景品の視聴者への抽選会があるとのこと。プロダクトビジネス推進委員会に参加している亀井が、ここでDKSを使用したくじ引きを行ってはどうか、ということを提案した結果、なんと採用。私に話がきたというわけです。全世界に向けて放送されるオンラインセミナー。身内しかいない社内パーティとは訳が違います。2.0をここでリリースでしょう!とこの時点では何のアイディアも無いのにリリース宣言をして、プロジェクトがスタートしました。2.0夢のくじ引きデータ連携まずは仕様概要を検討します。twitterで”#MIJS3”というタグをつけて呟くことでした。ver2.0には必要です。ここでは、弊社でプロトタイプが既に作成されていたtwitterアダプタを活用することにしました。ver1.0では、当選者の名前をファイルに書き出し、それを外部アプリケーション起動アダプタで開くことによって発表としていましたが、それでは何とも寂しい。Spreadsheetアダプタ。Spreadsheetアダプタの書き込み処理でシートに書き込んだ場合、書き込んだシートをブラウザで開いていると、リアルタイムでその書き込んだ内容が反映されるんですね。Spreadsheetアダプタ凄い!(ではなくて、凄いのはGoogleです)これでクラウド要素注入!!盛り上がって参りました。いうわけで、まずはそのtwitter検索→スプレッドシート書き込みを行うスクリプトがこちら。途中でmapperの「グループ化」があるのは、複数回発言したユーザーは複数取得されてしまうため、それを1つにするための処理です。これによりまずは対象者を取得してGoogleスプレッドシートに書き込む処理が完成しました。問題は、当選者をランダムで決定する抽選箇所。ここで私にとっておきの秘策がありました。ここはDataSpiderのアダプタSDKを使って独自アダプタを作るしかない!というわけで「ガラポンアダプタ」の開発に着手します。世界初のビジュアル系アダプタガラポンアダプタガラポンアダプタを作るにあたって、1つだけ決めていることがありました。それは「アイコンをでかくする!」ということです。これは裏技的な使い方なんですが、アイコンの画像ファイルはDataSpiderのStudioで表示させた場合、元の画像ファイルの大きさのまま表示されます。アダプタの開発時、うっかり画像サイズをリサイズし忘れたことにより発見されたこのテクニック。Webでは使えません)はっきりいって業務でやったら怒られますが、ここで使うしか無い!というわけでできたのがコレ。実行マークまででかくなる!というわけで、このアイコンに。社内に見せて反応を伺ったところ、なかなか好評でした。その中で「これ回ったら凄いね~」という反応も。言われると動かしたくなるのが開発者のサガ。SDKにはそんな機能はありません。(というかそんな要件、普通あるわけもありません)何とかできないか、と思って試しにアニメーションGIFを使ってみたらびっくり動いた!というわけで反則的な機能を駆使してガラポンアダプタが無事完成・・・・!って肝心の話を忘れていました。いうわけでスクリプトとガラポンアダプタの仕様詳細の話。1.0では、当選者のみがテキストエディタで表示される仕様でした。それだけでは、当選するまでの緊迫感にかけてしまうという印象がありました。考えたのがこの2段階の抽選の仕様。その中から1人1人落選者の名前が消えていって、最後に当選者の名前のみが表示されるこれを実現するために、ガラポンアダプタは以下のような仕様としてみました。当選者以外のrowをnullとして出力する具体的には、以下のようなデータが入力データだったとします。当選者のrowのみ出力する」では、以下の田中さんのrowのみのデータが出力されます。</row></table>この出力データにより、まず対象者の中から当選候補者を抽出してGoogleスプレッドシートに書き込みます。そのスクリプトは以下となります。当選者以外のrowをnullとして出力する」では以下の田中さん以外のrowのcolumnのデータははnullとなって出力されます。</row></table>このnullになった結果は空文字に変換し、それをGoogleスプレッドシートに書き込んだときに、対象の行に書かれている当選者のデータを削除することができます。そのスクリプトが以下です。ループの中で、一人ずつ当選者が減っていき、ガラポンアダプタがその行を空行で出力します。「段々と当選者が絞られていく」という過程を見せることができるというわけです。CSVに書き出し・読み取りしているのは、Googleスプレッドシートへのアクセスは多少時間がかかることがあるため、キャッシュ的にCSVファイルを経由してデータをやり取りしています。最後になってしまいましたが、このシステムの中核を担うガラポンアダプタのプロパティはこちらです。上から、当選者数の指定、データをnullとして出力するかどうか、待機ミリ秒の3つの設定があります。下の待機ミリ秒は、このアダプタの処理をどのくらい一時停止するかどうか、という指定です。一時停止をする必要が有るかというと、この再生マークを長い間表示させて印象付けるため、だけ!こんなとこでも完璧にビジュアル系アダプタであります。いうことで準備は揃いました。時は来た!いよいよ本番稼働!当然のように起こるトラブル!2012年9月20日、イベント当日。ノートPCにバッチリ仕込みを完成させ、スマフォ経由のテザリングによりネットワークも確保。しめやかにイベントスタート!イベントの最後、21:00前に行われる抽選に向けて、twitterでハッシュタグ「#MIJS3」を呟くように呼びかける司会の方。視聴者も続々と増えて、段々とハッシュタグ「#MIJS3」を呟く参加者も増えていきます。予行練習として、何度か最初の「twitterタグ検索→Googleスプレッドシート書き込み」のスクリプトを実行。問題なく動くことを確認。プログラムとしては最後になる、亀井によるDataSpider紹介プレゼンテーション。頭が真っ白になるっていうのはこういうことなんだ、と分かりました。うわぁぁどうしよう!?ネットワークに繋がらないと、twitter連携もGoogleスプレッドシートも全く意味無し!今から作り直す時間も無い!!なんとかCMを引き延ばしてもらって、緊急ネットワーク探し。奇跡的に、弊社の社員がモバイルWiFiルーターを持っていました。繋がった!!こんなにネットワークが繋がって嬉しかったことは生きていて初めてでした。・5名から当選者の絞り込みという流れがうまくいきます。会場のスタジオは録音しているため私語厳禁で盛り上がりは分からなかったんですが、後で聞いたところによると、当選者の絞り込みのところで「当たるか、当たるか、外れたーー!」という思惑通りの盛り上がりがあったようで、ほっとしました。参加者の方にも「面白かったよ!」とお褒めいただき、大変嬉しく帰路につきました。いやぁぁぁしかし危なかった・・・・。2.0リリース&ガラポンアダプタ。1.0で当選者が連番で当たってしまう機能はガラポンアダプタで乗り越え(ちょっと卑怯ですが)、ビジュアル性の向上&当選に向けた盛り上がりの演出にも成功。自分的には満足感を持って終えることができました。動作の安定性はまだ課題あり。それはソーシャル&クラウド連携と決めた時点で、ネットワークに依存してしまうということを抱え込んでしまったわけですが・・・。した思いつきから始まったDKSプロジェクト。今後もチャレンジしていきたいと思います。いうことで長々となってしまいましたが、読んでいただいた皆様、ありがとうございました。コミュニティを開くコメントログインしてコメントを残してください。このセクションの記事DataSpiderと接続実績のある製品のご紹介オンプレミス型AI-OCR「AIRead」と連携してみた。