炉物理の研究 第71号 （2019年2月）

Robutsuri Programming DOJO をやってみて〜 ワークショップ形式セミナーの振り返りと今後の提⾔ 〜巽

雅洋（ＮＥＬ）

1. はじめに第 50 回炉物理夏期セミナーにおいて、メイン企画である Robutsuri ProgrammingDOJO（以下 DOJO）を担当させていただきました。これまでに何度かセミナー講師を務める機会がありましたが、これほどにワクワクすると同時に、困難な道のりだったことはありません。なんとか最後までたどり着くことができたのは、ひとえに企画・運営にご尽⼒いただいた北⼤チーム、準備中から情報共有させていただいた他の講師の⽅々、そして会場で積極的に取り組んでいただいた参加者の皆さんのおかげです。この場を借りて感謝いたします。ありがとうございます。
さて、終わった直後はもう⼆度とやるまいと固く誓ったはずですが、何故かしばらく時間が経つとそんな気持ちも薄れてくるあたり、全く学習していない⾃分に半ばあきれる今⽇この頃です。とはいえ、次世代の⽅々のお楽しみを奪うなどという無粋なこともできません そこで、多少なりとも何らかのお役に⽴てばということで、今回の DOJO における良かった点や悪かった点を振り返りたいと思います。また、少々⼤げさになりますが、今後の夏期セミナーのあり⽅についての提⾔もさせていただければと思います。少々⻑くなりますが、おつきあいいただけると幸いです。

2. 準備から当⽇までの過程
今回の DOJO 企画は、テキストのプロローグにも書いたように、千葉先⽣との雑談がきっかけでした1。これまでのプログラミング⼈⽣(!?)の経験を次世代に継承したいという漠然とした想いを持っていた筆者としては、今回の企画は⾃⼰表現の場を得る格好の機会でもありました。本来、教育という観点では学ぶ者のニーズに合ったカリキュラムを提供することが望ましいわけですが、そんな勝⼿な都合から、受講者のニーズについては敢えてあまり考慮しませんでした2。そして、筆者が持っている知識と経験を可能な限り継承する場を作るというコンセプトから「Robutsuri Programming DOJO」

1

詳しくはテキストをご覧ください･･･とさりげなく(?)宣伝。

2

傍若無⼈と後ろ指を指されても仕⽅がありませんね･･･。

炉物理の研究 第71号 （2019年2月）という名前の企画にしました3。と、たいそうなことを⾔っていますが、実は「最近なんとか DOJO とか良く聞くし、格好良さそうだな･･･」という単にミーハーな理由4で決めたというのはここだけの秘密です。でも、結果的には良いネーミングだったと（⾃分勝⼿に）思っています。
さて、コンセプトが決まってからが⼤変でした。伝えたいことがありすぎたのです。
ただ、伝えるべきテーマは明確でした。具体的には、次の 3 つです5。
オブジェクト指向プログラミング

テスト駆動開発スクリプト⾔語の活⽤

これらのテーマの中から伝承するべきトピックを上げていくと膨⼤な量になってしまいました。どうするか考えあぐねた結果、とりあえず何とかなるか･･･という楽観的な考えのもと、さらに企画を進めてきました。最終的に、プログラミングにおける重要な考え⽅や⼿法を継承する「理論編」と、設計や実装における考え⽅やその過程を継承する「実践編」の２部構成とする計画を⽴てました。特に「実践編」では、その場で設計しながらコードを書いていく「ライブ・コーディング」を実践することを⽬標としました。はっきり⾔って欲張りすぎでした6。
上記のようなコンセプトですから、テキストと「ライブ・コーディング」の準備を⾏う必要がありましたが、これが想定以上に⼿間暇かかりました7。ソースコードやテキストを管理するための Github リポジトリ8を準備し、本格的にコミットし始めたのが学会春の年会が終わった後の 2018 年 3 ⽉下旬。そこから本番までの間、継続的に作業を⾏っていました9。作業量は膨⼤でしたが、最初に書いたように、⾃分のやりたいミッションという側⾯もありましたので、楽しく作業を⾏うことができました10。実践編

3「名前重要」詳しくはテキストを 209 ページ参照（もういいって･･･）

4

Robutsuri を国際的に通じるようにするという野望がある･･･訳ではありません。

5

なぜその３つかは、その理由語り出すと⽌まらないので、気になる⽅は個⼈的に聞いてください。
6

デスマーチが始まった瞬間でした･･･。

7

当たりまえです。やり過ぎですから･･･。

