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日目はほとんどその練習とスライド仕上げでつぶれていたと思うので、結果的には外れて良かったと思います。

Asakusa.rb 第527回 に行ってきた

2度めの参加です。

asakusarb.esa.io

初めて行ったのはいつだっけ・・Twitterでなにか言ってるはず、と思って検索したら、

と言っているので3月半ばですね。たぶん、翌月に控えたRubyKaigiの前にコミュニティの雰囲気を知っておきたかった、という感じだったかなと。

ちなみにその後、RubyKaigiの前にOSS Gateにも参加して、

oss-gate.doorkeeper.jp

こちらもかなり充実の内容でしたが、また時間のあるときに・・。

今回の私的テーマは、以前に7〜8割方書いていてそのままストップしてしまったRubyKaigiの参加レポートを仕上げたい! ということだったのですが、じつはこんなことがありまして↓大半の時間はぜんぜん違うことをしていました。

いやあ・・大変でしたね。久しぶりにかなり焦りましたが。一応、復旧したので良かったですが。

その後、残りの20分ぐらいで普段使いの自作ツール*1の改良に取り組んで、タイムアップ数分前にギリギリ手離れ。充実しました。(ブログどこ行った)

それから、この日はフロム台湾の@Stanさんがいらっしゃっていて、しばらくお話ししたり、お土産の太陽餅を頂いたりして楽しかったです。

www.instagram.com

太陽餅、初めて食べましたが初めての食感で、でもとくに抵抗もなく食べやすく、「Tasty!」と感想をお伝えしました。

会場の永和システムマネジメントさんは、ぼくが勤めるヴェルクから都営新宿線で数駅離れているだけのご近所さんで、というかぼくの帰り道に永和さんがあるので、ここでAsakusa.rbがある時は非常に行きやすいんですよね。
と言いつつ、最近はそもそも会社自体行かなくて自宅作業のことも多いので(とくに猛暑日)なかなか頻繁には行けないのですが。

ともあれ、非常にリラックスしながら、自分のやりたいことをやれて、なおかつ現役のRubyistの皆さんと時空間を共有する中でいろいろ高まったりするので、またぜひ行きたい所存です。

*1:これもまだどこにも紹介できてないので、いずれブログに書いておきたいところ。

『WEB+DB PRESS Vol.112』に寄稿しました(2019年8月24日発売)

掲題のとおりです。

gihyo.jp

発売は8/24とのことなので、あと3週間ぐらいでしょうか。余力があれば、またその頃に何か書きたいですが・・(無理かも)

初めに本件のお話を頂いたのはたぶん3月頃で、Perl入学式の名誉校長であります id:papix さんから、こういうのやりませんか、とお声がけ頂きまして。

具体的には、Perlハッカープログラマーの方々が連綿と受け継いでこられたリレー連載「Perl Hackers Hub」の第57回を担当しました。

タイトルは『自作ツールによる日常業務効率化 ―― 初歩的なコードだけで身近な問題を解決!』ということで。

まあ、これしかない、というか、こういうテーマでしか書けることがないのですけど、どうなんでしょうね、書き始める前には、第一にこんな話でいいのかどうか、第二にそれでいいのだとしても、現実世界でこれ、最後まで書き切れるのか体力的に・・などなど、いろいろ不安もありましたが。

結果的には、編集長&担当編集氏のスーパーご活躍と、メイン監修を務めて頂きました牧大輔さんのおかげで、「へ〜、思った以上に、思ったとおりの感じになったじゃん!」という感じになりました。
関係各位、本当にありがとうございました。

ぼくは今現在に至るまで、プログラマーとして仕事をしたことは一度もないんですが、この連載って基本的にプロ・プログラマーの方が記事を書いてらっしゃるので、硬軟の違いはあれど専門的な技術のことを扱うのが普通なところ、今回はやっぱり、異色といえば異色なものになったんじゃないかな・・と思います。

ただ同時に、ゆってもPerlの連載ですから、Perl成分はそれなりに濃いとも思います。何しろ、これまで5年ほどにわたり書いてきたPerlのコードをばりばり載っけましたので。

内容的には、そのノンプログラマーであるぼくが普段、自給自足的に作っては使っているプログラムについてあれこれ紹介している感じです。とはいえ、プロではないので、ねえ、まあ、難しいじゃないですか、どの辺をどの辺まで出すかっていうのは・・わかりますかね、結局、普段ぼくは自分だけが使う目的のプログラムを、自分だけが読む前提で書いているので、人様に、ましてやプログラマーである読者さんに(それもお金を払って読むような人たちに)見せるようなコードなんて書いてないんですよ(笑)。誰からもレビューとかされてないんですから。

なので、その辺のバランスというか、出すところと引っ込めるところのバランスを取りつつ、でも読み物としてはある程度、「貴重な時間を使って目を通してもそれなりには満足できる」ようなものを書ければ・・という感じで頑張りました。

しかしどうなんでしょうか、面白いんでしょうかね・・編集長氏は面白かったと言ってくれましたが・・ぼく自身はもう時間かけすぎてよくわかっておりません。

とはいえ本誌、ぼくはもう趣味のプログラミングを初めた頃からなので、2013年とか、2014年ぐらいには読み始めていたはずで、その頃から触れていた連載でしたから、まさかそのリレーの一員に加われるとは〜・・という感じでしたね。

編集チームもザ・プロの仕事。という感じで。ぼくも一応、編集の仕事をしていたはずだったんですが、この本物のプロを目の当たりにしますと、自分がやってたのは編集ではない編集的な何か、というか。讃岐うどんじゃないうどん、というか。そんな感じだったのかなと思いましたね。べつにどっちが上という話ではなくて、別物だったなあ、と。

