builderscon 2019参加メモ

##1. はじめに
[builderscon](https://builderscon.io/)は

> buildersconは「知らなかった、を聞く」をテーマとした技術を愛する全てのギーク達のお祭りです。buildersconではトークに関して技術的な制約はありません、特定のプログラミング言語や技術スタックによるくくりも設けません。

というテック系カンファレンスです。今年で4回目の開催となる[buildescon 2019](https://builderscon.io/tokyo/2019)は北千住の[東京電機大学](https://www.dendai.ac.jp/)で8/29(前夜祭)～8/31の3日間開催され、筆者は30日、31日に初めて参加しました。


##2. 参加の動機
buildersconは以前「[ハードウェアをE2Eテストできないなんて誰が言った？ - IoTのテストを自動化するメソッド](https://builderscon.io/tokyo/2018/session/58b03ed2-91a5-4f94-84fd-363e799efa38)」というのを見つけて面白そうだったのと、ふだん参加するのはテストやソフトウェア品質保証関係が多いのでもうちょっとスコープを広げてヒントを拾えたらいいなということで。なのでbuildersconのテーマ"Discover Something New"はとっても刺さりました。


##3. 8/30(金)
前日に発表されていた天気予報が外れてまさかの大雨。駅から徒歩1分で会場という立地のありがたみを感じました。

### 11:10 - [対戦ゲームに学ぶ、フレームワークの設計技法とAIのアルゴリズム入門](https://builderscon.io/builderscon/tokyo/2019/session/1f34d023-591e-4674-98eb-b2201c8a28be) - [qsona](https://twitter.com/qsona)さん

#### 発表資料
- [対戦ゲームに学ぶ、フレームワークの設計技法とAIのアルゴリズム入門 #builderscon tokyo 2019](https://note.mu/qsona/n/n137733801fd0)

#### メモ
- 対戦ゲームのモデリング
  - ゲームのルールの定式化
  - ゲームの分類
  - ゲームの状態遷移(ゲーム木、ツリー構造で表現)
- 面白いゲームとは
  - ルールがシンプル
  - 深みがある
  - 緊張感が持続する(適度に逆転が起こりやすい)
- 良いフレームワーク
  - スコープが適切、対象の構造を適切に捉えていて頑健性がある、他の技術と良いつながりがある
  - ここでもモデリングの良さの話

#### 感想など
- 冒頭からモデリングの話が出てきてテスト開発と一緒だなあと思いました。
  - というかテスト開発のプロセスは設計のプロセスを参考にしているので似るのは当たり前なのですが[^1]。
- 課題設定、モデリング、定式化、アルゴリズムとその適用事例の紹介、フレームワークのトレードオフ(Simple vs Easy)の話という流れで分かりやすかったです。
- JaSST'18Tokyoの「[「三銃士モデルではじめる、テスト分析ワークショップ」～ ひよっこテスト戦士たちよ、「サンジュウシ」を率いてテスト設計を攻略せよ ～](http://www.jasst.jp/symposium/jasst18tokyo/details.html#D5)」で面白いゲームはプレーヤーを適度に翻弄して飽きさせないといった話があったのを思い出しました。
- 面白さをゲーム木でモデリングできるかもと言う話があり、面白さという主観的なパラメータを定量的に扱えるかもしれないと期待感を持ちました。
  - ゲーム進行の単調さを定量化し所定のターン数を超えて単調さが続いていたらゲームの設計を見直すとか。


### 12:20 - ランチ
[アカツキ](https://aktsk.jp/)さん提供のお弁当をいただきました。どうもありがとうございます。おいしかったです！
![IMG_9871_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221758/470e9dbf-a8a9-fbd0-feb0-f81c2b04b543.jpeg)


### 13:20 - [Mathematica崇めよBlank讃えよObject ~Free Wolfram Engineに向けて](https://builderscon.io/builderscon/tokyo/2019/session/4e3767c4-510a-4f5b-9db4-bd511723cd4a) - [kozukorio](https://twitter.com/kozukorio)さん

#### 発表資料
- TBD

#### メモ
- Mathematicaで数学の証明を解いていってオブジェクト指向のコアとして最後に残るものの話。難しい…


### 13:50 - [形式手法を使って、発見しにくいバグを一網打尽にしよう](https://builderscon.io/builderscon/tokyo/2019/session/e14fce7f-7ccc-42e5-b240-062e8719fa83) - [hoddy](https://twitter.com/hoddy3190)さん

#### 発表資料
- [形式手法を使って、 発見しにくいバグを一網打尽にしよう](https://speakerdeck.com/hoddy3190/xing-shi-shou-fa-woshi-tute-fa-jian-sinikuibaguwo-wang-da-jin-nisiyou)
- [「形式手法を使って、 発見しにくいバグを一網打尽にしよう」の反響](https://togetter.com/li/1397200)

#### メモ
- 形式手法、名前は聞くけどとっつきにくくてわかっていないので話を聞いてみたいと思いました。
- 形式手法をやってわかったこと
  - 自然言語で書かれている仕様にはバグはほとんどなく書かれていない仕様にバグが集中。
  - 結果を見て気づくよりも形式仕様記述をしている最中に不具合に気づくことが多い(これも形式手法の効果)。
  - 大きなプログラムのモデリングは難しい、プログラムの表現の幅とモデリング言語の幅が違うため。静的解析ツールとして使うならメリットありそう。


### 14:30 - [非同期処理の歴史から見たコンピューティングの進化](https://builderscon.io/builderscon/tokyo/2019/session/3d7bd502-eae8-471b-bcbb-9e647bd4cc5b) - richard-imaokaさん

#### 発表資料
- [非同期処理の歴史から見たコンピューティングの進化](https://speakerdeck.com/richardimaokajp/fei-tong-qi-chu-li-falseli-shi-karajian-takonpiyuteingufalsejin-hua)

#### メモ
- 非同期処理はダンプファイルを見ても追えないことがあってつらたんなので話を聞いてみたいと思いました。
  - QAタイムでデバッグの工夫の質問がありprintfなりログなりを仕込んで追えるようにしているとのことでした。特効薬はないよね…
- コンピュータの進化やコンピュータを取り巻く状況の歴史をおさらいし、非同期処理を上手に扱う工夫がどのように変化してきたかを時系列で紹介されていてわかりやすかったです。
- 資料の構成もプレゼンもめちゃうまくて勉強になりました。


### 15:40 - [ソースコードを堪能せよ](https://builderscon.io/builderscon/tokyo/2019/session/ac6a98ab-f6ad-497d-9a31-46c500de5314) - [tenntenn](https://twitter.com/tenntenn)さん

#### 発表資料
- [ソースコードを堪能せよ](https://docs.google.com/presentation/d/142DMszQvaKEfyIL6JmI_lsvVbbqJNOlfp6qSU8bgMAU/edit#slide=id.p)

#### メモ
- Go言語は静的解析のパッケージが用意されててすごいなと。
- CやC++の静的解析ツールも中はこんな感じなのかなあと想像しました。


### 16:50 - [ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ](https://builderscon.io/builderscon/tokyo/2019/session/76c53068-ff1e-4855-94bd-467c44d5e11c) - [a_suenami](https://twitter.com/a_suenami)さん

#### 発表資料
- [ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ](https://speakerdeck.com/a_suenami/hisinesufalsegou-zao-woxi-uakitekutiyatoyusatofalsejie-dian-woxi-uakitekutiya-number-builderscon)
- [Builderscon Tokyo 2019 で「ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ」というタイトルで登壇してきました](http://a-suenami.hatenablog.com/entry/2019/09/01/191139)

#### メモ
- PC(Windows/Mac)のアプリだけどユーザ登録はウェブで行うようなソフトウェアをふだん触っているので聞いてみたいと思いました。
- SoRとSoEの違いは要求元の違い
  - E-コマースではお客さんやお店のスタッフが触る部分はUXが大事だし、お店の経営者(事業者)にとっては顧客の情報や取引の記録が大事だしその記録を使って何かできることも大事
  - いいねボタンのカウントは厳密なリアルタイム性は求められないので非同期であとからサーバに通知すれば耐障害性が上がるけど、一方で決済処理で非同期処理はありえない。

#### 感想など
- 「第一部：モデルとは何か」の章はすごく参考になりました。テストはモデリングが大事という話はテスト屋さんはよく知っていると思うのですが地図はその目的や用途に応じて残す・捨てるをしたものというたとえは分かりやすかったです。テストでいえば、テストで確認したいこと(＝テストの目的)によってモデルはいろいろということです。
- 要求元の違いはテストに応用できると思いました。要求元が大事にしたいことであるとか、内部処理はともかく最終的なつじつまが合っていればよい部分と、ユーザには見えなくても内部処理やデータが大事な部分とでテストの広さ、深さ、テストの仕方、実施タイミングは変わってきますね。
- プレゼンで紹介されていた[エリック・エヴァンスのドメイン駆動設計](https://www.shoeisha.co.jp/book/detail/9784798121963)、モデルやモデリング、コンテキストといった単語を使うのにこの本を読んでいないのはあまりにもモグリな気がしたので帰りがけに秋葉原の有隣堂で購入しました。


### 18:30 - [懇親会](https://builderscon.io/builderscon/tokyo/2019/session/9ca069e7-960e-11e9-a530-42010af01081)

#### メモ
- 豪華！！！
- おいしい！！！


##4. 8/31(土)

### 10:30 - [レガシーサーバーを現代の技術で再構築する](https://builderscon.io/builderscon/tokyo/2019/session/6509eeb6-356b-4f77-b709-823f138da640) - [fujiwara](https://twitter.com/fujiwara)さん

#### 発表資料
- [レガシーサーバーを現代の技術で再構築する/builderscon2019](https://speakerdeck.com/fujiwara3/builderscon2019)

#### メモ
- 今時の開発支援サーバってどんな感じなんだろうと思って聞きました。
- クラウドはNASのようにネットワークにストレージが置いてあるものと漠然と思っていたのですがリポジトリで管理されたものということが分かりました。
  - htpasswdをviでファイルを直接書き換えるのは今時はナシで、リポジトリで履歴を管理するのが現代のやり方。
  - マネージドなファイルシステムでスナップショットを取っていつでも復旧できるようにとか、障害に備える技術が整っていてそれを取り入れるのが今時なのだなと。


### 11:30 - [自動作曲入門](https://builderscon.io/builderscon/tokyo/2019/session/c8d3e461-1ab9-4b6e-b1c7-00a3ebfa47e7) - [aereal](https://twitter.com/aereal)さん

#### 発表資料
- [自動作曲入門 / introduction to programatic music composition](https://speakerdeck.com/aereal/introduction-to-programatic-music-composition)

#### メモ
- 音楽の構造やルールは配列や集合で表すことができてプログラムで生成できるものということが分かって楽しかったです。


### 12:00 - ランチ・見本市
昨日に続き[アカツキ](https://aktsk.jp/)さん提供のお弁当をいただきました。どうもありがとうございます。おいしかったです！
![IMG_9880_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221758/de8cd431-8d2c-8961-25d5-2bc548088fea.jpeg)

見本市では「[Mathematica崇めよBlank讃えよObject ~Free Wolfram Engineに向けて](https://builderscon.io/builderscon/tokyo/2019/session/4e3767c4-510a-4f5b-9db4-bd511723cd4a)」を発表されていた[kozukorio](https://twitter.com/kozukorio)さんの展示「RaspberryPiとATtiny85によるI2Cクラスタ」を拝見し複数のマイコンと通信するのにUARTではなく[I2C](https://ja.wikipedia.org/wiki/I2C)を使っていることを伺いました。I2Cといえばすでにフィリップスの特許が切れてロイヤリティフリーで使えるし、バスも電源/GND/クロック/データの4本だし、スレーブ側のマイコンのIDを各々違う値にすることで一つのバスに複数のマイコンをぶら下げられて合理的です。マイコンに搭載されているI2Cはマスターで使ったことはあるもののスレーブでは使ったことがなかったので目からうろこでした。


### 13:00 - [形式手法による分散システムの検証](https://builderscon.io/builderscon/tokyo/2019/session/fa356ee3-6be9-4850-ac9e-037bd34aabaa) - [y_taka_23](https://twitter.com/y_taka_23)さん

#### 発表資料
- [形式手法による分散システムの検証 #builderscon / builderscon tokyo 2019](https://speakerdeck.com/ytaka23/builderscon-tokyo-2019)

#### メモ
- 昨日に続き形式手法のセッションに来ました。
- 整合性を保つ作戦→[TCCパターン](https://www.google.co.jp/search?hl=ja&as_q=TCCパターン)
- ツール→[TLA+](https://www.google.co.jp/search?hl=ja&as_q=TLA%2B)、[PlusCal](https://www.google.co.jp/search?hl=ja&as_q=PlusCal)
- 分散システムで重要なのは故障時の挙動、TLA+で全検索
- [ビザンチン問題](https://www.google.co.jp/search?hl=ja&as_q=ビザンチン問題)といった今まで知らなかった話も聞けて良かったです。


### 14:10 - [20年後のソフトウェアテストの話をしよう](https://builderscon.io/builderscon/tokyo/2019/session/783619e0-4c45-45cb-b29a-fbff39077f43) - [yumu19](https://twitter.com/yumu19)さん

#### 発表資料
- [20年後のソフトウェアテストの話をしよう / Software Testing for 20 years later](https://speakerdeck.com/yumu19/software-testing-for-20-years-later)
- [「20年後のソフトウェアテストの話をしよう」ツイートまとめ #builderscon](https://togetter.com/li/1397692)
- [builderscon tokyo 2019で「20年後のソフトウェアテストの話をしよう」を発表しました #builderscon](http://yumulog.hatenablog.com/entry/2019/08/31/235727)

#### メモ
- Part1：20年前のテクノロジー→現代のテクノロジー→20年～30年前に予想されていた未来(=現代)の振り返り→ユビキタスコンピューティング、[コンテキストアウェア](https://www.google.co.jp/search?hl=ja&as_q=コンテキストアウェア)→20年後の想像
- part2：最近のテストのトピックス→仮想環境を活用するテストの振り返り
- part3：現在進行中の仮想環境を使ったテスト環境の提案([BluMoon](https://www.google.co.jp/search?hl=ja&as_q=BluMoon+NICT)、[AOBAKO](https://www.google.co.jp/search?hl=ja&as_q=AOBAKO+NICT))
- 仮想環境でのテストが進化しても実機でのテストはなくならない

#### 感想など
- 講演で紹介されていた「[ハードウェアをE2Eテストできないなんて誰が言った？ - IoTのテストを自動化するメソッド](https://builderscon.io/tokyo/2018/session/58b03ed2-91a5-4f94-84fd-363e799efa38)」はRaspberry Pi、Arduino、Jenkinsで構成されているのだけど、ここ10数年でArduinoやRaspberry Piの登場、3D CADや3Dプリンタの普及、Jenkinsのような自動化ツールなどが手に入るようになりテストの治具を作る敷居が下がったように思いました。
  - 「[スマホ操作ロボットを作ったのでパズドラさせてみた](https://www.shumi-tech.online/entry/2019/07/02/%E3%82%B9%E3%83%9E%E3%83%9B%E6%93%8D%E4%BD%9C%E3%83%AD%E3%83%9C%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%A7%E3%83%91%E3%82%BA%E3%83%89%E3%83%A9%E3%81%95%E3%81%9B%E3%81%A6)」はテストの治具ではないもののRaspberry Piを使ってUSBカメラでスマホの画面を撮影して画像処理を行いながら画面をタップしたりスライドしたりするのは、講演で紹介されていた[Quality Commander](https://www.jnovel.co.jp/service/qc/)と似ています。
- 直近1年の動向としてはAIプロセッサを積んだローコストなボードの登場かなあ。
  - [M5StickV](https://www.google.co.jp/search?hl=ja&as_q=M5StickV)、[SiPEED MAix](https://www.google.co.jp/search?hl=ja&as_q=SiPEED+MAix)、[Jetson Nano](https://www.google.co.jp/search?hl=ja&as_q=jetson+nano)
  - テストにAIを取り入れる敷居が下がる予感
- 仮想環境を使った開発、チェック、デバッグが充実すると実機を使うテストは実機でないとできないことにシフトするのかなと思いました。
- コンテキストアウェアという用語は初めて聞いたのですが、5G+IoT、センサデバイスがそのインフラになるのかなと思いました。
- 5Gつながりでいうと、その次の6Gが登場するであろう10年後でさえもなかなか想像するのが難しいのですが
  - 省資源でリサイクルしやすいハードウェアや、無駄に電力を食わない省電力性がソフトウェアも求められたり?
  - 利便性とデータの保護、プライバシーの保護を今よりもうまく両立されることが求められたり?


### 15:20 - [アプリの国際化の舞台裏](https://builderscon.io/builderscon/tokyo/2019/session/c5582556-ec85-43e8-98e3-eb345bbee53a) - [niw](https://twitter.com/niw)さん

#### 発表資料
- [アプリの国際化の舞台裏](https://speakerdeck.com/niw/apurifalseguo-ji-hua-falsewu-tai-li)

#### メモ
- 問題に気づかないことが問題というのはそうだよなあと思いました。


### 16:45 - [Lightning Talk + Closing](https://builderscon.io/builderscon/tokyo/2019/session/f6307b7d-960b-11e9-a530-42010af01081)

#### 発表資料
- TBD

#### メモ・感想など
Lightning Talkはどれもスゴイなあと思いながら見ていたのですが、なかでも「[タイムテーブルを楽に組みたい](https://speakerdeck.com/karupanerura/taimuteburuwole-nizu-mitai)([karupanerura](https://twitter.com/karupanerura)さん)」は背景→技術的な課題→解決手段の提示→実演デモを5分の枠内で走り切った感があってスゴかったです。

SQUEEZE賞「[コンパイラをつくってみよう](https://builderscon.io/builderscon/tokyo/2019/session/e6ed1194-9a40-4a8c-92fb-b60f39cd18dd)([DQNEO](https://twitter.com/DQNEO)さん)」や盛り上がったで賞「[スーパーカミオカンデの開発と運用](https://builderscon.io/builderscon/tokyo/2019/session/2c1c0bcd-960c-11e9-a530-42010af01081)([yhayato](https://twitter.com/yhayato)さん)」はセッションがかぶって見られなかったので動画が公開されたらぜひ見てみたいと思います。


##5. おわりに
- Something New大量入荷しました。開発者に限らずテストエンジニアやQAも来ると楽しいよ☺
- ふだん使っていない頭を2日間でぐぐーっと押し広げられた感じです。あまりなじみのない分野の話もちょっとずつ消化できたらいいなと。
- 発表者のみなさま、運営のみなさま、[スポンサー各社](https://builderscon.io/tokyo/2019#sponsors)さま、一緒に聴講したり懇親会でお話しさせていただいたみなさまありがとうございました。


[^1]: たとえば[テスト設計コンテスト'19 - U-30クラス チュートリアル](http://aster.or.jp/business/contest/doc/2019_U-30_V1.0.0%20.pdf) p.67