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番を飲みました。バーの方々、スポンサーの皆さん、ありがとうございました。

初日の雑感

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

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

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

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

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

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

builderscon 2019に行ってきた(1)〜スピーカーディナー&前夜祭〜

2019/8/29〜8/31に東京は北千住の東京電機大学千住キャンパスにて開催されたbuilderscon 2019に参加しました。

builderscon.io

感想ブログ、後になるほど書くのが大変になるので、早いうちにワッと書いていきます。
ただし、参加日すべてについて一気に書くのもめちゃ大変そうなので、何回かに分けて書く予定です。

マイスポンサー

先日のRubyKaigiに続き、今回も私が所属するヴェルク(株)の支援により、コンプリートパック・チケットにて参加できました。イベントには全日フルで参加しつつ、このうち会社の営業時間・営業日とかぶる部分は出勤扱いにしてもらいました。心からの感謝と尊敬を捧げます。

DAY0: スピーカーディナー

まずは前々夜祭的なこちらから。

blog.builderscon.io

スピーカーディナーは言ってみればbuildersconの目次のようなイベントで、本編でスピーカーの皆さんがどんな話をするのか、というのを事前にリサーチできる機会になっていてとても良かったです。

主宰の牧さんによれば、本番の2日間ってスピーカーにとっては自分の発表のことで手一杯で、他のトークのことを気にする暇がなかったりするだろうから、その補完的な情報交換とかもできればいいよね、みたいな目的もあるようでした。

ぼくはじつはこのちょっと前に各種事情によりやや疲れていたものの、コンプリートパック・チケットにこれの参加権も入っていたので、「行かないともったいないよなあ・・」と思ってエイヤと参加したのですが、結果的にはそれが大正解で、仮に来年コンプリートパックがなかったとしても、この会があればマストで参加します。そのぐらい本編をより楽しむための材料にあふれていました。

参加者の割合的にはスピーカーの方がずっと多くて、ちょっとびっくりしましたね。非スピーカーの自分、少数派じゃん、と。

とはいえ、だからといって寂しくなるようなヒマもなく、各スピーカーによる1分間ピッチや後述のような要素を終始楽しみました。

健康トーク

本編とはコンセプトが合致しないけど牧さんが聞きたいから、という理由でこの日唯一長めの時間をとって発表されたのが@mogettaさんで、スライドはこちら。

docs.google.com

いやー、素晴らしかったですね。ぼくは全然筋トレその他、こういったことに関心はなかったというか、関係ない世界だと思っていましたが、だいぶ引き込まれました。

スライドも非常に作り込まれていて、参考文献集としても良いものだと思いました。

ちなみに、弊社にも筋トレにけっこう本格的に取り組んでいる人がいるので、このあと社内にシェアしておきます(笑)。

フード

フードもおいしかったですね。とくにおにぎりに生ハムとキュウリが乗ったものと、ゆで鶏にネギソースがかかったもの、あとデザートのチーズケーキがちょっと忘れられないぐらいおいしくて、本編の方の朝食&懇親会で同じチームが料理を提供していたので、そのときに声をかけてその旨伝えたほどでした。ありがとうございました。

f:id:note103:20190828190355j:plain
スポンサーのハートビーツさんによるご挨拶

f:id:note103:20190828191230j:plain
食べてる横でどんどん料理を追加していくスタイル。カッコイイ

f:id:note103:20190901202229j:plain
問題のチーズケーキ。Twitterでもだいぶ好評だった

DAY1: 前夜祭

どこを「DAY1」とするかちょっと迷いましたが、公式サイトではこの日から開催期間としているので、これをDAY1とします。

この日は最初、終日会社を休むつもりだったのですが、時間を確認したら18時スタートということだったので(前夜祭なので当然でしたが)、さすがに1日休むのはどうか・・と思って13時までは自宅でリモートワークをして、それから準備に取り掛かかりました(それまでまったくやってなかった)。

ちなみに、会場は家からそこそこ近かったものの(会社より近い)、それでも片道1時間ぐらいかかる距離だったので、会場と同じ北千住に宿を3泊取っておきました。

なので、この時にはその分の着替えを用意したり、充電器や常備薬などをまとめたりとなんだかんだで用意するものが多くて出発はギリギリに・・。

北千住駅にいきなりハマる

その後、駅すぱあとで調べながら北千住駅に着くまでは余裕でしたが、駅がまさにダンジョン。この駅の複雑さ・問題性については、以下のグレイト記事を事前に読んでいたので一応頭に入っていたはずでしたが・・

blog.builderscon.io

それでもまだちょっと甘く見ていて、何も考えずにホームから一旦「普段どおりに」階段を降りたら、なんか景色が変。「普通だったら」あるはずの方向や場所に『出口』の表示もなければその雰囲気すらない。どこに向かっても別のホームにしか行けない、別の電車にしか乗れない仕組みになって見える・・。

・・オ、俺は外に出たいんだ!出口!出口を教えてくれ!と、軽くパニックになりながら(もう前夜祭の開場時間を過ぎてたので)、「あ、そっか、最初に階段を降りてしまった時点でもう間違っていたんだ・・」とふと気づいた頃、ちょうど『出口』と書かれた中途半端な大きさの看板が目に入って、それが「もう1回ホームに上がっとけ」と道順を示していたので、観念して再び階段を登りながらあっちこっち行きつつようやく出口へ。

件の記事にもちゃんとこのように書いてあったのですが、読めてなかったですね・・。

プラットホームから下り階段・エスカレータを利用すると千代田線方面に向かってしまいます。くれぐれも下らないようにしましょう。

しかし帰りにも思いましたが、北千住駅の道案内って、かなり頑張ってるとは思うんですが、基本的に「すでに駅の構造を知ってる人」がその認識を確かめるために書かれてる感じで、「初めて来た人」にはだいぶ効果が薄い気がしますね。

たとえば東武スカイツリーラインって半蔵門線とつながってるんですが、それを示す解説がほとんどないので、元々そのつながりを知ってる人じゃないとどこに行けばいいのかまずワカランな・・と思いました。

前夜祭トーク

なんとか駅を脱出した後は、荷物が多かったので一旦宿にチェックイン。おそらく会場ではノベルティをもらえるはずなので、必要最小限のものだけ持って会場へ。

会場で受付。コンプリートパックのネームカード&各種ノベルティをもらって場内へ。今回のノベルティ、大ぶりながら軽いリュック付きで、これはナイス!さっそく通勤で使いたい、いや使います(笑)。シンプルな作りでとてもいい。

場内で缶ビールとつまみを取って着席。その後はトークを聞きました。

1つ目のトークはこちら。

builderscon.io

イベント全体を通して1発めだったのでけっこうプレッシャーあったのでは、と思いましたが、すごく力が抜けたイイ感じのトークで楽しみました。技術的にも「うわあ、こんなことできるの」と目が覚める感じで、とくにホロレンズって実際にどういう風に動くのか、テレビとかネットでは見たことがあったものの、目の前で使っている人って見たことがなかったのですごい新鮮でした。早くもbuildersconっぽい。

とくに、笛を吹いたらホロレンズ経由で信号が送られてドローンが飛ぶ、という最後の例。かなりウケました。この突飛な発想はなかなかできない。才能を感じます。

2つ目はこちら。

builderscon.io

MySQLでパウンドケーキ(とクッキー?)を焼くというもので、元になった記事はこちら。

gihyo.jp

あのガムテープでオーブンを常にオンの状態にしておくというハックがウケました。あとはMySQLの2つめのイシューで「MySQLではトーストを焼けない」というのがあったらしくて、その辺の知見も面白かったです。(これも上記記事で解説されています)

3つ目はこちら。

builderscon.io

おそらくこの日一番の「盛り上がったで賞」という感じでしたが。発表の元になった記事はたぶんこちらで、

qiita.com

結果としてはこのような感じでしたが(ビルコン用に用意された動画みたい)。

www.youtube.com

www.youtube.com

もうこの発表はね・・とにかくトークが面白かったですね。圧巻。どうすれば人が笑うのか、という構造をある程度わかってて話を進めている感じがあって、非常にリラックスしながら終始笑いながら聞きました。

そして4本目。

builderscon.io

じつはというか、これはちょっと複雑な問題をはらんだ発表で、後からCoC(行動規範)絡みの議論がしばらく起こりました。

会場で聞いていたときの素朴な感想としては、初めのうちはマッチングアプリの概要や課金の仕組みみたいなものを見ながら「そんな風になってるのか〜(知らなかった、を知ったなあ)」と感心して聞いていましたが、途中ぐらいからちょっと説明の中で女性をモノ扱いしているように感じられてしまうくだりがいくつかあって、「ん〜、なんか・・居心地わるいな」と思い始めていました。

なんというか、この話って会場にいる女性、普通に嫌なんじゃないかな・・と。

その後、感想ツイートなどで問題性を指摘するものがいくつか出てきて、「ああ、やっぱりそう思ってた人けっこういたんだ。ですよね・・」という感じになったり。

ただ、上記で「複雑」と書いたとおり、案外現場にいると、サッと動いて「それアウト!」とも断定しづらい事情はいくつかあって、第一にトーク全体の方向としてはあくまで技術にまつわる話をしているので、その「主題は技術」という前提が、ある種反応を「遅らせた」みたいなところがあったように思っています。

それから、これはどこか反フェミニズム的な考え方にもつながりそうなんだけど、結局そのマッチングアプリって「どっちもどっち」感が醸されているというか、「たしかに男性も女性をモノのように見るかもしれないけど、逆も然りじゃん?」という見方を許すサービスでもあるので、「あくまでマッチングアプリに関する話です、出てくる女性も女性全般を想定しているのではなく、このサービスの利用者に限定した話です」みたいな見方もありうることを考えはじめると、「もしかして許容すべきなのか・・?」と思えてしまう部分もあるというか。

まあ後から冷静に考えれば、「聞いてる側が微妙になってる時点で駄目でしょ」とは簡単に言えるわけだけど、現場で即ストップするというのは、よほど事前にそういう状況を強く想定していないかぎり、難しかったんじゃないかな・・というのが現時点でのその現場に対する考えです。

それから、今回の発表者およびその段取りを進めた人たちはおそらくまだ若い人たちで、きっとそういうことに慎重になるだけの知識や経験が少なかったのだろうとも思います。となれば、それはもう各個人だけの問題ではなく、彼らを取り巻く会社・友人・家族などの社会的な不備であり問題でもあるわけで、その意味でも個人を責めるのではなく、関わる人々全体の責任として受け止めるべき部分もあるのかなと。

なお、この問題に対して「何が悪いのかわからん」的な反応もゼロではないようですが、それについて言えることはシンプルで、わかろうとする気がない人には何を言っても無駄です。なぜなら、その人は何を言われても「それじゃわからん、俺を説得してみろ」とさえ言えば常に勝てる無敵の人だからです。

だから大事なのは、そういう不毛な戦いをすることではなく、共に幸せに暮らせる社会を作るために力を合わせていける相手と、議論を積み重ねながら、より豊かな場所を作り続けることだと思います。

次回予告

さて、いつもの私ならこのまま脇目もふらずに翌日(本編初日)の話に入っていくところですが、各日の午前・午後および懇親会などのトピックが待ち構えていることを考えると、記事がかなりの長尺になることが予想され、かつその推敲(というか修正)も大変な量に膨らんでいきそうなので、一旦ここまでにします。

この後の内容的には、たとえばWEB+DB PRESSの寄稿でお世話になった編集長の稲尾さんとお会いしたり、同じく編集系で凄腕技術編集者・執筆家でらっしゃる風穴さんとお会いしたり・・などの話は忘れず書いておきたいところです(忘れないようにメモ)。

あとは朝食、昼食、懇親会・・(食べ物ばっかりですが)とかもたぶん含めます(メモ2)。

お楽しみに!

ふり返る『WEB+DB PRESS Vol.112』寄稿録

少し前にもお知らせしましたとおり、8/24発売の『WEB+DB PRESS Vol.112』のリレー連載「Perl Hackers Hub」に寄稿しました。

note103.hateblo.jp

記事のタイトルは、「自作ツールによる日常業務効率化 〜 初歩的なコードだけで身近な問題を解決!」です。Perlの連載なので、ここで言う「ツール」とか「コード」はPerlのそれですね。

その他、掲載誌の目次など詳細情報については下記をどうぞ。

gihyo.jp

執筆に至る経緯など、大まかな話は前回書いたので、今回はその具体的な内容についてまとめてみたいと思います。

執筆初期の諸問題

なにしろ『WEB+DB PRESS』なんて言ったらもう何年も前から読んでいましたし、ぼくが知っているプログラマーのうち読んだことがない人なんてどれだけいるの? というぐらい知られた雑誌ですから、話をもらってから引き受けるまでは一瞬でしたが、いざ取り組んでみると想定外の問題がいろいろと噴出・・。とくに工程前半のテーマ設定には苦労したので、その辺りから。

テーマ検討

最初に話をもらった時点で大まかなテーマとして提案されたのは、「大掛かりではないけどつど便利に使えるPerl活用法」みたいな、「小道具としてのPerl」みたいな、いずれにしてもまさにぼくがいつもやっているようなことを、そのままちょっと紹介して、という感じだったと思います。

これについてはぼくとしても、自分が書けるとしたらそんなネタだろうな〜と思っていましたから、「ではそれで。」という感じでスムーズにスタートしたのですが、実際に書き始めてみると、いやこれってそんなにシンプルなテーマでもないな・・ということがわかってきました。

というのも、第一にどうしてぼくがそういう「小ネタ的なプログラム」を量産しているのかと考えてみると、それはぼくが「大掛かりなプログラムを書けない(そのための技術がない)」からで、つまりそうした小さいプログラムの背景には、ぼくが「非エンジニア」であることが密接に関わってるんですよね。

だから、対象のコードについて何か書こうとすると、どうしてもその説明の中で自分の非エンジニア的な側面について触れざるを得なくて、でもこれって文章全体を通してみるとけっこう邪魔というか、テーマをボヤけさせるノイズにもなりがちなんですね。

もう一つ、今回は既存ツールの概要やTIPSを紹介するのではなくて、自作のコードを示しながら解説する体を取ることになるので、ということは上記の「小道具としてのPerl」や「非エンジニアである私」といった要素に加えて、「自作ツールのお披露目」という、これはこれでちょっとレイヤーが異なる要素が生じてきます。

で、当初はこの辺りの切り分けをほとんどしないまま、「まあ、とりあえず書いてみましょう、なんとかなるっしょ」みたいな感じでスタートしたので、初稿ではまさにそれらが渾然一体となったものが仕上がってしまったのですが、その問題点をメイン監修者の牧さんからズバッと指摘されまして、それで対象とするテーマをグッと絞り込むことになりました。

それでどうしたかと言うと、ある意味では最初期のテーマ(「小道具としてのPerl」)に立ち戻りつつ、「非エンジニア」の要素は最小限まで減らして、話の軸としては「初心者でも扱えるPerlの基礎構文だけで、便利なツールが作れる!」みたいなことにフォーカスすることにしました。

どうもぼくの性格・指向的には、ついあっちこっちに話題を飛躍・拡散したくなりがちなんですが、とにかく「基礎構文だけで便利なツール」という点に軸足を置いて離さない、ということを考えるようにした、という感じでしょうか。

で、この原稿はたしかアウトライン(見出し案)を3月から書き始めていましたが、このテーマに定まったのは・・結局5月の半ばぐらいでしょうか。その間もけっこう休みなく書いていたので、だいぶ時間がかかりましたね。

懸念と対策

さて、そんなふうに具体的に書き進める中で、テーマとは別に、いくつか新たな問題が出てきました。

と言っても、これはあくまでぼく自身が問題視していただけで、他の人から言われたわけではないんですが、簡単に言うとぼくのコードの正当性というか、妥当性というか、信憑性みたいなものが不安だなと。というのも、ぼくが普段書いてるコードって完全に自分の中に閉じているもので、一応GitHubに公開しているものも少なくはないですが、その内容が間違っていたからって誰が困るものでもないので、ようは他人のレビューというものをほとんどまったく受けてないのですよね。

なので、そんなコードをいきなりWEB+DBに載せるなんてできるわけがないし、直すったってどこから直したらいいのか😇という感じなので、こういう悩みは他のプログラマーの人が執筆する場合に比べて、けっこう独自のものだったのではないかなあ、と思います。

もちろん、そのために監修の皆さんがいらっしゃるというか、掲載にあたっては事前にコードもチェックしてもらえるわけですが、とはいえ対象によってはそれなりに膨大なコードになるので、実際にそれを全部手元で動かして確認してもらうとかはちょっと現実的ではないし、仮にそれをやってもらったところで「直せ」と言われて直せるとも限らないし、さらにはそんなふうにコードを直したら当然文章の方だって影響を受けるはずだし、というのでこれもまたなかなか大きめの懸念に。

で、じゃあどうしたかと言うと、とにかく誌上に出すコードは可能なかぎり初歩的・基礎的なものにとどめて、コード周りの推敲が最小限になるようにしました。

これによって、コードとそれに伴う文章を延々直し続けるような事態は避けられますし、文章もメインテーマの「基礎的なコードだけで便利ツールを作る」を維持しながら仕上げることができます。

デメリットとしては、一部のトピックでは具体的なコードを示せず、「あとはGitHubを見ておいて」みたいになっているので、そこで技術的な物足りなさや違和感を感じさせてしまう可能性もあるなとは思いましたが、それはもう、すみませんがそういうものとしてお受け取りください、という感じで割り切ることにしました。

記事構成

そんな感じで徐々に固まっていった記事の中身は、大きく4つの章で構成されています。

1. 基礎構文でツールを作る
2. シェルコマンドを組み合わせる
3. ほかのツールを組み合わせる
4. 最小限のコードで書く

それぞれひと言で言ってみると、1番では主にPerlだけで書いた超シンプルな初心者的コードを、2番ではそれにシェルコマンドを組み合わせたものを、3番ではpecoなどの他のツールを組み合わせたものを、そして4番では再び超シンプルな小ツールを紹介しています。

この章立てもかなり終盤の方まで編集さんと議論しながら詰めていったのですが、原則的には、「単純なものから複雑なものへ」とか、「昔のコードから最新のコードへ」みたいな時間の流れを意識して組みました。

記事解題

といった前段を踏まえつつ、以下ではその各章で取り上げたトピックや関連リンクなどを記していきます。

1. 基礎構文でツールを作る

ここでは上記のとおり、Perlだけで書かれた単純な、しかし自分の実作業を飛躍的に効率化してくれたツール群を紹介しました。

まあ、あまりにもシンプル過ぎて、これを「ツール」と呼んで良いのか、という問題もありそうですが・・とはいえ、ここで紹介しているコードは、ぼくが実際の仕事の作業をする中で「これプログラミング使わずに全部手作業でやっていたらめっちゃ大変だったろうなあ」と実感していたものばかりで、なおかつぼくのプログラミング初期の頃から使っていたものなので、記事の最初はとにかくこれを取り上げなきゃ、と思って紹介しました。

ちなみに、ここで取り上げた各ツールの利用シーンとしては、ぼくがフリーランス時代に手がけていた音楽全集の編集作業がかなりの割合を占めると思います。

commmons.com

それもあって、記事中では当時の詳しい素材データなどもわずかながら例として出していますので、クラシック音楽好きの人には面白がってもらえるのでは・・と少し思っています。

2. シェルコマンドを組み合わせる

ここではMacのopenコマンドをはじめとするシェルコマンドを、Perlと組み合わせる事例を紹介しています。

しかし考えてみると、ぼくが普段書いてるコードって、だいたいここまでに扱ってる技術ばっかりで、それより複雑なものってほとんどないのですよね。

ほんとにプログラミング始めて1〜2ヶ月ぐらいの人でも十分に書けるものだと思うので、そういう意味では(とくに非エンジニアの人には)参考にしてもらえるかもしれません。

具体的なところだと、「複数ファイルの行数や文字数をカウントする」で紹介しているツールは上記の編集者時代に頻用しましたし、あるいは「複数のWebサイトを一斉に開く」とかは我ながら単純すぎてちょっとバカっぽいなとも思いますが、でも地味に便利なんですよね。今でも時々使います。

3. ほかのツールを組み合わせる

メインはこの章だと思っています。ぼくが普段めっちゃ使ってる自作ツールを次々紹介していますので。

とくに、このブログでも何度か紹介しているchocoというツールがありますが、

GitHub - note103/choco

今回扱ったツールの中で何かひとつだけ選べと言われたらこれを選ぶぐらい、ぼくにとっては必須のものなので、これを紹介できたのは良かったなと。

プラス、このツールではその主要な機能を提供するものとしてpecoが使われているんですが、

GitHub - peco/peco: Simplistic interactive filtering tool

そのpecoを開発している牧さんが今回のメイン監修者だったので、なんというか・・今にも逃げ出したいような😱でも非常にありがたいような、得がたい経験をさせてもらいました。

あとは、ぼくがプログラミングを始めた初期の頃から公開しているcarvoというゲーム?みたいのがあるんですが、

GitHub - note103/carvo

これは冷静に考えると便利ツールでもなんでもないんですが(笑)、しれっと含めることができてよかったかなと*1

あとはAgっていう文字検索ツールを手軽に使うためのツールとか。

finds/find-word.pl at master · note103/finds · GitHub

これもかなり使用頻度が高くて、作り始めたときよりも今の方が使ってるかも、というぐらいよく利用してます。

4. 最小限のコードで書く

最後の章はこちらですが、ここでは今まさに会社で自分の業務のために使ってるツールを紹介しています。

少し前にTwitterでこんなことをツイートしましたが、

そこで言ってるのがこのツールです。

GitHubだとここに公開してありますが、

finds/find-file-open.pl at master · note103/finds · GitHub

あまりにも短いので誌上でもほぼ全部載っけています。

詳しい用途については記事で解説しているので、そちらをご覧頂きたいですが、とにかく出社して編集仕事をしているときは必ず使っているので、そのつど「ああ、作ってよかった」と思っています。

実工程のふり返り

ここからは、現在の目で工程全般のふり返りを。

執筆・編集工程

ええと、曲がりなりにも過去10年にわたって編集の仕事をしてきて、その間にはプロの執筆家の方々と毎日のようにやり取りしたり、その原稿を読んだり、時には自分でもテキストを書いたりしてお金をもらってきたわけなので、最初はどちらかと言うと、同誌に寄稿する他のプログラマーの人たちよりも自分の方が「本業の人」として取り組んでいる自負があったのですけど、いやあ・・やってみるとめちゃめちゃ大変で、「本当にみんな、こんな大変なことをいつもやってるの??」という思いが何度も湧き上がりました。

上記のとおり、この作業はたしか今年の3月からスタートしていて、まあ仕事をしながらではありますけど、でも土日はかなり使っていたし、平日も仕事から帰宅後に深夜まで及んで対応したりして、それでも入稿*2の数日前まで修正してましたからね・・。

普通に本業で編集・執筆やっていたときと同じぐらいの労力および時間を費やしてようやく間に合いました・・みたいな感じだったので、ほんとに他の執筆者も編集さんもみんなすげ〜な〜・・というリスペクトの気持ちでいっぱいです。これで税別1480円、めちゃめちゃ安いですよ(笑)。180ページほどの中にとてつもない価値と手間が詰まっています。

GitHub

以下はどこまで詳しいことを公開していいのかわからないので概要までですが、今回の記事はGitHub上で進行しました。これもありがたかったですね。

ぼくは基本的に、日本語テキストの編集もじゃんじゃんGit管理(というかGitHub管理)できたほうが良いと思っているので、環境的には申し分なかったです。

ちなみに、WEB+DB編集部がGitHubを使っている、という話は以前に「GitHub Kaigi」というイベントに参加したときに、編集長の稲尾さんが登壇しているのを見てざっくりは知っていたんですけど、

gihyo.jp

まさかそのフローを自分も体験できるとは(笑)5年前の同会場では想像もできなかったですね。(細かいフローはだいぶアップデートされてると思いますが)

GitHubの良いところは、とにかく前のバージョンを残せる、見返せる、というところだと思います。もちろん、消したい過去も残るわけですが、基本的には同じ目標に向かって進むひとつのチームですから、仮に恥ずかしい間違いや操作ミスがあっても、それはそれでべつにいいや、という感じで遠慮なく使わせてもらいました。

Issueなどの機能もけっこう初めの方からバリバリ使って、思ったことはなるべくそのつどオープンに伝えるようにしました。この辺は生来の空気読まない気質が良い方に作用したかなと思っていますが、まあ同時に、その意見言い過ぎなところがいつまでも執筆・編集が終わらない遠因になったのかも・・という気も今してきましたが。

話を戻すと、GitHubを使うとテキストベースで正の情報をアップデートしていけるので、それがありがたかったです。最終的には、本番デザインに組んだデータの方が正(最終版)になるわけですが、それでも簡易的なレイアウトや文字数はギリギリ最後の方までGitHub上のプレーンテキストでチェックできるようになっていたので、この辺はやっぱり技評さんならではの技術力と言いますか、助かりましたね。

コミュニケーション

編集チームとのコミュニケーションも円滑で良かったです。編集長の稲尾さん、この1コーナーにここまでコミットしてくるのか(笑)と驚くぐらいすごいスピードで動いてくださって、これがプロの仕事・・という感想でした。硬軟のバランスというか、アメとムチの出し方というか(笑)あれよあれよという間に執筆モードに誘導され、必要な環境がセットされ、気がついたら集中して取り組んでる、みたいな感じでした。

工程の後半は同編集部の渡邉さんに担当してもらいまして、こちらも毎回迅速なレスポンス、かつぼくのめんどくさい相談にも深いレベルで検討&回答してくれて、ありがたかったです。

とくに良かったのは、お二人ともレス(返信)が確実に来るんですよね。というのも、個人的にはレスって、べつに「早ければいい」というものではなくて、一番良いのは「想定どおりのタイミングで来る」のが良いレスだと思っていて、その意味で最悪なのは「めっちゃ早いときもあればまったく来なくなるときもある」というやつで、逆にその日のうちに返事が来なくても、毎回「午前の問い合わせには翌日午前、午後の問い合わせには翌日午後に返事が来る」みたいにパターンが一定なのがありがたいというか。あるいは事前に予告されていて、そのとおりに返ってくるとか。
そういう、ある意味基本みたいなところがきちんとされていてありがたかったな、と。

監修の牧さんにも、pecoの使い方でどれだけ怒られるかと戦戦恐恐としていましたが(←大げさに言いました)、改善点の提案なども論理的・丁寧に示してもらって、とてもやりやすかったです。

終わりに

ということで、丸々4ヶ月ほどにわたって取り組みました執筆もようやく終わりまして、またこの解題をもって本件全体についてもひと区切りかなと思います。

あらためて、今回の機会を与えてくれた id:papix さん、編集部・監修者の皆さん、ありがとうございました。
そしてまだ見ぬ読者の皆さん、どうぞお楽しみください。『ノルウェイの森』で小林緑が言った、以下の言葉を捧げます。

そのだしまきよ。心して食べてね。

WEB+DB PRESS Vol.112

WEB+DB PRESS Vol.112

  • 作者: 樋口剛,篠田典良,谷口慶一郎,大沼由弥,豊島正規,三村益隆,笹田耕一,牧大輔,大原壯太,門松宏明,鈴木恭介,新倉涼太,末永恭正,久保田祐史,池田拓司,竹馬光太郎,はまちや2,竹原,粕谷大輔,泉征冶
  • 出版社/メーカー: 技術評論社
  • 発売日: 2019/08/24
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

*1:一応、「初歩的なコードを組み合わせて自分に必要なものを作った」という意味ではテーマの範疇だと思っていますが。

*2:印刷所にデータを渡すこと。

RubyKaigi 2019に行ってきた

すでに4ヶ月過ぎてしまいましたが、2019/4/17(水)から4/21(日)まで、RubyKaigi 2019に参加するため福岡に行ってきました。

rubykaigi.org

大事なことなので初めに書きますと、今回の交通・宿泊費および参加費は会社に出してもらいました。またそのうち営業日は業務扱いで、有給も消化せずに参加できました。

そんなヴェルク(株)はRubyを使って受託開発および自社サービス「board(ボード)」の開発・運営を行っています。現在はQAエンジニアを募集中ですので、ご興味おありの方はぜひどうぞ。

RECRUIT | ヴェルク株式会社

・・と、そんなことを言ってる私は本来開発もRubyもまったく関係ないカスタマーサポート兼社内外ドキュメントの編集者ですが、6年ほど前から趣味でプログラミングをやっていまして(Perlで入門)、当時はフリーランスの編集者でしたが、その頃からYAPCには毎年参加していたので、昨年末にヴェルクに入ったことをきっかけに「次のRubyKaigiには行っておきたい、Rubyコミュニティ・デビューしたい」と思いまして、エイヤと参加した次第でした。

前置きは以上です。以下、開催期間中に毎日取っていたメモを元に記録をまとめます。

目次

DAY 0

往復の飛行機はスターフライヤーを使いました。以前に山口へ取材に行ったときにも一度使いましたが、その時の印象がとても良かったので。今回も最高でした。また機会があれば使いたいと思います。

イベント前日に到着したものの、時間はすでに夕刻過ぎで、クルーズ等の懇親会にも申し込んでおらず、かつ朝から何も食べていなかったことにようやく気づきながら福岡の夜を彷徨しかけたところ、当地で働くPerl Mongerの@itokenさんから声をかけてもらって、知る人ぞ知る天神の「屋台屋ぴょんきち」で初日からディープな屋台飯を頂くことに。いきなりの豚骨ラーメン@屋台を堪能しました。

f:id:note103:20190417211249j:plain
ドリンクは終始サワーと芋焼酎。食べ物はこの他に焼き鳥・餃子・干物など。

DAY 1

前夜は想定外の屋台飯にテンションが上がって飲み過ぎてしまい、初日の朝は久しぶりの二日酔い*1。しかしMatzさんのキーノートを見逃すわけにはいかないので、なんとか支度を済ませてホテル近くから会場に向けて路線バスでいざ移動!*2 と思ったら、Googleマップで示されているバス停にいつまでもバスが来ない。*3

え、どうしよう・・と焦るもそのまま待っているわけにもいかないので、少し歩き出してからちょうど通りかかったタクシーにスイッチ。さらに大渋滞に阻まれながら、たしか10:00ジャストぐらいに会場着。料金は1,200円ぐらい?(おぼろげ)

いきなり遅刻かい・・とヘコむもとにかく前進、3階のメインホールへ行くまでにノベルティをいろいろ取れるようになっていたので、パーカー*4、Tシャツ*5その他主要なものをゲットしてからMatzさんが待つメインホールへ。

ホールに到着するとまだスポンサーセッションをやっていて、GMOペパボさん、Raksulさんの発表ののちに初日最初の目的だったMatzさんのキーノートを聞くことができました。幸運・・。

出張屋台

ほどなくお昼。なんと会場下の広場に数台の屋台が登場し、しかもすべて無料で食べられる! ・・こりゃすごい(笑)。

f:id:note103:20190418120352j:plain
このときは時間も早かったので人はまばら。この後大変な行列になる

f:id:note103:20190418120724j:plain

ぼくはまだ二日酔いが抜けきっていなかったので、胃に優しいものを・・と思ってふぐ天うどんを頂きました。

f:id:note103:20190418121537j:plain

この時、屋台の中で食べることもできましたが、近くに設置されたテントで食べることもできたので、そこまでテイクアウトで運んでズルズル。すると、「ここ、いいですか(英語)」という感じで海外からの参加者さんがやってきたので「Yes!」と元気に返事をして少しおしゃべり。なんでもロンドンのBBCから来たとのこと。ぼくは英語ほとんどできないですが、たまたまその脇に座っていた方が話を進めてくれて、なるほどBBCでもRuby使ってるんですね、なんて話をしばらく。

午後のメニュー

午後に入ってからはまずこちらを見て、
Terminal Editors For Ruby Core Toolchain - RubyKaigi 2019

こちらを聴いて、
Determining Ruby Process Counts: Theory and Practice - RubyKaigi 2019

それから話題のコーヒー店「猫廼舎 (ねこのや)」さんへ。
荒木町(四谷三丁目) 珈琲専門 猫廼舎

猫廼舎さんの出張店を企画・実現してくれたのはSpeeeさん。なんというセンスの良さ!ありがとうございました。
speee.jp

おいしく頂きました。

f:id:note103:20190418141217j:plain

その後は、先日のOSS Gateで大変お世話になりましたようさんの発表を最前列で見て、
Ruby for NLP - RubyKaigi 2019

この日の発表チェックはここまで。全部見ていると疲れるし・・ブースも見て回りたかったので。

スタンプラリーでスポンサーブース巡り

そんなスポンサーブースはとにかく盛りだくさん。見るべきところばっかりでそれも楽しかったですね。

ぼくがこれまでに参加してきたカンファレンスだと、スポンサーさんからのノベルティって入場時にトートバッグに詰めてどさっと渡される、というスタイルが普通でしたが、今回はスタンプラリー形式というか、自分が話を聞きに行った(スタンプをもらいに行った)ブースでノベルティを受け取る、という方式。これだといろんな企業とのコミュニケーションが自然に発生するので、ナイスアイデアだなあと思いました。

ぼくはひとまず、いつもその取り組みを敬意を持って眺めているメドレーさんで絆創膏をもらったり、サムライズムさんのところでヨーヨーをもらったりしました。


igaigaさんにサインを頂く

今回はRuby関連の書籍を2冊持ってきました。

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

初めてのRuby

初めてのRuby

この日はそのうち前者を宿から持参して、タイミングが合えば著者の五十嵐さん(@igaiga)にサインをもらいたいなと思っていましたが、ちょうどこのブース巡りの際に出張版の技術書典みたいなコーナーがあって、そこをぶらぶらしていたら五十嵐さんにお会いしたのでそのままお願いしました。五十嵐さん、快く応じて頂きありがとうございました。

ちなみに、ぼくはとくにサイン集めの趣味があるわけではなくて、自分が愛着を感じた本の著者さんに直接会える可能性があるときに限り、感想や意見を伝えるきっかけとしてその本を持っていって、もしたまたまタイミングが合ったら話しかけて書いてもらう、という賭けみたいなスタイルで頂いています。

これ以前だと、昨年の大江戸Ruby会議07のときにMatzさんに以下の本にサインを頂きました。

オブジェクト指向スクリプト言語 Ruby (ASCII SOFTWARE SCIENCE Language)

オブジェクト指向スクリプト言語 Ruby (ASCII SOFTWARE SCIENCE Language)

こういうのって少し勇気がいりますし、空振り(=会えない)もあるので積極的にはしないのですが、RubyKaigiというお祭り感もあって踏み出しやすかったですね。

ハックスペース

そのブース巡りに前後して、5階に用意されていた畳のハックスペースにも行きました。

blog.notainc.com

充電可能なテーブル付き、そして玉露を無料で頂けるという満たされすぎなシステム。朝からずっとバタバタしていたので、ここでようやくリラックスできました。

ちなみに、ここで当日に見たトークややったことをプライベートなScrapboxにメモしたことで、翌日と翌々日も同じぐらいの時間帯にメモを取る習慣ができて、そのおかげで今この記事を非常に書きやすくなっています。

イベントレポートはすぐ書くに越したことはないですが、それができなくてもとりあえずメモだけでもきちんと取っていれば、4ヶ月後経ってもなんとか思い出しながら書けることを実感中です・・。

有賀さん(@chezou)に挨拶

ハックスペースからそろそろ移動しようかな、と思った頃に、ふと後ろを見ると@chezouさんこと有賀さんがいらっしゃったので、声をかけて少しだけおしゃべりしました。というのも、ぼくは今までYAPCやVimConfへの参加経験はあったものの、RubyKaigiは初めてだったので、その準備というかRuby対策として、以前に有賀さんがホストしていた「rubyist.club」をすべて聴いていたのですよね(真面目〜)。

それが面白かったので、直接「面白かったです」と伝えました。ちなみに、有賀さんは以前にこの記事を読んでいたので顔もすぐわかって、声をかけやすかったです。やっぱりどこかしらで顔を出しておくの、重要だなと思ったり。

blog.team-ai.com

DAY 2

初日の教訓を生かして、福岡の2夜目は早めに休み、連日の二日酔いは回避しました。・・が、この日の朝もオープニングには間に合わず。

というのも、この日は前日の教訓を生かすべく、正しいバス停に時間どおりに着いたつもりでしたが(前日はバス停を間違ってたので)、その途中ですれ違ったバスがなんだか目的のバスだったような? まさか時間より早く発車することはないよな〜・・と思っていましたがそのまさかで、少なくとも3分ほど早く出てしまったようでした。

え、でも、どうせすぐに次が来るんですよね? と思いましたが次は17分後ぐらいで、いや普通に遅刻じゃんということで方針変更。しかしさすがに連日タクシーはつらい・・と思ってGoogleマップで検索を重ねて、博多駅近くから出るBRTという2両編成の快速的なバスをなんとかゲット。結局到着したのは前日より遅い10時10分ぐらいでした。

会場ではこの日から無料の朝食があったはずなんだけど、パッと見ではちょっとわからず。遅れて着いたから終わってしまったか・・とそのまま上階に上がりましたが、後から聞いたところでは朝食用のレストランが別にあったのですね。RubyKaigiではそういった細かなおトク情報が満ち満ちているので、宝探し的にそれらをゲットしておくスキルが求められるな・・と実感しました。

オープニング・キーノート

メインホールに到着すると、2日目のオープニングである@nagachikaさんのキーノートが始まったところで、前の方の空いている席に収まって拝聴。

All bugfixes are incompatibilities - RubyKaigi 2019

このお話、これといった専門的な知識がなくても追っていける内容で、すごく面白かったです。stable versionのメンテナとしてどんなことに気をつけているのか、どんな失敗をしてきたのか、みたいな話をユーモラスかつ誠実に語っていて、最後まで夢中になって聞きました。

キーノートが終わってふと横を見ると、なんと先日のOSS Gateでお世話になったばかりの@swamp09さんがいらっしゃって、しばし歓談。

いやー、朝遅れちゃって・・バスがそのあの・・なんて言っていたら、会場と各地を結ぶシャトルバスのことを教えてもらいました*6。なるほど。もしRubyKaigiを256倍楽しむ方法というものがあるとしたら、事前にRubyKaigi経験者であるところのRubyistにいろいろ教えてもらえ、ということになるでしょうか。なお、swampさんからは「RubyKaigi直前のRejectKaigiに行くとRubyKaigiの見所も教えてもらえるから、出れるならそれに出ておくだけでも違う」とも教えてもらいましたので、合わせてシェアしておきます。

早めのお昼

前日の屋台ではけっこう行列が激しくて、もう並ぶのは嫌だなと思っていたので、2本目の発表はパスして早めに屋台に行って「豚骨Rubyラーメン」を頂きました。豚骨Ruby? はい。この「Ruby」にあたる部分はなんとミートソース。ミートソースmeetsトンコツ。なかなか味わいがたい味わいを得ました。

f:id:note103:20190419115155j:plain

その後、スポンサーブースに戻って未読ブースをひとしきり巡りました。しかしつくづく思いましたが、ぼくは今回エンジニアとしてではなくカスタマーサポート兼編集者という立場(?)での参加だったので、各ブースが想定するお客さんとはちょっとズレていて、それがわずかながらも残念ではありましたね。

といっても、もちろんそれはブースの人たちの問題ということではなく、参加者であるぼくに起因する問題なのですが。つまりエンジニアではないとしても、それに近いぐらいの技術的な知識や素養があれば、ブースの人たちが言うことに対してもっと「なるほど」とか「そりゃ面白い試みだ」みたいなことがわかったのかな、と。

午後のメニュー

その後は、Fromロシアのアンドレイさんの発表を見て、
Yabeda: Monitoring monogatari - RubyKaigi 2019

それからこちらの複合セッションを見て、
RubyData Workshop - RubyKaigi 2019

一旦発表巡りは終了。前日同様にハックスペースへ移動して、その日の記録をScrapboxに取ったり、体を休めたりしました。

さてこの時、ふと同じフロアで開催中の猫廼舎さんの方を見ると、いつもなら常時10人近く行列しているお客さんが3人ぐらいしか並んでない! と気づいて慌ててダッシュ。しかし、目の前のそれに辿り着くまでの数十秒のうちにあっという間に数人並ばれて、結局普通に6〜7人待つことに。

しばらく頭をカラッポにして待っていたら、ちょうど自分の前でそれまでに淹れていたコーヒーが終わったようで、店主の@ogijunさんから「濃さはどうしますか?」と意外な質問が。聞けば、新たにコーヒーを淹れるときに先頭だった人に濃さの希望を聞いて、その後の7〜8人は(つまりその分が終わるまで)その味で提供されるというめちゃ重大な責任が課せられたようでした。

で、僕の回答はこちら。

ちなみに、先頭で待つ特権として、しばらくogijunさんとお話しすることもできました。ぼくは以前からogijunさんの存在は知っていたのでその話とか、自分はエンジニアではないけどYAPCは何度も行っていて〜、とか。その辺りを起点にogijunさんからもYAPCとRubyKaigiの関係とか、へえ〜と思うようなことをお聞きできて、とても印象深い時間になりました。

Lightning Talks

LTにはプロポーザルを出していましたが、あえなく落選。でも、一連の発表を見て納得感がありましたね。この中に混ざったらとても太刀打ちできなかったなと(笑)*7

知識的・技術的にまったくついていけない部分も含めて、どれも楽しく見ましたが、令和ネタが続いたあたりが個人的には盛り上がりました。

After show

RubyKaigiから少し離れますが、この日の夜にはかつて新宿&池袋のジュンク堂で働いていて現在福岡のジュンク堂で文芸書を担当している友人M氏の元を訪れて、どこに行っても変わらない同氏ならではのイカレた棚を堪能しました。

f:id:note103:20190417194110j:plain

f:id:note103:20190417195212j:plain
ものすごい手作り感。上の方に柴崎友香さんの名前がありますが、勝手に使ってるのではなくてご本人と連絡取った上で飾ってるらしい。
f:id:note103:20190417195057j:plain
こういう手書きポップも著者さんに来店時に書いてもらってるらしい。さすがとしか。

その後、同地が誇る個性派出版社「書肆侃侃房(しょしかんかんぼう)」が運営するブックカフェ「ajiro」に連れて行かれ、店主のFさんを紹介するから、と言われたものの、何だか外から店を見る限り貸し切り? みたいになっていて、なおかつ何かテレビ取材? みたいのが入っている・・「(私)これ今日ダメじゃないの?」「(M氏)いやあ、おかしいですね・・とりあえず出直しますか・・」とか言って退散しようとしていたら、中の方でF氏がぼくらに気づいたみたいで、「どうぞどうぞ!」とか言われて中に入ると、ちょうどその時間帯にいつもajiroで開催されている『短歌の会』みたいな集まりをNHK福岡の取材班が取材していたところらしく、にもかかわらず「あの、じゃあほら、二人も参加して!」とかいきなり無茶に誘われて、そのまま『短歌の会』に合流&お題の歌に感想を述べたりテレビ取材も受けたりすることに・・。

終わってから、ディレクターさんに「名前と年齢教えてください」と言われたので名刺交換したりしましたが、あれは本当に放送されるんでしょうか・・? 4ヶ月経ってもとくに音沙汰ナイですが。 🤔

その後はF氏が「前から行ってみたいと思ってた」という「戦国焼鳥 家康 5号店」へ。

謎の「ルビーサワー」で怒濤の1日を打ち上げました。

f:id:note103:20190419234701j:plain

DAY 3

いよいよ最終日。

前夜の「戦国焼鳥」は深夜に及び、終電も逃したので徒歩で天神から博多のホテルまで帰りましたが、目覚めはスッキリ。二日酔いもありません。

路線バスチャレンジは2度にわたり失敗しているので、この3日目はSmartHRさんのスポンサードによるシャトルバスで会場へ。助かる〜〜!

f:id:note103:20190420093136j:plain

最終便だったので時間的にはギリギリでしたが、前日のように時間前に出発されるとか、前々日のようにバス停を間違えるとかのミスは回避できるのでとにかく安心。参加者さんのオレンジパーカーも良い目印になりました。

午前のメニュー

到着して1発目は「Ruby Committers vs the World」。
Ruby Committers vs the World - RubyKaigi 2019

内容的にはわかったり、わかんなかったり、という感じでしたが、全体を通して楽しみました。笹田さんの進行ぶりも良かったですね。

その後は、こちらを聞きました。
The Selfish Programmer - RubyKaigi 2019

英語トークということもあって少し難しく感じるところもありましたが、イラストも多用されていて、おおむね把握できたと思います。共感するところが多い印象でした。

で、お昼。この日も少し早めです。前日、ふと見ると屋台ではなくお弁当を持って歩いている人も多くて、「どこでゲットできるんですか?」と聞いたら「中にあるよ」と教えてもらっていたので、最終日はこれをゲットしようと思っていました。

果たして、望みどおりのイイ感じのお弁当をゲット。じっくりゆっくり頂きました。

f:id:note103:20190420123004j:plain

幕間

この後はしばらくまたブース巡り。最終日ということもあって、これまで見れていなかったブースを駆け足で。

印象的だったのは、前年のbuildersconで少しだけお話ししたStripeのエイミーさんと会えたことですね。

builderscon.io

あれ、もしかしてエイミーさんですか、と聞いたら思い出してくれて、しばし歓談。このときにもらったStripeのノベルティのノート、軽くてカッコよくて、気に入ってます。

それで思い出しましたが、この会場は空間自体は広々しているものの、それなりに動線が限られているので、なにかと人に出会う、すれ違う機会が多くて、ことあるごとに「あ、どうも」みたいに対面してはそのまま少ししゃべる、みたいなことができて良かったです。

上記のロシアから参加していたアンドレイさんも、発表のときにオリジナルキャラクターのステッカーがあるよ、と言っていたので、廊下ですれ違ったときに「まだステッカーありますか」と聞いたら、「下のロビーに置いてあるけど、一緒に見に行こう」と言ってそのまま数フロア同行してゲットしたり。

あとは少し前に宣伝しましたが、その頃からちょうど『WEB+DB PRESS』のための原稿を書き始めていて、そのコーナーを担当されている同誌編集長の稲尾さんにお会いできたり。「なにか問題ないですか?」と不意に執筆状況について聞かれたので、「まあ、とりあえず書いてみます、たぶん大丈夫です」とやや自信ありげに返事をしましたが、全然大丈夫じゃなかったことがわかるのはその2ヶ月ほど後のことです。これについてはまた別の記事で・・。

午後のメニュー

そんなこんなを挟みつつ、午後の最初は柴田さんのこちらを聞きました。
The future of the Bundled Bundler with RubyGems - RubyKaigi 2019

こちらもそんなに専門的な知識がなくても最後まで楽しめる内容でした。すごい! えらい! 尊敬する! と思うことしきりでした。

その後、小休憩を挟んで行ったのがこちら。
Play with local vars - RubyKaigi 2019

とにかくグレイトワーク、グレイト発表! すーごく面白かったですね。ujihisaさんは前年に行われたVimConf 2018でもスペシャルな発表をされていましたが、その印象をさらに塗り変えるような素晴らしい発表でした。

ちなみに、ujihisaさんはそのVimConfの発表後にこんなことをツイートしていて

もうまさに、まさにそれだなあ、と思いました。楽しかったです。

その後はクロージングのキーノートをホールで聞いて、来年の予告。

f:id:note103:20190420184244j:plain

行きます!

アフターパーティー

終演後は、トレジャーデータさんご提供のアフターパーティーへ。お店がちょっと見つけづらい場所にあり、かつそれなりに本会場から離れていたのですが、自分的にはけっこう頑張って早めに到着したつもりが、すでにだいぶ人がいてびっくり。

毎度のことながら、こういった場では知り合いがいない方がデフォルトなので、飲み物を取ってその辺の空いてるスペースに収まってぼんやりしているうちに、いつものようにちょうどその辺りにいる方々とおしゃべり。とくに目的もオチもなく、ただ思いつくまま喋って時間を過ごすこの感じ、ぼくは好きです。単なる世間話というのでもなく、共通の話題があるというのがいいのかも。

とにかく英語率が高いので、否応なく英語をしゃべる機会にもなります。上記のアンドレイさんがいたので少し話したり、その場にいた人に彼をまた紹介したり。

あとは、たしかデンマーク? から来たという海外テック企業のチームと喋ったり。ぼくらはこれこれこういうサービスを作っていて、ニーズはあると思うんだけど、こういう問題があるから日本では展開できないな、みたいな話とか(たしか「日本進出すればいいじゃん!」と誰かが冗談で言って、それに対して「いや無理だよ、なぜなら・・」とマジレスしたのだったか)。

あとは「今日見た中で一番良かったのは何?」という、ある意味定番だけど鉄板でもあるような話題を振られて、「ujihisaさんのが良かったよ」と言ったら「俺も見たよ・・あれは良かった!」と盛り上がったり。いやあ、しかしこんな会を月イチでもやっていたら、さすがにもう少し英語うまくなるのでは・・と思うぐらい最大限に英語喋りました。ありがたい機会です。

Yuguiさんにサインを頂く

アフターパーティーのハイライトは、今回持っていったRuby本のもう1冊、『初めてのRuby』にその著者であるYuguiさんのサインをもらったことでした。

この日は最終日だったので、お願いするなら今日がラストチャンス〜・・と思って朝から本を持ち歩いていたものの、会場では全然お見かけしなかったので「ハイ空振り〜・・まあ、それもご縁だから」と諦めつつ、そのパーティーに行ったらYuguiさんもいらっしゃったので、「終わってなかったラストチャンス」と思ってタイミングを見て声をかけてサインを頂きました。

ちなみに、ちょうどこのときにYuguiさんとお話ししていた@kwappaさんがこのやり取りの一部始終を見て、記念に写真を撮ってあげますよと言ってくれて思いがけず記念写真も撮ってもらいました。Yuguiさん、kwappaさん、ありがとうございました。

中洲、そして川

Rubyistの皆さんと「川」に行くチャンスは去年の大江戸Ruby会議07のときにもあったのですが、その日は用事があって行けなかったので今回は初「川」でした。

「川」というのは、つまりそこで缶ビールなどを飲んで語らうみたいなことですが(たぶん)、上記のアフターパーティーの後、次はどうするかという流れで「じゃあ、川で」と川へ向かうみんなに付いていって、そのまま川でビールを飲みました。

このとき、移動前に撤収モードのパーティー会場で声をかけてくれたのがJobin(ジョバン)さんで、日本語もすごい流暢なんだけど半分英語で何だか英語のレッスンみたいになりながら一緒に次の会場(というか川)に向かいました。しかしこの後の道中がまた一人ではまず体験するはずがないような不可思議なもので、気がつくとぼくとJobinさんの周りには日本人の同行者が1人もいなくなっていて、逆に海外勢の5〜6人が英語でひっきりなしに喋っている中に加わっていて、「もうよくわからんがとりあえずこのまま一緒に行くしかない・・」ってなりながら付いていったらその中の誰かが「面白いからあっちから行ってみようぜ」とか言ってわざわざ中洲のめちゃディープな狭い路地に入り込んで、まるでデヴィッド・リンチmeetsロスト・イン・トランスレーションみたいな幻惑的な光景のなか次から次へと行く先を阻む客引きの人たちとワイワイ言いながら練り歩いて(めっちゃ怖かった)、ようやくそれを抜け出したときには本当にホッとしましたね。いやあ・・何やってんだみんなも自分も。

そんなふうに辿りついた川はさっきまでの閉塞的時空間とは打って変わって広く開けたところで、そのまましばらくJobinさんと英日まぜこぜの会話をしながら、すでにだいぶ飲んで別世界に飛んでいるような若い人たちとも適度に話したり。

このときにぼくがもう一人、この日のうちに喋っておきたいと思っていたのがJonanさんで、なぜならぼくは上記の大江戸Ruby会議07でのJonanさんの発表に非常に感銘を受けたからで、詳しくはこのレポートのJonanさんの部分を見て頂きたいですが、

magazine.rubyist.net

この中でもとくに彼が示した4番目のトピック「You’re Awesome」という話がじつに素晴らしく、ここで彼を捕まえて「あれは本当によい発表だった、ぼくはあなたの "You’re Awesome" の話を聞いて物の考え方が本当に変わった、まるで別人になったようだ、サンキュー」と伝えたら、彼は「その話を自分にしてくれたのは君が初めてだ、こちらこそありがとう、その体験についてぜひ他の人にも広めてほしい」と言ってくれました。

そんなどこにでもありそうな、でも非日常でしかないような儚い時間を過ごして、ついに最終日も終わりました。

終わりに

初めてのRubyKaigiは海外旅行に行ったかのようなフルコース的充足、詰め込まれた多様さに翻弄された日々でした。純粋に「行ってよかった」と思える部分もあれば、じんわり落ち込みながら「まだまだ至らない自分・・」みたいに思えることもあり、さまざまな印象を清濁あわせて受け取りました。

今後の展望的には、途中でも書きましたがもっと技術的な面、つまり具体的な一つひとつのトピックをより実感的に把握できるように、プログラミングの技術や知識・経験などを身につけたいなあ、という感覚が強いですね。実際、どこまでやれるかわからないですが、次回のRubyKaigiまでの宿題として地道に取り組みたいところです。

あらためて、今回のイベントを作ってくれたスタッフ&スポンサー&地元の皆さん、福岡でお会いした皆さん、その他関係各位、ありがとうございました。

*1:たぶん1年以上ぶりぐらい。

*2:この時はシャトルバスの存在を知らなかった。

*3:同じ名前の逆向きの停留所で待っていたことに後から気づきました。

*4:とにかくオレンジが目立つので、街にいてもすぐ「RubyKaigiの参加者だ」と気づけて良かったです。

*5:後から気づきましたが、Tシャツのロゴ部分がエンボスのようになっていてそのオリジナリティが良かったです。

*6:公式サイトでも紹介されていて、自分でも見たはずだったんだけどまったく認識できていなかった。

*7:応募した内容は「LT応募当日からRubyKaigi当日までの30日間のRuby入門学習記録」というドキュメンタリー的なものでした。そこそこ面白くできる自信はありましたが、万一採用されていたら1〜2日目はほとんどその練習とスライド仕上げでつぶれていたと思うので、結果的には外れて良かったと思います。