しかしこんなブログをまだ続けているように、ずっと普通に、誰にやれと言われるまでもなくやってきたがゆえのコトだよなあ、と思います。ぼくはプログラミングを仕事にこそしていませんが、でも結局、向いてるのかなという気はしますね。ある種の才能というのか。やめない才能、苦もなく続けられる才能、疲れない才能、みたいな。まあ環境要因だったり、たまたまだったり、という要素も含めてのことですが。自分ではとくに努力と思ってやってるわけではないですからね・・はたから見れば頑張ってるように見えているかもしれないことも、べつに頑張ってるわけじゃなくて気がつけば普通にやっているだけで。それが向いてるということなのかなと。

ともあれ(まとめ)、いろんな貴重な経験をできた忘れがたい機会でありました。冒頭にも書きましたが、また発売前後でもう少し内容に踏み込んだことも書ければ〜・・とも思っていますが、それはその、ほんとに機会があればということで。

あらためまして、関係各位、ありがとうございました。読者の皆さん、発売をお楽しみにお待ちください。

WEB+DB PRESS Vol.112

WEB+DB PRESS Vol.112

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

プログラミング入門者向けのサンプルコードで異なる名前を付けられるはずの複数の変数に同じ変数名を付けてしまう問題

Perl入学式の受講生だった5年前にも同じようなことを言っていたので変わってないな自分・・と思うとともに、この問題じたいがある種普遍的なのかな、という気も。

以下、掲題の件について簡単にまとめてみたいと思います。

Rubyで言うと、たとえばこんなサンプルコード。

class Foo
  def initialize(name:, price:)
    @name = name
    @price = price
  end

  def show
    return "#{@name}: #{@price}"
  end
end

bar = Foo.new(name: "apple", price: 100)
puts bar.show

結果は以下。

apple: 100円

引数としてクラスの外部から内部へ値を受け渡すためのname, priceと、クラスの内部でその値を操作するインスタンス変数のname, priceがそれぞれ別の変数であるにもかかわらず同名で記載・使用されています。

こういったことはPerlの入門者向けサンプルコードでも起こりがちで、なにしろPerlではスカラー変数でも配列変数でもハッシュ変数でも、それぞれ別の変数なのに同じ単語を使えるので、たとえばこんなことになります。

#!/usr/bin/env perl
use strict;
use warnings;
use feature 'say';

my $apple = 100;
my @apple = (101, 201);
my %apple = (foo => 102, bar => 201);

say $apple;
say $apple[0];
say $apple{foo};

結果は以下ですが、

100
101
102

問題は、この中の

say $apple;
say $apple[0];
say $apple{foo};

と並んでる3つの「$apple」は全部別物だということですね。まったく相互の関係はありません。

これ、混乱しませんか??

ぼくは初心者のときにこう思いました。「なんでわざわざ同じ名前付けるの!?」

上記の例で関係がある(同じ変数名でなければいけない)のは、以下の組み合わせです。

# 配列とその要素

@apple
$apple[0];
# ハッシュとその要素

%apple
$apple{foo};

同じ変数名を使うなら、こうした「同じ変数名でなければいけない組み合わせ」に限るべきで、なぜわざわざ配列とハッシュを同じ変数名にするのだ・・とただ苦しむばかりでした。

まあ実際には、ぼくもやがて初心者を卒業というか、初心者であることに飽き始めた頃、「なるほど、コードを書くときはこんな風にいろいろ揃えてしまった方がラクに感じることもあるのだな」と理解するようになりましたが、とはいえ、初心者にこれは酷だろうという気持ちには今も変わりはありません。

では、そのPerlのコード、どう直したら読みやすくなるでしょうか?
一例ですが、こんな風にすればどうかと思います。

#!/usr/bin/env perl
use strict;
use warnings;
use feature 'say';

my $apple = 100;
my @orange = (101, 201);
my %lemon = (foo => 102, bar => 201);

say $apple;
say $orange[0];
say $lemon{foo};

これだったら、どの変数がどこに動いているのか。それぞれの代入した値がその後にどこで使われているのか、追いやすくなります。

ようは、「同じ変数名でなければいけないものだけ」を同じ変数名にするということです。

コードには色が付いていません*1。そのようなとき、色分けをする代わりに適切な変数名*2を付ける必要があるのではないか、と思うわけです。

上記を踏まえて、あらためて最初のRubyの例に戻りますが(再掲)

class Foo
  def initialize(name:, price:)
    @name = name
    @price = price
  end

  def show
    return "#{@name}: #{@price}"
  end
end

bar = Foo.new(name: "apple", price: 100)
puts bar.show

これ、たとえば以下のようにすると、どの値がどの変数を通してどこへ動いているのか、わかりやすくなると思います。

class Foo
  def initialize(name_arg:, price_arg:)
    @name_var = name_arg
    @price_var = price_arg
  end

  def show
    return "#{@name_var}: #{@price_var}"
  end
end

bar = Foo.new(name_arg: "apple", price_arg: 100)
puts bar.show

この問題、ようは読み手のトレースする力の程度に合わせる、ということなのだと思います。コードを書いているプログラマー自身は、どの変数がどの値を抱えているのか、頭の中ですでに追えている状態なので、変数名によって値の経路を示す必要はもうなくて、むしろ別の理由、たとえば異なる中身を持った変数同士が同種の属性や役割を背負っていることを示すために、同じ変数名を付けてカテゴライズしておきたい、みたいな考えがあるのかもしれません。

