Builderscon 2019に前夜祭から参加してきたのでそのレポートをする。
ちなみに当日に書いた速報的エントリは以下の通り。
各セッション
ランチセッション「キーボードは好きですか?」。 とにかく多様なキーボードが登場し,質や価格が全く違う様々なキーボード,キーボードの歴史,そして自作キーボードという沼について学べる。 キーボードのスイッチを別メーカーからそれぞれ買い,分解してニコイチのスイッチを作る謎の概念などが登場し,さながら文化人類学のようだった。
これまた尖ったセッション。ライブコーディングで自作言語のコンパイラが自作されていく様子は圧巻で,オーディエンスからバグ修正パッチが飛ぶ様子は完全にモブプログラミング。 最終的にアセンブリが出力される言語コンパイラが完成し,謎の一体感が生まれた。
このセッションはとても素晴らしい,学ぶべきところがたくさんあった。 まずこの発表のために何度もリハーサルを行ったとのことで,粘り強くより良いものを目指す姿勢はぜひ取り入れたい。 また質問への回答で,このような地味な作業を達成するのは大変ではないか,どうやってモチベーションを保つのかという問いには単純明快,「他のことをするな」という解を突き付けていてストイックだと思った。素晴らしい。 学んでから作るのではなく、つくりながら学ぶ、を提唱していたのも良かった。完璧になってから戦うのではなく,学ぶフェイズと作るフェイズとを交互に切り替えていこうというわけで,実際的で役立つアドバイスだと思う。 発表の冒頭で「拍手の練習をします」って言ってオーディエンスとの距離感を縮めていて,良いなあと思った。
Railsで陥りがちな破滅と,それを避けるという発表。データモデルやコントローラがユースケースの増加に対応できずに設計が破綻するのを防ぐために,ドメイン駆動開発などの知見を導入する。 Railsはやったことがないので,Scalaだったらどうするだろうか,といったことを考えたりしていた。フレームワークが当初想定していた範囲を越えてアプリケーションが拡大した場合に設計に歪みが生じるというのは 言語やフレームワークを問わず一般的なトラブルなので,なるべくドメインに忠実な設計を心掛けたい,と思った。
PWAアプリケーションとしてゲームを動作させるために,快適なユーザ体験とゲームデータとを保護するためにあらゆる手を尽すという発表。 なんとかしてキャッシュを効かせるという方面と,なんとかして暗号化やSource viewからコードを隠すか,ユーザに情報を漏らさないようにするかということに苦心されている様子だった。 ゲームはその性質上データが漏れるとゲームバランスが崩壊するどころかハッキングされて不正なデータを送り込まれるということもあるので,かなりコストをかけているなと思った。しかもPWAとあってブラウザで動くので,対策は大変そうだった。 今のところこれほど厳重なセキュリティを要求されるような現場に居合せたことはないが,なんとかしてキャッシュを効かせるという箇所は学びがあった。
B2BサービスKyash Directのために,ドメインの集約境界ごとにマイクロサービスを構成し,(もう一度やるならこうしたいという文脈で)各サービス間の通信はEvent drivenな仕組みをSQS+SNSで構成し,Web APIのためのゲートウェイを作るという話。聞いてて,相当大規模で大変だな,マジかよという気持ちになった。しかし決済プラットフォームのような,障害などのダメージを最小限に食い止めつつ,大規模な可用性を確保しなければならない用途では,このようなやり方もあるのだなと思った。 本題とはずれるが,いままで概念だけ知っていたEvent drivenはこうやって使うんだな,ということが分かったので良かった。 「設計の書籍は読む、実践するを繰り返すのが良い」という話をされていたのも勉強になった。
PHPでJVMの一部機能を実装してHello Worldを動作させる発表。コンパイラ自作の発表も見ていたので,今回のビルコンはだいぶ濃いな・・・と思った。 初期実装のあまりよろしくないコードのことを「クソコードではなくピヨコード」と呼んでいたのがハートフルで良いと思った。クソコードという言葉は強すぎる,という議論があったと思うが,ピヨコードだと傷付く人は減ると思う。 PHPの言語仕様のためにJVMの実装をちょっと回り道しなければならない,ということが結構ありそうだった。 JVMのクラスファイルの内容の概要が分かったのも良かった。
Origami Payの方の発表。各QRコード決済事業者で決済用のQRコードを統一しようという動きがあり,その仕様の説明。 決済に使うQRコードにも静的や動的の違いがあったり,店舗が呈示するか顧客が呈示するかといった違いがあるのが面白かった。
ところで政府もQRコード決済(というかキャッシュレス)を推進しているようだが,これは不透明な取引を見える化する,つまり税収が増えることを目当てにしているようだ。 政府はある一定年度までに40%程度(詳しくは失念したが)の取引をキャッシュレスにしたいらしい。でもこれは資金決済プラットフォームが民間にロックインされるということで,例えばふだん使ってる日本銀行券,すなわち日銀ペイは広告とか出ないし手数料取られたりしないけど,民間に決済手段が移行すると利用料を取られたり広告が出たりする。それって自由な決済とは矛盾するんじゃないのかな,ということを考えたりした。 利用者はいつのまにか実質二重に税を取られている,といったことがないのかなと思った。
キラーコンテンツ。やばい。
陽子崩壊(とかいろいろ)を観測するための地下施設スーパーカミオカンデ。それを支えるバックエンドシステムの話。陽子のサイズとか同期タイミングのスケールはナノメートルやナノ秒オーダーだったりする一方,それを観測する装置のスケールは100メートルとかペタバイト,5000年とかで全く日常の開発をする暮らしからかけ離れていてすごい。観測装置はSLA無用の常時稼動を要求されたりしていて,寸分も停止できないシステムは大変そう。 ふだんは1日10オーダーで発生するイベントが,超新星爆発が起きると秒間10メガ回発生して捌く必要があるとか,TCP/IPのソフトウェアスタックが遅すぎて困っていたのでFPGAにTCP/IPスタックをベタ実装したのを使ったとか,そういう(良い意味で)威勢の良いエピソードがたくさんあってすごい。でも実験拠点とはL2VPNで接続しているという話があって,ここらへんだけ共通項がある感じ。
発表が終わると万雷の拍手で,みんなに大人気だった。あとアイコンのNinjaも気になる。
id:cohalzくんによくサービスメッシュ,というかEnvoyの良い話を聞かされているのだけれど,ようやく概要がわかってきた。 またサービスメッシュという概念が確立するまでの歴史が知れたのも良かった。こういった歴史を知ることができるコンテンツはありがたいし,作ると喜ばれるなあとおもった。 また「サービスメッシュは銀の弾丸じゃないよ」というのも話されていて,コストフルな選択に見当った規模なら使う価値が出てくる,という話は普遍性があるなあと思った。
PostgresやOracle DBなどで使える行レベルセキュリティの話。マルチテナント環境では,別テナントの情報をまちがえて表示してしまうということが起こりえてしまう。それをなんとかして防ぐために,DBレベルで防御を行うというもの。 水平分割したくなったときにどうするか,といった不安もあるとのことだったが,結構使ってみたい機能だなと思った。しかしMySQLしかやったことがないので,勉強しないといけない。
サブスクリプション管理のスタートアップの話。日付と時刻,時間の違いについて話しつつ,実際にサービスで扱うにあたってどのように実装していったかが話された。 自分もこういった課金まわりの実装をすることがあるので,知見が貯まって良かった。みんな課金のための日付まわりの処理で困っているということが知れて良かった。
感想
とても学びがあるセッションだった。はるばる東京に三日滞在したかいがあった。強烈な服装の人がたくさんいて,自分も強烈な服装をしようと思った。