EpisoPassを使ってみた

GyazoやScrapboxでお馴染みの増井俊之さんによるEpisoPassの存在は以前から知っていたけど、

episopass.com

基本的な仕組み自体はわかるものの、どうしてこれが安全なのか、数点の疑問がどうしても解けなかった。

ご本人に聞いてしまえば早かったのだと思うけど、そこまで急いでいるわけでもなく、たぶん数年そのままだったのだけど、ようやく理解できた気がするのでメモをかねて書いておく。

EpisoPass全体については、以下のScrapboxをご参照。

scrapbox.io

簡単に言うと、質問&正答のいわば「なぞなぞ」を作っておいて、それに正解したらパスワードフレーズが出てくる、みたいな感じ。

特徴的なのは、そのパスワードと正答はどこにも保管されておらず、とくに「正答」は自分の頭の中にしかナイので(というかそういうなぞなぞを事前に作っておくので)、仮に運営者のサーバ等からすべてのデータが抜き取られても、パスワードが漏洩することはないということ。

もう少し具体的な仕組みとしては、一意のパスワードを作るには以下の要素が必要になる。

  1. ID(URLのこと)
  2. Seed(パスワードの長さ等を指定するキーワード)
  3. なぞなぞの質問
  4. なぞなぞの正答

2番めのSeedというのが少しわかりづらいが、これがたぶんこのシステムのキモで、おそらく質問・回答の選択肢・正答・URLの組み合わせだけでもそれなりに複雑な(他人には破られづらい)仕組みにはなるだろうが、そこにSeedが絡むことでより複雑性が高まるのだと思われる。

その上で、EpisoPassには「編集ページ」と「利用ページ」があり、前者ではなぞなぞやSeedなど各種の設定を行い、後者ではそれによって出来上がったなぞなぞを解く。

で、それらのページはどちらも全世界に公開されている。

たとえば、増井さんが使用例として公開している、ご自身のTwitterのEpisoPass利用ページを見てみると、こんな感じ。

https://episopass.com/Twitter_masui@pitecan.com.html

で、その編集ページを見るとこんな感じ。(最後の「.html」をトルだけ)

https://episopass.com/Twitter_masui@pitecan.com

あれ、Seedもパスワードも見れてしまってる・・というのが、じつはつい最近までまったく意味がわからなかったところ。
パスワード、見えちゃってるんじゃないの?という。

しかし実際には、第一にこの画面内のSeedは利用者が使っているものとは限らず、試しに他のSeedを入れてみると、それに応じてパスワードも変わる。
また、アクセスした時点ではすべての回答候補の最初(左端)の選択肢が選択されているので、どれが正答かは本人以外にはわからない。
つまり、これらの変数が存在することにより、この編集ページを見られても実質的な問題はない。

*増井さんはご自身の使用例では「Seedを公開している*1」と言っているけど、本当に上記アクセス先のSeedを使っているかはもちろん誰にもわからない。

ぼくは上記後者の、「編集ページにアクセスした時点ではすべて回答候補の左端が選択されている」という前提をわかっていなかったので、編集ページが知られたら自動的にパスワードもバレるのでは・・と思っていた。

もしそうなら、編集ページはなぞなぞページのURLから推測(というか)できるのだから、そもそもなぞなぞの意味ないのでは・・と思っていたのだけど、そうではないことがわかったので、その記念にこうしてブログにメモをしている。

その他、この仕組みに関するよくある質問は以下。想定可能な疑問点はだいたい網羅されているのでは。

scrapbox.io

ちなみに、今回久しぶりにEpisoPassについて調べてみようと思ったのは、増井さんの以下の直近ブログ記事を読んだから。

scrapbox.io

先日仕事でChromebookに触る機会があり、たしかにあのログインは大変!と思っていたので、用途として非常に興味を持ったという。
(まあ実際には、まだ仕事でこれを使うことはできないが・・)

ひとまずは、自分が趣味で使っている&他への影響が考えづらいサービスで小さく試し始めているところ。

なお、Chrome拡張機能を入れてみたけど、これはなぜか上手く動いてくれない。

scrapbox.io

もしかしたら、すでに別のパスワード管理サービスのアドオンを入れているせいかも。

ちなみに、増井さんはご自身でも解説されているように、

解説スライド - EpisoPass

以前にパスワードの使い回しでちょっとした話題になったことがあり、しかしこれは逆に言うと、どんなかたちであれパスワード自体を登録・保存せざるを得ない既存のパスワード管理サービスの欠点を明らかにしたものでもあったと思う。

EpisoPassにはそれはそれで、「なぞなぞを作るのが面倒」等の問題はありそうなものの(人によりそうだが)上記の根本的な問題は含んでいないから、その点からも期待できるところがあるなあ、と思っている。アルゴリズムなど、システムの仕組み部分もシンプルかつ公開されているようだし。(FAQをざっと見た感想)

*1:FAQにて。その上で、通常は公開する必要はないし、安全を期するためにはSeedも非公開にした方が良いだろうと言っている。

ランダムな文字列をパッと出すPerlスクリプトを書いた

ランダムな文字列を何文字分かサクッと出したい、ということが時々あります。
このようなときに使える小さいツールを作りました。

github.com

https://i.gyazo.com/bfd3df7a31cb38788c00ffb1cd63377b.gif

使い方

たとえば以下のようにターミナルに打ち込むと、

perl randstr.pl 5

5文字のランダムな文字列が出てきます。

+/2ox

文字数を指定しなければ、100文字出力されます。

この際には数字・アルファベット(大小)・記号がミックスされたものが出てきますが、オプションを指定することによって、数字だけ・大文字ないし小文字だけ・数字とアルファベットだけ、などの組み合わせも可能です。

perl randstr.pl -d 5 #=> 91486
perl randstr.pl -w 5 #=> vkDrV
perl randstr.pl -m 5 #=> 4Md8g
perl randstr.pl -l 5 #=> jajnu
perl randstr.pl -u 5 #=> OKKQX

詳しくは以下。

-d --digit           Set digit
-w --word            Set words
-m --mix             Set digit & words
-l --lower           Set lower case
-u --upper           Set upper case
-h --help            Show help

便利な使い方

どういう時にこれが必要になる、という具体的な事例は自分でもよくわからないんですが、案外必要になるケースが多く、その時にいちいちスクリプト名を打ち込むのも面倒なので、.bashrcに以下のようなエイリアスと関数を設定してシュッと出てくるようにしています。

alias pw="perl path/to/randstr.pl"
function pww {
    randstr=$(pw "$@")
    echo $randstr | tr -d "\n" | pbcopy
    echo $randstr
}

ただ表示したいだけなら pw で済みますが、実際の用途としてはそれをクリップボードにコピーするところまでセットなので、 pww の方がよく使います。(要Mac)

Getopt::Long

少し前にGetopt::Longを初めて使って、オプションの取り回しがだいぶラクになったな、と思っていましたが、しばらく使わないうちに忘れかけていたので、今回はそのリハビリもかねてそれ周りをGetopt::Longで書き直しました。

ただ、このツールでは引数の値は受け取らないので、あまり効果は大きくないですが・・。

後の自分の参考用に、Getopt::Longの復習にともない参考にしたブログ記事を掲示しておきます。

お蔵出し

このツールはじつは少し前に寄稿した、WEB+DB PRESSの記事で紹介する候補のひとつでした。

note103.hateblo.jp

その記事では自作の小ネタツールを紙芝居コントのように次々紹介していたので、内容的にも規模的にもちょうどいい感じでしたが、紙数が足りなかったのと、最終的な構成からは少し浮く感じもあったので、お蔵になっていました。

展望

これのRuby版も作ってみたいところです。Rubyの練習。

あとはブラウザで動くのも作ってみたいです。JavaScriptの練習・・かな。

WebサービスのヘルプをGitとかで編集する

こちらは『書き手と編み手の Advent Calendar 2019』の2日目の記事です。

adventar.org

昨日はid:mohriさんの以下でした。

mohritaroh.hateblo.jp

さて、続く私はWebサービスのヘルプを編集することについて書きます。

といっても、あんまり汎用的・抽象的な話ではなく(そうしたかったんですが、ならず)、やや特殊な事例かもしれません。あらかじめご承知おきのほど・・。

ぼくは昨年の11月にそれまでのフリーランス編集者(兼たまにライター)からIT企業の会社員に転職しまして、現在はその会社が開発・運営しているWebサービスのカスタマーサポート、兼編集者みたいなことをしています。

*転職時のブログ記事はこちら。

note103.hatenablog.com

ここで言うWebサービスとは以下で、

the-board.jp

こちらは見積書や請求書などの取引で使う書類をクラウドで作成・管理したり、そこで登録した金額を使って売上分析・経営管理できるよ、みたいなものですが、これのチャットサポートをしながら、そのサービスに関わるヘルプ記事の校正・テキスト表現の監修みたいなことをしています。*1

このヘルプ、現在400本ぐらいありますが、

boardヘルプセンター - board