しかし入門段階の人は、普通はそういったトレースをする力が十分にはないがゆえに、変数の名前からその中身の値を想像しようとしますから、異なる値・異なる変数であるにもかかわらず同じ名前がついていると、混乱が生じやすいということではないかなと。

このあたりの問題を認識した上で、その状況に応じてどうするべきなのか(異なる中身を持つ変数同士に同じ名前を付けるのか、それをしないのか)を考えられると、より良いかたちで書き手と読み手のコミュニケーションが成立しやすくなるのではないか、と思っています。

*1:エディタ等のシンタクスハイライトで色を付けることはできますが、それは個々の設定によるので、結局書き手が見ているのと同じ色付けを別の読み手が見ることはできません。

*2:ここで言う「適切さ」とはそのコードが読み書きされる背景によって変わるものだと思います。プログラマーの間だけで読まれる前提ならば、上記のような配慮は不要かもしれません。ここではあくまで「入門者にとって適切な」変数名について書いています。

YAPC::Tokyo 2019 に参加しました

2019/01/26(土)に開催されたYAPC::Tokyo 2019に行ってきました。

以下、順不同に(思い浮かべた順に)感想を書いていきます。

本編

tokuhiromさん

いきなり最後ですが、tokuhiromさんのキーノート、とても良かったです。

以前にもtokuhiromさんのトークYAPCで聞いたことがありますが(Perl6の話をしていたような)、そのときの印象と変わらない落ち着いた話しぶり。

過去を振り返る流れでいろんな写真が出てきたのも良かったです。何度か直也さんの名前や写真が出てきたのも共感するところがありました。あのサトちゃんのアイコンじゃない顔写真だったのが良かったな、と。

tokuhiromさんのスライドはこちら。

www.slideshare.net

LINEさんの振り返りブログでも紹介されていました。
engineering.linecorp.com

大仲さん

はてな id:onk さんの「Perl on Rails」。超よかったです。ぼくが先日入社したヴェルクRailsを使っているので、逆方向の関心にもとづいて聞けたというか。

予定より早く終わっちゃったと言っていましたが、その分後半は藤井さん(?)とのかけ合いが第2部みたいになっていて、トクした気分で聞きました。

mixi 萩原さん

ランチセッションのmixi編、なんと21才(でしたっけ)の入社間もない萩原さんのトークも大変聞きやすい丁寧な話しぶりで楽しく聞きました。

speakerdeck.com

mixiさんの振り返りブログはこちら。
medium.com

後述の自分のLTの不安定感を思うと、「この差は一体・・」というぐらいの落ち着きを感じましたが、ん〜、練習量とかが違うのかなあ。

Perlの話も随所に入っていて、最後まで興味が持続しました。「若い人がPerlを使ってるという話をしたら、既存のコミュニティの人たちが喜ぶのでは」という目論見は見事に当たったのではないか、と思います。

深沢千尋さん

深沢さんはぼくの恩師とも言えるPerl入門書の執筆家で、これまでもこのブログでは事あるごとに深沢さんの著書を紹介してきました。

深沢千尋 の検索結果 - the code to rock

今回はその中でもとくに思い入れが深い『すぐわかるオブジェクト指向Perl』を持参して、サインしてもらいました。

すぐわかる オブジェクト指向 Perl

すぐわかる オブジェクト指向 Perl

前夜祭や懇親会でもいろいろ思いの丈を伝えられて、嬉しかったです。深沢さんの本はある種、革命的に丁寧で、かつその文体もオンリーワンのオリジナリティで、誰も真似できない唯一無二の著者だと思います。

ランチセッションも楽しく聞きました。途中で北野宏明さんの名前が出てきましたが、たまたまぼくが今やっている編集仕事(春頃にWebで公開予定のコチラ採録記事)の関係で北野さんのことを少し調べていたので、不思議な縁だなと思いながら聞いていました。

hitodeさん

この辺りの時間まではずっと下のホールで聞いていましたが、後述のtecklさんの話を聞きたいなと思ったので、上の階に上がってRoom1に入ると、この界隈で知らない人はいないhitodeさんの発表が始まるところでした。

*発表資料はこちら。はてなブログの記事がそのまま資料になっている・・。
blog.sushi.money

WebVRの話ということで、ヘッドマウントディスプレイの実物が回覧されてきたので装着しましたが、これはビックリの面白さでした。上下左右の360度に対して画像・映像が付けられていて、下を見たらフワ〜って布団に寝たhitodeさんが浮き上がってきてこっちにぶつかって、そのまま空に舞い上がっていくという仕掛け(?)が施されていて衝撃でした。ああ、面白かった。

わいとんさん

hitodeさんに続いて、Perl入学式でもその初期からずっとお世話になっているわいとんさんの発表を聞きました。

*スライド&振り返りブログはこちら。

YAPC::tokyo 2019で登壇しました – Wyton

内容的にはぼくには全然難しいんだけど、とにかくデモの進行上想定外のことが起きても、そのつどそれに備えて用意していた第2案、第3案を次々と出してリカバーしていくのが本当、すごいなあ・・と思いました。

それらの準備されていた代案、もちろん使わずに済めばそれに越したことはないわけですが、でも使わざるをえない状況になったことで「ひえ〜、そんなところまで用意してたんだ」と知れるわけで、その意味ではわいとんさんの思考の深さを窺える発表だったのではないかと思います。

tecklさん

シーサー社のtecklさん。最初に知り合ったのはYAPC::Okinawaでぼくの少し前に同じ会場で発表されていたときで、その半年ぐらい後、buildersconの懇親会でゆっくりお話しできて、そのときにはPerlの初級〜中級あたりのあれこれについてお聞きしました。

