皆さんから集まった多言語クイズ問題
先月、無事閉幕を迎えた Code 2012 in 定山渓。
このイベント中の企画として、まま好評であった「多言語クイズ大会」がある。
インターネット上で広くクイズ問題を募集し、Code 2012 当日に参加者の皆さんにチャレンジ頂いた次第である。
クイズ問題募集に、皆様からたくさんお寄せ頂いた問題であるが、これまでのところは一般公開はされていなかった。
プレイ用の Web アプリを放置はしていたので(URL 等、詳しくは
過去の投稿を参照)、その気になれば1問ずつ開いてみることはできたが、機械的に一括処理できるような形での公開が遅れていた。
クイズ問題、いよいよ公開!
先日ようやく、プレイ用の Web アプリ上に、クイズ問題一式を公開する Web API エントリポイントを増設した。
詳しくは下記を参照。
http://playcode2012quiz.apphb.com/about
投稿者名(ハンドル名)と通信欄を除く項目が、XML ないしは JSON 形式で、HTTP 経由で入手可能である。
(HTTP GET 要求を送信するときの、Accept 要求ヘッダに、"application/xml" か "application/json" のいずれを指定するかで、応答形式が XML か JSON かが切り替わる。)
この問題集をもとに、独自の多言語クイズプレイアプリを作ってみてもおもしろいかもしれない。
実装について一言
"Code" というイベントでの企画なので、実装についても一言。
このプレイ用アプリとその上の Web API は、ASP.NET で作成してある。
クイズ問題を公開する Web API は、ASP.NET WebAPI フレームワークの上に実装されている。
ApiController クラスから派生したクラス上に実装したメソッドが、URL に対応付けされて、それらメソッドが返す値が (Accespt要求ヘッダの指定の如何によって) XML ないしは JSON 形式となって HTTP 応答に返される仕掛けだ。
このとき、[Queryable] 属性が付けられた、型 IQueryable<T> を返すメソッドについては、要求 URL のクエリ文字列の指定で、並べ替えや絞り込みなどができるようになっている(ソースコードは
こちら)。
データ量が膨大というわけではないので、この仕掛けが役に立つ場面は今回の事例ではあまりないかもしれないが...。
以上、Code 2012 開催から日があいてしまったが、ようやくに多言語クイズ大会の問題公開のご報告とさせて頂く。