TOPSIC SQL CONTEST(TSC)とは、SQLスキルを競うオンラインコンテストサイトになります。2022年6月にサイトをオープンし、おおよそ2ヶ月に1回のペースで開催を続けており、2024年4月時点で全12回のコンテストを開催しております。また、会員申込数は現在2,000名を突破し、多くの人に楽しんでもらえるコンテストサイトに成長しつつあります。
今回は、そんなSQLコンテストに参加し、毎回高得点を叩き出しているhirakuさんこと米村 啓さんにインタビューしてみました。
hirakuさんのX(旧Twitter)アカウント: https://twitter.com/__hiraku__
hiraku さんのご経歴は?
(記者) 現在までのご経歴を教えてください。
(hiraku) 最初に新卒で入社したのはエンジニアリングとは無関係な金融系でした。配属部署では大量のデータを集計するような作業があり、EXCEL VBAやAccessのクエリをよく使っていました。
その後も何社か事業会社を渡り歩いてきましたが、その頃はエンジニア職としては働いていませんでした。ただ、どこの会社でもクエリを使ったデータ管理などの業務が必要だったため、その中でSQLも使えるようになりました。
(記者) エンジニアとして働き始めたのは?
(hiraku) ここ数年でソフトウェアエンジニアとして働き始め、バックエンドの開発に携わるようになりました。現在、フルカイテン株式会社でデータエンジニアとして、データのETL(Extract / Transform / Load)の部分を構築する作業をしています。実際に生のSQLを書いて、データパイプラインを構築したりするので、仕事で毎日SQLを書いています。
(記者) 実際に業務ではどのようなクエリを書いたりしますか?
(hiraku) お客様からいただいた様々なレイアウトのデータ(売上や在庫、店舗マスタなど)を自社システムに取り込めるフォーマットに整えています。例えば、売上データであれば赤伝票や訂正伝票など、ある程度パターン化されているものを自社システムのDB定義に合わせて、変換したり集約したりするようなクエリを日々書いています。
TSC(TOPSIC SQL CONTEST)を知ったきっかけは?
(hiraku) 確かX(旧: Twitter)だったと思います。当時、SQLのコンテストというものは他に無かったので。もともとAtCoderなどのコンテストに参加すること自体が好きなので、他のコンテストもないか探していた際に見つけて参加しました。
コンテストの戦績や対策は?
(記者) 現在、第11回まで開催していますが、全ての回にご参加いただいていますね。
(hiraku) 多分、初回から無欠席だと思います(笑)。はじめのころは問題形式などに慣れておらず、全然駄目でした。問題文の仕様通りに書く必要があるというところ、例えば列名の指定などの細かい部分に注意できていなかったため、手間取ってしまったのを覚えています。
あとは日常的に使用するのはSELECT文が多いので、DELETE文やINSERT文が出題された際に時間を取られてしまったりもしました。
また、普段使用しているのがMySQLやPostgresなどだったので、SQLite独自の仕様で嵌ったりもしました。SQLの構文自体はそこまで違いませんが、データ型の扱いに差異があったりして苦戦しました。
(記者) 回を重ねるごとにめきめき順位を上げ、第10回では優勝を果たし、常に上位にランクインしていますね。何か対策や練習などはしましたか?
(hiraku) 3~4回ほど参加するとコンテストの特色がわかってきて、結構業務よりの内容が多いと感じました。よくある昨年対比のデータ集計など、SQLだけだとちょっと集計が難しく思われがちな内容に対して、ウィンドウ関数を利用して解決するなどの問題も出てくるだろうと思い、そういった「あるあるなケース」を最初に押さえておくようにしました。
SQL自体はそこまでバリエーションが豊富なものではないので、そういった部分を押さえておけば、あとは問題を細かい課題に分割し、組み立てていくことで素早く解くことができるかと思います。
なので、実はかなり対策しています。やるからには勝とうと思いまして。
(記者) 他に参加時に気を付けていることなどはありますか?
(hiraku) 家族と暮らしているため、家族が活動していない時間を選んでいます。参加の10~20分前には過去問を見たり、自分の提出履歴を見直したりして、手が動くようにウォーミングアップしてから参加しています。
印象に残っている回などはありますか?
(hiraku) 制限時間の終了1分前に最終問題の4問目を正解した回で、凄く興奮したのを覚えています。逆に失敗したなと思うのは、問題文を誤読してしまったときですね。抽出条件などを誤読してしまい、サンプルは一致しているのに正解できないといったことがありました。今でも割と誤読して、一発で正解できなかったりしますが(笑)。
他のコンテストと比較したSQLコンテストの印象は?
(hiraku) 自分の周りでは「SQLが好き」という人には出会ったことが無く、他のプログラミング言語と比べて自由度が低いSQLはあまり人気がないのかなと思っています。そんな中で、興味を持った人たち同士が技術を競うSQLのコンテストというものがあるのは嬉しいと感じています。僕はSQLが結構好きで、どんなふうにクエリを組もうか考えるのも楽しいと感じているので、皆にもその楽しさを分かってもらいたいなと思います。
SQLコンテストは学習に役立つか?
(hiraku) いろんなことに役立つと思います。こういった形でSQLの実行環境付きで問題を提供してくれる、正誤を自動で判定してくれるということ自体が、娯楽としても楽しいし、勉強の場としても貴重だなと思っています。世の中のSQLの教材だと極端に簡単だったり、難しかったりしますが、コンテストの問題(特に3問目くらい)は、普段必要になる状況はあるけど、SQLが苦手な人にとってはぱっと書くには少し難しくて時間がかかるといった難易度であり、SQLの勉強としてもコンテストとしても貴重な場だと思います。
今後のコンテストに向けて
(hiraku) 一桁順位になる前は、前回より上の順位を取れて嬉しいと感じていましたが、上の方の順位、それこそ解答時間が数分差で3位になるようなことが続くと「1位はまたあの人か!」みたいな感じになってしまうこともあります。いつも1~2位を取っている人たちにコンスタントに勝てるようになりたいので、毎回、挑戦者の気持ちでいます!
コンテスト参加者に向けて
(hiraku) 問題を解くのが面白い、コンテストに勝ちたい、人それぞれ楽しみ方はあると思いますが、SQLの楽しさを知ってもらって、皆でわいわいできればよいなと思います。
※本文中では敬称を省略させて頂きました。
最後に
お忙しい中、インタビューに応じてくださったhiraku様、誠にありがとうございました。今回、SQLコンテスト参加者への初めてのインタビューということで、大変貴重なご意見をいただくことができました。TOPSIC SQL CONTESTは定期開催を予定しておりますので、ちょっとコンテストに興味が出てきたな、一緒にコンテストを盛り上げたいなと思っていただけた方は、ぜひチャレンジしてみてください。ご参加をお待ちしております!
- カテゴリ: