学生たちがシステムのトラブルシューティングの腕前を競う「ICTトラブルシューティングコンテスト」(通称:トラコン)。第10回大会となる今回は「ICTトラブルシューティングコンテスト2018」(ICTSC2018)として開催されています。さくらのナレッジでは、8/25(土)に行われた1次予選の模様をレポートしました。それに続く本記事では、12/15(土)に行われた2次予選と、それに先立って10月から12月にかけて実施された、トラコンでは初の試みとなる「トラコン予備校」の模様をお伝えします!

トラコン予備校とは

トラコン予備校は、トラコンの予選問題を教材に、トラブルシューティングの考え方や関連分野の技術解説を行う講習会です。主に、トラコンにはじめて参加するチーム、予選の結果に満足しておらずもっと勉強したいチーム、まだトラコンには出場していないが次回以降に挑戦してみようと考えているチームが参加対象です。この予備校を通じてトラコンの出題形式、問題の内容、求められる技術知識、問題解決のテクニックなどを習得し、12月に予定されている2次予選の突破、さらに3月に行われる本選での上位進出を目指してもらうことを狙いとしています。

このような企画を立てた経緯を、ICTトラブルシューティングコンテストの代表を務めている、さくらインターネット取締役の伊勢幸一に聞きました。

「トラコンは実機を使ったインフラからアプリまでを対象とする、ちょっと今までにないコンテストで、参加回数が多いチームが有利になる傾向があるため、初出場や本戦経験のないチームは本選に進出するのがなかなか難しくなります。そこで、今回は一次予選から二次予選、来年度に開催する大会では応募から一次予選までの間に予備校を開催し、本選未経験の学生にもトラコンの傾向を知ってもらって、より多くの学生に参加してもらいたいという趣旨で企画しました。加えて運営委員の学生にとっても、講師をすることで各技術をより深く理解するとともに、予備校に参加する学生と直接やりとりすることで学生エンジニアコミュニティを広げていってほしいという思いもあります」

予備校は東京・大阪・九州・沖縄で開催!

実際の予備校開催にあたっては、一部の地域では実行委員会で会場を用意しましたが、大半は開催を希望するチームが学校の教室や部室などを用意し、そこに運営側のメンバーが出向いて実施する形を採りました。実施した予備校の日程と場所は以下の通りです。

  • 10/13(土) 東京・工学院大学
  • 10/27(土) さくらインターネット大阪本社
  • 11/10(土) 福岡・麻生情報ビジネス専門学校
  • 11/17(土) 長崎県立大学
  • 12/1(土) 沖縄・国際電子ビジネス専門学校

大阪で開催されたトラコン予備校にご参加の皆さん

トラコン予備校に潜入取材!

ではトラコン予備校ではどんなことを教えていたのか、一例として、10/13(土)に工学院大学で行われた回を取材しましたので、そちらの模様をお伝えします。

学生が学生に教える!

先ほどの伊勢のコメントにもあったように、トラコン予備校の講師は、過去にトラコンに出場した学生からなる運営委員会が担当しています。つまり先輩学生が(学校は異なりますが)後輩学生に教えるという図式です。伊勢のコメントにあった「学生エンジニアコミュニティを広げていってほしいという思い」は、こんな形で具現化されています。

この日は東京開催ということもあり、複数のチームから10数人が参加しました。冒頭に書いたように、予備校の教材は1次予選で出題した問題を使うのですが、どの問題を解説するかは事前に出場校から希望を出してもらい、それに沿って決めました。今回解説した問題を紹介します。

1次予選最大の難問!WebRTC問題

前半はWebRTCの技術解説と実技問題の解説です。講師は、技術解説は杉山希望さん(日本工学院八王子専門学校)、実技問題の解説は市川遼さん(東京農工大学)が担当しました。