tecklさんはベテランの貫禄というか、終始ゆったり柔らかい調子で話が進んでいって、リラックスして聞きました。内容的にも俯瞰的な広い見方から年代ごとの細かい差分までいろいろな情報が組み込まれていて、面白かったです。

Songmuさん

LTの時間が迫ってきたので、最後の20分はホールで・・と思ったらSongmuさんの発表でナイス!でした。

*上記のhitodeさんもそうでしたが、今回は全然事前にタイムテーブルを確認してなくて、毎回「次はどうしようかな」と行き当たりばったりに部屋に入っては登壇者を知る感じでした。

いろんなトピックや描写がありましたが、やはり印象に残ったのは失敗経験のところでした。

ぼく自身は、アウトプットすることは必ずしも良いことばかりではなくて、むしろそれは失敗する可能性をゼロから1以上にする、という後戻り不能なスイッチを入れてしまうことだから、いかにそれが良い結果をもたらす可能性が高かったとしても、それを「絶対やるべき」とか「どんどんアウトプットしろ」みたいなことを、少なくとも他人の立場から無責任に言うのは違うかなと思っています。

その失敗によって損害をこうむるのは行為者自身であって、勧めた人は1ミリも影響を受けないわけなので、たとえば上司や同僚のように同じリスクを背負う立場で言うならアリかもしれませんが、結局アウトプットとはそういう失敗と不可分なものとして存在していて、だからこそ紛れもない価値があるのだよな・・なんていうことを、その話を聞きながら考えていました。

他にもいろいろと知っているようで知らないことが語られていて、楽しかったです。ベストトークはSongmuさんに入れました。

www.songmu.jp

広木大地さん

ゲストスピーカーの広木さんの発表も聞きました。場馴れしてらっしゃるのか、すごく聞きやすい話で、スライドも要領を得た見やすい構成でした。

speakerdeck.com

事前に著書の『エンジニアリング組織論への招待』を少し読んでいましたが、まだ全部は読み切れていなくて、でも内容的には重なるところが多いようだったので、相互補完的に聞けたかなと思っています。

予習のようにポッドキャストEMFMも聞いていましたが、せっかくならやっぱりもう少し本を読み込んでからの方がより面白く聞けたかなとも思っています。

とりあえず、続きを読んでからまたスライドを見直してみたいと思います。

yoku0825さん

一瞬、懇親会に飛びますが、今回発表もされた@yoku0825さんとも少しお話ができて嬉しかったです。

yokuさんはぼくがエンジニアのコミュニティに飛び込み始めた超最初の方、Chiba.pmに参加したときに初めてお会いして、その意味ではPerl入学式のサポーター陣に次ぐ長いお付き合いです。

今でも覚えているのは、ぼくがChiba.pmで自己紹介的なLT(Perlを勉強してます、的な)をした後に、yokuさんから「データベースに関心はありますか?」という質問があって、それは場が湧いたのでぼくも嬉しかったんだけど、でもデータベースの勉強なんてまだまだ先の話で、そもそもプログラミング自体いつまで続けられるかわからないよな・・と思って「関心はあるけどまだ先の話」なんて生真面目な回答をした記憶があります。

気がつけばそれから5〜6年経って、ぼくはまだプログラミングをしていて、続けているどころかYAPCに登壇したり、むしろ勢いは増しているようで、データベース、現時点では直接的な必要性はないにせよ、近いうちに勉強できるんじゃないかなという予感もあったので、そういう話をしたりしました。

LT狂騒曲

本編のトークがすべて終わって、tokuhiromさんのキーノートの前にLTが行われました。

LTの参加に至る流れや詳しい発表内容については、別記事にまとめていますので、ぜひどうぞ。

note103.hateblo.jp

そちらの記事に書きそびれたこととしては、採択が決まった後、ネタ自体はだいたい揃っていたのですが、どうしてもオチまでの流れが決まらなくて、結局当日の朝になっても固まらなかったので、通常ならちょっとあり得ないことですが、YAPC本編が始まった後も前夜に泊まっていた浅草橋の宿でそのままずっとスライドを作っていました。

今までも寝坊して午前のトークを聞きそびれるとかはあったのですが、自分のスライドを作るためにオープニングをスルーしたのは初めてでした。

ただ、tokuhiromさんのキーノートの中で「日本人はトークを真面目に見過ぎ。せっかくいろんな人が集まってるんだから、Hallway Trackみたいな感じで適度にパスしたらいい」みたいな話もありましたし、その意味では日本人参加者としては理想的な態度だったのでは、とも・・(ちがうか)

なんとか内容がまとまって、最後に1回通しで練習しました。おそらく通しの練習ができたのはその前も含めて計4回ぐらいだったと思いますが、結局一度も5分には収まらなくて、かえって不安が高まりました。

Songmuさんのトークが終わりに近づいて、そろそろLTか・・と緊張がみなぎってきた頃、発表前にスライドをアップしておくか(&Twitterにもハッシュタグ付きで知らせておくか)、ちょっと迷いました。

事前に公開しておけば、後ろの方でスクリーンをちゃんと見れない人もついてきやすいかな、と思ったので。

でも実際には、会場後方にもモニターが用意されていて、これがあれば大丈夫かなと思ったのと、「このスライドは今この会場に集まっている人たちに優先で見てほしいな」と思ったので、事前の公開はやめました。

ようは、会場にいる人たち、自分と同じ時間・同じ場所を共有している限られた人たちを、えこひいきしようと思ったわけです。

真っ白な夢の中を爆走するように発表し終えて、あらためてその仕上がりを今の頭で振り返ってみると、上記の解題にも書いたとおり、実感的には理想の3割ぐらいの出来でした。その意味では、失敗です。