そのすべてを同サービスのメイン開発者であり弊社代表でもある田向さん(id:fw_tx76129)が書いていまして、何しろこのサービスは元々田向さんが自分が欲しくて作った(理想に合致するものがあれば使ったけど、なかったので作った)もので、コードも最初のプロトタイプから今に至るまでずっと中心になって書いているので、その仕様については誰よりも彼がよく知っていて、だからそういうこともできるわけですが、とはいえ同サービスがスタートしてからぼくが入社するまでの4年ちょっとの間、ヘルプの文章は他の誰も触っていない状態だったので、いわば「外部の目」によるチェックというのはほとんどされていない状態だったのですよね。

で、そこにぼくが入ってきたということで、じゃあ編集、やりましょうかやりましょうよ、ということで、まずは校正的な視点で表記を揃えたり、ちょっと内容が伝わりづらそうなところを適当に書き換えたり、ということからスタートしてできたのが以下のようなシステムでした。

tamukai.blog.velc.jp

tamukai.blog.velc.jp

詳しくは上記の田向さんによる記事をご覧頂きたいですが、簡単に解説すると特徴は2点で、

  • Git/GitHubを使ってヘルプ記事をバージョン管理する
  • textlintを使って表記揺れを自動的にチェックする

という感じです。

とくに大きいのは前者のバージョン管理で、以前はその1本目の記事にも解説されているとおり、HTMLエディタ形式の管理画面で編集してそのまま保存するような仕組みだったので、もし修正してもその差分(どこをどう修正したのか)はわからず、とくに複数人で編集する場合には困難が生じそうな状況でしたが、ここにGitをかませることで、第一に複数人による作業が非常にしやすくなり、また普段づかいのエディタ(Vim)でローカルのテキストファイルを気軽に編集できるようになり、感覚的には「コードを書くようにヘルプを書く(編集する)」みたいな感じになりました。

さらには、これによって上記2点目の特徴であるリントツールも経由できるようになり、事前に登録しておいた「辞書」と異なる表記をしていたらエラーが出るようになっています。

textlint.github.io

その作業の流れについて、もう少し具体的に書いてみると、こんな感じ。

  1. まず修正前のブランチを元に修正用のブランチをチェックアウト。
  2. その中でどんどん修正&コミット。
  3. 時間がかかりそうだったら一旦途中でプッシュして、Draft Pull Request(WIPみたいなやつ)を作成。
  4. 1本の記事につき頭から終わりまでを2〜3周ぐらい読み直しながらつど修正。
  5. 終わったら、DPRからPRに切り替え。田向さんにアサインを移す。

ちなみに、Git操作はSourceTreeを使っています。

www.sourcetreeapp.com

ぼくは以前は、Git操作なんて黒い画面でやってナンボでしょ、GUIなんて邪道!と思っていましたが、入社してみるとエンジニアで黒い画面を使っている人はいなくて(笑)むしろSourceTreeの割合が多かったので、あっさり改宗。

普段それを本業で使ってるエンジニアさんにGitやSourceTreeの使い方を教われるなんてありがたすぎるので大人しく教わった次第でしたが、なんやこれ、めっちゃ便利やん!という感じで今では手放せないものになっています。*2

上記を踏まえて、あらためてそれらツールに着目しながら手順を追うと、こんな感じ。

  1. SourceTreeでブランチ作成・チェックアウト。
  2. エディタでひたすら編集。コミット。
  3. 途中でプッシュ。GitHub上でDraft Pull Request。
  4. エディタで編集の続き。コミット。プッシュ。その繰り返し。
  5. GitHub上でPull Requestに切り替え。

実際は上記に加えて、Ruby製のMiddlemanを使ってプレビューを確認したり、

Middleman: 作業を効率化するフロントエンド開発ツール

Perl製の自作ツールを使って対象ファイルをシュッと開いたりしていますが*3、そこまで説明していると細かすぎて伝わらないアドベントカレンダーになってしまいそうなので*4、ここまでにしたいと思います。

本当はこの後、Webサービスのヘルプを編集するとはどういうことか、その時にはどんなことに気をつけて、何を考えているのか、みたいなことも書きたかったのですが、ここまでの話でちょうどキリが良い感じがするので、その辺はまた日にちが空いていたら書くかも、という感じにしておきます。

本日の記事は以上です。ひき続き、『書き手と編み手の Advent Calendar 2019』をお楽しみください!

adventar.org

*1:チャットサポートをどんなふうにしているのか、という話はたまたま先月初頭に行われたテキストエディタVimの国際カンファレンス VimConf 2019 にて簡単なLT(登壇)をしましたので、ご興味おありの方はぜひどうぞ。 docs.google.com www.youtube.com

*2:まあ、黒い画面と格闘した日々があったからこその感動なのだとは思いたいですが。

*3:これについてはコレの最後の方で紹介しています。 note103.hateblo.jp

*4:もう遅いかも。

VimConf 2019でLTをしてきた

以下のスピンオフ、というか続編です。

note103.hateblo.jp

まさかの1人目

レギュラーセッションの最後、Shougoさんの発表を見ていたら、それが終わるたぶん5〜10分前ぐらいにLT登壇者がステージ脇に呼ばれて、お、ついに・・と緊張を高めながら、そういえば今日って、何番目に発表するんだろう?タイムテーブルにも結局出てなかったよなあ・・なんてぼんやり考えながら登壇者が集まるそちらに向かったら、じつは発表順はすでに別ページに公開済みで、1人目でした。

ココの下方にあるLightning Talksの項。

一応というか、最初だったらどうしよう〜ぐらいのことは思ってましたが、その確率自体は高くないはず、とも思っていたので、それを聞いたときには思わず声に出して「まじですかー」みたいな反応をしてしまいましたが、今回イベント全般の進行をされていたmoppさんが「大丈夫です」と落ち着いて言ってくれたので、「そっか、大丈夫か」と思って覚悟を決めました。

そんな発表スライドは以下です。
bit.ly

スライドの作成に際しては、最初はPerl製のApp::revealupを使っていましたが、やっぱりというかさすがにというか、Markdownだけだとどうしても細かい表現がしづらいというか、かえってしょうもない調整の手間が余計にかかるなと思って、これまで何度か使っていたKeynote.appで最後まで作って、でも最終的には上記リンク先のGoogleスライドに全部移し替えました。

一度はKeynoteで完成させたものをわざわざGoogleスライドに持っていくっていうのは、べつにそういうインポート機能もないし、実質イチから作り直すようなものなので(Googleスライドの使い方から調べたりして)めちゃめちゃ大変でしたが、でもKeynoteだとGIF動画を載せた状態で簡便に共有する、という方法がちょっとわからず、一方のGoogleスライドはURL1本で動画ごと共有できたので、しばらく逡巡しつつも「これを使うしかないか・・」と諦めて移植した感じでした。

今回のぼくの発表では、実際にVimを操作している&画面が動いている様子を見てもらわないと話にならないというか、PDFだけでは伝えたいことの半分も伝わらない感じだったので、発表中にデモをやるか、スライドに動画を混ぜるかのいずれかが必要だったんですが、この5分という限られた時間でデモもやるというのはちょっと怖すぎて、GIF動画をバリバリ挿し込んだ次第でした。

ちなみに、GIF動画の作成に使ったソフトは以下のLICEcapで、

またスライドの中盤で使った、キー入力をリアルタイムで表示するためのソフトは以下のKeyCastを使いました。

いずれも無料で、大変安定感のあるツールで、本当に助かりました。本当に・・。

解題メモ

その他、発表内容に関する具体的なあれこれは、真面目に書いてると時間かかりそうなので、以下箇条書きで。

  • 全体的な構成については、発表前の月曜か火曜(10/28-29ぐらい)に1回大筋の流れができて、あとはスライドを完成させるだけ、というところまで来ていた。
  • ただ、その時点での内容は、前置きの部分と、最終版のMotionsの項で扱ったバッファ内移動の話でほぼ占められていて、その他の細かい話は一切ナシ。この時はとにかく5分以内に収めることを最重視していたので、少ないネタを丁寧に解説、という感じだった。
  • しかしこれ、時間内に収まるのはよいとしても、何度見直してもあんまり面白くない。カスタマーサポートがVimを使うっていう意義みたいのは伝わるかもしれないけど、たぶんぼくのプロポーザルを見て採択してくれた人はもっと「面白い」ものを期待しているはずで、そんな場所にこれを持っていくというのはちょっと違うというか、小さくまとまりすぎでは・・と思って、結局全部最初から書き直すことに。
  • で、今度は逆に振り切って、とにかく話題盛り沢山の長尺版を作って、そこから削っていく作戦に。たとえば、画面分割のワザとしては下記ブログに書いた「一時的なゴミ箱ファイルをすぐに出す」というトピックも入っていて、これはかなり終盤の推敲時点まで残っていた。
  • じつは今回の発表はそのVimの小ネタ一覧的なブログ記事と、少し前に沖縄で登壇したときのVimネタ(→コレ)の流れにあって、初めはそれらの内とくによく使うものをグレイテスト・ヒッツ的に紹介しようかと思っていたんだけど、途中でもっとローカルにというか、ニッチにというか、リアルなカスタマーサポートの現場の雰囲気・臨場感がわかるような感じの方が価値を提供できるのではないか・・と思って、なるべくそうなるように調整した。
  • このスライド作成、かなり時間がかかることは容易に予想できたので、このために会社の半休を取ったぐらいだったが、それでも発表の1週間前ぐらいは毎日仕事が終わった後に深夜までやっていて、ほんとに大変だった・・。
  • プラス、今回は業務上のお客さんにも多少なり関わってくる話題でもあるので、念のため発表の数日前に社長にもスライドを見てもらって、コメントをもらい、いくつか修正。
  • 会社にはチケット代も出してもらった上に、こうして事前レビューまでしてもらう万全のサポート体制でほんとにありがたかった。
  • ちなみにうちの社長はテキサスの大学出身で英語ができるので、内容チェックに加えてスライド上の英語表現も見てもらって、これも心強かった・・。
  • 英語といえば、今回の英語表現は最初にカンでわーっと書いてから、Google日本語入力で差分を確認して、その後にGrammalyに突っ込んでチェックを受けて・・という工程を何度も繰り返しながら作った。結果はまあ、上々では・・?

