研究室でもくもく会をした

はじめに

先月の話ですが,大学を卒業する直前に研究室の新入生向けのもくもく会をしました. もくもく会をした理由はいくつかあるのですが,特に (1) 研究室の開発環境に慣れること,(2) 計算機アーキテクチャの楽しさを感じられること,を目的に開催しました.

(1)の理由はもちろん研究室生活において大事なことだからです. もくもく会を通して一日も早く開発環境に慣れてもらえれば,今後,研究に直接関係ない部分で時間を浪費しなくてよくなるでしょう.

ただし慣れるといっても無理にやるのは精神的に負担でしょうから,楽しみながら自然と身につけられるようにしたい. そこで(2)の目的もセットにしてもくもく会の内容を考えたわけです. 研究室に配属された学生はしばしば,講義と研究のレベルの違いにつまづいて凹んでしまいます1. そこでこの会では,講義内容と研究テーマの橋渡しになるような題材を選んでみました. 私が感じた計算機アーキテクチャの面白さ,奥深さを少しでも共有したいと考えていました.

もくもく会の内容

もくもく会の題材にはコンパイラとFPGAを選択しました2. コンパイラはC言語コンパイラの作成を,FPGAはマンデルブロ集合表示器の開発をテーマとしました. どちらも以前,私が取り組んだことがあり,学部生にとって程よい難易度だと感じたことが理由です.

タイムテーブル

  • 13:00-13:10 オープニング
    • もくもく会についての説明とテーマの概説
  • 13:10-13:20 参加者のテーマ選択
    • コンパイラとFPGAのどちらを選択するか決めてもらう
    • 持ち込み企画もOKとしましたが,みなさんがコンパイラかFPGAを選択
  • 13:20-17:00 もくもくタイム
    • 手を動かす時間
    • いつでも質問OK
      • 口頭とSlackの両方で対応
  • 17:00-18:00 成果報告会
    • 数分のスライドで取り組んだ内容について報告
    • 今後,研究室内外で発表があるはずなので,その予行練習がてらやってみました

用意したテーマ

C言語コンパイラ作成コース

『低レイヤを知りたい人のためのCコンパイラ作成入門』を読みながら,C言語コンパイラを開発するコースです. ほとんどの学部生は講義でC言語とコンパイラについて学んでおり,また研究室環境にしっかり触れられる内容であるため,会にぴったりの内容です. 始めは電卓程度の機能しかないプログラムを作るのですが,ページを読み進めるうちにC言語の文法をだんだんとコンパイルできるようになります. この体験は感動ものです. 今回の会は非常に短期間でかつ参加者にとって不慣れな環境なためどこまで進めるか不安でしたが,みなさん中々のスピードで取り組んでくれました3

FPGAで作るマンデルブロ集合表示器コース

Basys3ボードを使ってマンデルブロ集合を表示するための回路を開発するコースです. FPGAマガジン No.15より,『高位合成ツールVivado HLSを使ってC言語でFPGAを開発しよう!』の内容を参考にしました. といっても画像データをモニタに表示する回路は私が開発したので(これも含めたら絶対に時間内に終わらない),テーマ選択者はVivado HLSでひたすら計算結果をバッファに書き込む回路を開発することとしました. C言語で開発できるので取り組みやすそうですし,何よりディジタル回路で画像を描画するのは貴重な体験になるはずです.

やってみて

はじめてもくもく会を開催してみて,計画の杜撰さがいくつか出ました. とりわけて杜撰だったのは,参加者のサポートと難度の設定です.

会を計画した当時(2020年2月末),既にCOVID-19が流行の兆しを見せていたため,3月の予定を取りやめてもくもく会を研究室内でひっそりやろうと考えました. ところが同期は就職のために引っ越していたのと急な計画だったため,会の運営は私だけとなりました. 研究室環境に慣れない参加者は当然,困り事や質問が出てくるわけです. 会を始める前は私も何か取り組もうと考えていましたが,サポートに全力を注ぐこととなりました. 参加者にとって十分なサポートが出来なかったと反省しています.

FPGAのコースはちょっと難易度が高かったです. というのも学部生は講義でそれほどFPGAに触れません. さらにFPGAを使う講義は会の一年前に履修していたので,HDLの文法やVivadoの使い方を忘れていても無理もありません. そこで当初の予定を変更し,前段階としてHDLで論理回路と順序回路を復習し,次にVivado HLSで簡単な電卓を作ることとしました. ですがブロック図の説明やテストベンチの作り方をレクチャーしたり,回路の合成を待っている内に時間切れとなりました. 予定していたものを全く作れなかったというのは,参加者にとってがっかりだったのではないでしょうか.

唯一良かったことは,参加してくれた学生が積極的にもくもくとテーマに挑んでいたことです. コンパイラ班はものの数時間で研究室環境にも慣れ,コンパイラの核となる考え方を実践的に学べたようです. FPGA班は講義でディジタル回路の復習ができ,さらに講義で触れない高位合成にチャレンジできました. 学生にとって一歩進んだ挑戦,成長,学びができたのではと思います. これは非常に小さい一歩かもしれませんが,ここで感じた楽しさや感動が少しでも将来の研究室生活に寄与できたのなら,会の目的は十分に達成できたものと思います.

今後このような会を催すときは,まず仲間を集めようと思います. 人が少ないととにかく忙しいですし,参加者にとってよりよい催しにするには私一人の考えだけでは非力過ぎます. (仲間の大切さを知る会でもありました…)

もくもく会をすることそのものは良いことだと感じたので,この記事を読んで会を開催したり参加しようと思う方が増えたら嬉しいです.

リンク

  1. Rui Ueyama, “低レイヤを知りたい人のためのCコンパイラ作成入門”, https://www.sigbus.info/compilerbook .
  2. 横溝 憲治, “【これからはCでFPGA開発!】もっとも簡単な加算回路からマンデルブロ集合の演算回路まで 高位合成ツールVivado HLSを使ってC言語でFPGAを開発しよう!”, FPGAマガジン, No.15, http://www.kumikomi.net/fpga/contents/0015.php .

注釈


  1. 数年程度の経験ですが,これはどんな研究室でもいるように思います. ↩︎

  2. 本当はもういくつかあったのですが,運営スタッフが私だけだったので,なんとか学生をサポート出来るように二つに絞りました… ↩︎

  3. みんな大体Step4くらいまで行ったような…私としてはみなさん上出来だと思ったのですが,楽しかったのかは怖くて聞けませんでした ↩︎