でも、やらなかった場合に比べたら30倍ぐらいやって良かったと思います。その意味では成功でした。

終わりに

ということで、時系列も内容もめちゃくちゃな感じですが、当日の感想を記してみました。

たった1日の本編ではありましたが、YAPC::Japanシリーズに通底するローカルな手作り感と、伝統ある雰囲気が魅力的にマッチした、良いイベントでした。

最後の id:kfly8 さんによるクロージングもよかったですね。一旦引き受けて、でもやめて、でもまた別の形で借りは返した、みたいな。

ついでの話ですが、ぼく自身も20代半ばから後半ぐらいだったか、自分で自分に呪いをかけて、でもその呪いを自分で解いて、みたいなことがありました。当時のぼくはそれを一生やっつけられないだろうとほとんど諦めていましたが、あるとき村上春樹さんの「七番目の男」という短編(『レキシントンの幽霊』所収)を読んで、「やっぱりこれは自分で落とし前をつけなきゃ駄目なんだ」と思ってなんとかやっつけて、自分を解放できました(スピリチュアルっぽく言いましたが、泥臭いプライベートな話です)。

イベント全体をふと思い返すと、会場でtokuhiromさん、Yappoさん、xaicronさん、弾さんといったオールスターをひと目に見られたのも何だかハッピーな感じでした。

tokuhiromさんの写真の中で、東工大でしたか、芝生でnipotanさんやkazuhoさんも含めてにこやかに語らっているシーンが写って、うわーレジェンドな光景だな〜と勝手に思っていましたが、でも同時に、当時のその人たちからしてみれば、べつに特別なことをしていたわけではなくて、ただその時そこにある面白いものとか、気になることとかを次から次へ全力でやっていただけなんだろうな、とも思いました。言い換えると、周りから特別だと思われるような(レジェンド感のある)ことをしなくても、いま目の前にある超面白そうなものとか、大事だと思えることに本気で取り組むっていうのがやるべきことで、もしそれが一部でも達成できたら、のちのちその瞬間を偶然切り取った写真とかを見た誰かが「これ、伝説的な瞬間だね」って言うみたいな、そういうことなんじゃないかなと。今の自分がtokuhiromさんたちみたいになろうとする必要は全然なくて、自分自身が今やりたいことにちゃんと向かっていけば、それが結果的に未来から見た「スゴイ」になるんじゃないかな、と。そんなことを感じたイベントでもありました。

YAPC::Japan、おそらくこんなにアクセスしやすい会場での開催はそうそうない気もしますが(笑)また参加できることを楽しみにしています。

TokyoGirls.rb Meetup vol.1 に行ってきた

TokyoGirls.rb Meetup vol.1 に行ってきました。

techplay.jp

昨年11月にフリーランス編集者からRailsを使うIT企業(のカスタマーサポート)に転職したので、今後はRubyコミュニティとの接点を増やしていきたいな、と思っていました。

その一環として、昨年後半には大江戸Ruby会議07に参加して、今年の春にはRubyKaigi 2019に参加するつもりですが、前者の大江戸の方で見たしなもんさんがこれに参加する、という話をTwitterで見かけて抽選に応募したところ当選。という流れで、同イベントに参加してきました。

現場の雰囲気については、ハッシュタグを追うとある程度わかるかもしれません。

#tokyogirlsrb - Twitter Search

以下、簡単に感想を。

かなきゃん(@_kanacan_)さん

元アイドルにして携帯キャリアのエース販売員。中学のときの技術の時間? にHTMLを教わったというぐらいお若い方でウルトラカルチャーショックを受けましたが、それ以上に生き方・考え方みたいなところに刺激を受けました。

speakerdeck.com

たくましいとか強いとかしたたか、みたいなことはいくらでも言えるんだけど、今回この発表から感じたもっと本質的なところを一言で言うと、自分が何を欲しいのか、どうなりたいのか、みたいなことをすごく自覚している、あるいは自覚しようとしている、ということですね。これ、ぼくにはすごく欠けているところです。これがないと、ただフラフラ流されるままというか、本当はもっと欲しいものがあるのに、他人から「君はこれでいいでしょ?」と言われたら「あ、はい・・」みたいになってしまうんですよね。

印象的だったエピソードもいくつかありましたが、とくに残ったのはSmartHRに応募するときの話で、駄目かもしれないけど、失敗したらそれはそれでストーリーになる、というところ。ここで言う「ストーリー」というのは、仮に落ちても、その2年後ぐらいにもっと力を付けてから「一度落ちたけど、また挑戦しに来ました!」って行けばかつての失敗もストーリーとして価値を持つ、みたいなこと。これを考えて実行できるのはスゴイと思いました。

だって、そんな風に考えられるようになったら、すべての失敗は成功の一部になりますよね。

実際には、そんな風に考えたりトライしたりできるっていうことは、そのウラに何十倍もの失敗があるんだろうと想像します。それも全部引き受けながら、トライを続けるその生き方には大いに学ぶところがありました。

*参考記事として紹介された以下のブログ、あとQiitaも読み応えがありました。

しなもん(@sinamon129)さん

前述の大江戸Ruby会議07で一度発表を見ていて、それがものすごい面白かったので、今回の目当ての一つはしなもんさんの発表でした。

speakerdeck.com

果たして、その大江戸のときの話とある意味ワンセットというか、合わせて読むと一段深く楽しめるような、やはり今回も非常に面白い発表でした。

*大江戸Ruby会議07のリポートとしなもんさんのスライドは以下。

障害対応・深夜メンテナンスはすごい人がやってる印象、だからそれに憧れていた、という話。ぼくはプログラマーではないですが、すごいわかる気がしました。たぶん、そのすごい人たちもまた、そういう作業を陰惨な雰囲気で、ではなく、どこか充実した感じでやっていたのかな、という気もします。で、そういう人に自分もなりたいな、みたいなことを感じたのかな・・とか。

印象に残ったのは、できる先輩同士がやってるのを見ながら「その話、どこ見ながら言ってます?」みたいにツッコミながら追いかけていた、という話。たしかに言われてみればめちゃ効率いい方法だけど、自分だったら現場でそんな風に考えたり聞いたりできるかなあ・・と。

単純に、そういう合理的な方法を考えて実際に行動に移す、というのができてスゴイ、と感心しました。自分の今後にも参考になりそうだな、と。

スポンサーLT

スポンサーLTでは万葉の鳥井さんの発表が印象的でした。

speakerdeck.com

というのも、万葉には働き手を支えるいろんな仕組みがそろっているという話が次々出てくるんだけど、これがけっこうどれもヴェルク(昨年ぼくが転職した先)を想起させるんですよね。

ヴェルク株式会社 - board・データ分析・受託開発

*ちなみに、転職したときのぼくのブログは以下です。
ヴェルク株式会社に入社しました - 103

社員それぞれの都合を最大限生かせる仕組みを用意する感じというか。あるいはぼくなりにもっと原理的なところを言うなら、社員をとことん人間扱いする、みたいな感じでしょうか。

おまけに、どちらもRailsを使ってる・・!

あえて言うと、万葉さんの方は女性の働きやすさという点でより特徴的かなと思いました。
ぼくはプログラマーではないですが(再)プログラミングの本はいくら買ってもOKと言ってもらっているので、万葉さんの以下を読みつつ、新入社員教育用カリキュラムもやってみたいと思っています。

現場で使える Ruby on Rails 5速習実践ガイド

現場で使える Ruby on Rails 5速習実践ガイド

github.com

よう(@youchan)さん

じつは今回のイベント、しなもんさんやかなきゃんさんの発表を見たいというのも大きかったですが、タイムスケジュールを見て一番期待していたのはこちらのようさんの発表で、期待に違わぬとても面白い内容でした。

youchan.org

最初に印象に残ったのは「千葉の人、いますか?」という質問で、なぜなら今は千葉のRubyコミュニティがない(アクティブではない)ので、とのこと。ぼくは千葉の人で、しかもけっこう近いところにお住まいだったので、え、だったらそれ作るの参加したい・・と思いました。(今度また何かの集まりに顔を出したらお声がけします・・)

期待していたというのは、Ruby入門みたいな話だったからですね。それは言語の勉強という意味でも、コミュニティへの入り口という意味でも。

「すべてがオブジェクト」とはRubyを語るときよく語られることですが、今回初めて「あ、なるほど・・」という腑に落ちた感じが少ししました。(まだあまりRuby自体触っていないので、本当に少しですが)

ぼくは今まで5年ほど、Perlを趣味レベルではありますがずっと触ってきたので、その辺も思い出しながら聞いていました。関数型言語と絡めたあたりの話も興味深かったです。

それから後半の、男性中心なのも問題だけど、だからって女性だけなら良いってわけでもない、偏るのが問題。という話、まったく同感でした。

問題は、そういった状況が必ずしも悪意によって生じるのではなくて、むしろ大抵の場合は単に無意識・無自覚のうちに起きてしまう、ということなのかなと。であればこその大人力・思慮・配慮が求められるということなのかなと。

言い換えると、つねに思考停止せず、より良い環境を実現するための方法を想像したり、考え続けたりすることが必要なんだろうな・・と。

そうそう、あと余談ではありますが、ようさんはRabbitを使っていましたね。

Rabbit - A presentation tool for Rubyist

やっぱりつくづく、登壇者だけでなくお客さんにもプレゼンの進捗が可視化されてすごいツールだなあ・・と思いました。少し前に自分でも使おうと思ったものの(YAPC::TokyoのLT)、ちょっとデザインのカスタマイズが難しい・・と思って諦めたことがあったので、あらためてもう少し触ってみようと思いました。

かとりえ(@katorie)さん

最後のかとりえさん、終盤の子育てを絡めた部分は時間の都合もあって概要のみという感じでしたが、具体的なチーム作業のことも多く触れつつ、全般的には女性がどんな働き方をしていけるか、ということについて一番現実的・実感的なイメージを伝える内容だったという印象を持ちました。

speakerdeck.com

Web業界・エンジニア界への惹句としてキラキラした美辞麗句はそこいら中にあって、あたかもこの業界に入りさえすればそれが実現するかのように思ってしまいがちだけど(だから気をつけて、とかなきゃさんも言っていた)、本当に必要なのは誰が具体的にどんなことをして、その結果としてどんな今があるのか、という話で、これからそういう業界に飛び込んでみたいと思っている人たち(とくに女性)にとっては貴重な話だったのではないかな、と思いました。

すべての発表が終わった後、懇親会の方は今回はパスしました。ケータリングのすごい良い匂いがしていましたが、体調が今ひとつだったので。とくに食事の席は外しておいた方が無難かな・・と。

しかし懇親会はボッチ対策でグループ分けの工夫があったようですね。

すげーアイデアだ・・とハッシュタグを見ながら思っていました。(もし残っていたらVimグループでした)

雑感

女性メインでありつつ、男性の参加も一定割合まではOK、というこのシステム、素晴らしいと思いました。

とくに印象的だったのは、質疑応答でどんどん女性参加者が発言していたことですね。それも、手元のメモを見ながら、というなんだか真面目な感じ・・すごい良いなと。