周辺的な話

発表内容については以上ですが、イベントの進行的な部分について、もう少し。

とにかく発表前後の流れについては、前述のmoppさん他、スタッフの皆さんの準備が本当に完璧で、最良の環境で発表できたと思います。ありがとうございました。

事前の接続チェックも早い段階(LTの2つ前ぐらいの休憩時間?)でやらせてもらえて、なにしろこの接続チェックって本当にいつも鬼門というか、ぼくはこれまでもカンファレンスの登壇経験って多少はあるんですが、一回ですんなりOKっていうことがほとんどなくて、なおかつチェックできるとしてもごく短時間しかない、というケースが多いので、今回は納得行くまでできてよかったです。

ちなみに、ぼくは今回Googleスライドを使っていたので、できればスピーカーノートの機能を使いたかったんですが、事前に自宅でApple TVのミラーリングで試したときにはうまく行かず、んー、これって会場ならできるのかなあ・・と思って会場でつなげてもやっぱり駄目で(現在も原因不明)、結局普通にスライド流しながら喋ったんですが、その会場での検証にはujihisaさんがとことん付き合ってくれて、本当にありがたかったです。

あとはステージで喋ってる間、すごく見やすいところに専用のPCモニターで残り時間を出してもらっていて、めちゃくちゃ助かりました。

これもmoppさんが用意してくれたんですが、大体自分の中でも「このスライドが来たらあと何分」とか決めていたので、それとの組み合わせで非常に時間をコントロールしやすくて、実際ほぼぴったりで終わりました。

aomoriringoさんのドラも発表終了と同時に鳴って、綺麗に終わりましたね。あんまり早く喋り終わってドラが鳴らない、というのも寂しいので、ちゃんとドラで締めてもらえてよかったなあ、と。

発表が終わってから、そのまま席に戻るか、それともステージ脇の方に戻るか、一瞬迷いましたが、余韻を味わいたかったので脇に戻って、そのままコーヒーのコーナーでタリーズコーヒーをポットから入れて飲みました。まだコーヒーが残ってて良かった〜・・と心から思いましたが、ほんとに、このコーヒーがおいしかった!体中の力がフワ〜って溶けながら抜けていくような感じで、「ああ〜、終わった!もう練習しなくていいんだ!しかも、そんなに失敗しなかった!そこそこ良かった!」みたいな達成感と充実感と脱力感が一気にコーヒーと一緒に体の中を駆けめぐっていく感じで、タリーズコーヒーさんには感謝しかありません。

登壇することについて

今回のVimConfをこれだけ楽しめたのは、間違いなく、自分で発表したからだと思います。

じつのところ、今年の10月後半にはなかなか大変なことが立て続けにあって、また今までの登壇経験を振り返っても、もしプロポーザルが採択されたらもの凄い時間と労力が一気に奪われることは明らかだったので、「今回はプロポーザルはやめておこう、お客さんとして楽しもう」とずっと思っていました。

で、締切り前日までは少なくともそう思っていたのですが、一方で今回のネタ(カスタマーサポートがVimを使うという話)はずっと頭にあって、この内容はどう考えても世界で自分しか発表しないだろうし、もしそれができたらVimConfへの貢献にもなるんじゃないかなあ〜・・と思い始めてしまい、貢献・・それはVimConfのスタッフ、コミュニティ、参加者、登壇者といった関係者全体への貢献ということでもあって、そんなことができたら本当に素晴らしいことだし、その素晴らしいことをやらないだけの理由があるのか?ある?本当に?・・とか考え始めてしまい、んー、ない・・ないなあ・・と思ってしまい、というか応募するだけでもカンファレンスにとってはプラスのはずだし、とか思い始めて結局、締切りのほんと1時間前ぐらいにワッとプロポーザルを書いて提出しまして、幸い選んでもらった次第でした。

こういうイベントがその人にとって楽しいのか、楽しくないのかって、最終的には自分次第で、自分側に楽しめる土台がなかったらどんな優れたエンターテイメントでも退屈だし、逆に自分の中に楽しむ下地ができていたら他人がどれだけ退屈だと言っても楽しめるものだと思います。

その意味で、こうやって登壇者になる、発表する側になるっていうのは、その「楽しむ土台」を作るある意味一番手っ取り早い方法というか、「その瞬間を他の何にも代替できない唯一の経験にする」ための確実な方法なので、散々迷ったものの応募したというその経緯も含めて、ナイス判断だったじゃん、頑張ったじゃん自分、と思ってます。

あらためて、このような場を作ってくれたスタッフの皆さん、登壇者、参加者の皆さん、ありがとうございました。この経験をステップに、より楽しみと刺激に満ちたVimライフを送っていきたいと思います。

付録 - 再現スクリーンキャスト

今回のカンファレンスの模様については、いずれ以下で公式動画を見られるようになると思いますが、

www.youtube.com

それまでのつなぎというか、上記の付録みたいな感じで、今回の発表内容の再現スクリーンキャストを作ってみました。

本来5分の発表のための資料を使って、結局15分ぐらい喋っているのでけっこう冗長かもしれないですが、ともあれ今回喋りたかった内容は基本的に詰め込めたと思いますので、ディレクターズカット版みたいな感じで楽しんでもらえたら嬉しいです。

www.youtube.com

VimConf 2019に行ってきた

2019/11/03に秋葉原のアキバホールで開催されたVimConf 2019に行ってきました。

vimconf.org

今回は終盤に行われるLT(ライトニングトーク)に採択されたので、登壇者としての参加でもありました。

参加チケット

昨年11月に転職して、フリーランスからヴェルク株式会社の社員になったわけですが、それ以降、フリーランス時代にはもちろん自費で参加していた各種ITカンファレンスの参加費を会社に出してもらっています。(RubyKaigi、buildersconなど)

今回も最初にゲットしたアーリーバード・チケットは会社に出してもらいまして、その後に個人スポンサーのチケットも購入しましたが、こちらは個人的な意向だったので自費で。とはいえアーリーバードの方が会社持ちじゃなかったら個人スポンサーは見送った可能性が高いので、やはりカンファレンスチケット代支援は大変ありがたいです。

会場下見

前回は会場の場所が自分にはわかりづらく、というか秋葉原自体、年に1回行くかどうかぐらい馴染みがないので、秋葉原駅から会場に向かったところ迷いに迷って、そこそこ早めに着くはずが超ギリギリになる大変さだったので、今回は前日に会場を下見に行くという用意周到ぶりでした。

といっても、じつは地図で見てみたら定期区間の通過駅である岩本町駅から歩いて行けそうなことに気づき、これって前回のようにわざわざ秋葉原駅から行ったのが間違いだっただけで、もっと簡単に行けるんじゃね?と思ったのでそれを試してみようと会社帰りに途中下車して寄ってみた、というだけですが、果たして岩本町駅から片道15分ぐらいで行けることがわかり、おかげで当日朝も無理なくスムーズに到着できました。

入場

当日の9時半ちょっと前ぐらいに予定どおり会場に着くと、ちょうど受付がスタートしたところだったみたいで、サクサク入場。ノベルティや通訳レシーバを受け取りましたが、このレシーバの受け渡しが早くも前回からの改善ポイントで、前回はレシーバの受信機とヘッドホンがバラバラに用意されていて、かつ自分で取るスタイルだったので*1、うかつな自分はヘッドホンだけ拾って着席してしまい、「このプラグ、どこにくっつけるんだろ・・机に挿すのか・・?」とか無駄なことをしていましたが、今回は初めの段階でそれらがくっついていた上に入場時に渡してもらったので悩むヒマもなく、大変助かりました。

ノベルティのアイススプーン、まじ最高ですね。いつもあの木やプラスチックのやつで食べようとしてアイスの方がカチカチで歯が立たないやつ! 木だと最悪折れたりしますが、これなら勝てる!

