SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2023 セッションレポート(AD)

5年で5000を超えるコンテンツを揃えたギブリーが語る、人材採用・育成支援サービスの裏側

【9-A-3】Trackのプログラミングコンテンツ作成を支える技術

  • このエントリーをはてなブックマークに追加

実行環境を揃えたDocker Imageを言語ごとに用意して使い分ける

 ここでスピーカーが小西氏に交代し、Trackの大まかなシステム構成の説明を始めた。Trackは、「Track Application」「Contents Server」「Command Execution Server」「Scoring Server」の4種類のモジュールで成り立っている。このうち、ユーザーが目にするにはTrack Application。「Editor」というモジュールを内蔵しており、それがほかのモジュールと連携して、コンテンツを表示している。さらに、Command Execution Serverと連携して、ユーザーが入力したコードの実行結果を表示する。

Trackの大まかなシステム構成
Trackの大まかなシステム構成

 Contents Serverは、コンテンツの供給と登録、そしてバージョン管理を受け持っている。登録したコンテンツは一度作って終わりとはいかず、何度もバージョンアップを繰り返すことになる。「誤字脱字などはすぐに修正できるが、問題文を修正するときは、受講者に有利不利が発生することがあるので、すぐには修正できないことがある。そこがContents Serverの難しいところ」(小西氏)

株式会社ギブリー Track テックリード 小西俊司氏
株式会社ギブリー Track テックリード 小西俊司氏

 Command Execution Serverは、受検者が作成したファイル・セットと受検者が指示した実行コマンドを受け取って、その標準出力と標準エラー出力をWebSocketで返している。Trackでは現在、20近いプログラミング言語に対応しているが、それぞれの言語のコンパイル、実行環境として、言語ごとにDocker Imageを用意して使い分けている。

 アルゴリズム問題で計算量の多い問題を多くの受検者に出題すると、計算量の多いプログラムを受検者全員が実行する。その結果、Command Execution Serverの計算能力が追いつかず、スケール・アウトで対応しなければならないのだ。問題の計算量を見積もって、どれくらいのサーバーを配分するかを決めるときに悩むことが多いという。

 Scoring Serverは、ユーザーが提出したコードを採点し、得点を決定する。テスト・コードの実行はCommand Execution Serverが担当するが、その結果の解釈、採点はScoring Serverが受け持つ。

 ユーザーがコードを保存するたびに、Scoring Serverに採点依頼がやって来て、そのたびにScoring Serverはテストを複数回実行する。その理由は、成功するはずのテストが失敗することがあるからだ。これは実際の開発現場でも起こることだそうだ。

 失敗する理由としては、「npm install」のような通信を伴うコマンドが失敗する、Command Execution Serverが何らかの理由で不調に陥ってテストが動かない、計算量が多い問題では実行を指示しても制限時間内に完了しないなどが挙げられる。

次のページ
各種コンテンツの作り方とは、コーディング問題の作り方を解説

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers Summit 2023 セッションレポート連載記事一覧

もっと読む

この記事の著者

笹田 仁(ササダ ヒトシ)

 フリーランスのライター、編集者。IT、特にソフトウェア開発の話が好きです。 趣味はドラムを叩くこと。コロナ騒ぎでリハーサルスタジオに入りにくくなり、ちょこちょこと楽器を買うことでストレスを解消していたら、いつの間にか置き場所に困るほどになってしまいました。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

丸毛 透(マルモ トオル)

インタビュー(人物)、ポートレート、商品撮影、料理写真をWeb雑誌中心に活動。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:株式会社ギブリー

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17465 2023/04/28 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング