温泉宿で開発合宿をやってみた

もうすっかり老害と化しつつある今日このごろですが、ふと振り返ると、1997年9月1日に専業プログラマーとして転職してからちょうど連続20年になることに気づきました。
じっさいにはその前も間歇で職業プログラマーをしていました[^1]し、アマチュアプログラマー歴はそれこそ40年近い[^2]わけですが、プロ生活連続20周年とはおめでたい。
ということで、ここはひとつ、最近流行りの開発合宿でお祝いをしてもらおう、そして場所は温泉で、と、ふだんからおつきあいのあるプログラマーのみなさんに声をかけまして決行。結果、楽しく終えることができました。

# 開発合宿のレギュレーション

* 堪能すべきものは堪能すべしということで、1泊ではキツいので、2泊3日とする
* 2日目の17時から1人30分ずつ発表と質疑応答を行い、〆とし、その後は打ち上げとする
* 発表に間に合うように研究資料作成を行う
* 合宿開始前から事前準備をしておくことは自由だが、全部完成させておいて温泉入るだけ、というのは自粛する
* 研究の内容はコンピューターサイエンスに直接関係していればなんでもよい
* 研究環境は各自ですべて用意すべし、ただし電源と館内Wi-Fiはあり、プロジェクターと接続ケーブルはよねざわが用意する
* 発表内容は、SlideShareでの全世界公開を義務付ける

# 開発合宿の場所と準備

## 鳴子温泉旅館すがわら

今回の合宿は、温泉ヲタが言う「西の別府、東の鳴子」[^3]で知られるところの鳴子温泉郷[^4]の中にある、[鳴子温泉旅館すがわら](http://www.ryokan-sugawara.com/)で行いました。
何を隠そう、私も温泉ヲタでございまして、毎年10回以上は鳴子温泉郷に泊まっています。特別にお気に入りなのは東鳴子温泉なのですが、そのお隣の鳴子温泉にもすばらしい名湯がいくつもあり、中でも私が最大級に愛しているのがここすがわらの温泉です。
![鳴子温泉旅館すがわら中浴場＆露天風呂](https://qiita-image-store.s3.amazonaws.com/0/98308/2cd1720e-2a4b-a38c-f87d-59692da283f2.jpeg)
これが旅館すがわらが誇る、いわゆる「すがわらブルー」。保湿成分でもあるメタケイ酸の含有量が多いため、このような水色になります。湯温はおおむね43℃ですが[^5]、はじめは熱いものの、浸かるとなぜか熱さを感じなくなるというこの摩訶不思議。墨をすりおろしたような、ほかにない独特の香りもまたかぐわしい。
また、2つの大浴場（時間で男女が入れ替わる）の他に、4つもの無料貸切風呂があります。誰とも遭遇せずにじっくり湯に浸かることができます。そして今回、これが思わぬ効果をもたらしました（後述）。

## すがわらのお部屋

もちろん、これは純然たる開発合宿でもあるので、そもそも少人数合宿に適している環境でなければなりません。
![鳴子温泉旅館すがわらのお部屋](https://qiita-image-store.s3.amazonaws.com/0/98308/bfa63b3f-8186-910d-d8bc-50b567e71366.jpeg)
その面でも旅館すがわらはすばらしく、1日目の15時から3日目の10時まで、3人用としては広い部屋を激安でお出しいただけました（私たちの場合、なんと1人あたり2泊4ケタ円で済みました：ただし冷房なしのお部屋ですが、気温が涼しく何ら問題ありませんでした）。素泊まりですが、宿内には定価販売のドリンク自販機もあり、また宿正面の川をわたればセブン-イレブンがありまして、飲食には事欠きません。そしてもちろん、Wi-Fiも飛んでいます[^6]。

## 持ち込んだもの

準備としては、各人の開発機器以外では、ただ2つ、電源タップとプロジェクターを持ち込んだのみです。
しかしプロジェクターについては、予算をケチってしまい、ハンディーポータブルな品ではなく巨大なブツを購入してしまったため、東京から担いでいく＆持ち帰るのは大変でした。明るく解像度も高かったのはプラス面でしたが、やはり高くてもコンパクトなものを選ぶべきだと反省しました。
また、プロジェクターを適切な高さに設置することに苦労し、結局、たまたま部屋にあった大きなタオル干しの上に、アクロバティックに置くことになりました。このあたりは、この種の設備が整ったホテルなどとは異なります。
![sugawara3.jpg](https://qiita-image-store.s3.amazonaws.com/0/98308/39b2cbde-5ae6-4623-92d1-c69c09d38525.jpeg)

# 研究成果の発表

開発は1日目の15時から開始し、2日目の17時まで、途中の入浴・睡眠・買い出し・2日目の昼食（川向かいの[みさをの店](https://tabelog.com/miyagi/A0403/A040301/4013234/)で[ラーメンを食べました](https://www.instagram.com/p/BYhepKRhWya/)）、これら以外は開発に集中しました（1日目の夜は開発しながらごく軽く呑みつつ、にはなりました(^^ゞ）。
その結果は、発表順に、以下のスライドのとおりです。

## ssmylhさん：Rustを勉強してみた！

[![Rustを勉強してみた！](https://image.slidesharecdn.com/rust-170904042139/95/slide-1-1024.jpg)](https://www.slideshare.net/ssmylh/rust-79401604)
[→ソースコード](https://github.com/ssmylh/try_rust)

ssmylhさんは私の前々々職での同僚だった方で、C++erからPHPerへと退化の一途をたどっていた私を関数型プログラミングという~~悪の~~まっとうな道に~~引きずり込んで~~導いてくださった恩人です。
今回は[Rust](https://www.rust-lang.org/ja-JP/)のさわりについて、実際に環境をつくって初コード書きをして、その感想をわかりやすく説明してくれました。
質疑応答では「マルチスレッド下では所有権はどうなるの？」という疑問が出され、かえりの新幹線の車中では（呑みながら）その話題で盛り上がりました。

## よねざわいずみ：超初心者がローマ数字をいろいろパースしてみる

[![超初心者がローマ数字をいろいろパースしてみる](https://image.slidesharecdn.com/procon20-yonezawaizumi-20170902-170902054500/95/slide-1-1024.jpg)](https://www.slideshare.net/ssuser5d80d4/ss-79366806)
[→ソースコード](https://github.com/yonezawaizumi/procon20)

私のしょうむない発表。最後のページにあるとおり、事前に深く考えずにテーマに選んでしまい、文法がほぼ正規表現だと直前に気づき、しかし他のテーマも思いつかなかったために強引に押し切ったものです。
内容があまりに易しすぎるため、質疑応答では「なんでこれをテーマに選んだの？」くらいしか出てきませんでした(^^ゞ。ちなみに、その理由はもはや私自身も覚えていません！(；・∀・)

## 池田百合子さん：LEDマトリックスで光るわぷー(WordPressで指定編その1)

[![LEDマトリックスで光るわぷー(WordPressで指定編その1)](https://image.slidesharecdn.com/led-matrix-20170902-170902235023/95/slide-1-1024.jpg)](https://www.slideshare.net/lilyfan/led-matrix-20170902)
[→ソースコード](https://github.com/lilyfanjp/wapuu-led)

日本の[WordPress](https://ja.wordpress.org/)業界で知らない人は誰もいない、泣く子も黙る[Ktai Style](https://ja.wordpress.org/plugins/ktai-style/)をはじめとする各種プラグインの作者さん。[京都の謎の呑み会](http://kweeya.jp/)をはじめとして、ずいぶん長くおつきあいさせてもらってます。前職でWPプラグインを書かなければならなくなった際にも、ソースコードをずいぶん参照させてもらいました。
今回のテーマは最近いつも彼女が持ち歩いているところのLEDパネルネタ。[Raspberry Pi](https://www.raspberrypi.org/)でパネルを制御するという目的のため、その他のチップの情報、工作のコツ、そしてもちろん制御するためのソフトウェアーの話まで、幅広い話に感心しきりでした。質疑応答では、「部分スクロールはどうすればできそうか」などの突っ込んだ話も出ました。

# 温泉開発合宿の感想

## 温泉宿での開発はめちゃくちゃはかどる

温泉宿での開発はとてもはかどります。なぜなら、**考えに行きづまった際に「湯船に直行」というシンキングタイムが得られる**からです。じっさい、「湯船で思いついた」というケースが、今回多々ありました。
鳴子温泉郷の熱さのお湯（いくつかの例外はありますが）では、人間は決して**リラックスしません**。実はここが肝心なところで、むしろ思考に行きづまっている状態において温熱効果を得、水圧を全身で感じ、また温泉の芳香をかぐことで、リラックスしないままに感覚を切り換えることができるのではないでしょうか。
通常の湯治は、このような形で交感神経を高めた後、湯から出て布団でだらだらすることで一気に副交感神経を高め、開放感を得ます。しかし開発合宿においては、「期限までに仕上げる」という短いリミットに向けて、温泉の中で得られた気づき、また得られなかったとしても気分転換ができ、その後ただちに開発を再開、という流れが得られたのです。
また、貸切風呂では湯船で1人きりになることができ、参加者と一瞬だけ離れられる場としても有効に機能した、と言えましょう。

## スケジューリングの訓練になる

現実問題として、まる1日という短時間で設計から開発までをこなすような実務は、意外にないものです。その中で自己を律しつつ予定を組んで成果を出していくことは、「明日発表し合わなければならない」という前提があってこそ、また発表し合う作業者が近くにいてこそ、集中して取り組めるものだ、という気づきがありました。

## 成果物の共有はたのしい

自由演目だったから、なのですが、じぶんが直接触れていない・関心が強いわけではないジャンルの知見に触れられるたのしさには、計り知れないものがありました。
通常の発表会では、聞きたい・知りたい演目を能動的に選んで参加するか、業務上の任務で聴取するか、という形になるでしょう。
しかしこういう形で、そのどちらでもない、知的なネタを吸収できた。これは今後のプログラマー人生にもおそらく役立つはずです。

## 脳を使いぬいた後の焼肉はおいしい

鳴子温泉郷には食の聖地があります。地元のみなさんや温泉ヲタが集う、[東鳴子温泉焼肉八兆](https://www.instagram.com/explore/tags/%E7%84%BC%E8%82%89%E5%85%AB%E5%85%86/)です。
![熊肉、並カルビ、塩ホルモン、ホヤ焼](https://qiita-image-store.s3.amazonaws.com/0/98308/a0baa5ff-8a3f-0641-198f-b20cd4c987db.jpeg)
（順に、熊肉、並カルビ、塩ホルモン、ホヤ焼）
ふつうの肉もお値段に比してかなりおいしい（価格とのバランスから、仙台牛は使わずに勝負）んですが、海鮮や謎の肉（笑）の数々にも舌鼓が打てます。今回は季節外でしたが、冬場のもつ鍋も絶品ですよ！
そしてカウンターのお客さんには鳴子温泉郷のことならなんでもご存知のマスターが気さくに話しかけ、見知らぬ温泉ヲタどうしでもすぐ仲よくなれるよい雰囲気。生ビールやチャミスルもすすみまくります。
実は今回、ここで打ち上げをすることがまずまっ先にあり、二日酔いだなんだというリスクを考慮してこその2泊3日だったんですが（笑）、結果として開発の集中度が上がるタイムテーブルにできたようにも思います。

# 開発合宿は温泉で！ 求む宿の開拓！！

この記事、単に鳴子温泉郷を宣伝しているわけではありません。
正直、よいお湯の温泉にWi-Fiが飛んでいさえすれば、どこでも、今回私たちが得られたメリットは享受できるはずですよね。
この記事を読まれたみなさんにおかれましては、ぜひ、開発合宿に適した温泉宿を、全国各地で開拓し、ご共有をお願いいたします。世のたくさんのプログラマーがより幸せになれること、必至です！

# 脚注

[^1]: 1997年8月までは、学習塾を共同経営するかたわら、家庭教師をしたり、芸能ライターをしたり、Webサイト制作をしたり、アルバイトとしてC++でWindowsやClassic Macのプログラムを書いたり、としていました。さらにその前には2年ほど、専業プログラマー時代もあります。なお、[ウィキペディアに出ている「地下アイドル」](https://ja.wikipedia.org/wiki/%E7%B1%B3%E6%B2%A2%E6%B3%89%E7%BE%8E)は、今世紀になってからの職業プログラマーの片手間でやっていたものです(^^ゞ。
[^2]: 初プログラミングは1978年、クラスメイト所有の[TK-80BS](https://ja.wikipedia.org/wiki/TK-80#.CE.BCCOM_Basic_Station_TK-80BS.E3.81.A8COMPO_BS.2F80)をBASICで動かしたときです。
[^3]: より一般的には「西の別府、東の草津」と言われることもあります。が、草津温泉がどこもほぼ同じ泉質（酸性硫黄泉）であるのに対し、別府温泉や鳴子温泉郷は、実に多様な泉質を誇っています。とりわけ鳴子温泉郷は、隣同士で源泉がまったく異なることはごくふつうです（鳴子温泉の滝の湯とゆさや旅館は隣り合っていますが、前者は酸性、後者はアルカリ性です）。気軽に泉質ショッピングできる温泉天国、それが鳴子です。
[^4]: 鳴子温泉、東鳴子温泉、川渡温泉、中山平温泉、鬼首温泉の5温泉地の総称です（ただしこれも現代における分類であり、温泉神社の所在で考えると、さらに細分化して考えることもできます）。鬼首以外の4温泉地には、JR陸羽東線で、すなわち東北新幹線から1度の乗り換えで気軽にアクセスできるのも魅力です。
[^5]: すがわらの源泉温度は98℃です。これをシャワー用白湯との熱交換で冷まし、少量を掛け流すことでこの湯温に設定されています。こういう設定を決め、メンテナンスするのが、温泉における湯守（ゆもり）さんの役割です。
[^6]: ただ、これがみごとに、夜は重く、それ以外は軽くなりました。他の宿泊者の方が動画でもご覧だったのでしょう（笑）。