あと、DeNAさんのインサートモードのチートシート。すごい気が利いてる(笑)。誰が企画されたのかわかりませんが、このカンファレンスならではのノベルティで素晴らしいです。しばらく座右に設置しておきます。

同時通訳

午前のキーノートは2本ともに英語セッション。さっそく通訳のレシーバをがっつり使いました。

ここ数年、ITカンファレンスでこの種の通訳を聞くときには、いつも英語メインで聞いたらいいのか通訳(日本語)メインで聞いたらいいのか迷っていましたが、今回は比較的早い段階で通訳メインにしようと思っていました。

通訳メインにすると、当然のことながら意味の伝達が本人による英語よりも少し遅れること、またこれも当然のことながら、通訳後の日本語も必ずしも自然な日本語ではないので、解読の必要がゼロになるわけではなく、その辺のバランスが難しいんですよね。なので案外、これにはこれ用の技術というか、聞き方のワザというか、同時通訳への慣れみたいのが必要なのかなと思っています。

その上で、今回はやっぱり自分の英語力に頼るぐらいなら通訳された日本語の方が遥かに安心というか、せっかくのトークを聞くなら正しい意味で聞きたいと思って、なるべくレシーバに頼るようにしました。

そしていつも思うことですが、今回も素晴らしい通訳さんで大変助かりました。ありがとうございました。

キーノート

Prabir Shrestha - Vim Renaissance

そのキーノートですが、最初のPrabirさんはvim-lspの作者さん。vim-lspってたしか去年のBramさんの講演でも少し話題になっていた気がしますが(質疑応答のとき?)、結局それが何なのかわからないまま一年が過ぎ、ここでようやく「そういう感じのことか・・」とうっすら把握できた気がします。

実際、今年のトークではvim-lspに関する言及が他にもけっこうありましたし、これを機にもう少し理解を深めておきたいところです。

あと、最後の質疑で「選択肢が1つしかないのは良くない」みたいな話をしているのも印象的でした。「Both is good」と言っていたような。70:30の70の方をやるのはいいけど、それだけになったら30の人が参加できないし、30も含めてやればみんな参加できるようになる、みたいな話だと思いながら聞いていました。

それから、本題には関係ないですが、「趣味で飛行機を操縦している」という話を最初と最後の方で聞いて、なんだかそれがやけに記憶に残っています。めっちゃ世界観が変わりそうだなあって。

Justin M. Keyes - We can have nice things

2人目のキーノートはNeovimメンテナのジャスティンさん。「NeovimはVimを置き換える目的でやってるわけではないし、初めからそんなこと言ってない、Vimの最大化が目的である」みたいな話に始まり、「Vimの開発が近年活発なのは、GitHub移行の影響ももちろんあるだろうけど、Neovimの影響もあるのでは?」みたいな話など、控えめなトーンだけど言ってることはどれもストレートで、なんだか啓発される部分が多かったです。

最後にステージ前方で集合写真を撮ったとき、たまたまジャスティンさんが隣に座ったので「グレイトトークだった。インスパイアされた」と素朴に伝えたら、「よかった。退屈していたらどうしようかと思った」みたいなことをおっしゃっていました。

ランチ

お昼は今半のすき焼き弁当とベジタリアン用弁当の2種類がありましたが、前者にしました。今半のすき焼き弁当を食べるのは人生で2回めで、1回めは前回のVimConfでした。

ぼくは普段あんまり量を食べない人で、大体お弁当とかも1回では食べきれず、残して夕飯に続きを食べたりするんですが(会社で残したらタッパに入れて持ち帰る)、昨年に続き今回も珍しく完食。ベジタリアン弁当にも大変興味あったのですが(それは去年も)、ついこっちを取っちゃいますね。ごちそうさまでした。

レギュラーセッション

午後の内容については、とくに印象深かった点に絞って触れます。

mopp - Your Vim is Only for You

ちょうどぼくぐらいの習熟度の人にぴったりという印象の話で、盛り上がりました。詳しくはスライドをあらためてチェックしたいですが、すぐに使えるような考え方や技術が多くて、参考になりました。

ちなみに、ぼくの.vimrcは1,569行でした。

IK - Grown up from Vim User to Vim plugin developer side

とても良い発表でした。スライドも話しぶりも非常に完成度が高いというか、堅苦しくなく、でもゆるいわけでもなく、技術的にも興味深い内容が詰まっていて、集中して最後まで聞きました。

最初のページにスライドのデザインをした人の名前が出ていたのもよかったですね。そういうのって、初めて見たかも。そのスタイルやデザイン自体も含めて、とても好感を持ちました。

daisuzu - Usage and manipulation of the tag stack

ctagsやタグジャンプの話など。これについてはご本人と懇親会でも喋れたのですが、タグジャンプってまさに自分の次の課題という感じで、今までもなんとか習得したいと思って『実践Vim』のその周辺を読みながらけっこう試してきたんですが、結局普段プログラミングの機会自体が少ないので、一般的に行われるタグジャンプのノウハウを活かしづらいというのもあって、今ひとつ理解が進んでいないんですよね。

そこにあってこの発表だったので、上記の課題の克服に向けてすごく参考になりました。懇親会では、「来年ここでお会いするまでに使えるようになっておきます」みたいなことを宣言した気がしますが、どうなりますか・・。

gorilla0513 - My Vim life

これまでのゴリラさんのVim活動を振り返るような内容で、一番印象に残ったのは、自作のVim本が500冊も売れたこと! ものすごいですね。「Vim本なのに」という以前に、自分の書いた本がそれだけ売れるっていうのがすごいです。ページ数も130ページぐらいと言っていたと思いますが、大変な力作・労作ですね。

考えてみたら、ぼくも『実践Vim』を時々読み返す以外ではVimのリファレンス本みたいなものってあまり読む機会がないので、最近の動向をキャッチアップするという意味でも読んでみたいなあ、1,000円ぐらいだったら買いたいけど、BOOTHとかで売ってるのかな・・?と思っていましたが、これを書きながら今検索したらまさにBOOTHで&しかも1,000円で売っていたので、買いました。

gorilla0513.BOOTH.pm

楽しみ!

gorilla.vimも身近に感じられたので、機会が合ったときには参加したいと思いました。

Hezby Muhammad - Let's Play with Vanilla Vim

バニラVimって何かと思ったら、プラグインを使わないってことなんですね。その前提がないままぼんやり聞いていて、いろいろ便利だな〜・・なんて思っていましたが、終わってから「そういうことか!」と気づいたという。

でも、Agで検索とかnetrwの使い方とか、普段自分でもやったりやろうとしていたりすることに近かったので、プラグインの有無については全然意識する瞬間がなかったんですよね・・案外、自分もプラグイン依存してないときが多いのかも?

あとは、あのコマンドラインモードを使っていろいろ操作しているのも新鮮でした。あれができると本当に使いこなしてるって感じだな、と。こちらもスライド等を見ながら手元で復習してみたいです。

あと、本題とは関係ないところでもうひとつ、キー入力を動画に映していたところで、あれって何のソフトを使ってるんだろう?と思ってました。というのも、ぼくも自分のLT資料でそれをやる必要が生じて、結果的にはKeyCastというツールを使っていたのですが(詳しくは自分のLT記事にて)、それとはちょっと違うツールを使っているようにも見えたので、何を使ってるのかな・・と。考えてみたら、それって懇親会で聞くのにちょうどいい話題だったんですが、そのときには気づかなかったんですよね。今度機会があれば聞いてみたいところです(TODO)。

Tatsuhiro Ujihisa - 13 Vim plugins I use every day

実際にDEMOを交えながらujihisaさんが普段使っているプラグインを紹介していく、という、まさにそういうのが見たかった!な内容でした。

Shougoさんの昔のプラグインを含めて、open-browser.vimなどぼくが頻用しているものもけっこう含まれていて、嬉しい感じでした。

話の構成としても、1つ1つの個別のプラグインの解説がDEMOの中ではひと繋がりになっていて、気がつけばあっという間に終わっていました。こちらも後から見返して復習したいと思います。(togetterを見たら全然自分が気づかなかったプラグインのことで盛り上がっていたし・・)

Shougo - My dark plugins development history ~ over 10 years ~

レギュラーセッションの最後は暗黒美無王のShougoさんでした。

Shougoさんの発表を見るのは昨年のLT以来ですが、今回を最後に登壇はやめるということで(開発時間の確保のため)、貴重な機会に立ち会えてよかったと思います。

前回も感じましたが、Shougoさんの発表内容は非常にシンプルでいろいろ削ぎ落とされていて、入り組んだ内容でもなければ飾り気もなく、なんというか海外の人の発表を聞いてるような感覚があります。今回も淡々と語られていくトピックを楽しみました。

とくに、紙のノートを使う、という話にはすごく共感しました。ぼくも紙のメモはかなりよく使うので、「ですよね!」みたいなところもあり。

終盤ではDEMOの投映が思うようにいかない時間があって、一緒に応援しながら見つめましたが、その直後のLT準備のために自分の方が忙しくなり、結果としてどうなったのかはあまり見られませんでした。

