プログラマーがH/Wコースに挑戦してみた

 初めまして、中川慎哉と申します。筑波大学情報学群情報科学類の3年生です。私は兵庫県で生まれ育ちました。物心ついた頃からゲームで遊んでいたほどのゲーム好きで、その影響で情報系に興味を持ち、京都府にある舞鶴工業高等専門学校(舞鶴高専)の電気情報工学科に進学しました。しかし高専での講義では物足りず、筑波大学に編入しました。

 私は、プログラミングが好きです。高専ではプログラミング好きが集う部活に入り、部内でチームを組んで「全国高等専門学校プログラミングコンテスト」(高専プロコン)をはじめとするさまざまなコンテストに出場しました。この高専プロコンの競技部門への出場がきっかけで競技プログラミングの存在を知り、2~3年ほど前から「TopCoder」などのプログラミングコンテストに参加するようになりました。

 競技プログラミングとは、与えられた問題を解くためのプログラムをいかに速く正確に書けるかを競うものです。大学に編入してからはTsukuba Programming Circle(TPC)という競技プログラミングのサークルに入り、高専時代よりも競技プログラミングに一層傾倒しています。さらに、アルバイトでAndroidアプリの開発もしています。

 COJTの存在を知ったのは編入後のガイダンスの時でした。プログラミング漬けの高専時代を過ごした私にとって、FPGAのプログラミングを学ぶH/Wコースも、Webアプリやゲームのプログラミングを学ぶS/Wコースも興味をそそる内容でした。しかし、H/Wコースの方がここでしかできない内容だと感じ、H/Wコースを志望しました。FPGAのプログラミングは私が今まで使ってきたC++などの言語とは大きく異なりました。具体的には、C++などはmain関数から順番に処理が実行されますが、FPGAのプログラミング言語であるVerilog HDLでは自分で記述したレジスタやワイヤーが全て同時に動いており、最初から最後まで常に全ての部品の動作を考慮する必要があります。この違いに最初こそ戸惑いましたが、今は何となくつかめてきた気がしています。

 本コラムではCOJTでの開発の様子をお届けします。できるだけ専門的な予備知識がなくても楽しめるように書きたいと考えています。本コラムを通じて、COJTやFPGAについて理解を深めていただけるよう頑張ります。