8https://github.com/tatsumi-nel/robutsuri

9

コミットログに現れていない苦悩が多々あった･･･かどうかは想像にお任せします。

10

ある意味、感覚が⿇痺していたのかもしれません･･･。

炉物理の研究 第71号 （2019年2月）で使⽤するプログラムにおいて、当初はライブラリを極⼒使わない⽅針を採っていたのですが、⾞輪の再発明は良くないだろうという理由で途中から変更したり、テスト駆動開発の様⼦をあとからトレース出来るように各設計・実装ステップのスナップショットを⽤意した⽅が良いだろう･･･といった理由で、サンプルコードを準備したり･･･。
これらの準備に時間は必要でしたが、それなりのものが出来たのではないかと感じております11。興味のある⽅は Github のリポジトリの中のソースコードを是⾮ご覧ください。
DOJO での隠れたミッションが「ライブ配信を⾏う」ことでした。これは、原⼦⼒学
会 2018 年春の年会の部会全体会議にて、会場からライブ配信をして欲しいという要望があったことがきっかけでした。ライブ配信については全くの未経験でしたので、まずはやり⽅をネットで検索して調べまくったところ12、OBS Studio という無料ソフトで出来ることが分かりました。また、ライブ配信のための機材には、いろんな観点から個⼈持ちの PC を⽤いることにしました13。また、セミナー会場で⾼速なインターネット接続が使えるかどうか不明でしたので、⼿持ちの WiMAX 2+ モバイルルーターを使⽤することにしました。ここまではすぐに決まったのですが、それから安定したライブ配信を実現するための条件出しの作業が難航しました。PC のスペック14はそれなりに⾼かったのですが、もう少し余裕があれば良かったという印象です。そして何より厳しかったのが回線速度です。ライブ配信時に特に重要な上り(upload)の回線速度は、幸いにも WiMAX2+ではそれなりに速く、なんとか使⽤に耐えることが分かりました。それでもハイビジョン解像度 (1280x720)である程度スムーズな動き (10~15fps 以上)を実現するために、配信設定の最適化には苦労しました15。この時は、「ライブ・コーディングを配信するカッコイイ Youtuber になる！」という野望のみで突き進んでいたと⾔っても過⾔ではありません16。
さて、⼀通りの材料がそろったのですが、いかんせん当⽇にいきなり本番を迎えると、絶対にうまく⾏かないだろうとの妙な⾃信はありました。なんと⾔っても新しい要素が満載です。ですから、できる限りトラブルの芽を摘んでおくため、セミナー本番の２週間ほど前に北⼤チームと予⾏演習を⾏いました（詳しくは千葉先⽣のご報告を参照

11

完全に⾃⼰承認モードに⼊っております。

12

便利な世の中になりましたね･･･ホント。

13

会社のノートパソコンだとセキュリティの縛りがありすぎて実現不可能でした。

14

MacBook Pro 13 インチ Core i7 (2 コア 4 スレッド)

15

Mac で配信をしつつ iPad で視聴チェックする姿はなかなかシュールです。

16

半分は冗談ですが、良い経験でした。