しかしそのサポートをされていたujihisaさんと共に、Googleハングアウト等を駆使して時間いっぱいまで取り組む姿はまさにライブそのもので、この場にいてよかったなあと思いました。

Lightning Talks

Hiroaki KADOMATSU - Customer support with Vim

ということで、ついにと言いますか、VimConfでLTをしてきました。スライドはこちらです。

bit.ly

この自分の発表については一旦ここにいろいろ感想や考えたことなど書いていたのですが、あまりにも長くなって大変だったので、別記事に分けます。書いたら以下にリンクを張ります。

*この辺に。

その他の発表者のLTについては、なにしろ自分の発表で精一杯だったのであまりしっかりとは聞けなかったのですが、印象に残ったものを2つだけ挙げておきます。

higashi - Can we do Slack with Vim?

自己紹介のところはよく覚えていないのですが、若い方で、でもすごく論理的にテキパキと発表していて、すげー・・と思って見ていました。

まとめのところでは出来たこと&出来なかったこと、などを並べていて、うーん、わかりやすい!と感嘆しました。

micchiebear - Lose Weight with Vim and Go

micchiebearさんはたしか今年の初めのYAPC::Tokyoでも前夜祭でLTをしていた気がしますが、もしそうであればそのときも思いましたが、とにかくプレゼンうまいな〜、という感じでした。スライドの内容や構成が良いということかもしれないですが、全体に引き込まれる作りになっていて、実際会場もかなり湧いていたと思います。

あの短時間であれだけ大勢の聞き手を味方につけるのはやはり才能かなと思います。準備のたまものかもしれないですが、いずれにせよ自分の出来と比べると、ちょっと格の違いみたいなものを感じましたね*2

懇親会

懇親会は普段だったら当て所もなくフラフラお酒を飲みながらたたずみ、近くにいる人とポツポツおしゃべりするか、「こちらが勝手に知ってる人」に話しかけるか、という感じなのですが、後者については昨年結構実現してしまっており、新たに報告できるネタもないので今回は完全にノープランでした。

でもやっぱりというか、たしかにというか、今回はLTでそれなりに特殊な内容について話していたので、初めて会う人とも喋りやすくて、なんというか助かりました。やっぱりお互い(または片方)の背景を知っていると、それだけでも話をしやすくなるんですよね。

今回ぼくの方から声をかけたのは、先述のdaisuzuさんと、aomoriringoさんぐらいでしょうか。

aomoriringoさんはちょっと前のbuildersconの最後のLTが非常に印象的で、今回のLTを作るときも「LTであそこまで出来るんだから、小さくまとめちゃいけない、簡単に諦めるな!」みたいに自分を鼓舞したりしていたので、その辺の話をお伝えしたりしました。

その他としては、懇親会LTがすごく充実していましたね。最初がmattnさんで、うわーってなったり(語彙)、ゴリラさんのDEMOを見たり、大倉さんの矩形選択のワザも知らないものだったので、楽しみました。

今回スポンサーをしていたForcodeの大竹さんのLTを思いがけず見れたのもよかったです。ぼくは大竹さんがはてなで書いていたブログをよく読んでいて、うわー筆力ある人だなあ、と思っていたので、実際に目の前で喋ってるところを見て、昨年初めてmattnさんにお会いしたときのような感慨を抱きました。今思えば懇親会で少しでも喋っておけばよかったですが・・それはまたの機会に。

あとはgirls.vimの発表もよかったですね。ぼくはRubyの近い感じのイベント(たぶんそのLT内で言及されていたもの)に行ったりして、

note103.hateblo.jp

その一連の取り組みには共感していますが、そっか、Vimでもそういう活動が始まってたんだ、と目が覚めた感じでした。「男性が多い勉強会に参加するのは怖い(不安がある)」という女性の感じ方は、男性自身には自然にはわかりづらいことだと思いますが、同時に「わかっておこうとすべきもの」でもあるよな、と思っています。

その他

ここからは、上では触れられなかったいくつかの小ネタについて落ち穂拾い的に書いていきます。

gina.vim

たしかmattnさんの発表でも出てきたと思うんですが、その他にも何度かgina.vimの名前を見かけました。

ぼくは今VimからのGit操作はfugitive.vimを使っていて、そもそもあまり複雑なことはしないので(add, commit, pushぐらい)それで十分といえば十分な気もしますが、これを機にあらためて見ておこうかなあ、と思いました。

Googleスライド

今回は発表でGoogleスライドを使ってる人が多かったですね。ぼくもそうですが。

ちょっと前まではKeynoteとか、あとはreveal.js的なツールを使ったスライドが多かった気がしますが、だんだんこれがスタンダードになりつつあるのかな・・とか。

実際、Googleスライドはいろいろ話が早いというか、直感的に操作できて、「この辺をいじればこうなるのでは?」と思うと大体それで行けて、文字調整や各種装飾にしてもあんまり凝ったことをしないならこれで十分、て感じになるんですよね。

ぼく自身は、ひとまず次以降にスライド作るときはまずこれで行くかな・・と思っています。

1トラックの良さ

他の大きなカンファレンスでは、1日に複数のトラック(発表枠)を設けて並走するかたちをよく取りますが、これだと当然のことながら「見れない発表」が出てきます。一方、VimConfは1トラックですべての発表を網羅的に聞くことができるので、それがありがたいなあと感じます。

もちろん、複数トラックが並走するイベントにもまたその良さがあって、たとえば「そもそも全部見れないのだから、全部見る必要もない」という感じで、発表している時間帯も外のロビーとかで参加者同士で雑談したりして、その場全体を楽しむ余裕を持てるというか、そういう良さがあると思いますし、だからどっちがより良いということではないのですが、ただこの1トラック形式の良さって、非常にVimConfに合ってるなあ、全部楽しみ尽くすってことができて良いなあ、と今回あらためて思っていました。

終わりに

ということで、これだけの内容を一言でまとめるのは難しいので最後は簡単に終わりますが、今回も本当に素晴らしいイベントでした。

スタッフの皆さん、参加者の皆さん、お喋りしてくださった皆さん、ありがとうございました。楽しかった!

*1:ギリギリ入場だったからかもしれないですが。

*2:やや自分を卑下したふうな書き方ですが、素直な感想として。

builderscon 2019に行ってきた(3)〜本編2日目(最終日)〜

最終回です。前回までの内容はこちら。

note103.hateblo.jp
note103.hateblo.jp

例のごとく、朝から淡々と綴っていきます。

昼食ゲット&朝食・コーヒー

8時半頃に起床。前夜の懇親会はサクッと帰ったこともあり、体調は快調。前日に続いてランチ券は早いもの勝ちだったので、たしか9:40ぐらいには会場についてボーっとしているうちにランチ券配布開始&即ゲット。

前日のランチはイタトマ、そしてスポンサーセッションは先述のとおり以前に何度か体験していたので、この日はアカツキさん提供のお弁当にしました。

f:id:note103:20190924013036j:plain
ゲット。

朝食&コーヒーコーナーも前日に続き展開。

f:id:note103:20190831100244j:plain
見事な飾り付け。みんな写真撮ってから食べてる。

ケータリングのスタッフさんに挨拶したら、ツナのがおいしかったですよ、と教えてもらったので早速頂きました。ありがとうございました。

午前のトーク

クレジットカードの通信プロトコル ISO8583 と戦う

前日のオープニングは10:50からでしたが、この日は10時半から。朝食&コーヒーはほどほどにして、最初のトークはこちらにしました。

builderscon.io

もしこれが裏じゃなかったら、柴田さんの以下にしたところですが、

builderscon.io

数日前のスピーカーディナーでこの話の予告を聞いて、

と思ったので。

果たして、これは聞いてよかった! と思う面白さでした。知らないこと9割ぐらいでしたが、バイナリや16進数の読み方なんかも詳しく教えてくれて、こんなん日常的にやってるの、すごい世界だな(笑)と。

上記のトーク概要ページにもありますが、カードブランド、イシュア、アクワイアラといった各立場の関係性などもざっくり解説されて、この辺の話の入門編みたいになっていたのも良かったです。

Protocol Buffersのスキーマを利用した開発

次に見たのは、そのまま同室で展開されたこちら。

builderscon.io

上記に続いてまったく下地がないまま、「わからないから聞いてみよう」という感じで聞きましたが、案外「まったくついていけない」みたいな感じでもなく、概要を追いながら最後まで楽しめました。

プロポーザルの方には以下のようにありましたが、

またGo初心者、proto初心者の人が自分でもできそうだと感じてもらえるような発表を予定しています。

まさにそんな感じでしたね。以前にちらっとGo言語をかじっていたのも良かった気がします。

Predictive Prefetching for the Web

その後は会場をメインホールに移して、こちら。

builderscon.io

通訳ナシの英語トーク、かつこれもまったく馴染みのないGuess.jsという技術に関する発表で、正直ぼくの知識で話の全体像を追いかけるのはなかなかハードでしたが、こんな発表普段そうそう聞けるものではないので、「わかるか/わからないか」ではなく「逃せるか/逃せないか」の基準で聞くことに。