しかしこんな風なシステムだと、女性ばかりが優遇されるような雰囲気が醸されてしまうのでは? という懸念もありそうですが、この辺のコンセプト的なことについては、個人的には主催の伊藤淳一さんによる以下のブログ記事に大元のことが書かれていると思っています。
blog.jnito.com

とくに、以下2点ですかね。

  • 日本のITエンジニアの世界は、まだまだ比率的に男性の方が圧倒的に多い
  • いろんな勉強会や初心者向けのイベントもあるが、そういった場所でも男性が多いので、(主催者がいくら「女性でもOK」と強調しても)女性にとっては敷居が高い

あとは、少し前に自分の別ブログで抜き書きをしたのですが、作家の森博嗣さんによる以下の言葉も近いことを言っていると思います。

男女平等などの流れで、「女性ばかりを優遇しすぎではないのか? それでは平等ではない」と反発する声もあるのですが、これは、これまでの歴史を知らない発言だと言われてもしかたがないでしょう。つまり、それくらい女性を優遇する仕組みを押し出しても、まだまだ平等ではない、という歴史です。真っ直ぐ走るためには、ハンドルを真っ直ぐにすれば良いわけですが、今まで右に進んでいたら、左にハンドルを切らないと真っ直ぐにはなりませんからね。
森博嗣数奇にして有限の良い終末を』より/太字は原文ママ

今はまだ、ここで言う「ハンドル」を真っ直ぐにしたままでは足りない状況なのかな、と。その意味でも、とても意義深いイベントだったと思います。

あらためまして、スタッフの皆さん、登壇者さん、参加者の皆さん、おつかれさまでした。楽しい時間をありがとうございました。

なぜアウトプットするのか

2013年からPerl入学式(Perlによる無料のプログラミング講座)でお世話になっている id:xtetsuji さんから、ぼくがアウトプットを続ける理由は何か? という質問というか、お題をもらって、しばらく考えていました。

ここで言うアウトプットとは、直近で言うと去る1月終盤に行われたYAPC::TokyoでのこのLTとか。

note103.hateblo.jp

あるいは昨年の今頃に発表したこちらとか?

note103.hateblo.jp

その他にも、このブログをはじめとするネット上での各種意見もそれに含まれると思います。

あとは、いろんなイベントに顔を出してもいますね。去年だけでも、上記以外にbuildersconとか、大江戸Ruby会議07とか、Vimconfとか。

*大江戸Ruby会議については最近公開されたるびまのこの記事がとても良かったです。シェアさせて頂きます。
magazine.rubyist.net

で、そういうイベントでまた、いろんな人に自分から話しかけたり。これもまたアウトプットかなと。

さて、それで最初の質問に戻りますが、なぜそんなことをするのか? という話ですが。

それに対する答えのいくつかは、最初に挙げたYAPCでのLTスライドに書きました。曰く・・

  1. やったことや考えたことを忘れちゃうから、メモがわりに。
  2. 見知らぬ人への手紙。どこの誰かもわからない人に知見の共有。
  3. 自慢したいから。
  4. 恥ずかしさよりも、それをやりたい気持ちの方が強くなるから。

ということ。

とくに、最後のはある意味一番大きいかなと思っていますが、これってじつは「なぜアウトプットしないのか?」という視点から捉えることもできて、ぼく自身のことを考えると、「ああ、あのとき、なんであれをやらなかったんだろう!?」と思ったときの答えは、結局「失敗したくないから」とか「絶対に恥ずかしい思いをしたくないから!」ということだったと思います。

実際には、何かを「やらない」理由なんて100でも1,000でも挙げることは可能で、いくらでもやらない言い訳なんてできるけど、でもやっぱり最後の最後には「失敗したくない」という理由に行き着くはずだと思っています。だって、絶対に失敗しない唯一の方法は、それをしないことですから。試合に出なければ、100%負けません。間違いない。

だから、「なぜアウトプットするのか?」という質問は、単純にそれをひっくり返せばよくて、「失敗してもいい」と思えた時というか、「失敗したくない」と思う以上に「それをやりたい」とか「実現したい!」と思った時があったからですね。

でも、その「実現したい!」っていうのも、そう書くとなんだかポジティブに聞こえますが、実感的にはもっとしょぼい感じというか、ようは「もったいない」って思っちゃうんですよね。たぶん、ぼくがアウトプットする理由の第一ってこれかも、と今思いました。

人生は有限で、チャンスは一度だけではないかもしれないけど、でも生きてる時間が限られてる以上は何度も巡ってくるわけじゃないから、次のチャンスはもう生きてるうちには来ないかもしれない、じゃあ、今やっとくしかないんじゃない? みたいな。

それで、渋々というか、仕方なくというか、「二度とできないぐらいだったら、いま頑張ります・・気乗りはしないけど・・」みたいな感じですね。

その意味では、なんというか、捨て身になっていることも多い気はしますね。それまで丹念に育ててきた何かを一気に全部捨てて次の場所に行く、みたいな。そのことにあまり躊躇がないというか。

ぼくは美大に入って、将来何をしたいとかまったく考えないまま大学4年間を過ごして、卒業してもまだ何も決めず、30を過ぎた頃にようやく継続的な仕事をもらえるようになって、でもそのまま43歳になるまで一度も定職につかずに生きてきて、ようはずっと「なんとかなるっしょ」のままやってきた感じがあるんですよね。

その根無し草感というか、べつにカッコつけるつもりはまったくないですが(とくにカッコよくないですか)、実際本当にそんな感じだったので、あるとき突然どっかに飛び込む、チャレンジする、ということに対して抵抗感が少ないところがあるかなと自己分析します。明日から突然それまでの全部がなくなっても、まあ、わかりました、なんとかします、みたいな。

あるいは別の言い方をすると、「痛くない」という感じ。失敗したり、恥ずかしい思いをしたり、指をさされて笑われたりしてもべつに構わない、いやもちろんめっちゃイヤだし、傷つくし、全然積極的にそんな思いをしたいわけではないけど、それでも「まあそんなに、痛くない」という感じ。ある意味鈍感というか、無感覚ということなのかもしれないですが、でもそのある種の耐性みたいのができてきて、それで前半の方で言った「アウトプットしない理由」の方が、「やりたいこと、味わいたいこと」に比べて相対的に小さくなってくれているのかな・・と。

もうひとつ、これは先日、rubyist.club という数年前にやっていたポッドキャストの以下のエピソードを聞きながらふと思ったことなのですが、

rubyist.club

その中でゲストの@bash0C7さんが言っていたことで、「ロックスターに憧れていても、客席から見ているだけでは届かないから、どんな形でもいいから舞台から客席を見る側でありたい」と言っていて、ああ、それちょっと似てるなと。(実際の文脈とはちょっと違うかもしれないんですが)

上記の捨て身の感覚というのは十代後半ぐらいからあった気がするんですが、それとは別に、ぼくが自分の人生が大きく変わった分岐点として今でも思うのは、たしか28歳のときに菊地成孔さんの音楽私塾に申し込んだときで。その申し込んだ瞬間のことは今でも覚えていますが、雪の日で、古い貸家の暖房をつけてもなかなかあったまらない部屋でブルブル震えながらそれこそ捨て身で「絶対駄目だよなあ」と思いながらエイヤと申し込んだら50分後に入学OKの返事が来て。

その数週間後に第1回の授業があって、初めて目の前に現れた菊地さんを見て、あ、今までスクリーンの向こうにいた人が、現実でつながった。あれ、てことは今ぼくはスクリーンのどっちにいるんだ? こっち側? 向こう側? いやどっちでもないのか? みたいな。その日のその瞬間から、何かその「こっち」と「向こう」を分ける透明なガラス板みたいのが音を立てて砕け散った感じで、こんなふうに言うとあまりに綺麗にまとまってしまうんだけど、それがもしかするとぼくがアウトプットする側に入ったときだったのかな、という気も少ししますね。

実際、その菊地さんとの出会いがきっかけで、ぼくは編集者的な作業をするようになって、それが元になって大谷能生さんと共著で本を出すことになって、その経験を踏まえて後藤繁雄さん、坂本龍一さんとの仕事にも連なっていったわけで。

で、ここからがまた大事なトピックなんですが、そういう経験をする中でぼくがつくづく思っていたのは、結局そういう才能あるミュージシャン、クリエイターのような人たちとどう関係を結ぶかといったときに、やっぱりお客さんとして付き合うというのは、ぼくにはどうしても不合理というか、もったいなく感じられて、なぜならお客さんとしてアーティストに触れられるのってほんの一瞬だけで、にもかかわらずその「一瞬」を手に入れるためにかなりのコストを支払うことになるんですよね。あくまで個人の感想ですが。

じゃあどうすればいいのよ、と言ったら、その菊地さんの時のように生徒になるとか、あるいは坂本さんの時のように仕事相手になるとか。

まあ後者の方は運や他人の要素も大きいので、やりたいからってそう簡単には実現できないかもしれないですが、ただいずれにしても、ぼくはそういう巨大な才能をお客さんとして味わうのではなくて、もっとその人たちの近くで、もっとダイレクトに体験したいと思っていて、そのためには、彼らと対等な関係になるしかないと思っていました。言い換えると、たくさんいるお客さんの中の一人ではなくて、交換不能な役割を持ってその場に混ざるということなんですけど。

で、それってさらに言い換えると、結局自分もクリエイターになるしかないということなんですよね。自分も作る人になるしかない。なぜなら、お客さんとしてではなく現場に混ざるということは、その才能ある相手から「君には何ができるの? 何を作れるの?」と聞かれるということだから。現場の一員になる以上は、その輝く才能をただ近くで受け取って楽しむだけではなくて、自分からも何らかの才能を燃やした結果を提供しなきゃいけないから。対等な関係というのはそういうことだから。

つまり、リスクを取るということですね。相手にもっと近づきたい、まだ見たことがない巨大な才能の輝きを、生きているうちにもっと見たい、間近で見たい! と思ったら、自分もその人に何かを提供できる人になるしかない、「君には何ができるの?」と聞かれたときに提示できる何かがなきゃいけない。上手くいけば大きなリターンがあるけど、失敗したらもう立ち上がれなくなるほど傷つくかもしれない、というそれがリスクというもので、でもその輝きを本当に体験したいなら、リスクを取るしかない。

上記のポッドキャストでは「客席から舞台を見るのではなく、舞台から客席を見たい」と言っていましたが、ぼくの場合はそれで言うと、「客席からロックスターを見るのではなく、同じ舞台の上からロックスターを見たい」という感じでしょうか。

そう考えると、その後、38歳にしてそれまでまったく馴染みがなかったエンジニア界隈の人たちとつながりを持って、みんな坂本さんのことは知っていてももちろんぼくのことなんて1ミリも知らない人たちに囲まれて、なんのアドバンテージもなく、むしろどちらかといえばマイナスからのスタートみたいなところから、こんなふうに「どうしてアウトプットするの?」なんて質問されるぐらいコミュニティの人たちと親しくなれたりしてきたのは、そういう考え方だったり、経験だったりを重ねてきたからかな、という気もします。

以上、今度 id:xtetsuji さんとそれについて喋るときのためにメモとして書き出してみました。