杉山さんは200ページ近くにおよぶ膨大な資料を携えての講義で、WebRTCのプロトコル概要、ブラウザの対応状況、クライアント同士がP2P通信をするのに必要なシグナリングの仕組み、WebRTCにおけるP2P通信のプロトコル、JavaScriptでWebRTCを扱うためのAPI、WebRTCの実装例としてブラウザでビデオチャットを行うサンプルアプリなどを解説しました。資料のページ数が多いのはプロトコルの解説を図入りでていねいに説明しているからで、講師の熱意が感じられる講義でした。

市川さんが解説した予選問題は、WebRTCを用いて実装されたビデオチャットアプリについて、Firefoxで動作しない、テキストチャットが動作しないというトラブルを解決する問題です(トラコンのブログにも解説が載っています)。市川さんからはシグナリングフローの解説と、トラブルシューティングの手法としてブラウザのデベロッパーツールを用いた下調べや、トラブルの解決策(この問題の場合はプログラムの修正)の説明がありました。

このWebRTC問題は、運営委員としては1次予選における最難問のつもりで出題したそうで、思惑通り正答率はとても低かったようです。そもそもWebRTC自体が比較的最近(2010年代に入ってから)使われるようになった技術であり、そのプロトコルを正確に把握してトラブルシューティングの問題を作成できる学生たちがいることが筆者には驚きでした。

今の学生には常識?それとも未知の技術?IPv6問題

後半はIPv6に関する講義で、技術解説は源波陸さん(東京農工大学)、実技問題の解説は新留一穂さん(日本工学院八王子専門学校)が講師を務めました。

源波さんによる技術解説は、IPv6のアドレス表記、さまざまな種類のアドレス(リンクローカルアドレス、グローバルアドレスなど)、通信の流れ、といったところが主な内容でした。通信の流れはIPv4と比較しながらの説明で、両者の違いがよくわかるものでした。まとめとして源波さんからは、16進数アドレスにビビらない、アドレスの種類にビビらない、プロトコルの違いにビビらないの3点が示されました。

新留さんからは、まずトラブルシューティングのフローとして「問題の理解→検証→原因調査→解決」という流れが示され、これに沿って解説がなされました。1次予選で出題された問題は、IPv6ネットワーク上で通信ができない原因を調査するものです(トラコンのブログに解説があります)。問題文から要点や使われている技術を読み取り、問題の環境にSSHでログインして調査を行い、どのような事態が起きているのかを予想します。今回はルータ以外の機材が本来出すはずのないIPv6 RA(Router Advertisement)を送出していることが予想されたので、tcpdumpでパケットをキャプチャーして予想が正しいかを確認します。

こちらの問題も単なる通信障害ではなく悪意のあるユーザが通信の邪魔をしているという内容で、なかなか難易度の高い問題だと思いました。

予備校をやってみて

ではここで、トラコン予備校の講師や運営に携わった学生の皆さんに感想をうかがってみましょう。

杉山希望さん(日本工学院八王子専門学校)

今年度のトラコン予備校において、計3回に渡り、WebRTCとDockerの講師として参加しました。

私はICTトラブルシューティングコンテストの問題を解いてもらうというよりも技術について純粋に興味を持ってもらいたいと思い、それを目標に講義を行いました。講義経験が少なく手探りということもあり理解してもらえるか不安だったため、なるべく図や比喩などを使い、分かりやすい資料になるように努力しました。

はじめてのWebRTC講義の時は参加者からは「良かった」という感想をいただきましたが、正直なところ私としては失敗したと思っております。講義題材であるWebRTCはさまざまなプロトコルの集合体であり、理解し扱えるようになってもらおうと内容を詳細に説明しました。しかし、座学形式で講義を進めたため、参加者が内容を理解して講義を受けている実感を得られませんでした。

沖縄でも講師を務めた杉山さん

この失敗を元に、長崎県立大学と国際電子ビジネス専門学校でのDocker講義では、「問題解決のためには普段からその技術を使用している方が有利」だと考え、実際に利用されている技術を「まず触ってみる」ことを意識し、ハンズオンを中心とした講義として作成しました。講義では、参加者個々人のレベル差がある中でも参加者全員が理解した上で講義を進められるように、他の講師に参加者のサポートをしてもらいました。その結果、参加者全員の理解度が見え満足いく講義ができました。ただ、伝えたい内容を全て説明をしようとするとどうしても講義時間が足りず、講義の省略もあったため、その点については参加者に申し訳ないと思っております。

今回の講義を通し、題材であるWebRTCやDockerを「使ってみようかな?」と言ってくださった参加者がおり、当初の目標を達成することができました。また、私自身、講義を行うために分かりやすい資料作りを心掛けたり、講義を行う中で参加者から受けた質問などからまだ知らない知識や、認識が曖昧だった部分について勉強するきっかけになりとてもいい経験になりました。

早坂彪流さん(東北学院大学)

私はさくらインターネットで行われた回のiptablesおよびBPF、および麻生情報ビジネス専門学校福岡校でのDockerに関する講義を担当しました。

全体を通した感想ですが、まず教える側として私が意識掛けていたことのひとつに「どういうストーリーで学べるようにするのか」という話があります。狙いとしては「この予備校でやったことを少しでも持続させたい」というのがあり、そのためには学ぶ意味がわかっていて楽しく学べるようにしたいという思いがありました。

ですが実際にやってみると、これはかなり難しく苦労しました。例として大阪回ではネットワークの制御をフロントとバックエンドで学べたらおもしろいということで「iptablesとBPF」という題材を取り扱いましたが、実際講義をしてみると複雑なセマンティクスを持つiptablesと低レイヤーなBPFを参加者が対応づけることは難しく、そもそもiptablesに関する理解だけで手がいっぱいなチームがいくつもありました。これは人によっての事前知識や理解度が違っているからで、途中から修学状況や理解度のレベルで受講生たちを分割してパラレルに授業を行うことで理解度に合わせた細かい講義をすることができたと考えています。

予備校参加者にアドバイスを送る早坂さん(右)

この反省を踏まえて福岡回では事前調査の他に事前にやってほしいちょっとした課題などを出して対応しました。結果として当初考えていた一次予選で出題した問題を解いてもらうつもりが、残念ながら時間が予定を超過したので実施できませんでした。しかしながら講義の内容については、手を動かして確認してもらったこともあって理解してもらうことができ、懇親会ではあとで手を動かしてみますと言う人が何人もいました。

大人数に教える側というのは、はじめての経験でしたが、タイトなスケジュールで資料を作り、それでもクオリティをできるだけ高めて発表したのは自分自身としても学びになりました。今回実施したことが参加者の皆さんの一助になれば幸いです。

林拓海さん(都立産業技術高等専門学校)

私は麻生情報ビジネス専門学校でDockerの講師を担当しました。講師をやった感想としては、学生に対して講義をしたことがなかったので、非常に有意義な時間だったなと思います。

私はDockerネットワークを中心に講義を担当したのですが、事前アンケートの内容ではCiscoの機器を触ったことがあるとの事だったので、Ciscoの機器を設定するときの例を話しながら講義をしました。実際は緊張のせいもあってなかなか思うように説明できなかったり、途中でつまづいている受講者のフォローができませんでした。さらに、時間が押してしまったため最後に実施するトラブルシューティングまでたどり着けず、講義の進め方に問題があったかなと思います。懇親会では「わかりやすかった」や「これを機にDockerを使ってみたい」などの意見をいただけてよかったです。

失敗した部分もありますが、これを今後の予備校に活かしながら次の世代に繋げていければいいなと思います。

福岡開催のトラコン予備校にご参加の皆さん。前列右端が林さん。

総括:田中京介さん(電気通信大学)

今回のトラコン予備校は、講師チームが開講先の参加者に合わせて、前提とする技術や予選の問題を解説する講義および演習を行うという新たな取り組みでした。トラコン予備校開講後に参加学生達に回答していただいたアンケートでは良好な結果がいただけたので、開講に努めた甲斐があったと一安心しております。