スライドが丁寧に作られていたので、ぼんやりながらイメージは掴めたと思います。ずーっと新鮮な感覚を抱きながら聞きました。

そのスライドです。

docs.google.com

ご本人のTwitterより。

おつかれさまでした。

ランチ

そんな具合に、朝からかなり濃密な午前トークを経てお昼。

朝イチでゲットした前述のお弁当を頂きました。

f:id:note103:20190831120550j:plain
中身は魚の南蛮漬けみたいな感じ。

アカツキさん、ありがとうございました。

その後はあらためて休憩部屋へ。昨日から続いていたアンケートの結果をチェックするなど。

f:id:note103:20190924013745j:plain
紙書籍vs電子書籍(右側)は拮抗。

午後のトーク

スーパーカミオカンデの開発と運用

午後イチはこちらへ。

builderscon.io

普段はスーパーカミオカンデのことなんて考えもしない私ですが・・今回のこれは逃せないのでは、と思って聞くことに。

f:id:note103:20190831125705j:plain
開始前。右下の9画面パネルがすごい存在感。

スライドが公開されていました。

http://www-sk.icrr.u-tokyo.ac.jp/~hayato_s/20190831_Super-Kamiokande.pdf

感想ですが。とにかく、ものすごく面白かったです。早戸さんの話しぶりはのっけから観客をグッと引きつける魅力に溢れていて、このテーマについて喋る様子がとにかく楽しそう。終始生き生きしていて、そのまま空中に浮かび上がってしまうのではないか、と思うぐらいに話は弾み、聞きながらこっちもどんどんその楽しい方に連れていかれる感じでした。

話の内容も、言ってみれば中学・高校で習うことの延長みたいなところから始まって、少しずつ話の本題・核心に近づいていくような丁寧な構成で、実際には、会場の反応を見ながら内容や難度を調整されていたようですが、ぼくにとっては全然知らない世界の話のようでありながら、実際にはすでに知っていることの地続きとしてそれらの話がある、というイメージが伝わってくるようで、複雑で大変ではあるけれどけっして難解ではない、誰にでも関係のある興味深い話。として最後まで響きまくって聞きました。ああ、本当にあっという間! あっという間だった!

ちなみに、この日の懇親会(アフターパーティー)で少し早戸さんとお話しする時間があったので、「よくあんなふうに人前で喋ったりするんですか」と聞いたら、見学会のときなどに話すことはあるけれど、そのときには一般の人たちを対象にするので、こんなに専門的なことは話せないんですよ、とのこと。

今回ももう少し難度を落とす選択肢もあったけど、多少専門的になっても会場のウケがよかったので、そのままけっこう突っ込んだ話をした、みたいなことをおっしゃっていました。実際に会場にいた感触としても、まさにそんな感じでしたね。

ああ、それにしても、繰り返しになりますが、面白かった!!自分がこんな分野の(物理学ですか)話を面白く感じるなんて。まったく意外。

f:id:note103:20190831140139j:plain
あの大会場が満員に。

Peddle the Pedal to the Metal

続いて、同じメインホールでこちらを聞きました。

builderscon.io

ここで開始前の客入れ(?)の演奏をどうぞ。

何か楽器みたいなものを持って歩いてるなあ・・と思っていましたが、これだったんですね。

肝心の発表ですが、こちらもスライドが公開されています。

http://highlandsun.com/hyc/20190831-BuildersCon-Metal.pdf

具体的なことはあまりわからないんですが、ようは開発するときの心がけというか、念頭に置いておくべきこと、みたいなことを具体的なことから抽象的なことまで、次々示してもらった感じかなと思いました。

で、ぼくはこの話を同時通訳で聴きながら、つまり、さっきの早戸さんの話に続いてこれを聴きながら、「ああ、ぼくももっと物を作らなきゃ、プログラムを書かなきゃいけない」と心の底から、なんというか、体の中に静かに電撃が走るように、そう思いました。

ぼくはプログラマーとして働いているわけではないので、日中はあんまりそういう時間を取れないんですが、そんなことはどうでもよくて、とにかくどれだけ限られていようが捻出できたその自由な時間を使って、べつに何に認められるためとか、どこかに提出するためとか、あるいは給料を上げるためとかでもなくて、この自分に与えられた貴重な命を最大限に生き尽くすためには、もっと遠慮せずに物をどんどん作っていかなきゃいけないんだ、と痛感しました。

それをしないことには、いま目の前で展開されている、この耳に入ってきている発表、その言葉をほとんど活かすこともないまま死んでしまうではないか・・と。

これはほとんど啓示とも言える激レアな考えの到来で、自分でも「ああ、なんか今、今までに考えたことがない、初めて考えることを考えたわ」と思いました。

さっきの早戸さんも、このChuさんも、見ていてすごく「ああ、自由だなあ」と思ったんですよね。で、その自由さというのは、彼らが彼らのやるべきことをひたすら徹底して、どんな障害が立ちふさがろうともそんなものには負けずに(あるいは負けても)やり続けてきたことの末に獲得されたそれなんだろう、と強く感じたのでした。

今回のbuildersconはぼくにとってそういう、その人にとっての最前線(=結果的に、その界隈にとっての最前線でもあるその場所)をひた走る人たちの背中を目撃する場だったんだな、と思っています。それを目撃することにより、「なんてこった、こんな世界があったのか! 知らなかった! 知らなかった!」と驚いて、もうただ唖然として、その後にしかし、いや驚いてる場合じゃない、このままじゃ一生今自分がいるこの場所から動けない、なんでもいいから、なんか今すぐに何でもいいから作らなきゃ・・という、そういう気持ちにさせられる場所だったと思います。

Oxygen Not Included: Making a Game That Inspires Science

そんな気分に飲み込まれながらも時間は進み、いよいよ最後のセッション。Twitter社の@niwさんによる以下の発表と迷いましたが、

builderscon.io

そのままメインホールにとどまって以下を聴きました。

builderscon.io

やっぱり、とりあえず英語のセッション聞かないと、というのが大きかったですね。

テーマでもあるゲーム「Oxygen Not Included」については主宰の牧さんによるこちらのエントリーが概要を把握する上で役立つと思います。

medium.com

発表では実際に動く画面を見ながら、様々な知見が紹介されていて楽しく見ることができました。

個人的には、サンフランシスコにあるエクスプロラトリアムという博物館のことを想起しましたね。

www.exploratorium.edu

この博物館の紹介記事としては、以下がわかりやすいです。

artscape.jp

じつはぼくは昨年、以下のイベントに関連して同館のディレクターさんが参加するトークセッションの採録記事を作ったんですけど、

special.ycam.jp

その記事はまだ公開されてないので😅そのうち公開されたらこの辺にあらためてリンクを入れておきたいと思います。

話を戻すと、同館も主に子どもたちが日常に存在する様々な自然現象を自分たちの手で発見・理解していけるように工夫をこらした活動をしているので、それと思想的なところが近いかな・・と思ったんですよね。若いディレクター、クリエイターたちが運営していることも含めて。

ONIのチームは、見たところエクスプロラトリアムよりもさらに若く、またさらに少人数で活動しているようなので、まったく同様の感じとまでは思わなかったですが、もし時間が余ったらその辺の質問もしようかなと思っていました。(結果的には質疑応答も盛況だったので、その機会はなかったですが)

LT

休憩を挟んで、最後のLT。どれも良かったですが、とくに印象深かったものについて触れておきます。

ScalaMatsuriの話@Hameeの方

とにかく話が面白かったです。スライドもだいぶ作り込んでありましたが、それを活かす話芸がまたすごい(笑)。今回のLTで一番笑ったのはこちらでした。スライドも少し探しましたが、わからず・・LTの動画はアップされるのでしょうかね? されるならまた見てみたいところですが。

@karupaneruraさんによるカンファレンスのタイムテーブルの話

おなじみ@karupaneruraさんによる発表。こちらはスライドがありました。

speakerdeck.com

タイムテーブルの標準化というか、みんな同じことしてるんだから力を合わせてもっとラクになろうよ、みたいな感じでしょうか。まさにエンジニア精神そのものという感じもしますが。

モノもすでにだいぶ動くものになっていて、これが実力というのか地力というのか・・毎度のことながら感心しました。

@aomoriringoさんによるMathematicaトークへのアンサー

ここまでのLTでは上記のScalaMatsuriの余韻というか衝撃が一番強かったのですが、この発表がまたすごすぎて、結果的に一番心を動かされたのはこちらでした。とにかく話も面白いんですが、内容もきっちり本編のトークを受けていて(というかそれが今回のLT全体の通底テーマでもあったわけですが)、かつ構成的にも何重もの仕掛けが準備されていて、驚きに次ぐ驚き。笑ったり感嘆したり忙しかったです。

Mathematicaなんてこのbuildersconに来るまではその名前すら知りませんでしたが、まるまる5分間、終始楽しみました。グレイトLT!

