【栄冠の行方は!?】春のセカチャレ 最終結果発表!

Sekappyプログラミングチャレンジ・『セカチャレ』。ご応募いただいた作品の中から、今回の優秀作品を発表いたします!
厳正なる審査の結果、特に優れた作品をお寄せいただいた方に、最優秀賞としてカードラッシュ様通販サイトで1ポイント=1円としてご利用いただける50,000ポイントをお送りいたします。
なお、Sekappyでは今後もプログラミングチャレンジを実施予定です。最新情報は弊社の公式Twitterアカウント @SekappyOfficial から発信いたしますので、ぜひフォローして続報をお待ちください。
それでは以下、優秀作品の発表です!

部門(1) 優秀作品(2名)

実務未経験の方を対象とした部門(1)のお題は、トーナメントマッチング決定ツールでした。
カードゲームの大会に必須となる、対戦組み合わせの決定。最近では専用アプリでペアリングを行うイベントも増えましたね。
本部門では、そんな対戦組み合わせを決めてくれるツールを製作いただきました。
今回は、特に優れた作品をお寄せくださった2名の方に、カードラッシュポイント10000ポイントを進呈いたします。

制作者:O様 27歳

部門1:トーナメントマッチングツール(カードラッシュポイント10000ptプレゼント)
アピールポイント
・「対戦組み合わせを作成するツール」という要件でしたので、使用シーンを想定し、大会開始~終了まで運用できるようなWebアプリ作成を心がけました。
・対戦組み合わせとしては、勝ち抜き戦(シングルエリミネーション)とスイスドローの2種を実装しました。勝ち抜き戦はトーナメント表を表示、スイスドローはラウンドごとの順位を表示することで、現在の状況が一目で分かる作りになっています。
・Bootstrapを使用し、見た目の統一感を出す事ができていると思います。
先月からWeb開発の学習を開始した矢先のコンテストでしたので、完成させられるか非常に不安でしたが、形にできたのでホッとしています。非常に良い勉強になりました。ありがとうございます。
講評
画面構成がとてもわかりやすく作られていました。 管理者機能・ログイン機能もあり、調整すれば実際の大会運営でも使用できるレベルに感じます。 関数の説明や変数も分かりやすく、保守性も高そうです。 勝ち負けだけでなく、ドローやドロップにも対応出来ているのも高評価です。
フレームワークの仕様上の都合かもしれませんが、ファイルが必要数以上ある点は気になりました。 プレイヤー数が2^xでない時に対応出来たり、CSVでの入出力が行えたりすると、さらに良くなると思います。

制作者:K様 26歳

部門1:トーナメントマッチングツール(カードラッシュポイント10000ptプレゼント)
アピールポイント
画面がHTML1つで完結しているので動作が速いです。 バックアップを作れるので、こまめにバックアップを取ることで万が一ブラウザを閉じてしまった場合にも対応可能です。 これを元に、例えばサーバー接続を学んでプレイヤーからの対戦組み合わせ閲覧や、結果報告を可能にできるよう引き続き勉強を続けていきたいです。 時間の制約上詰めきれなかった点、改善点も挙げたらきりがないので、ブラッシュアップして実際に使っていただこうと思います。
講評
スイスドローやトーナメント機能、OMW%を用いた順位判定、結果のバックアップと再現機能と、とても多機能なツールとなっています。 また、コードはインデントが整っており、注釈もあるので読みやすく出来ていました。
ツールを多機能化した都合だとは思いますが、それぞれの機能に粗が見られました。(勝敗入力の効率向上、保存データ出力の最適化、bye時の対応、結果表示エラーなど) 各機能を調整することで、さらに良いツールとなるでしょう。

部門(2) 最優秀作品(1名)

実務経験3年未満の方を対象とした部門(2)の課題は、デッキ作成&不足カード算出ツール。
所持カードを登録して管理、デッキリストを入力すれば不足カードが分かる……という、カード管理・デッキ制作に役立つツールを製作いただきました。
今回は、使いやすく丁寧に仕上げられたこちらの作品を最優秀賞といたしました。改善の余地を残してのご提出ということで、ぜひアップデートにも挑んでいただければと思います。製作者様には、賞品としてカードラッシュポイント50000ポイントを進呈いたします!

制作者:I様 23歳

部門2:デッキ作成&不足カード算出ツール(カードラッシュポイント50000ptプレゼント)
アピールポイント
・カード追加・更新画面
カード名・枚数・単価入力フォームの入力値チェックをリアルタイムで監視するようにしました。この機能のおかげでユーザーに負荷を与えることなく、入力していただくことができます。 CSVファイル読み込み時、CSVファイルに値漏れの不備があった場合、その行を飛ばして読み込むようにしました。また、不備がある行をユーザーに伝えるメッセージが表示されます。この機能により、快適なCSVファイル読み込みを実現しています。 DBによるリストの読み込み及び保存機能を実装しました。本機能によりCSVファイルを用意せずとも複数回本アプリを快適に使うことができます。 カード名による部分一致検索を実装しています。こちらの機能により、「あのカード追加したっけ」というユーザーのストレスを軽減します。 カードの追加という行為が本アプリで一番手間がかかる部分であるため、所持カードから採用候補カードリストへの追加を用意することで、手間を軽減させられるようにしました。 ・デッキ作成画面 ※カード追加・更新画面と同様の機能もありますが、重複して記入してあります。
CSVファイル読み込み時、CSVファイルに値漏れの不備があった場合、その行を飛ばして読み込むようにしました。また、不備がある行をユーザーに伝えるメッセージが表示されます。この機能により、快適なCSVファイル読み込みを実現しています。 カード名による部分一致検索を実装しています。こちらの機能により、「あのカードどこだ」というユーザーのストレスを軽減します。 右上に作成中のデッキ枚数を表示しています。こちらにより現在作成中のデッキ枚数(メイン・EX)をすぐ確認できます。 近年のカードゲームでは、メインデッキのほかエクストラやサイドデッキを使用する傾向にあります。こちらに対応するためカード区分として、メインとEXを実装しています。これによりメイン枚数とEX枚数を区別することができます。 メインデッキのみを対象としたお試しドロー機能を実装しました。また、複数のカードゲームに対応するため、最初にドローする枚数を選択することができます。 お試しドロー機能において、追加のドローを行うことができます。本機能によりカードを用意せずとも、2ターン目以降の手札をイメージできます。   ・デッキ閲覧画面 ページ下部に不足カードリストをCSVでダウンロードできるようにしました。こちらの機能により、本アプリ終了後もユーザーが足りないカードを確認することができます。 ・全体的な工夫・感想 表が長くなった場合スクロールバーを表示させることで、ユーザーが表を比較しやすいようにしています。 計算量もある程度考慮し、最悪計算量はO(nm)に抑えています。n: 登録されているカードの種類, m: 登録されているカード1種の最大枚数 また、一部メソッドにおいては、分割を行い可読性の向上を心がけました。 DBにスプレッドシートを用いた理由として、友人のカードゲーマーがスプレッドシートでカード管理を行っていたことを参考にしました。 スプレッドシートを使用することにより、知識があまりないユーザーでも簡単にDBの中身を確認でき、任意の形式でエクスポートできることも利点であると考えます。 cdnを用いてVue.jsを使用することで、開発環境の準備は最低限で済むようにしています。 友人のカードゲームユーザーに意見をもらい、UIの改善に努めました。 DBのアクセスするためのhtmlやjsに直接書いている部分は改良の余地があります。 本コンテストに気づいたのが、ゴールデンウイーク明けということもあり、実質的な開発期間は2週間前後でした。
講評
画面が整っており、こだわりが感じられました。 カードリストや入力フォームなどもすぐ反映されるので、とても使いやすかったです。
・必須条件だけでなく、カード検索やドロー確認、データ保存機能など拡張できている ・DBとしてオンライン上でのスプレッドシートを利用しているのでローカルでの容量削減が行えている ・コードのインデントが整っており、コメントもあり解析しやすい ・画面ごとにファイル分けが行えており、関数名も分かりやすく保守性も高い ……と、とても優秀なツールでした。
さらなる改善点を探すとしたら、登録したカードの編集・リストからの削除といった機能の実装でしょうか。それらがあれば、より良いツールとなるかと感じました。

部門(3) 該当者なし

実務経験の有無を問わない方に向けた難問となる部門(3)。今回のお題はTCG対戦支援ツールでした。
ライフポイント管理、ダイスやコイントスの判定、各種カウンター、効果のストック……カードゲームの対戦で欲しくなっちゃうあれこれを一つにまとめた、万能対戦ツールを作っていただく本課題。
今回は残念ながら該当者なしという結果となりました。我こそはと思われる方、次回開催時のチャレンジをお待ちしております!
ご紹介は以上となりますが、惜しくも選外とさせていただいた作品も素晴らしいものばかりでした。改めて、ご応募くださった皆様に御礼申し上げます。 賞品も順次発送しておりますので、到着をお待ちいただければ幸いです。
Sekappyでは、これからもカードゲーム×ITを盛り上げるべく、プログラミングチャレンジをはじめとするイベントを継続開催してまいります。 イベント情報はTwitterアカウント@SekappyOfficialから発信しております。ぜひフォローいただき、続報をお待ちください。
この度は多数のご参加、誠にありがとうございました。