炉物理の研究 第71号 （2019年2月）ください）。この予⾏演習の結果、とてつもなく⼤きなトラブルの芽を発⾒しました。
要するに、圧倒的に時間が⾜りないという現実をたたきつけられたのです。今更気づくなよという気もしますが･･･。結果的に、プログラミングの理論編の説明を⼤幅に削減する必要がありました。また、時間不⾜のため、ライブ・コーディングの要素は極⼒少なくして、あらかじめ設計開発のステップ毎に準備したコード⽤いて、いわゆる「３分間クッキング⽅式」で説明するしかないという結論に⾄りました。これではライブ・コーディングを実践するという野望を達成できないため、断腸の思いでしたが、セミナーを成⽴させるためには背に腹は替えられません。ただ、「３分間クッキング⽅式」ではテンポが速くなりすぎて、参加者の理解が追いつかない可能性もあるので、その点は注意する必要があると感じました17。
当⽇までの準備期間中に、北⼤チームがメーリングリストを⽴ち上げてくれました。各講師から事前に Github リポジトリを案内して参加者に事前に⽬を通してもらったり、筆者からはテキストの正誤表18を送ったりと、⼤変有効に活⽤することができました。ただ、参加者の⽅から投稿を促すだけの余裕が講師側（少なくとも筆者）はなかったので、もう少し場を盛り上げる余⼒があれば良かったのに･･･と今更ながらに思います。
さていよいよ当⽇、セミナー会場に⼊ると、北⼤チームが⼿際よく会場をセッティングしてくれて、当⽅としては⼤変助かりました。幾つか機材のトラブルはありましたが、概ね想定の範囲内。無事に予定通りの構成にて講義を⾏う準備が整いました。
ここまでは⾮常に順調でした。問題はこの次です。そうです。懸案だった WiMAX が絶不調で、回線速度がまったく⾜りません。よりによって⼀番肝⼼な時に働かないのは、まさしくマーフィーの法則です。仕⽅が無いので、ホテルの Wi-Fi を使う作戦に切り替えたのですが、こちらも同様に回線速度が⾜りません。あれやこれやと調整しつつも、あっと⾔う間に DOJO 開始時間が来てしまい、トラブルを完全に解決出来ないまま、⾒切り発⾞となってしまいました。そんな訳で最初のころは Live 配信の調⼦はとても悪かったようです。幸い、時間が経つにつれて回線速度も上がっていき、問題なく配信できるようになりました。お昼過ぎの時間帯の回線速度が特に遅かったことから、ホテル利⽤者が⼀⻫にアクセスしていたのではないか･･･と勘ぐってしまうほどです。また、こちらは速度不⾜との因果関係は未だ不明ですが、Part 1 の動画において、映像と⾳声が途中から⼤きくずれてしまっていました。後で動画をチェックして発覚したのですが、視聴に耐えられないぐらい気持ち悪い状態になっています

17

その危惧は現実のものとなってしまったのですが･･･詳細は後半参照。

18

きちんと校閲が出来ていない状態での脱稿がバレますね･･･。

炉物理の研究 第71号 （2019年2月）

19。動画は記録としても残そうと思っていましたので、これは⾮常に残念でした。

3. 改善すべき点・良かった点
さて、前置きはこれぐらいにして、いよいよ本節では DOJO の成果について検証していきたいと思います。セミナー受講者には、アンケートをお願いしておりました。
良かった点、悪かった点を忌憚なく書いていただきました。ここでは、代表的な意⾒を取り上げ、それぞれについて掘り下げていきたいと思います。

(a) 内容のボリュームについて「DOJO の内容は良かったが、量が膨⼤で駆け⾜気味だった。」「学習内容が多すぎるので、もう少し減らしたほうがよいかもしれない。」「もう少し演習の時間と応答⾏列の基礎（red-black sweep 等）の説明があるとより理解が進んだと思われる」
まったく以てその通りでございます。これについては⼤変申し訳なく思っています。講師としては、あれも伝えたい、これも伝えたい･･･と準備段階でどんどん内容が膨らんでしまいました。当初は加速法として CMFD を実装するという計画もあったのですが、とても正気の沙汰ではないと我に返り、SOR 加速程度にとどめておきましたが、それでも多すぎました。今回の最⼤の反省点が、このボリュームの多さです。また、プログラミング部分にフォーカスしすぎてしまい、炉物理理論の説明が⼿薄になった感もあります。これについては千葉先⽣のテキストで事前に学習してもらう⼿はずになっていましたが、想定に無理があったかもしれません。
本来なら、ボリュームが多い気づいた時点で、もっと内容をそぎ落とすべきだったと思います。この問題に気づいた（気づかざるを得なかった）のがリハーサル時点でした。この段階でテキストが既に完成していたことも要因の⼀つですが、⽣みの親としては⾃分の作品を捨てる勇気が無かったのが⼤きな理由かもしれません。いずれにせよ、⾜し算より引き算が難しいことを改めて痛感した次第です。これは今後の運営のあり⽅にも関連する、⼤きな反省点だと認識しています。

19

技術的には⼀度ダウンロードした後に編集し、再アップロードすれば良いのです

が、流⽯に底までは⼿が回りません･･･。すみません。

