先日バラクーダネットワークスはプログラミングコンテストを開催し、SJSU(サンノゼ州立大学)の優秀な学生が参加しました。今回のコンテストは、学生達がボットを作成して競い合う24時間のコンテストとは異なり、プログラミングの課題をダウンロードし、5週間かけてそれに取り組むという内容です。最終週に学生が作品を提出し、審査員がレビューを行います。最終選考を通過した候補者はプレゼンテーションを行い、それをもとに最終的な評価が下されます。

コンテストは、次のような流れで行われました。

課題

課題の仕様に基づいて、参加者はLuaスクリプトを記述します。スクリプトはバラクーダネットワークスが提供したVMで実行され、検出されたデバイスのスキャン、デバイス/ドライバマッピングファイルの解析、検出デバイスに基づいてロードするドライバのリスト取得を行います。このコンテストが画期的なのは、優勝者のスクリプトがバラクーダネットワークスの仮想マシンで実際に使用されるという点です。

また、Luaを使用する点も画期的です。Luaは埋め込み可能な小さなプログラミング言語であり、Cと非常に緊密に統合されています。ビデオゲーム会社や埋め込みモジュール開発者など、多数のベンダに使用されています。バラクーダネットワークスでも、Cの優れたパフォーマンスを必要とし、スクリプティング言語を使ったアプリケーション開発を短期間で行いたい場合には、Luaを使用しています。今回のコンテストでは、おそらくLuaを初めて使用する学生ばかりだったので、どのようなスクリプトが出来上がってくるのか楽しみにしていました。

結果

およそ40人の学生がダウンロードし課題に取り組みました。その中から、十分に機能するスクリプトが2つ選ばれました。課題は、筆者が考えていたよりも難しい内容でしたが、この2人の入賞者は最後まで課題に取り組み、コードを完成させたのです。最終的に提出されたスクリプトは多数とはいえませんが、どれも素晴らしい内容でした。

優勝者

優勝に輝いたのは、ソフトウェアエンジニアリングの修士号取得候補者であるスワプニル・ジョシ(Swapnil Joshi)です。彼のコードは適切にコメントが記載され、課題の仕様に対する包括的なソリューションとなっていました。特に、課題を分解した構成、コメントの記述、課題の内容を超えた機能の追加が高く評価されました。スワプニルとロバートのスクリプトはいずれも優れていましたが、スワプニルのコードの方が若干上回っていたといえます。スワプニルのコード

冒頭にコードの機能とドキュメントが記載され、パートごとに分かれた構成になっています。素晴らしい作品ですね。

第2位

第2位は、コンピュータサイエンスの学士号取得候補者であるロバート・カム(Robert Kham)です。詳細なドキュメントに加えて、自己認識の高さが評価されました。コードのメンテナンスでは、実装のどの部分を改善できかを把握することが大切です。ロバートのコード

ロバートは注釈で、問題のある実装を指摘しています。このコードを今後メンテナンスする際にはコメントを参考に改善を加えることができるので、このようなコメントは非常に役立ちます。ロバートのコードはわかりやすく、比較的に単純明確である点も評価されました。ロバートのコード

コードのメインエンジンは非常に直接的で要領を得ています。Luaコンストラクトを使ってドライバリストを複製し、シンプルに処理しています。

こちらをクリックすると、審査結果のページでコードをご覧いただけます。

審査基準

審査員を務めたのは、BJブラック(BJ Black)(サンノゼ市立大学コンピュータサイエンス2008年、バラクーダネットワークスのプラットフォームエンジニアリングおよびコンテンツデリバリ担当ディレクタ)、サビア・チャハール(Satbir Chahal、サンノゼ州立大学コンピュータサイエンス2008年、バラクーダネットワークスのVM開発リーダー)、グリゼル・ロペス(Grizel Lopez、バラクーダネットワークスのコンテンツセキュリティ担当ディレクタ)です。この3名は、提出期限の後、エントリのレビューを開始しました。審査の基準は、機能性、コードのスタイル、メンテナンスのしやすさです。入賞者はいずれもLuaを使った経験がないにも関わらず優れたコードを完成させましたが、機能性とメンテナンスのしやすさという点でスワプニルのコードの方が若干優れていました。

賞品と賞金

課題が非常に難しい内容であることを考慮し、トロフィーと250ドル相当のAmazonギフトカードが授与されました。また、両者の優れたパフォーマンスを高く評価し、夏のインターンシップに招待する予定です(雇用認定保留中)。しかもありがたいことに、2人ともバラクーダネットワークスに大きな興味を示してくれているので、できるだけ早く社員として迎えたいと考えています。

スワプニルのコードは、各種ハイパーバイザとクラウド環境向けのドライバをロードするプリブート処理の一部として、今後リリースされるBarracuda Virtual Applianceに実装される予定です。

コンテスト参加のメリット

入賞した2人は、Luaプログラミング言語の経験がまったくありませんでした。LuaはCプログラムに埋め込み可能な重要性の高い言語(バラクーダネットワークスが推進するいくつかのプロジェクトでも使用され、ビデオゲームをはじめとする各種業界で普及)なので、Lua言語を学ぶことは大きな一歩です。

このプロジェクトには、Linuxカーネルに含まれるハードウェアドライバや、VMの起動や稼働について学習するという側面もありました。最終選考に残った2人のコードは、他の参加者にとって大いに参考になることでしょう。

※本内容はBarracuda Product Blog 2015年2月24日Congratulations to the winners of the Barracuda SJSU Programming Contestを翻訳したものです。

BJ Black

本稿は、バラクーダネットワークスのWebサイトに掲載されている『バラクーダラボ』3月18日付の記事の転載です。