クロージング

今回のbuilderscon、これまでにない様々な趣向が凝らされたカンファレンスでしたが、個人的にこれは良い変化だなと思ったのは、今まで恒例だった「ベストトーク賞」がなくなっていたことでした。同賞はカンファレンス参加者が投票して「これが1番」というのを決める企画ですが、発表する会場の大きさによって聴いてる人の数も違うし、公平性にはややギモンのあるもので、あくまでお祭りの余興として楽しみましょう、的なものでしたが、ぼく個人としても、先日のRubyKaigiではやっぱりそういうものはなくて、ただ興味のあることについて発表しまくるっていうそれがすごい心地いいっていうか、だから逆に「多数決で順番つける」とか意味あるのかな・・みたいに思い始めていたところなので、この判断というか方針は、すごく良いと思いました。

と同時に、でも余興の部分、あるいは発表者になんらかのインセンティブというかモチベーションを与えたいという観点で「盛り上がったで賞」を作ったというのもやはり「さすが」という感じで、さらにその結果として、今回は早戸さんが選ばれたというのもまったく納得でした。だって本当に、あれはとてつもなく盛り上がりましたからね。

で、牧さんのその発表もいい感じで進んで無事閉会。となったのでしたが、ええと、それはそれとして、最後に個人的に勝手に期待していたんですが、いつもって最後にスタッフさんが壇上に上がりませんでしたっけ? 今回、ぼくはてっきり最後にみんなが上がってくるものだと思って拍手する気満々で待っていたのですが(笑)。それってRubyKaigiだったっけ・・?

ともあれ、何しろスタッフあってのbuildersconですから、最後にスタッフみんながステージに上がって大団円になれば、よりその時点の自分の気分にフィットしたかな〜と思いました。

という流れでここに書いておきますが、スタッフの皆さん、ありがとうございました&おつかれさまでした。

アフターパーティー

終演後は会場とは駅を挟んで反対側のダーツバーでアフターパーティーでした。

ぼくは一旦荷物を置きに宿へ帰って、少し休んでから向かいましたが、それでもちょっと早かったようで、まだ店にbuildersconのスタッフはおらず、同じく早めに着いていた見知らぬ参加者の人たちと店の前で「もう入れるんですかね・・」とか話しながら、結局とりあえず入って待ってよう、ということになってスタッフ陣が到着するまでそのまま店の中で歓談。

このアフターパーティー、とにかく自分にしては珍しいぐらい未知の人たちと喋りましたね。とくにそういう方針を立てていたわけではないんですが、知ってる人はすでに知ってる人同士で喋っており、そこに混じっていくよりは、見知らぬ人に話しかける方がハードルが低かったので・・。

そんな中、会の終盤にハイジ・インターフェイス(株)CEOの@nyontan氏としばらく話せたのは嬉しかったです。じつは本編の中で繰り返し流される各スポンサーのCMのひとつにハイジさんのCMもあって、こんな感想ツイートを流していましたが。

これを見て声をかけてくれたそうでした。元々YAPCやbuildersconで流れるスポンサーCMって毎回見応えがあって、今回もまたどれもクオリティが高くて良かったのですが(映像も音もオシャレ)、そんな中で流れるハイジさんのCMはなんだか目指す方向がちょっと独特というか、他にはない感覚が効いてて気になっていました。そういう感想を直接お伝えできたのは良かったなと。

あとは最後に牧さんに話しかけて、しばし歓談。牧さんにはほんの少し前まで『WEB+DB PRESS』への寄稿に際して記事の監修をしてもらっていたので、その御礼なども。考えてみると、ぼくは対面で牧さんと喋るのはこれが初めてでした。個人的には2013年のYAPC::Asiaの頃からずっと知っていたので、なんというか、感慨深かったですね。

酒セーブ

ところで、この最後のパーティーも含めて、今回は最初のスピーカーディナーから4夜連続でお酒を飲んでいたわけですが、なんと各日お酒は2杯まで(前夜祭は缶2本)にとどまりました。

これってぼく的にはだいぶ珍しいというか、少ないというか、いつもなら調子よく遅くまで飲み続けてしまい、そのまま翌日に破滅するパターンが多くて、とくにこういう飲みの席だとそれを重めのレベルで律儀に遂行しがちだったのですが、今回はこれをだいぶ減らして翌日の二日酔いはほとんどゼロ!&圧倒的な軽快さを実現できたので、今後も外での酒量は減らしていきたいなあ・・と思っているところです(誰にともなく)。

全体的な感想

では最後に、builderscon 2019全体の感想を。

一番大きな成果は、この記事の真ん中ぐらいに書いた、早戸さんとChuさんの発表を連続で見たあたりで感じた啓示みたいなやつですね。あの気づき。たぶんすぐに忘れそうですが、それでもよくて、そう思ったときがあった、ということが大事だと思っています。

それから、これは前夜祭の最後の発表とも少し関係するかもしれないですが、女性の発表者がちょっと少なかった気がしますね。というか、参加者自体、女性の割合が少なかったのだと思いますが。女性がもっとその存在をアピールしやすい土台が必要なのかな、と思いました*1。ではそのために、自分には何ができるのか? という問題も生じるわけですが、こういうところで言及するだけでも小さな貢献になるんじゃないかと思って、書いておきました。

もう一つ、前回は今回に比べると大会場で、英語スピーカーや同時通訳のセッションも多く、一大イベント!という感じがありましたけど、今回はそれに比べるとコンパクトで、手作りな雰囲気が強く、そのぶん見本市とか、その他ここまでに書いたようなチャレンジングな企画が多くて、「自分たちのイベント」という感じが色濃かった気がします。

あんまりイベントとして大きく、また完成度が高くなると、参加者の方がちょっと「お客さん」になりがちというか、ボランティアスタッフとの乖離が生じがちな気がしますが、今回はそういう雰囲気をほぼ感じなくて、参加者とスタッフが一緒に作ってる感じがいつも以上に醸されていたように思いました。

次回以降、またどういう風に進化するのかわかりませんが、今回のそういう雰囲気は良かったなと。

と、いうことで、長くなりましたがbuilderscon 2019の感想はこれで終わりです。

あらためまして、参加者・登壇者・スタッフの皆さん、その他関係各位、ありがとうございました!!

*1:もちろん男性とも女性とも言えない人も含みます。

builderscon 2019に行ってきた(2)〜本編初日〜

シリーズ続編です。前回の内容はこちらをどうぞ。

note103.hateblo.jp

builderscon 2019のサイトはこちら。

builderscon.io

では順に。

朝のランチ券

本編初日の最初のミッションはランチ券をゲットすることでした。

blog.builderscon.io

例年だと、お昼の企画として「ランチセッション」というものがあって、昼休憩になると同時にその会場の前に行列ができ、並んだ順に弁当が配られて、受け取れた人だけがその弁当を食べながらスポンサー企業のトークを聞く・・みたいな感じだったんだけど、この方式だと、1つ前のトークが早く終わるほど有利というか、行列に並び遅れたらもう弁当を受け取れないので、ほとんど運というか賭けというか・・。

それで思い出してみると、ぼくは去年のビルコンではたしか2日ともこの弁当行列に並んで、しかしどちらも受け取れなかったんですよね。😭

なので、この「朝早く行った人ほど弁当をゲットしやすい」というのは非常にありがたくて、これなら弁当が欲しい人は朝に頑張れば確実にゲットできるし、昼前のトークが多少長引いてもソワソワせずに最後まで話を聞けるし、結果的に朝のトークも漏れなく聞けるしでメリットが多く、素晴らしい企画だと思いました。考えてくれた人、実現してくれた人、ありがとうございました。

で、ぼく自身はこの日はイタトマのスパゲティ券を頂きました。というのも、ランチセッションはこれまでにもすでに何度か体験していて、「こういう感じ」というのがわかっていたので、ちょっと違う体験をしたいなと。

10時になると同時に開場して、このタイミングで目論見通りイタトマランチ券をゲット。すると、最初に入ったスペースに朝食・コーヒーコーナーが・・。

f:id:note103:20190830100200j:plain
突然の朝食コーナー。コーヒーはこの左手

なんとスピーカーディナーで食事を提供したチームによる朝食があったのでした。

コーヒーはこちらの方々。(当日聞きそびれたので後日のTwitterより)

久しぶりにちゃんとしたコーヒー飲んだな・・という感じでした。ありがとうございました。

ちなみに1点、これは今回の不備ということではなく、今後に向けた小さな提言という感じですが、この日は最初のセッションが10:50からのオープニングトークだったのでまだ余裕があってよかったのですが、翌日は最初のトークが10時半からで、「10時から朝食コーナーに行って軽く食べてから10時半のトーク」っていう流れはちょっとせわしない感じだったので、教室のオープンよりも少しだけ朝食会場のオープンが早くなっていると、よりゆっくり楽しめるかなと思いました。

*もちろん、そんなことをすればそれだけスタッフさんが早くスタンバイする必要があって大変なわけですが、素朴な実感までに。