今年度のトラコン予備校に参加した学生の合計人数は60人ほどになり、技術の示教だけでなく全国のインフラ技術に興味のある学生達と交流の機会を持てたことは、運営学生側にとってもとてもよい刺激になりました。

運営委員としても講義や演習を行うという経験は日頃行わないものであるため、さまざまな失敗がありましたが、そういったフィードバックを得て改善をしていくという過程が、今後のトラコン予備校、ひいてはICTトラブルシューティングコンテストを良くすることへ繋がると考えています。

筆者より

予備校の運営に携わった皆さんの感想を読むと、それぞれに工夫や試行錯誤を重ねながら取り組んでいたことがうかがえます。すごくがんばっていると思いました。お疲れさまでした!

目指せ本戦進出!トラコン2次予選

さて、こうして予備校で学んだ学生も多数いる中、本戦進出をかけた2次予選の日がやってきました。2次予選は12/15(土)の午後に、1次予選と同じくオンライン形式で開催されました。(オンライン予選の仕組みや出題システムについては1次予選のレポートにて紹介していますのでそちらをご覧ください)

2次予選も筆記と実技の合計10問が出題されましたが(トラコンのブログに問題の解説があります)、1次予選は学生による運営委員会が問題を作成していたのに対し、2次予選は社会人で構成された実行委員会が出題しました。そして、予選当日は六本木にあるシスコシステムズの会議室に集まって運営にあたりました。

2次予選の運営にあたる実行委員の皆さん

今回も、予選開始当初は出題システムが問題なく動いていることを確認するぐらいでのんびりと過ごしていましたが、時間を経過するにつれて問い合わせが多くなりました。とくに今回は、設問に不備があるのではないかという問い合わせがありました。こういうときは運営メンバーがその場で話し合って対応を決定します。また、実技問題に挑戦しているチームが誤って問題環境を壊してしまうこともあります(機器をうっかりシャットダウンしてしまい起動できないなど)。このような場合は運営側で問題環境を再構築してチームに渡します。こういうときに実機を使った環境だと再構築が大変ですが、トラコンの予選はすべてさくらのクラウドなどの仮想インフラ上に環境を構築しており、1次予選のレポートでも紹介したようにTerraformを使って環境を自動生成しているので、再構築が簡単にできるのはとても便利だと感じました。

2次予選終了直前の様子。最後はタイマーを表示してカウントダウンしました。

本戦進出チーム決定!決戦は3月!

5時間にわたる2次予選終了後、運営メンバーによる採点を経て結果が発表され、全49チーム中16チームが3月に行われる本戦に出場となりました。結果の詳細はトラコンのウェブサイトに記事がありますが、本選に進出したのは以下のチームです。おめでとうございます!

  • 会津大学「A-KEN」
  • 筑波大学「WORD編集部」
  • 専門学校穴吹コンピュータカレッジ「電脳技研」
  • 金沢工業大学「@himarjin」
  • 法政大学「RAT::Zero」
  • 法政大学「RAT::One」
  • 麻生情報ビジネス専門学校「なんでもいいよ」
  • 東京工業大学「NaruseJun」
  • 奈良工業高等専門学校「incomplete」
  • 東京都立産業技術高等専門学校「captious」
  • 大阪工業大学「平成新撰組四天王Ⅶ 満足兎チーム」
  • 東京都立産業技術高等専門学校「ジャージャー」
  • 高知工科大学「高知工科大学 ロボット倶楽部」
  • 信州大学「kstm(カスタム)」
  • 信州大学「yrfw(ゆるふわ)」
  • 京都女子大学「Girls」

本戦ではいよいよ、仮想インフラではなく実機を使ったトラブルシューティング問題が待ち受けます。仮想環境で上位に入ったチームが物理環境でも同じように勝てるのか?それとも物理インフラに強いチームが逆転劇を演じるのか?今から本戦が楽しみです。本戦の模様もさくナレでレポートしますのでご期待ください!