炉物理の研究 第71号 （2019年2月）(b) 内容のレベルについて「受講者のレベルによってクラス分けを⾏い、セミナーを変更するとよいのではと感じた。」「演習が少なかったので、予習の課題をもっと増やすか、内容を絞るかしたほうがいいのかもしれません。
」
実はセミナーを設計する上で最も悩んだのは、受講者のプログラミング・スキルの想定でした。そこで出した結論は、Python ⾔語の説明を⼀通りさらっておこう･･･という安直なものでした。これには賛否両論があり、良かったのか悪かったのかは結論が出ていませんが、時間を使ってしまった⼀つの要因であることは間違いありません。とはいえ、Python ⾔語やライブラリの説明が何もなくコーディングの実習に突⼊すると、多くの受講者はついて⾏けなかったかもしれません。そういう意味で、実習の進め⽅やレベル設定にはかなり悩みました。今回はそこまで⼿が回りませんでしたが、コメントにあったように事前学習を⼿厚くしたり、互いに助け合えるように事前にグループに分けるなどの対策が取れれば良かったと思います。これは今後の課題といえます。
(c) コーディングの実践について「DOJO においてグループを作り、演習時間を設けてもらいたい。」「コーディングの実習では課題を提⽰してグループワークで議論を深められると思った」「⾃分でコーディングする時間が無かった。」
当初は参加者の皆さんにもその場でコードを書いてもらう予定だったのですが、内容が膨⼤になりすぎたために、実践に時間を多く避けなかったのは残念でした。本
来、理論からアルゴリズムに落とす設計作業やそれをプログラムに落とし込むコーデ
ィング作業の愉しさや歓びを体感してもらうことを⼀つの⽬標にしていましたが、この点については⼗分に達成することは出来なかったと感じています。内容をもっとそぎ落として実習のために時間を割くべきだったと思います20。

20

セミナー期間を延ばす⽅法もありますが、現実的ではないかもしれません。

炉物理の研究 第71号 （2019年2月）(d) 環境・実施ペースについて「部屋が暗く、⽬が痛くなる」「板書等を混ぜたほうが眠くならない。」「内容が濃くて、⻑時間集中⼒を継続するのが⼤変だった。もう少し休憩を⼩分けにして挟んでも良かったかもしれない。」
セミナー講師としては、いかにして受講者の意識を集中させて、主体的に取り組んでもらうか･･･という点にいつも頭を悩まします。そういった意味では、環境やセミナーのペースもとても重要な要因です。今回、モニターの配置等は良く考えられており、会場設営は適切だったと思います。ただ、プロジェクターの⾒え具合を良くするために、部屋の明かりを若⼲暗めに調整していました。薄暗い部屋で明るいＰＣモニターを凝視して作業をするのですから、⽬に優しいはずはありません。そういった環境⾯も配慮して、もう少しこまめに休憩を取った⽅が良かったかもしれません。これも今後の課題と⾔えそうです。
さて、改善点としてはいろいろありますが、とある参加者の⽅からいただいたコメントが良くまとまっているので、以下にご紹介いたします。
「簡単な内容を徹底的に時間をかけて教えたいのか、最新知⾒の紹介など⾼度な内容を盛り込んだほうがよいのか、主催者側の意向・⽬的を明確化した上で全体的なプログラム構成、時間配分を調整されるとより良いかと思われる。
」

⼀⽅で、良かった点についてもご意⾒をいただきました。以下にその中から幾つかご紹介いたします。
「演習型セミナーは理解度が深まり⾮常に有意義だった。セミナー後に復習が出来る点も⾮常に良い。」「⼀流のプログラマーのノウハウを知る事ができ、とても勉強になった。」「炉物理の理論⾯だけでなく、プログラミングの考え⽅やコードへの実装⽅法まで学べる数少ない機会であり、他にはないメリットのあるセミナーでした。」「炉物理計算に関するプログラミング⽅法を学ぶことができた。設計のプロの⽅にエンジニアリングの考え⽅、改善⽅法を実感することができた。」「DOJO を通して、プログラム製作の考え⽅や注意事項を学ぶことができ、⾮常炉物理の研究 第71号 （2019年2月）に有意義であった。時間の都合はあると思うが、２⽇⽬の最後の演習（反射体厚さのサーチ）は楽しかったので、もう少し演習があると有難い。」「これまで漠然とした理解で使⽤していた解析⼿法やアルゴリズムについて、理論⾯での理解が深まり、個⼈的には⾮常に役に⽴った。また、従来よりもより踏み込んだ⼿法や個⼈的には未知の⼿法についても分かりやすい解説があり、今後のプログラミングに有効に活⽤できると思われる。」
他にも同様のご意⾒をたくさんいただきました。このようなご意⾒をいただけると、講師冥利に尽きます。皆さんのお役に⽴ったのであれば、やらせていただいた甲斐があったというものです。

4. 今後の夏期セミナーへの提⾔
さて、前節ではアンケート結果とともに効果を検証しましたが、本節では講師の⽴場から総括させていただき、今後の夏期セミナーへの提⾔としたいと思います。ポイントは以下の２つです。
講義スタイルと教材



