AWS BugBust Challengeに参加しました
2022/02/14
2022/02/14
こんにちは。杉本です。
「ギネスチャレンジ」に⽬を引かれてAWS BugBust Challengeに参加しました。最近Pythonでプログラミングを⾏なっており、⼒試しをしてみたいという気持ちもありました。
そんな体験をもとに、何がよかったのかを共有します。
AWS re:Inventが2021年は11⽉29⽇から12⽉3⽇(アメリカ太平洋標準時)に開催されました。そのAWS re:Inventの中で開催された、ギネスワールドレコーズ認定の「最⼤のバグ修正コンペティション」の新世界記録を⽬指すイベントです。
AWS BugBustは、バグを修正し技術負債を削減するためのグローバルチャレンジを行うAWSサービスです。イベントを作成し、既存のコードを取り込むことによりAWS CodeGuruを使ったバグ検出を⾏います。検出したバグはセキュリティ脅威や脆弱性やリソースリークなどに分類されポイントが割り振られます。イベントに参加してバグを修正すると、ポイントを獲得し⼀定ポイントを獲得すると設定された景品がもらえるという仕組みです。検出可能なプログラミング⾔語は2022年1⽉時点でJavaとPythonの2つです。
AWS BugBust Challengeに参加して思ったことは、プログラミング初⼼者に対してもとっつきやすい仕組みだということです。
検出されたバグに対してより良い修正⽅針や設計⽅針のリンクが提供されるので、その内容を読めば、どのように修正するとバグが解消するのかをピンポイントで学ぶことができます。慣れていないプログラミング⾔語を使ってゼロからコードを書くことはなかなか体⼒が必要です。まずはバグを改修できた、コード読んで動きがわかった、という成功体験を積んでプログラミングが怖くない状態になるにはAWS BugBustはとても良いと考えます。
実際にPythonで実装されたLambdaでExceptionによる実⾏不可エラーが発⽣した際、BugBust Challengeで修正したExceptionハンドリングが役に立ちました。私はPythonを勉強中の⾝でして、慣れているプログラミング⾔語(Swift, Objective-C, Java, JavaScript)よりもバグの特定が苦⼿です。ですが、BugBust Challengeで似たバグを改修した経験によりどのようなコードがExceptionをスローするのかが分かり、修正箇所を特定することにもつながりました。
⼀⽅で、気を付けるべき点もあります。
ピンポイントでコードを直し、エラーがないか⾃動で検証されます。そのため、全コードのUnit Testは⾏われずコードを実⾏した際に動く保証はありません。 例えば、HTTPのみ提供するAPIを利⽤するコードを書いたとします。これは「HTTPSにするべきだ」とバグ検出されます。検出されたバグを修正した場合、HTTPSのURLは提供されていないのでAPIリクエストができない状況になります。
私は513ポイントを獲得しましたので、今回のチャレンジでは全ての景品を獲得することができました。まだ私の⼿元には届いていないので実物をお⾒せすることはできませんが、楽しみに待っています。
綺麗で安全なコードを書くにはまだまだ知らないことがあることに気づいたイベントになりました。本を読むだけでなく、実際に修正して自動で正誤判定をしてもらえるので、間違っていれば別の⽅法を試すことができます。答えは⾃らが導く必要がありますが、トライアンドエラーで知識が⾝についていくようで楽しく参加できました。
2022年も同じようにチャレンジがあるかもしれないので、腕に⾃信のある⽅はポイント報酬をもらいに、そうでない⽅は腕試しや勉強がてら参加してみてはいかがでしょうか。