午前トーク

そして10時50分、主宰の牧さんによるオープニング。

f:id:note103:20190830105003j:plain

今回はこの写真にあるように、画面右上にスピーカー、右下にタイトルやハッシュタグ等の情報が常時出ている感じで、非常に良かったですね。とくに、右下の諸情報はトークの途中でも知りたくなることが結構あるので、便利でした。

その後、本編最初に見たトークはこちら。

builderscon.io

こちらはスピーカーディナーのときに見て、わー面白そうだな、と思ったので行きましたが、実際かなり面白かったです。

各種の事例を通して「ゲーム」の本質に迫りつつ、その分析を通してまた新たな謎や魅力に出会う、といった感じでしょうか。

最後の質問コーナーでは、簡単な質問をしました(内容は割愛)。初日の最初の発表だったので、なかなか手が挙がりづらいかな・・と。

質問するのって緊張するし、聞いてるときのモードから質問モードに切り替える必要があるので、避けられれば避けたいところですが、効果が見込まれるときにはそれなりに頑張ります。経験的には、スピーカーと近い場所(前列の方とか)にいるとやりやすいですね。あとは、よく緊張するときには人をカボチャと思えみたいに言いますが、ぼくの場合はその会場を自分とその人しかいない親密な空間だと思い込んだりします。

話を戻して、スピーカーの@qsonaさんはnoteで各種記事を書かれていて、builderscon関連だと以下がありました。のちほど見ておきたいと思います。

note.mu

ランチ

前述のイタトマに行きました。パスタは「何を選んでもいい」と言われたのでけっこう迷いましたが、定番っぽいトマトソースとモッツアレラチーズにしました。

f:id:note103:20190830130250j:plain

それなりに量はあるんですが、思ったほどヘビーではなく、サクッと頂きました。

店内には地元の方と思われる多彩な層がいて、でも席が空くのを待ったりする必要もなく、チケット数もちょうどよかったのかな、という感じでした。

午後トーク(1)

午後の最初はこちらを見ました。

builderscon.io

Mathematicaってまったく知らなかったので、雰囲気的に数学の話がメインになるかなと勝手に思っていましたが、思いのほかオブジェクト指向の話が多く出てきて、オブジェクト指向についてはPerlRubyの学習に際してそれなりに時間を割いて触れてきたので、案外理解のきっかけが多い内容でした。

語り口にも推進力があって、動くサンプルが多く用意されていたのも良かったですね。飽きる間もなくあっという間に終わりました。

その後は、同室でこちら。

builderscon.io

「形式手法」とは今回のbuildersconで初めて触れたキーワードでしたが、自分には全然関係なさそうでありながら、なぜか関係ありそう、興味をひかれるなあ・・と思って聞くことにしました。

果たして、内容的には想像以上にわかりやすいというか、出てくるコードは馴染みがないものが多かったですが、構文はそんなに複雑ではなく、かつ1つずつ丁寧に解説してくれたのでけっこう追いついて聞くことができました。

話の筋というか展開も共感・納得感が強いもので、なぜそういうことをするのか、とか、それに対してどういう事を考えて、今後どう展開していこうと思っているのか、みたいなところまで「なるほど」って感じで聞けました。(とくに前半の方)

その後は会場を移動して、こちらへ。

builderscon.io

大会場で60分、ひたすらRailsを中心に話していく感じでしたが、こちらもあっという間という感じでした。

具体的な内容については、知らない要素も多くてコレと言える核心を掴めていませんが、手元のノートにけっこう真面目にメモも取っているので、追って見返しながら勉強したいと思います。

一応、『マルチパラダイムデザイン』による以下。

問題に対して解決となるような構造を与える

これだけは覚えました(笑)。

スライドはこちらです。

speakerdeck.com

休憩部屋

その後のコマはお休み。ずっとトークだけ見ていると、他の人と喋ったり体を休めたりするヒマがなくなるので・・。

ということで、2階に用意された休憩室へ。この部屋はサイボウズさんプレゼンツで、今まで勝手に存じ上げていた同社の風穴さんとようやくご挨拶。

*風穴さんによる当日のツイート。

技術系ジャーナリストとして名高い方ですが、お話しできてよかったです。技術書典、行ったことないと言ったら行ったほうがいいと言われましたので(ただし午後)、行ってみるか・・と考え中です。

techbookfest.org

午後トーク(2)

午後、というかこの日の最後に聞いたのはこちら。

builderscon.io

一冊の本を読み切ったような重厚な発表でした。質疑応答も面白かったです。

なんというか、ある意味では泥臭いんだけど、でもこういうのが結局一番強い、というかそうであってほしい、みたいな感想を持ちました。手本になる本をしっかり読んで、そのエッセンスをつど参照しながら、自分たちの課題に向けてトライ&エラーを重ねていく、という姿勢。

言葉にしてみれば「そりゃそうでしょ」という感じなんだけど、実際に一つひとつそれをやっていくのって本当に胆力が必要というか。
ここで取り上げられている「Kyash Direct」は法人向けのサービスなんだけど、ぼくは個人向けの「Kyash」の方をけっこうヘビーユーズしているので、それとの関連なども想像しながら楽しみました。

ちなみに、これは次の記事に書きますが、翌日最初に聞いたのがクレジットカードのプロトコルの話だったので、図らずもこういった決済を扱う系のサービスの裏側を想像しやすくなって、その辺も想定外でまさにbuildersconのテーマ「知らなかった、を知る」だなあという感じです。

ああ、あともう1個。この発表は基本的に、スライドに書かれている文を読みながら、順に説明していく感じで、ぼくは普段はこういうプレゼンって「スライド上の文言」と「実際に話す言葉」がずれているほど面白いって考えるタイプなんですが、この発表はスライド内容もすごく作り込まれていて、かつ情報量がめちゃ多いので、この読み上げスタイルの方が合ってたかな、という印象を持ちました。一概に、読み上げは駄目、とは言えないなと。この辺の考え方は更新されました。

WEB+DB PRESS』編集長と感想戦

本編終了から懇親会までの空き時間、『WEB+DB PRESS』編集長の稲尾さんと遭遇しまして、しばらく先日の寄稿について感想を述べ合ったりしました。

note103.hateblo.jp

あそこまでやる人、普通いないっす。みたいな話になって、「(やっぱり・・)」と :sweat_smile:。それで余計に思いましたが、たしかにぼくもだいぶんコストをかけたわけですが、やっぱり編集チームにも多大なコストをかけさせてしまったなあ・・とあらためて恐縮。とはいえ、内容としては良いものになった、という点でおおむね意見は一致(たぶん)。

相変わらずお忙しいようでしたが、「この後は懇親会も行かれますか」と聞いたらもちろんそうで、過去の寄稿者さんへの挨拶に加えて、次に原稿を書いてくれそうな新しい書き手も探したいとのこと。さすが・・。こうした普段/不断の活動があの雑誌を支えているんだなあ、とあらためて敬意を抱きました。

懇親会

そのまましばらく知人と喋ったりぼんやりしたりしているうちに、同じ構内で懇親会スタート。

料理はスピーカーディナーや朝食と同じチーム。もりもり料理が出てきて、なくなる端からまた追加。プロフェッショナル!

f:id:note103:20190830185555j:plain

そして地味ながら感動したのはこのトレイ。

f:id:note103:20190830190013j:plain
完璧に取りきった様子

ドリンクを挿せるようになってるんですね〜。これがないと、ドリンクと皿を持っただけで両手が埋まってしまって食べることができないので、テーブル必須になっちゃうんですが、これがあるとテーブルがなくても片手に皿&ドリンク、もう片方の手で食べられて、テーブルいらず! すごい発明です。

たぶん、その分少しケータリングの単価も上がるのではとも思いましたが、選べるなら絶対これにしてほしい・・と思うぐらい良かったです。

そのドリンクですが、牧さん行きつけのバーが出張してくれたそうで。

f:id:note103:20190830185103j:plain

ぼくは2番と5番を飲みました。バーの方々、スポンサーの皆さん、ありがとうございました。

初日の雑感

ということで、本編初日をふり返りました。

この日のトークはすべて日本語でしたが、だから余計にというか、なるべく今までに見たことがないような、自分からかけ離れたものを見るように意識しました。
しかしそのわりに、けっこう要素としてはすでに知っていたり、関心が近いものが多かったのが面白かったですね。

風穴さん、稲尾さんといった編集界の諸先輩方に会えたのもよかったです。編集魂(?)が図らずも磨かれました。

朝食・コーヒー・懇親会といった食事系も途中で不足したりすることもなく、食べたいだけ食べれて大変満足でした。

ちなみに、終会後は翌日に向けてサクッと宿へ帰りましたが、川(荒川?)で続きをやっていた人たちもいたようでした。ぼくはもうお酒は十分でしたが、水を持って参加してもよかったな、と後から思いました。とはいえ、それをやったら翌日それなりに大変だったかもしれず、この辺はタイミング次第ですが・・。

最終日についてはまた別記事にまとめます。お楽しみに。