課題と復習

(a) 講義スタイルと教材作成
今回の夏期セミナーでは、初めて⼤々的にワークショップ形式を実践しました。⾮
常に活気があり、教育効果も⾼かったと感じています。特に遠藤先⽣や⻑家先⽣の講義でも使われて好評であった Jupyter Notebook は、とても効果があったと思います。上⼿く活⽤することで、教材として提供することも出来ることでしょう。もちろん、藤井先⽣や多⽥先⽣のパートのようなプレゼンテーション形式での講義も必要かと思いますので、両者を組み合わせた今回のセミナーは良好事例だと⾔えるでしょう。また、教材をテキスト形式で準備し、事前学習のために前もって送付するという⽅法も、まさに理想的なものだったと思います。
⼀⽅で、講師側の視点に⽴てば、準備が⾮常に⼤変だったというのも事実です21。こういった準備を毎回のセミナーで実施していくのは、ある意味で効率が悪いとも感じ

21

他の先⽣⽅はどうか分かりませんが、少なくとも筆者はそう感じました･･･。

炉物理の研究 第71号 （2019年2月）

ます22。もちろん、最新の話題やトピックスを含める必要はあると思いますが、基本的に⽴ち返った講義や、今回のような実習をメニュー化しておくのも⼀案かと思います。丁度、炉物理部会において教科書を作成しようと議論が始まっています。これらの教材を有効活⽤した講義や演習を⾏いつつ、最新のトピックについて最前線で活躍されている研究者や技術者を招いて講義していただくというのが合理的かつ効果的ではないでしょうか。セミナーへの参加者は毎年変わるでしょうから、マンネリ化の懸念はそれほど無いと思います。また、同じ⼈が数年後に再び参加したとしても、⾒える景⾊はその都度で変わるでしょう。さらには講師やＴＡとして戻ってきていただければ、コミュニティにおける良い循環になると思います。夏期セミナーは、炉物理という志を共にする⼈々が⼀堂に会する場として、その存在意義を維持・発展していけば良いと思います。

(b) 課題と復習
貴重な時間を割いてセミナーに参加する訳ですから、参加して良い話が聞けた･･･というだけではもったいない気がします。特に今回のような実習形式であれば、事前に課題を出して、参加前に準備しておいてもらうことが望ましいです。イメージとしては、ＫＵＣＡの院⽣実験における事前レポートのようなものです23。先の内容と関連がありますが、ベースの教材が定まっていれば、このような事前学習をしてきてもらうことも可能になると思います。また、学⽣さんを初めとして、セミナー参加者の意識⾼揚にも役⽴つのではないでしょうか24。
セミナー講師として、あるいは受講者としていつも気になっているのは、⼀回きりの講義ではあまりにももったいない･･･ということです。講義内容をビデオに撮って Youtube にアップロードするなどして、講義内容をアーカイブ化してはどうでしょうか。ビデオの公開はセミナー参加者に先⾏して⾏うことで、差別化することは出来るかと思います。今やスマホでも動画を撮り、さっと SNS にアップロード出来る時代です。少額の投資で価値ある講義アーカイブを作成できるのであれば、やらない⽅がむしろ機会損失といえるのかもしれません。あと数年すれば 5G ネットワーク網が整備され、超⾼速のネットワークがどこでも利⽤可能になります。そうなれば、ライブ

22

各回の夏期セミナーの特徴が少なくなるという側⾯もありますが、23

筆者が学⽣のとき、反射体付き原⼦炉を対象に２群拡散⽅程式を解くような課題があり、ニュートン法を⽤いて数値的に解いたような記憶があります･･･。
24

逆効果になってしまうリスクもありますが･･･!?

炉物理の研究 第71号 （2019年2月）

配信は当たり前になるでしょうし、もしかしたら VR で参加するといったことも当たり前の時代がやってくるかもしれません。将来の夏期セミナーでは、そんな新しい試みにもチャレンジして欲しいと思います。

5. まとめ
今回の夏期セミナーの振り返りを⾏いつつ、将来への提⾔という⼤胆な内容で締めくくりましたが、いかがだったでしょうか？

夏期セミナーに参加した⽅も参加しなかった⽅にも、読み物として楽しんでいただけたのなら嬉しく思います。また、最後の提⾔部分については、あくまで筆者の考えに過ぎませんが、議論のきっかけになれば幸いです。では、またいつの⽇か、DOJO で会いましょう。（えっ!?）以上