Rubyist Hotlinks 【第 39 回】古橋貞之 さん
著者:るびま編集部
初稿:2024 年 5 月 28 日
はじめに
著名な Rubyist にインタビューを行う企画「Rubyist Hotlinks」。第 39 回となる今回は、古橋貞之さん。
では、お楽しみください。
インタビュー
- 聞き手
- 卜部さん (@shyouhei)
- 語り手
- 古橋貞之さん (記事中「古橋」)
- 野次馬(古橋さんの現職であるトレジャーデータの同僚と元同僚のみなさん)
- 国分さん、成瀬さん、田籠さん、金子さん、三村さん
- 日にち
- 2023 年 5 月 11 日
写真提供
:
目次
プロフィール
- 卜部
- はい、じゃあお疲れ様です。ゆるりと始めていきますが。るびまのインタビューはポッドキャストにしないという信念の元に、ポッドキャストにしていなくて。
- 三村
- そんな信念が。
- 卜部
- なんでかっていうと、いくら迂闊なことをゆっても後から編集できるからっていう。これがね、やっぱ迂闊なことを言ってもらわないと楽しい会話にならないから。
- 古橋
- なるほど。つまり迂闊なこと言っても大丈夫ということになっていると。
- 卜部
- 後でいじってもらったり。
- 三村
- 今回はオープンスペースで収録というのはありますが(笑)
- 卜部
- なんか同僚の悪口言ったから消してくださいみたいな話とかも前はありました。
- 古橋
- 攻めてますね。
- 卜部
- そういうの、皆さんが見ておられるるびまには一切載ってないと思うんですよ。なので全然大丈夫。というわけで、一旦テープ起こしたものを多分見てもらって、やばいってことだったりをいじってもらってとか、あるんじゃないかなと思ってます。というわけで、じゃあゆる始めていきます。古橋さんよろしくお願いします。
- 古橋
- よろしくお願いします。
- 卜部
- といって、なんかこう聞きたいことリストみたいなものも今日は持ってきていないので。基本的には、どういった経緯でこれまでプログラミング等をやってこられたのかという話を聞きつつ、今何やってるのか、今後何やっていきたいのかみたいな話ができればいいのかなと思うんですけど。
- 古橋
- なるほど、なんか国分さんからこう何かあった方がいいとか、そういうのはあるんですか?
- 卜部
- そうそう、じゃあ前回の国分さんのインタビューの最後の部分もあるんですけど、今日もおられるので。まず国分さんは何をしたかったのかというところから。
- 国分
- 僕はですね。まあ、古橋さんみたいにこう、色んなすごいプロダクトを作るにはどうしたらいいかというのがずっと気になっててですね。何回か同じ質問はしてるんですけど、改めて聞いてみたいなとかをしていきたいって感じなんですけど。
- 古橋
- ああ、それはFluentdとか。
- 国分
- そうですね。まあMessagePackとかも作られていて、そういったプロダクトを生み出した経緯なんかを残しておくといいんじゃないですかね、という風に思っています。
- 古橋
- なるほど、なるほど。
プログラミングを始めた経緯
- 卜部
- っていうと、まあ、Fluentd とか MessagePack とかを作った直接的な経緯みたいなのもさることながら、まずその前段階として、プログラミングをどうやって始めましたかとか、そういうところも聞いていけたらなと。
- 古橋
- なるほど、どういう経緯で始めたのか。はいはいはいはい。
- 卜部
- 僕らの世代だと、なんかもう生まれた瞬間にパソコンとか無い世代じゃないですか?
- 古橋
- うんうんうん。
- 卜部
- いつ頃からパソコンを始めましたとか、ありますか?
- 古橋
- 僕は、父がパソコンを使っていて。多分、学会発表のプレゼン資料とかを作ってたんですよね、Mac で。で、フォトショップとかが入っていて、なんかこう画像を作ったりということをやっていて。それを横で見ていて。そこでなんか Kid Pix という、今でも覚えているんですけど、お絵描きソフトがあって。それを本当にすごいちっちゃい頃、本当に小学生とかよりももっと前なんじゃないですかね。っていう時期に触ってたっていうのが、一番最初のパソコンとの出会いみたいな感じで。そこから Windows 95 が出て、インターネットが出てきて、まあなんかいろいろこう、ブルースクリーンで固まるマシンを使いながら遊ぶみたいなことをやっていて。で、プログラミングを始めたのはもうちょっと先、中学校上がってからぐらいだと思うんですけど。その時に、まあ実用的なプログラムっていう意味だと、高校の時ですね。あの、部活に入ったんですよ。それがなんかスーパーサイエンスハイスクール部っていう部活なんですけど(笑)
- 一同
- (笑)
- 国分
- 部なんですか(笑)実際のスーパーサイエンスハイスクールではなくてですか?(笑)
- 古橋
- スーパーサイエンスハイスクール認定を受けている高校だったんですよね。
- 卜部
- それは分かるんだけど、そこで部活なんだという。
- 古橋
- ですね、よくあるのはそれ、カリキュラムに組み込んでみたいなことなんですけど。それは、僕の行ってた岡崎高校っていうところは、それをなんか部活に全部突っ込むことにしたんですよ。
- 一同
- へえ。
- 古橋
- 多分ね、カリキュラムを変えたくなかったんですよ。なんか、進学校でとりあえずこれを使わなきゃいけないみたいなところで、まあ成果を出すって意味でも部活に全部突っ込むと。で、その、予算編成から学生が関わってやるみたいなことをやっていて。とりあえずパソコンは 10 台ありますと。で、今後対外発表とかでまあ、高校生向けのね、化学のイベントっていろいろあるんで、近くの大学とか研究所もあって、そこと連携しながらいろいろやりましょうっていう中で、僕はなんか化け学とか生物学とかなんかそういうものよりも、パソコン 10 台あって、発表資料を作るとかポスター発表しますっていうときの資料をどう管理するかとか。あとは、たんぽぽ地図っていうのを作ってたんですよ。それは、街中を自転車で走り回って、たんぽぽ摘んできて、それがセイヨウタンポポとアカミタンポポとニホンタンポポっていう、3 種類メジャーなやつがいるんですけど、それにあと雑種もいるんですよね。これを遺伝子解析すると種類が分かって、それをプロットするんですよね、地図上に。そうすると、ニホンタンポポは田んぼにあって、セイヨウタンポポは都市部にいるんで、それを経年でずっと調査し続けると、都市化がわかるみたいな研究があって。それを地図として作るのに、近くの大学の研究室に行って Macintosh と Illustrator で動くすごい使いにくいソフトを使わないといけないっていうのを自動化するっていうプログラムを書いたのが一番最初です。
- 卜部
- その研究は経年ということは岡崎高校でずっとやっていたということ?
- 古橋
- いや、愛知教育大学ってとこでやっていて、で、僕らがその部活で始めたのに連携してやりましょうということで、まあ、高校生を使って田んぼ走り回らせると、たんぽぽがいっぱい取れると(笑)。そういうので、まあやったという感じですね。
- 卜部
- でも、割と楽しそうですね。
- 古橋
- あ、そうですね。割と楽しかったですね。で、画像を最終的に吐き出さなきゃいけないんですけど、バイナリファイルの扱いがわからなかったので、とりあえず SVG で書いたんですけど。テキストファイルで XML でできるっていうのを見つけて。当時ブラウザとかでも SVG のレンダリングができなくて。結構苦労して、Linux を入れないといけなくて。Linux 上で動くツールがあったんですよね。それをやり始めたら、なんか Linux 面白いぞみたいになって。で、その部活のスペースにも Linux マシンを 1 台置いて、みたいなことをやっていたのが結構最初です。
- 卜部
- それが結構楽しくて、プログラミングいいなと思ったって感じですか?
- 古橋
- そうですね。Linux って触り始めると、どんどん下に行けるじゃないですか? で当時高校生で、広島のある高校がですね。パソコンがいっぱいある部屋ってあるじゃないですか。そこに CD 一枚一枚焼いて Linux 起動させて、数値計算やらせるっていうのが新聞に載ったんですよ。で、いや、これはもうできるはずだみたいなことを思って。より良くしようと思って。ネットワークブートでやろうということにしたんですよ。つまり、先生用のやつに一台入れると、他が全部ネットワークで起動するという、ネットワークブートシステムを作ったんですよ。で、それで結局、筑波大にも AC 入試で入ったんですけど、まあ、そういうのこう突き詰めるのができたっていう環境があったのがやっぱり大きかったですね。
- 卜部
- じゃあ、ちょっとその大学の話になっちゃいましたけど。結局そういう話を専門でやることは楽しそうだなということで、大学もそっちの方向に進んだんですか?
- 古橋
- そうですね、そうですね。そのネットワークブートシステムは高校の時に作って。で、その時に結局、先生用のマシンが落ちると他も全部落ちるわけですよ。
- 卜部
- まあ、そうですよね。
- 古橋
- で、あのファイルシステムとかネットワークブートしてるんで無いんですよ。要は Windows が普通に立ち上がっているマシンの上で、Linux 立ち上げて数値計算させるっていう環境なので、メモリに収まらなくなると、スワップもないんで落ちるんですよ(笑)。だから、それをどうしようかなみたいな話で。分散でディスクを少しずつキャッシュし合って持ち合うというシステムを大学に入ってから作って。それが未踏ソフトウェア事業なんですけど。っていう感じですね、大学入ってからは。うん。
- 成瀬
- Kumofs?
- 古橋
- Kumofs よりも前ですね。
- 田籠
- なんかちょっと中二っぽい名前だよね?
- 古橋
- あーそう、それそれ。VIVER ってやつです。
- 国分
- 高校生でそういう難しいものがいきなり書けるようになるなんて、なんか真似する相手がいたりしたんですか?
- 古橋
- 真似する相手もいなかったですよ。もう「とほほの」…
- 全員
- (笑)
- 国分
- 「とほほの」を読んだだけで書けるようになったんですか(笑)
- 古橋
- そういうので、はい。あのネットワークのシステムは C、C じゃないな。あれ、C 書き始めたのはもうちょっと後か。バイナリの扱いが分からなかったっていうのが、最初の C のプログラムで。malloc がわからないから、スタックに全部積むみたいなことをやっていて、そこから Linux に入って、もう全部シェルスクリプトで書きまくる。で、その後 Ruby って感じですね。
- 卜部
- じゃあ、最初の頃はプログラミングは Linux で始めたわけでもなく、Windows でやってたってことですか。
- 古橋
- そうですね。最初はそのたんぽぽ地図作るやつが C ですね。
- 卜部
- その C は、なんかコンパイラ買ってきたみたいな感じですか?
- 古橋
- いや、なんかフリーで動く C のコンパイラがあったんですよ。名前忘れちゃったんですが。
- 田籠
- LSI C とか?
- 古橋
- そうそう! そういうの、そういうの。そういうのです!
- 田籠
- LSI C は当時、結構有名なフリーのコンパイラで。なんか、小さいエディタとコンパイラがついてるんでしょ?
- 古橋
- そうそう。Run って押すと動くやつ。
- 卜部
- 僕は田舎に住んでたから。まずその C を書こうと思っても、周りに知ってる人もいないし、インターネットもないし、どうやって学べばいいんだろう? みたいなところでなんか本屋さん行って本買ったりしてましたけど。そういうのは、頑張ってインターネットで調べてたんですか?
- 古橋
- 頑張ってインターネットで調べましたね、うん。
- 卜部
- インターネットに書いてあったことでできたのか、すごい。
- 古橋
- なんとかなりました。
- 国分
- 普通はそうならないです。GitHub もない中で。
- 古橋
- でも、本当メモリアロケーションとバイナリの扱いか全くわからなかった。printf でやれる範囲で頑張ったって感じですね。
- 田籠
- え、本は読まなかったの? 入門書は読まなかったの?
- 古橋
- 読んでないんじゃないかな?ほぼネットですね。
- 金子
- それ、誰か本を出してくれる先生とか身近にいなかったんですか?
- 古橋
- いや、もう本当、高校の時は誰もみんな評価してくれないというか、相手にしてくれないというか。
- 成瀬
- 本屋に行けばあるっていう発想はなかったの?
- 古橋
- 本屋に行く習慣がなかったんだよ(笑)
- 田籠
- 面白いな
- 成瀬
- 僕はなんか神田の三省堂で本を買ったので。だから。
- 古橋
- あー。
- 古橋
- 大学入ってから、そのネットワークブートシステムを未踏でやるっていうときに、initramfs っていう Linux が起動するときに一番最初に動くところ、あそこで ash を書いてたんですよ。あの BusyBox で動くシェルを使って、ネットワークブートのセットアップをするみたいなことをやっていて。そこが、環境がすごい制約があって。
- 成瀬
- KNOPPIXですか?
- 古橋
- KNOPPIX ベースで最初やろうとしたんですけど、あれはネットワークブートにさせるのが結構大変で、結局全部自前で Linux をなんかやるみたいな感じで。
- 成瀬
- Linux ディストリビューションを根本的に作った?
- 古橋
- えっとね。Wind River Linux っていうのがあって。あれでやってましたね。その前は日本のね、なんだっけな? あのタヌキみたいなマスコットがいるやつ。なんだっけな、忘れちゃったな。
- 三村
- Momonga?
- 古橋
- Momonga! そう、Momonga でやってて。そうそうそう。
- 古橋
- そうで、それでネットワークブートの最初のところを BusyBox でやってたのを Ruby にしたら、正規表現がライブラリー使わずに使えるじゃないですか。だから static リンクした Ruby のバイナリだけ持ってきて、.rb ファイル一切なしで「ash より圧倒的に良いぞ!」っていう環境で使い始めたのが Ruby の最初。
- 卜部
- まあ、今でこそ色々入っているけど、昔の BusyBox は本当に何もなかった。
- 古橋
- 本当に何もない。正規表現を文字列マッチしようとすると、バックスラッシュを三重ぐらい書かないといけなくて、ひどい有様になっていた。
- 卜部
- じゃあ、大学の学部ぐらいの頃は、そのネットワークブートとか、そういう方向に興味だったわけじゃないですか。
- 古橋
- そうですね。
- 卜部
- その後から MessagePack とかに移っていく感じですか?
- 古橋
- そうですね。
Kumofs〜MessagePack
- 卜部
- MessagePack 制作秘話みたいな。何から始まったんですか?
- 古橋
- あれはその、Kumofs のプロトコルなんですよ。
- 卜部
- まあ、まず Kumofs について。
- 古橋
- そうですね。つまりですね、ネットワークブートのシステムを作っていたときに、まあ、一台起動して、そこからネットワーク起動するわけなんですが、それの間でファイルをシェアしたいとか、まあ DHCP サーバーとか立ち上げないといけないんで立ちあげてとか、要は各マシンのセットアップですよね。これをやりたかったんですよ。ってなったときに、メタデータを共有して、今で言うところの Kubernetes みたいな事やりたかったんです。オペレーターみたいな。要は「こういう風なセットアップをしたい」っていうのを宣言すると、みんながだんだんそっちになって行くみたいなのをやりたかったんですけど、共有できるデータストアがなかった。っていうところから、共有ファイルシステム、分散共有ファイルシステムみたいなものを作りたいなって思ってたんです。でも、その当時は作れなくて。その後「えとらぼ」っていう会社が立ち上がって、それはあのミクシィを作った衛藤さんという方が立ち上げた会社なんですけど。そこで写真共有サービス Ficia っていうのを立ち上げようとしていて。で、それで写真のメタデータを、大量に保存して画面上にこう、なんだろうな、まあ Flickr クローンみたいなやつなんで、100 とか 200 とか一気にサムネイルを表示するっていうシステムを作りたくて、そのバックエンドを作る人を探してるみたいな状況だったんで、そこに入れさせてもらったんですよ。で、作り始めたのが、Kumofs なんですよね。で、Kumofs を作り始めるにあたって、最初どういう風に作るかもよくわからんので、とりあえずネットワーク通信は確実に必要だからプロトコルを作ろうと。で、その前に未踏で作っていた VIVER、ネットワークブートのシステムは全部 UDP で謎のバイナリデータをやりとりしていたんですが、あの経験をもう一回やりたくないなと思って、MessagePack を作り始めた。当時は MessagePack って名前もついてなくて、Kumofs のネットワークプロトコルってやつだったんですけど、Kumofs がでっかくなっていって、そこだけ切り出して、別のプロジェクトでも使いやすくしようと思ったのが、MessagePack ですね。
- 国分
- その、バイナリでやらなきゃいけなかったのは、そうじゃないと、例えば JSON とかを送るのだと、ちょっとペイロードがでかすぎるっていう前提があったんですか?
- 古橋
- JSON っていう発想がなかったんですよ。
- 国分
- 当時は別に流行ってなかった?
- 古橋
- そう。ネットワークプロトコルといえば、最初の 2 バイトをビッグエンディアンでエンコードして、みたいなもんだっていう発想。
- 卜部
- 昔の古き良きネットワークプロトコルの発想。
- 古橋
- 古き良き、そうそうそう。
- 国分
- なるほど。
- 成瀬
- それじゃないと、XML の時代ですよね。まだ。
- 古橋
- そう、XML とかなっちゃって。で、C++で書いたんですけど、C++で XML で、とかされ始めると、あーって感じになっちゃうので。
- 国分
- バイナリの方がまだ楽だったってことですね。
- 古橋
- バイナリの方がまだ。
- 卜部
- っていうのはいつ頃ですか? 大学院?
- 古橋
- いや、あれは大学の学部ですね。Kumofs は。
- 三村
- 二千何年頃ですか?
- 古橋
- えっ、ちょっと年代がわからないですね。数字がわからない。大学 1、2 年ぐらいだと思いますね。
- 成瀬
- 2003,4 年ぐらい?
- 古橋
- そうですね、多分逆算するとわかる。と思うんですけど。
- 田籠
- もうちょっとあとじゃない?
- 三村
- 確かに JSON はそこまでメジャーじゃなかった時代ですね、それだと。
- 卜部
- じゃあその頃は大学はつくばですよね? に通いつつ、アルバイトはリモートで? それとも通ってた?
- 古橋
- えとらぼっていうところは完全スタートアップで、僕はバイトみたいな立場にしてもらったんですよ。だから基本的にはオフィスにあんまり行かなくて、月に数回ぐらい。で、基本的に筑波で作ってました。
- 卜部
- 筑波にいて、たまに行く、みたいな?
- 古橋
- そうです。ただ、なんかその時に、いろいろこう発表する。勉強会っていっぱいあったじゃないですか。ああいうところで、Kumofs ってこういうもんだみたいな話をして。CAP 定理がどうのとかね。いろいろ流行った時代だったんで。そうしたらいろんな人にこう見てもらってっていうのが、その後のまあ、トレジャーデータの起業にもつながってくるって感じです、はい。
- 田籠
- ちょっとだけ挟んでいいですか? ちょっとだけ毛色の違う話なんですけど。えとらぼはスタートアップなわけじゃないですか。確か、エンジニア 4 人だけとかの会社でしょ? で、とりあえずスタートアップになるわけじゃないですか。
- 古橋
- はい、はい。
- 田籠
- なんで、その頃からスタートアップに引き寄せられる人生を歩んでるんですか?
- 古橋
- ああ(笑)なんででしょうね?
- 国分
- 未踏のつながりとかなんですか?
- 古橋
- えっと、えとらぼは、廣瀬さんですよ。
- 田籠
- 元 DeNA の。@hirose31 さんでしょ?
- 古橋
- そう、@hirose31 さんです。に声をかけてもらったんですけど。
- 成瀬
- 当時 KLab(を知らなかった。https://www.klab.com/jp/ ですかね?)の。
- 古橋
- そう KLab。あれはなんでかっていうと、僕がそのその前に未踏でやっていたネットワークブートのシステムをブログでいっぱい書いていて、そしたら mixi のメッセージで「面白いね」っていうのが来たんですよ。それが廣瀬さん。
- 田籠
- それで一本釣りされたの?
- 古橋
- そうそう、一本釣り。それで Kumofs とかもブログに色々書いていて。で、これはちょっと時間が空く話ではあるんですが、その MessagePack を独立させてオープンソースプロジェクトにして、でこれをその学生の立場で広めようと思ったら、一個うまい方法があるなって思って。それは、いろんなとこにインターンに行ったりとか、バイトっていう形でいろいろ行って、そこでこっそり……まあこっそりとは言わないけど、MessagePack を使うと(笑)バイトなんでいいじゃないですか、責任もない。
- 田籠
- 人間トロイの木馬じゃ無いですか(笑)
- 古橋
- そうそう。それでこっそり仕込んでしまえば、あとはメンテナンスせざるを得ない(笑)っていう戦略をちょっとやっていて。で、それで次のトレジャーデータのときは、太田さんって当時 PFI っていう会社にいた人から声かけられたっていう感じなんで。前やってたことを広めてたら、次から声かかるみたいなパターンですね。
- 卜部
- 昔はみんなブログ書いてましたもんね。
- 古橋
- ブログがやっぱでかかったですね。うん。
- 卜部
- 今時はあんまり流行らないが。昔はみんなブログを書いていた。
- 古橋
- そう、みんなブログ書いて、勉強会みたいなのをやって。筑波に住んでたんですけど、多い時は週三とかで東京来て喋ったりとかしてましたね。
- 国分
- バイナリープロトコルを使う先が結構あったんですか、その当時は? 普通あまり無いと思うんですけど。
- 古橋
- もう、そりゃあまあ、こじつけで(笑)
- 国分
- 例えばどういうのがあったんですか?
- 古橋
- あー、例えばですか?一個面白いのはああ、そうだな、なんだろうな、Roma ってあの、楽天で作ってるキーバリューストア、あれにちょっと交じってた頃があって。その時にね、それはもちろん、ネットワークプロトコルを使いましょうみたいな話とかありましたし、あとはなんだったかな?ネットワークスイッチって、そのスマートなやつは高いじゃないですか。じゃなくて、中央に賢い奴がいて、そいつらが周りのそこそこ賢いスイッチにコントロールを委譲させることによって、セミスマートなデバイスにするっていう。なんだっけ?NetFlow?みたいなやつが標準化された時期で。それをやりたい所があって、その時にもなんか使いました。ネットワークスイッチにメッセージ喋らせて通信したいみたいな。
- 卜部
- まあね、MessagePack の他には XML しか選択肢がないと言われたら、それはどちらかというと、ということで。
- 古橋
- そうなんですよ。やっぱああいう業界になってくると、JSON とかに行かないんですよ。
- 国分
- 日本の企業で普及してたと思うんですけど、それが海外に広がったタイミングとかってなんかありました?
- 古橋
- 海外に広がったタイミング。
- 国分
- トレジャーデータのおかげなんですか?
- 古橋
- えっと、MessagePack はもっとだいぶ前なんで……なんでしょうね?
- 国分
- 海外のカンファレンスに登壇とかされてたんですか?
- 古橋
- いや、全然。
- 国分
- 突然広まっていったと。GitHub の力ですか?
- 古橋
- MessagePack の Web サイトって GitHub とかで登録すると、クローリングが走っていて、「MessagePack の実装あります」みたいな所に一覧されるっていう Web サイトで。あれが良かったかなって思っていて。
- 国分
- へえ。
- 古橋
- 実装がなんかすごい増えたんですよ。で MessagePack って割とこう、何だろうな。学生でも作れるし。なんか何何言語の実装を作るっていうのって、バイナリの扱いとかを勉強するのにすごい適していると思うんですよ。
- 国分
- うん、はい、はい。
- 古橋
- そういう感じで実装が山ほどできたんですよ。それでなんか広まっていったのかなっていう気がしますね、MessagePack は。
- 国分
- その書いた人たちがどうやって MessagePack を見つけたのかはよくわかんないですね。
- 古橋
- よくわかんないです、全然(笑)。でもなんか JSON の速い奴っていうフレーズが割と刺さったのかなって気がします。
- 卜部
- あと、なんか Java の人が使っている印象がありましたね、昔。
- 古橋
- Java ねえ。
- 卜部
- そうそう。知らぬ間になんか Ruby の人以外も結構使っているんだなと。
- 古橋
- はい、はい、はい、はい、はい、はい。
- 田籠
- 僕の印象だったら、ゲームとかああいうもうバイナリーが前提になってる人たちが、使いやすいパブリックなバイナリシリアライゼーションのフォーマットを、自分たちで発明するのは嫌だから、どっかにあるものを使いたいって言って、使ってるっていう話なのかなっていうイメージはありますね。
- 古橋
- そう、ドラクエのセーブデータとかに使われてるって話はありましたね。ゲーム系の開発者向けの国際的なカンファレンスがあって、そこで「ここで MessagePack 使ってます」みたいなフレーズが出てきたらしいです。
- 田籠
- いつだっけな? どっかの海外のゲーム系か組み込み系だったかの会社の社内 Wiki には、なんか古橋貞之のページがあるらしいみたいな話をどっかで聞いたことがあって。
- 古橋
- 知らない(笑)
- 田籠
- マジでっていう(笑)。何か便利そうなものがあると、古橋貞之のプロダクトであることが多いとかで。どっかで聞いた(笑)
- 古橋
- へえ(笑)。当時はまあ、確かにいろんなものを作って、まあ大体死んでいったわけなんですが。なんか、DHCP サーバーの横で、ネットワークブート用のサーバーを立ち上げるという、PXE っていうプロトコルがあって。それのサーバーって、オープンソースで出回っているものってなかったんですよ。それを作ったら、なんか熱狂的なファンみたいな人がたまに出てきて。「これは素晴らしい!」って。スター数 3 とかなんですけど(笑)。そういう、めっちゃ熱狂的な人みたいなのが出てくるのが多かった気がしますね。
- 卜部
- そうか、PXE のサーバー、たしかにオープンソースのやつ見たことないな。
- 古橋
- 全然ないですね。なんかインテルのプロプラなやつがあるらしいんですけど。
- 卜部
- インテルとか、まあ PXE に対応しているハードウェアじゃないと使えないかっていう話もあるのかもしれんけど。DHCP と PXE と TFTP、3種の神器ですね。
- 古橋
- そうそう、まさにそう。
- 卜部
- っていう忙しい大学時代だったんですね。
- 古橋
- 大学時代は、大体そんな感じで。でも学部 3 年あたりまでは結構暇で。宙ぶらりんの時期があって、いろいろ作って。なんかこう書いては捨てるみたいな時代は結構ありましたね。
- 卜部
- 筑波大はそんな感じなんですか。3 年くらいは自由にしろみたいな。
- 古橋
- さあ、どうなんですかね? 僕は筑波大の中でも、そんなに典型的なことはやってないような気もしますけど。なんでしょうね。AC 入試っていう入試スタイルがやっぱ。
- 田籠
- AO?
- 古橋
- AO ってみんな言うんですけど。筑波大だけ AC。
- 田籠
- へー
- 古橋
- が、すごいちゃんとしていて。やっぱ紙の試験を受けてないんで、解析学とか数学の授業を落とす連中が出てくるんですよ。そういうのもちゃんと対応して。なんかスパコンの円周率計算するソフトウェアを各スパコンに作る、すごい伝説のような先生がいて。彼が、解析学の単位落とした AC 入学生の補修をするみたいなのをちゃんとやってる、素晴らしい……なんかその AC 入学の人たちにある種の連帯みたいなのが生まれて、WORD 編集部っていう、秘密結社みたいなこう部屋があって。そこにこうムレるとかっていう状況が起きてきて、その中で「vim をいかに使いこなすか」みたいなトークが行われたりして、それでこう先鋭的な人間が育っていくみたいな環境があった気がします。
- 成瀬
- 登大遊さんとか、そうですよね。
- 古橋
- そうそう、大学の研究室の先輩ですね。
- 卜部
- 楽しい感じですね。
- 田籠
- 筑波大のコンピューター系の人って、見えてくる名前がそういう人ばっかりだから、そういう人がウロウロしているのかなって(笑)
- 古橋
- そうそうそうそうそう、まあ秘密結社ですよ、本当に。
- 卜部
- なんか、当時面白かったエピソードみたいなのはあります?
- 古橋
- ああ、当時面白かったエピソード。なんだろうな? うんと、なんか筑波の七不思議みたいな Web サイトがあるんですよ。それはあの、筑波大の住所って天王台 1 の 1 の 1 になるんですけど。で、ヘリポートみたいな広場があって、もう巨大なんですよね。これ、どういうことかっていうと、その、有事の際には皇居をここに移動させるためだみたいな。
- 田籠
- 本当?(笑)
- 卜部
- 七不思議だから(笑)
- 古橋
- そのために、地下共同構っていう避難路が完全に整備されている。
- 卜部
- 地下に入っちゃったら被害を受けないみたいな感じ。
- 古橋
- あ、そうそう、そこに入ると除籍みたいなのがあるんですけど(笑)
- 古橋
- そういうのを総称して、なんかこう。まさに登さんが正になんか AC であるっていうこう WORD を作り出したんですね。でなんか彼のブログにそういうのが書いてあって、そのなんか変な人みたいなのをこうラベル付けした。で、それをなんか良いことだ、みたいにこう言い出したんですよ。今でこそ、ある種のオタク文化とかって結構認められたありますけど、十数年前とかになると大分違うじゃないですか。そんな感じの雰囲気で、なんかこう「変なことをやってるやつはいいやつでやる」みたいなラベル付けがされて、それをなんかこう推奨するみたいな環境があったっていうイメージですかね。うん、まあ、これっていうストーリーではないですけど、そう。そういうのがありましたね。
- 卜部
- なんか登さんの AC の話とかはなんか眺めてた気がする。インターネットで。
- 成瀬
- 一世風靡しましたよね。
- 古橋
- 一世を風靡した。
- 卜部
- はい。って感じで大学を過ごした後、その後すぐトレジャーデータなんですか?
- 古橋
- そうですね。修士卒業する直前にアメリカに行って起業してるんで、そうですね。
- 卜部
- えっと、それはやっぱり太田さんに呼ばれたら? 結構すごくないですか? 呼ばれたらふらっと行っちゃうみたいな。
- 古橋
- 行っちゃいましたね。
- 国分
- なんでアメリカに行こうと思ったんですか?
- 古橋
- あれは、その僕も一応修士ともなると、就活をするわけですよね。
- 国分
- はい。
- 田籠
- した?
- 古橋
- しましたよお。それで、いろんな企業、まあ、日本の企業ですけど、行って、まあインターンとかね。こう、職場体験的なことをいろいろとやったんですけど、まあ、ちょっと合わんなみたいな感じを思っていた頃に、太田さんが。
- 成瀬
- 悪い大人が。
- 古橋
- そう悪い大人。そうそう、結局悪い大人にそそのかされた。で、本郷三丁目のスタバに呼び出されてですね。「起業するから」って言われたんですよあ、「そうですか」っていう感じで「お前も来い」っていう話になって、一旦そこはちょっと考えますわっていうことにしたんですけど、その翌週ぐらいにあの合宿に行くぞと。そこでプロトタイプを作るからお前も来いって言われて。だから、なんか僕行くことになっていて。
- 全員
- (笑)
- 古橋
- 気づいたら行ってた。ちなみに、その合宿で伊東温泉で作ったのが Fluentd なんですよ。そこでプロトタイプができて。
- 卜部
- 今のは太田さんらしいエピソードなんですか?
- 成瀬
- うん
- 古橋
- うんうん、大変らしいエピソードですね。
- 田籠
- 完全にそのまんまですね。
- 成瀬
- 古橋さんは押せばなんか作っちゃうだろう、みたいな。
- 田籠
- でも多分、あれは、誰なら押しても大丈夫みたいなのを、ちゃんと見てやってるっていうのが、まあ、あの人の賢いところですけど。
- 成瀬
- 人と人によって使い分けるんですよね。
- 国分
- 合宿で Fluentd を作る経緯は、何が目的でそうなったんですか?
- 古橋
- 最初は、太田さんが Hadoop ユーザーグループっていうのをやってて。あと、芳川さんが、今は会長ですけども、シリコンバレー側で投資をやってた人で、でこの 2 人が結託して会社作るってなったっていう話が最初あるわけですけれども。「Google とヤフー以外が使えるみたいな状況じゃなかったのを何とかすれば、絶対にビジネスチャンスがある」と言うところから始まっていて。まあ、そしたらやっぱ big data processing いるよねって話になり、そうしたら、まあストレージとクエリはいるだろうという話で色々考えてたんですけど。ただ、合宿の中で「いや待て」と。そもそもデータ集めてるやついないじゃないかと。そこを解決しないと、このビジネスできないんじゃないっていう話になったんですよ。なので、データ収集からやらなきゃねって話になったっていうのが合宿の成果で。だから正確には、Fluentd は帰りの電車の中で書き始めてるんですよね。
- 国分
- 普通そのインジェストからかからずにストレージからかかると思うんですけど、その時はストレージは何だったんですか?
- 古橋
- HBase でやろうとしてた。そう。でも、噂によると HBase は火山になってしまうらしいので、まあやらなくてよかったみたいな感じですけど。なんで、Fluentd は最初からそのデータ収集の問題をみんなに解いてもらって、オープンソースでもバーッと広まったらよくて、その先を我々はビジネスやるぞっていう発想なんですよね。
- 卜部
- あ、そうなんだ。じゃあさっきのその MessagePack はすでにあるものからライブラリに切り出してみたいな話だったけど、完全に方向が逆で、最初からオープンソースでやろうと考えていたと。
- 古橋
- そうですそうです。Fluentd はそうですね。
- 国分
- Fluentd を設計したのは、古橋さんが一人でやったっていう感じなんですか?
- 古橋
- あー、そうですそうです。
- 国分
- おー、こう突然連れて来られた学生が、合宿で一人で完成させたって感じなんですね。
- 古橋
- あー、そうそうそう。
- 国分
- 合宿で他の人は何をしてたんですか?
- 古橋
- 日本にいたのは太田さんと僕だったんで。太田さんはいろんな友達のところに行って、まあその友達もいまだみんな偉くなってしまってみたいな感じですけども、何作ったら買ってくれる?みたいなことを聞いて回ってた感じですね。
- 国分
- なるほど。
- 古橋
- 「じゃあ買うね」みたいな感じになって買わせる、みたいな。
- 成瀬
- 太田さんはセールスマンですよね。
- 古橋
- 太田さんはセールスマン。浪速の商人って感じですね。
- 卜部
- その時は、Fluentd みたいな、コアの部分があってプラグイン機構があってみたいな設計はどこから湧いてきたんですか?
- 古橋
- あー。
- 成瀬
- 古橋さんといえばプラグインですもんね?
- 古橋
- そうっすね。でも、あの時代はなかったですけど。
- 田籠
- なかったよね、他のプロダクトには。
- 古橋
- そう、ただあの時競合だったのが、Flume っていう Java の製品があって。それが、いわゆる Hadoop 界のデータ収集と言えばこれが一応あるものの多少使いにくくて今いち使われてなかったみたいな感じだったんですね。それがたしか一応プラグイン機構を持ってたんですよ、確か。プラスアルファ、僕もさっきの MessagePack が、なんか色んな言語の実装あるよって Web サイトに出したらなんかイケてたっていう経験があったんで、そういうのができたら広められるなって思ったんですよ。それを組み合わせると、じゃあコアは作って、特に難しいバッファリングやリトライはコアでやって、プラグインは Web サイトに一覧出してやるっていうのがいいんじゃないかって思った。で、実際うまくいったっていう感じですかね。
- 国分
- なんで Ruby を使ったんですか?
- 古橋
- Ruby しか書けなかったからですね。だって、当時 C++か Ruby だったんで。Java なんてほとんど書いてなかったし。
- 卜部
- C++のネットワークプログラミングはちょっと面倒。
- 古橋
- や、もうちょっとどころじゃないです。やばいっす。死んでしまいます。Boost.Asio とかヤバイですね。
- 国分
- 仮に当時 Java が書けてたら、そっち使ってました?
- 古橋
- いや、どうだろう? 最初、やっぱ合宿の発想なんですよ。もうあの、合宿で仕上げるみたいな。なんで、Java ってやり始めたら、もうそういうわけにいかないじゃないですか。とりあえず、ぱぱっとプロトタイプ作って、どうせ性能でないから後で書き直せばいいやみたいなことを思ってたんですよ。で、意外に性能でるし(笑)まいっかとなっちゃって、そのまま走っちゃった感じです。当時、僕が最初にどこかでしゃべった資料とか見ると、後でここは C++で書き直しますと書いてあると思います。
- 田籠
- 確かに。後で C++で全部機能しますって書いてありましたね。
- 古橋
- そう。で、なんか意外にいけちゃったっていう。まあ結局 I/O ボトルネックだし、で、しかもログ収集って別にそこまでピーキーにチューニングしなくてもいいんで、まあ Ruby でオッケーっていう感じです。
- 卜部
- まあね、たまに正規表現が爆発したりしますけどね。
- 古橋
- あー、でも正規表現はどうなんですかね?
- 田籠
- どっちかっていうと、やっぱりルーティングとかの方がパフォーマンスボトルネックに、初期になった。
- 古橋
- そうですね。
- 田籠
- っていうか、まあ僕の手元でなってたのが思い出されるけど。
- 古橋
- はいはいはい。そうそうそう。その辺ですよね。
- 田籠
- なんか、結構あんまり、それも Ruby で別にいい。書きようによって、というかアルゴリズム直せばまあどうにかなるっていう問題だったので、あんまりそうですね。まあそれこそデータのシリアライザーションが一番ボトルネックになるけど、それ MessagePack が C 実装になっていたので、すでに。っていうイメージでしたね。
- 古橋
- そう、そこ MessagePack でゼロコピーだね。確かに MessagePack 使ってたのがデカかったかもしれないですね、性能的に。
- 国分
- ちなみに、今から Fluentd を書き始めるとして、何の言語を使いますか? Ruby 使わないですか?
- 古橋
- いや、そこ難しいところで、今、Fluent Bit がめっちゃ流行ってるわけですよ。Kubernetes 界隈で。
- 国分
- あー、はい、はい。
- 古橋
- 何かって言ったら、やっぱりメモリのフットプリントがめちゃめちゃ小さいってのが、特に Sidecar で動かすときに重要だと。ってなったら、まあ確かに、メモリフットプリントって重要だなと思うわけですよ。とは言え、その Fluentd っていうバックグラウンドがないと Fluent Bit って、ちょっときついなって思うんですよね。プラグインで拡張できて、いろんなものと繋がるっていうのがファミリーとしてあるという。
- 国分
- はい。
- 古橋
- ゼロからってなると、そのファミリーが無い状態ってことですよね。ってなったらどうすかね?
- 国分
- アグリゲーターとビットは分けて作りたいですんですか?
- 古橋
- いやでも。うーん、そうですね。まあ今の発想だったら、多分エッジに入れるやつと中央で集めるやつ、別で作るんでしょうね。おそらくね。
- 国分
- はいはいはいはい。
- 古橋
- だから、エッジにはもう少しコンパクトなやつで、誰かが後でやってくれそうなやつ……
- 国分
- というのは?(笑)
- 古橋
- Rust とか。Rust ってちょっと C++っぽいじゃないですか。だから Rust の酷いコードがあると、寄ってきてくれそうじゃないですか(笑)
- 田籠
- 許せない人たちが(笑)
- 古橋
- そうそう、で「いいっすね」って感じでやってもらって任せる、で僕はこっちの中央の方をやり始めて。そっちはどうだろうな? こっちは結構インテグレーションが重要になってきて。どこに流すかとかって重要ですよね。だからやっぱ動的型付け言語でやりたいってなるんじゃないかな。Java はしんどいな……
- 田籠
- プラグインの書きやすそうな言語って、いまだにあんまり出てないなっていう印象はありますよね。
- 古橋
- そう、なんですよ。やっぱ Ruby ってリフレクションをバンバンできるのってめちゃめちゃ便利で。であと、ダックタイピングっていうんですかね、なんて言います?
- 田籠
- まあ、緩いインターフェイスでつながるみたいな。
- 古橋
- そう、緩いインターフェイスなんで、互換性崩さずにインターフェイス拡張するみたいなのを割とやりやすいですよね。Java はもう即死ですけど。
- 田籠
- でも、型が強い言語が最近多いから、結構なんか変なハックがいるんじゃないかなっていう気がする。
- 卜部
- なんか、そのプログラムを作るにあたって、我々もその大学生ぐらいの頃は、みんな一人で作ったけど、仕事し始めるとチームで作り始めるじゃないですか。ってなった時に、Java みたいに型がかっちりしてる方がチームで作りやすいんだっていう意見もある一方で、Fluentd みたいなプラグインみたいな風にしたほうがスケールしやすいよねという意見もあると思うんですよね。って話だと、古橋さんはどっちかというと後者の方がやりやすそう、という感じですか?
- 古橋
- まあ、今仕事で書いてるのは結構、静的型付け言語の方が多かったりしますね。それこそ TypeScript とか Java とか。でも Fluentd ってそもそもオープンソース前提で作ってるんで、オープンソースコミュニティ的なやり方一番いいと思っていて。そうすると、各プラグインがそれぞれプロジェクトになってるわけじゃないですか。で、そのプラグインをチームで書くみたいな発想はあまりなかったんですね。そもそも。だって、一人だけじゃんみたいな感じで。ってなってくると、そこにそんな制約があるような静的型付け言語を使うとかって、そこまでメリットがない気がするんですよね。
- 卜部
- そう、我々結局個人でプログラム書いちゃってるから、自分の体力が続くところまでが一区切りの規模のプログラムを書かないと、なんかね。すごい壮大な計画を建てたけど計画倒れになりました、みたいなすごいありがちだから、パッと書けて自分のサイズで収まるって、やっぱり重要かなって思いますね。
- 古橋
- そうですね。あ、でも今、僕がチームでコードを書いているかと言われると、結構怪しい部分がありますね(笑)僕は割と一番最初、売れるか売れないかわからんとか、とりあえずすぐ売れるもん作らなきゃいけない、みたいなところをやることが多いというか。まあ僕自身、そこが多分一番得意なんで、そこをやることが多いんですけど。そうすると、そこってチームでどうこうってなかなかできないですね。どちらかというとチームを組むとしたら、プログラミングする人たちよりはプロダクトマネージャーとかお客さんとかになってくるので。なんで、そこをいかにこう早く駆け抜けられるかっていう言語が一番使いやすいと思いますね。
- 国分
- 一回書いた後に、だいたい古橋さんの場合だと、ほかのチームに移譲してると思うんですけど、自分でこう、アイデアがどんどん出てきて、ずっと自分でメンテしたいってなったことはないんですか?
- 古橋
- ないですね(笑)いや、えっと、あるっちゃあるんですよ。でも、僕得意じゃないんですよ、たぶん。下手なんです。
- 国分
- どうなんですか? moris さんがなんか言いたいことある?
- 田籠
- この人マジでメンテナンス下手くそなんで(笑)
- 古橋
- そうなんですよ。得意な人がいるから、なんかすごいなって思って。じゃあいっかってなっちゃうみたいなことが、やっぱ多いですね。
- 卜部
- 興味関心が一巡して一年後にまた戻ってくるみたいなことってないんですか?
- 古橋
- あー、Fluentd とか結構そんな感じでしたね。マルチプロセスシステムとか作りたくて、一回帰ってきたみたいなありますけど。なんかお呼びでなかったというか、若干微妙みたいな感じはなくはないんですけど、うん。だからあんまないです。一番最初に設計するときに何回も書き直すんですよ。まあ大体 3 回ぐらい書き直すんですけど。コード捨ててみたいな。それをやってるんで、当時思い至ったアイディアで捨てたアイディア、これ今からやってるとちょっと時間かかりすぎるとか、これは絶対やりたいんだけど多分使われないとか、そういうのがいっぱいあって。で、それを何かこれやりたいなって思うことは結構ある。あるっちゃある。ただ、実際にそれを作ろうってなると、結局やっぱ一回捨てたアイディアではあるわけですよ。だから、やらなくてもいいなってなっちゃう。要は、その周りの要求に無いから。
- 成瀬
- 古橋さんがプロダクトを最初に立ち上げる時って、僕らが想像しているよりもはるかに考えている気配があって、はるかに情報も入れている気配があって、そのレベルをほかの人に求めるんだったら、かなり不可能に近いと思うんですよ。多分 PM と同レベルの情報を全部頭にいれて設計してますよね?
- 古橋
- そうですね。
- 成瀬
- しかも、実際に書くスピードも速いので、何度も書いて書き捨てて、それが実現可能かどうかで、一旦やり直してみたいなのを何度か繰り返してやられているので。
- 古橋
- うん。
- 成瀬
- ソースコードのメンテする立場になると、それがソースコードの端っこの方に「こういう検討したらダメだったので、こうなってる」みたいなのが書いてあったり書いてなかったりする。なので、古橋さんのコード読んで、ちょっとこれ違和感があるなということがあって、後でもっと簡単にリファクタリングしたいなと思っていても、それから数ヶ月経つと、それが本当に必要だったと気づくみたいなことが結構ありますね。そこでいくとまあ、なんかそこまで考えて作っているんだなって実感することが多いですね。
- 古橋
- そうっすね。めちゃめちゃやっぱ最初設計するときは考えて、いろんな拡張性の余地とかも、やっぱ置いておきたいんですよ。最初に拡張しようと思って拡張性を維持したままやったところって、まあ、なんとか拡張できるけど、コンセプト的に全く違うみたいなものを入れるのって、すごく大変じゃないですか。
- 田籠
- そうですね
- 古橋
- そういうのはやっぱ置いておきたいなと思っていて。だから、なんだろう?今、トレジャーデータでも PlazmaDB っていうデータベースエンジンがありますけど、あそこになんかスナップショット機能とか入れる余地はあるんですよ。確実に。
- 成瀬
- はい。
- 古橋
- ある。
- 成瀬
- 僕は最近はそのスナップショット機能早く入れろって催促するのが、僕の仕事。
- 田籠
- まあ、別に仕組みとしては難しくないよね。
- 古橋
- そうそう。できる。仕組みとしてある。
- 成瀬
- 今古橋さんから引き継いでいるものをメンテナンスすればできる。
- 古橋
- やればできる。やりたいなと思うが、まあ、でもそれやってじゃあどれぐらいその売れるかみたいなことを考えはじめると、こっちもやりたいなみたいのがあって、どっちかっていうとそっちをやっちゃうみたいな。
- 成瀬
- 私はビジネスアプリケーション、PlazmaDB とかをトレジャーデータのプラットフォーム上で作るという仕事やってるんですけど、そのビジネスアプリケーションを作る上で、なんで PlazmaDB にスナップショットが無いんだよって困る人が増えてきたので、最近欲しいぞって言ってる。
- 古橋
- そう欲しくなりますよね。
- 国分
- 古橋さんはゼロイチで開発するのが得意って話だと思うんですけど、なんかそれが最初からできたのか、それともなんか得意になるブレイクスルーがあったのかというのが気になってるんですけど。昔から出来たんですか?
- 古橋
- 昔からゼロイチしかやってないんですよ、逆に。だから他が下手すぎるんですよ(笑)。トレーニングを積んだというか、プログラミングを始めたきっかけもたんぽぽのやつだし、ネットワークブートのやつもそうだし、Kumofs もそうですけど、基本的にゼロイチのところしかやってないんですよね。
- 国分
- 常に一人で誰にも聞かずにイチから作ってるから、それが得意になったということですかね?
- 古橋
- そう。逆に、それより先の、例えば大企業に行ったら出来るような経験はやったことがないんで、わかんないってかんじですね。
- 国分
- なるほど。
- 田籠
- あ、でもゼロイチでも、打率で言うと明らかに MessagePack 以前と以後で全然違うよね。
- 古橋
- あー、確かに確かに。やっぱり成功体験があると全然違うんですね。
- 田籠
- MessagePack 以前はまあ、こういう人なんだけど、すべて滅びてしまうと。
- 古橋
- すべて滅びましたね(笑)
- 田籠
- けど、それ以降、実は全部生き残ってるでしょう。まあ、ちゃんと出したものは。
- 古橋
- あー。
Fluentd 以降
- 卜部
- じゃあ、Fluentd 以降の話を聞きましょうか。あのアメリカに行きましたって聞きましたけど、その後は何やっていたっていう話を。
- 古橋
- トレジャーデータ以降ってことですよね?
- 卜部
- そうです。
- 古橋
- Fluentd の後だから、PlazmaDB ですよね。あと Embulk か。と、Digdag が続いていく。で、その間に、トレジャーデータ内で使っているシステムももちろんあって。えっと、PerfectQueue。キューシステムと、あとはワーカーシステムとかですかね。それとスケジューラー。
- 田籠
- PerfectQueue と PerfectSched は一応 OSS になっている……が、あれは確かに OSS としてはあたってないな。
- 古橋
- うん、あたってないですね。やっぱその VIVER の時代、ネットワークブートの時代から、分散で動くいろんなマシンがなんかうまいこと動くみたいなのが結構楽しくて、それをどう制御するかっていうのを考えるっていうのは、なんかすごい好きで。で、得意でもあるなと思っていて。まあ、そういうことを扱うシステムを作りがちですね。で実際、それが会社でも必要であったっていうので、マッチしたって感じですね。どっか深掘りします? Embulk、Digdag……
- 卜部
- これは思い入れがあるみたいなやつは?
- 古橋
- 思い入れがある。
- 成瀬
- 思い入れが一番あるのは、やっぱり MessagePack でしょ?
- 古橋
- そうですね。まあでも、次で言ったら Embulk とか結構。Digdag もそうですけど、Embulk って Fluentd をバッチで使えるようにしたいみたいなモチベーションで始まっていて。で、同じ様にプラグイン機構があって。ただその方法が…
- 田籠
- JRuby プロダクト。
- 古橋
- そうなんですよ。並列実行しないと絶対パフォーマンス出ないっていう話があって、数十ギガバイトのファイルをなんかいっぺんに S3 にあげたいみたいな話がトレジャーデータであって、それをやるっていう話だったんで、まあ Java にしようと。でも、Java でプラグインシステムどうしても書けなかったんですよ。だから、JRuby でやってる。でもなんかそのインターフェイスの設計がなんかいまいちで。ちょっとささなかったですね。あれは。あのインターフェイス設計は良くなかった。やっぱね。その Java から JRuby 呼んで、で JRuby の中で実行されるコードが全部 Ruby だったら、それはそれでまだましなんですけど、実際はそうじゃなくて、MessagePack でエンコードしたデータを、コアのエグゼキューターとやり取りしないといけないところがあって、そこでまた Java の API を呼ぶんですよ。これが良くなかったですね。行ったり来たり、これはダメでしたね。だからなんか最近のトレジャーデータ社内だったら、もう全部 Java でそもそもプラグイン書いちゃうとかっていう傾向がやっぱり多いですし、JRuby でプラグインを書いたとしても、テストがやっぱりしにくくって、そこはちょっとまあ要改善だったなあっていう感じがしますね。
- 卜部
- 複雑にしすぎたが故にテストが難しいみたいな感じ。
- 古橋
- そうそうそう。だから、テストライブラリとかテストフレームワークとちゃんと作れば良かったんでしょうけど、ちょっと難ありでしたね。さらに言うと、会社になってくるわけじゃないですか。だから、プラグインとか作って製品に組み込むわけですよ。そうすると、メンテナンスしないといけないんですよ。それを売るわけなんで。しかも、対面のサービスが仕様変わったりするわけですよ。そうすると、止まっちゃうんですね。止まると非常にやばいので、それに追従してメンテナンスしなきゃいけないっていう要求が発生してきて。そもそも Fluentd っていうのは、我々目線で言うと、Fluentd 自体がお客さんところで動いて、メンテナンスの責任はどっちかっていうとお客さん側にあるっていうことだったんですよね。でも、Embulk ってトレジャーデータ内部で動いているんで状況が違うと。てなってきたときに、Fluentd はオープンソースでもプラグインがいっぱいあって、まあ好きに使ってくださいという状況だったんだが、Embulk になってくると、オープンソースで実装されたものがあります、じゃあ、それを取り込みましたって後に、これをトレジャーデータ社内でメンテナンスしないといけない、みたいな問題が出てきて、そこすごい難しいなって問題に直面してるんですよね。この辺りから、オープンソースとどう立ち回るか、というのは難しい問題なんだなあっていうふうに理解し始めたみたいな感じですね。こうやって。
- 成瀬
- 古橋貞之、組織の必要性を認識する、と。
- 古橋
- そうそうそう、ようやく。
- 卜部
- その、これまでも、そのネットワークの中でうまくオーケストレーションして、うまく動くみたいな話が好きだったって話だから、そもそもネットワークそのものはどっかにはある環境でやってたわけですよね。たとえば大学とか。
- 古橋
- はい、そうですね。
- 卜部
- で、別にインフラとかの方に興味がいくわけでもなく?
- 古橋
- でもなく。
- 卜部
- トレジャーデータも、最初の頃はそんなに自社のインフラみたいなのを面倒見るというようなことをやってたわけではなかった?
- 成瀬
- AWS ですか?
- 古橋
- AWS で。そうそう、上で動く、例えば、Hadoop のシステムとかしなきゃいけないって問題はあるんですけど、オペレーションの自動化みたいなところにはあんまり突っ込んではいなかったですね。
- 成瀬
- 古橋さん、オペレーションそんなに興味ない
- 古橋
- 興味ないっていうか、うん。そのアプリケーションレイヤーの方がどっちかっていうとまあ、好きではありますね。なんで、Embulk も、MapReduce エグゼキューターっていうのがあって、並列実行できるっていう特性を MapReduce 上で実行できるんですよ。そうすると、すごい巨大なデータを一発で読めるぞ嬉しい、みたいなのを作ったんですけど、まあこれ、結局あまり使ってないって話になるんですが、そんなようなところが好きですね、うん。
- 国分
- 代表作一つに、PlazmaDB があるわけですけど、それをオープンソースにしようって発想はなかったんですか?
- 古橋
- いや、あったんですよ。だからこそ、あれ、Java のパッケージが org.plazmadb なんですよ。com.tresuredata じゃないっていうのは、オープンソースにもできるよね? みたいなノリなんですよね。ただ、あれをオープンソースにしようと思うと、単品で使えるように売り文句が必要じゃないですか。PlazmaDB とはなんなんだと。そこが、抽象度を一個上げないといけないと思っていて。あれはえっと、いわゆる Delta Lake とか、Iceberg みたいなレイヤーよりも一個下なんですよ。だから、メタデータ管理機能持ってない。要はテーブルの隙間とかを扱わない。だから、単品で動かせないんですよね。そこを足さないといけないと思うんですけど。そこまでやればいける。まあ、やったら絶対面白いと思います。なんか、やりたいですね。
- 田籠
- でも、クライアントがないからさ。
- 古橋
- 今なら Presto だと思うんですよ。Presto の……
- 田籠
- Presto 自分でホストしないじゃん?
- 古橋
- いや、そうなんですよ。そうそうそう。そこなんですよねー。
- 成瀬
- AWS システム上で、PlazmaDB を S3、PlazmaDB プラス PlazmaMetaDB を使って、さらに AWS に MessagePack も対応してもらうと、Atena とかあの辺で使えるようになるっていうところまで行けばいいんだけど、結構壮大な構想なのと、それやるとコンピューターとして強力すぎるのでやめましょうみたいな。PlazmaDB、本当によく出来てる、よく出来すぎているので、あれ、ほかの人に使ってほしくないんですよね。
- 古橋
- 確かに。あれ競合が AWS になっちゃうんですよね。そこも、ちょっとやりにくいなみたいな感じがあります。
- 成瀬
- よく出来てるんでみんなに使ってほしいですけど、じゃあ、みんなで使われたときに、トレジャーデータの立ち位置はどうなるんだっていうとまた悩ましい。
- 古橋
- まあ、いろいろ難しい、難しいとこですね、そこは。
- 成瀬
- スナップショット機能とかついた PlazmaDB とか。
- 古橋
- そう、マルチテーブルトランザクションとかね。色々ね、やりたいですね。
- 成瀬
- それでみんなが元気に Presto を走らせた日には困るよね
- 古橋
- まあ、楽しいですけどね(笑)
- 三村
- 楽しい。
- 古橋
- そう。
- 国分
- じゃあ、強豪がいるからやらなかったみたいな感じですか? それとも、レイヤーを上げなきゃいけないから?
- 古橋
- そう、僕の視点ではレイヤーを上げなきゃいけなくて、そこまでではないから。で、ビジネス上どうこうというのは、まあお任せしてみたいな感じですね。どっちかというと
- 国分
- はい。
- 成瀬
- あと、そこまで PlazmaDB が良く出来ていると気づいたのが、わりと最近なので。去年や一昨年の時点では、PlazmaDB をオープンソースにしてもいいけど、皆さん別にそんなに喜ばないよね、みたいな感じでしたね。
- 古橋
- 僕はもう、最初から凄いものだと思ってますよ。
- 全員
- (笑)
- 成瀬
- いや、でも出しても多分みんな気づかなかったでしょ?
- 古橋
- まあ、うん、まあやっぱ売り文句が難しいですね。
- 卜部
- そうね、使ってみないと分からないプロダクトみたいなのは実際ある。
- 古橋
- はい、わかります、わかります。そうそうそう。
- 田籠
- まあ、PlazmaDB はサイズ的にちょっと使ってみるってプロダクトじゃないから。
- 古橋
- いや、そうなんです。ベットしないといけないですからね。そう。
今何をやっているか、今後何をしていくか
- 卜部
- えっと、じゃあですね。これまでの話ぐらい聞いてきたと思うので、今何やってるかとか、今後何をしていきたいかみたいな話を聞きたいんですけど、とりあえず今何やってるんですか?
- 古橋
- 今まさに直近でやってるのは、リアルタイムでイベントが来ましたってときに反応してなんかするっていうシステムなんですけど。モチベーションとしては、PlazmaDB でバッチできます。データ収集は Fluentd でやります。Embulk でバルクのインテグレーションもできます。Presto でクエリプロセッシングできます。とまあ、こういう世界観があります。これでまあ素晴らしいわけですが、どうしてもこの計算のインターバルがまあ最低一時間、一日とかでぐるぐる回るみたいな話ですと。でも「いや、そうじゃなくて、来たらなんかすぐやりたい」ってやっぱ絶対あるじゃないですか。まあ、あるいはすぐじゃなくても、15 分とか 10 分とかで応答したいみたいな。っていうところをやっぱやれてないよねっていうモチベーションがあって、それをやると。そこの難しさって、まあいろいろあるんですが、一つは計算モデルが、例えば Presto とか Hadoop みたいな世界だったら、MapReduce とかプレストの計算モデルがあって、で computation が走ってるから、そのストレージがあって、でファイルメタデータがあって、スキーマメタデータがあれば、まあ動きますよねと。それは分かる。が、リアルタイムになった時にそういう計算モデルってどういうものなのかっていうのは、いまいち世の中的には、何だろう?出来上がっていない。だから、まずそれを作らなくてはいけない。と、プラスアルファ、いわゆるトレジャーデータがやっているような領域、マーケティングオートメーションとかでそういうのをやってる SaaS の会社って、まあ山ほどあるわけですよ。で、彼らは彼らでシステムを持ってるし。でそれに対して、トレジャーデータの良さってどこかっていうのを考える。売れるもん作らないといけないじゃないですか。ってなったら、やっぱバッチと連携して動くっていうのが重要じゃないですか、バッチが今あるんで。なんか、こっちで 100 ミリオンとか 1 億とかっていう顧客数を扱っているデータがありますと。じゃあ、これをリアルタイムで動かしましょう、連携もしましょうっていうのがやっぱ良さだと。となってくると、じゃあ日本の全人口あるいは世界の人口の何パーセントみたいなのを扱えるリアルタイムシステムが欲しいということになってくるわけですよ。性能がかなり要る。プラスそれをさっきのこれから考案しなければならない、あるいは今作っている計算モデル上でスケールさせなきゃいけない、っていうのを設計しているって感じです。ちょっと抽象的になっちゃう。
- 成瀬
- 今のトレジャーデータって、世界の時価総額のでかい企業トップ 2000 を主な顧客層としているので、そういう会社の皆さんのお客さんって世界だったりするので、顧客数がまあ 1 億 2 億普通だったりするんですよ。そうすると 1 億 2 億で動かないといけないんだけど、例えば普通の SQL サーバーとかで作ったリアルタイムサービスっていうのは、そういう顧客規模になってしまうと捌けないと。
- 古橋
- うん、そうですね。
- 成瀬
- なので、そういう普通のマーケティングツールを作る会社では扱えないようなサイズの問題を解くっていうのが今楽しいやつですかね。
- 古橋
- そうですそうです。
- 国分
- そこをジョインするのは、こう分散 KVS を持ってくれば全部 OK とならなくて、なんか色々、他にも。
- 古橋
- あ、そうそう。ええと部品として分散 KVS は必ず必要で。まあ、今あるアイディアとしては、分散 KVS をある種の共有メモリみたいにして、共有メモリをいろんなやつで叩く。けど普通に叩くと、まあ古典的な問題でロック競合で死ぬわけなんで、それをこう分割すると。分割した一個一個のメモリのチャンクの中には、まあどういうデータを入れればいいかっていうのを考えるわけですが、まあなんかなんだろうな。ステートマシンみたいな構造を今作っているところですね。ステートマシンが 1 億ある。つまり、各プロファイルにステートマシンがついている。
- 国分
- はい。
- 古橋
- で、プロファイルの中に「今こんなことやりたい」っていうお客さんの要求があるじゃないですか、それをステートマシンに変換・コンパイルする。そうすると、やりたい施策ごとにステートマシンができるわけです。で、これ一個一個が全部、一億個とがあるわけですよ。だから、でっかいステートマシンを分散制御するシステムっていう計算モデル今考えていて。で、それを実行するエンジンとして、computation と分散 KVS がある。っていうのはまあ大まかなモデルなんですが。そこにバッチのデータを入れなきゃいけないわけですよ。
- 卜部
- 連携が面倒くさそう。
- 古橋
- そう。特にこういう分散 KVS ってバルクでデータ書くと死ぬんですよ。だからえっと、どうすんねんと言う話が起きてくるで、しかも、このバッチのデータっていうのは、一日に 1、2 回しか更新されないので、こう不整合ができてるわけですよ。これを扱わないといけない。なんで、いわゆる古典的なランポートクロップとかベクタークロックみたいな発想もあり得るし、いろんな発想で扱わないといけないわけです。難しいっす。
- 卜部
- すごいなんか、もうちょっと具体的な話をすると。Google アナリティクスって、Google アナリティクスからリアルタイムでビッグテーブルにデータを吐けるんですよ。
- 古橋
- はい。
- 卜部
- だけど、自分たちの手元にある、一日とかで範囲で持ってきたテーブルと突き合わせるとガンガン失敗するんですよね。
- 古橋
- あ、失敗するんですか?
- 卜部
- あの不整合が起きるんですよね。自分たちの手元で不整合が起きるので、リコンサイルされていないと上手くいかないみたいな、でもリコンサイルするにしてもバカにならないネットワーク通信とか走るんで、これはどうにもならんなと思いながら悩むとかっていう具体的な僕の手元の課題感がありました。
- 古橋
- そうですね。まさにそれです。だから、バッチの計算モデル。ていうか、ある種の機械学習のモデルみたいなものをバルクで作って、で、これは置いとくんだが。まあこれ、どうしても参照専用じゃないとコンシステンシー上も困る。で、読み書きするデータセットがあって、これはさっきのでっかいステートマシンみたいになっていて。で、これにフィードバックループをくっつけると上手くいくはずなんだが、そのフィードバックループは当然競合が起きるんで、頑張る。うまくやる。そこに、もう一度工夫って感じ。
- 卜部
- あと、イベントのやりとりとかをどうするのかっていうところは、どうするんですかね?
- 古橋
- イベントのやり取り?
- 卜部
- そういうイベント、ネットワーク上のイベントのやり取りが膨大、山ほどくるんで、スケールさせないとという。
- 古橋
- そうそうそうそう。そうなんです。そうなんですよ。下手に、その間に Kinesis とか置いて頑張ってシャーリングして、みたいなことを考えはじめると、レイテンシー増えるし、失敗のリードライトのロジックとか、どんどん複雑化していって、システムがやばくなるんですよ。ので困ったねっていう(笑)
- 国分
- Kinesis を使わないことをしようとしてるってことなんですか?
- 古橋
- あー、使ったり使わなかったりです。使うルートと使わないルート、両方あるという感じですね。
- 卜部
- リアルタイムでなんとかしたいとかっていうそもそもの要求って、一日に一個ぐらいイベントが発生しますよね、みたいな粒度のイベントじゃないやつが取りたいからやってるんですよね。だと、だいたい秒単位でガンガンガンとイベント飛んでくるんですよ。で、だいたい死ぬ。
- 古橋
- はい、はい、はい。はい、そうですよね。ゲームのプレイログとかも絶対取りたいわけじゃないですか。で、それにリアルタイムで応答するっていうのを含めて考えると、イベントきました、ステートマシン更新します、すぐ返します、みたいなのをひたすらぐるぐる回すっていうのが、1 億掛ける施策数あるみたいな。そういう世界ですね。
- 卜部
- っていう問題意識ですね。ここどういう風にタックルして行かれるかって感じですよね。
- 古橋
- そうですね。
- 卜部
- 今そこがんばって考えてる?
- 古橋
- 今そこを、最初のいわゆるまたさっきのゼロイチのやつをやってます。
- 卜部
- いろんな人と話しながら、みたいな感じですか?
- 古橋
- そうですね。お客さん側、つまりユースケース側を特に色んな人と話してやってるって感じです。
- 国分
- 今もコード書いたりはしてますか?
- 古橋
- めっちゃ書いてます。でも、あのこれ、ちょっと Ruby じゃないです。あ、これ言わなくていいか(笑)
- 国分
- 最近は何を書いてるんですか?
- 古橋
- 最近は TypeScript っすね
- 国分
- フロントを書いてるんですか?
- 古橋
- いや、バックエンドですよ。
- 国分
- そうなんですね。では何故?
- 古橋
- ランタイムが Node.js で。最初は AWS Lambda で、まぁちょっとしたどうせステートマシン動かすだけだったら簡単だし、KVS 上に読み書きするだけでしょと思って始めたら。
- 卜部
- って思ったら、って感じですか?
- 古橋
- はい、って思ったら、どんどんデカくなっちゃって。未だに TypeScript ではあるって感じですね。ただ、ステートマシンの遷移条件とかをコンパイルした、というのは「こういうのをやりたい」というのをステートマシンにコンパイルするわけですが、コンパイルしたこのステートマシン言語、が必要ですね。で、この言語の評価器が必要になってくるわけじゃないですか。そこのエクスプレッションが柔軟であればあるほど、コンパイル時に色んな技が使えるじゃないですか。魔法が唱えられる。まあ、色んなところで魔法を唱えてますけど。そのコンパイル先の言語として、今 JavaScript のサブセットみたいなのを使ってるんですよ。で、それを WebAssembly 上のランタイムで実行するみたいな、ちょっとお遊びをしていて。
- 国分
- ほおほお。
- 古橋
- その時に、サンドボックス化した環境を作らなきゃいけないっていう要求の中で、JavaScript のエコシステムとして、パーサーがたくさんあって、AST をいじるライブラリーが山ほどあるみたいなのは結構便利でした。
- 卜部
- 楽しそうですね、すごい。
- 古橋
- そう、ここたのしいですね。まあでもここは別にその売れ行きに関わるところじゃないですけど(笑)
- 成瀬
- 顧客企業のキャンペーン施策ごとに WASM バイナリーが爆誕するみたいな感じですか?
- 古橋
- そう、キャンペーンすることに。まあ、xxx 的に言えばジャーニーができるわけですよね。で、このジャーニーがステートマシンなわけじゃないですか。で、ステートマシン内のノードの遷移条件が JavaScript で書けるみたいな感じですね。
- 卜部
- っていう話を今頑張ってる。
- 古橋
- っていう話を今頑張ってますね、はい。
- 卜部
- 他になんかお仕事の話でこれを聞いておきたいみたいなのあります?
- 田籠
- 仕事の話じゃないんですけど。大学の頃とか MessagePack 作るまでは、割と個人的なその動機、まあ、なんかこういうのが楽しいよねみたいなので作ってたって話じゃないですか。で、その後、太田さんと言う人に騙されてから、なんかそのモチベーションが会社のビジネスっていうところに、まあ、悪く言うと乗っ取られて。
- 古橋
- そそのかされて(笑)
- 田籠
- それが多分、なんとなく分散して大規模に動くものが面白くてみたいな部分と、ビジネス上の目的が一致しているっていう状況なのかなと思うんですけど、それの乖離を感じたことは無いんですか?
- 古橋
- あー、自分のやりたいっていうこととビジネス上の要求が乖離してしまうような状況ってことですかね。
- 田籠
- なんか中二的に言うと、俺は本当にこれをやりたいんだっけ?みたいに悩んだことはないんですか?
- 古橋
- あー……。無くはない。無くはないが、やっぱその大学生の頃とかに、山ほど作った死んでいったプロジェクトがいっぱいあるわけですよ。彼らのことを思うと、まあ、やっぱ売れるものを作らなきゃダメっすよね。
- 国分
- なるほど。
- 成瀬
- 太田さんは売れるものをなんか探してくるロールに長けているので、鵜飼いとしては優秀。
- 古橋
- そう。
- 田籠
- 売れるものを作る楽しさに慣らされてしまった。
- 古橋
- そう、なんですよね。そうなんか昔、あのパーティーっていうペアプログラミングソフトを作ったことがあったんですよ。あれめっちゃ楽しくて。まず、Ruby でとりあえずターミナルエミュレータを実装するわけですよ。ターミナルじゃないか。tty を実装するわけですよ。で、それをこう、中央のサーバーに転送する。と、これも Ruby で書いてるわけですが、Rails じゃなくてですね、普通の TCP 通信。ここに別の端末からログインすると、同じ tty が共有されてるから、こうプログラムをリモートでできるっていう。今思えば、革新的な先進的なサービスを作ったんですよ。サービスというかまあ、ソフトウェア。当時ね、リモートワークみたいな発想がなかったから流行らなかったですけど、今だったら絶対流行るわけですよ。
- 田籠
- VS Code に似た機能がもうあったよね。ああいうやつ。
- 古橋
- そうそうそう、あります。だからもう tty とかエミュレーションしなくても良いという(笑)。っていう面白いことをやってたりとか。あとフェスティボイスって別のソフトがあって、これは何かっていうと、ブラウザ上で動くえっとボイスチャットなんですよ。で、何もインストールせずに、ブラウザ上で web サイトにアクセスすると、突然そのグループチャットが始まるんです。
- 田籠
- Zoom じゃん、みたいな。
- 古橋
- そうそうそう。で、しかもそれは多人数でできて、で面白いことに、最初出したとき認証なかったんです。だから、行くと誰が喋ってるみたいな。こう、すごいこの、クラブなんだっけ? クラブハウスみたいな体験ができるっていう先進的なやつだったんですけど。
- 田籠
- 受けなかったと。
- 古橋
- 全然
- 成瀬
- それ作ったのいつですか?
- 古橋
- あれ、大学三年生の頃ですね。
- 成瀬
- ちょっと早いね。
- 古橋
- 大学三年生の頃はそういう闇がいっぱいあってですね。それを作っては滑り、みたいなのを繰り返したんですけど、やっぱ滑ると、こう滑りたくないなあってなって。
- 国分
- MessagePack 以降は一度も滑ってないんですか?
- 古橋
- いや、でもあれ MessagePack 以降ですよ。
- 国分
- なるほど。
- 古橋
- そうなんですよ。だから MessagePack は Kumofs から始めたやつで。結構長くやってるんだが、Fluentd に至るまでのその間に、こう闇の時間が色々あった。
- 卜部
- まあ打率 100%じゃないよねっていう。
- 国分
- Fluentd 以降は打率 100%なりましたか?
- 古橋
- あ、外に出して無い奴で出てないのはいっぱいありますね。でもまあ、昔と比べるとだいぶいいですよ。特にそのお客さんがいるっていうか、こうすれば売れるっていう状態から作るっていうパターンでうまくいかなかったケースはほぼないですね。
- 卜部
- お客さんがいるっていうのは強いですよね。最初から。
- 古橋
- 強いです。で、売ってきてくれるのが良いですね。
- 成瀬
- きれいなフロントエンドを用意してくれますしね。
- 古橋
- あ、そうそう。Digdag なんてあのステップあるじゃないですか。あれ書くの。すごいしんどいじゃないですか。あのワークフロー。
- 国分
- はい、そうですね。
- 古橋
- なんか書いてくれるんですよ。
- 全員
- (笑)
- 古橋
- 書く部隊がいるんです。すごいことやるんですよね。あれ、Digdag ってループが書けるわけですよ。で、ループかけるワークフローエンジンあまりないんですけど、あれがやっぱ正解だったって。あのループを使って何か凄いことをやり始めるんですよね。Salesforce の API を叩くとか。if 文とか使って。あと、Digdag っていうプログラミング言語上で、なんか謎の integration services を作るみたいな組織が存在して。ああ、凄いなと。
- 成瀬
- さらに何ちゃらフレームワークっていう Digdag を活用したフレームワークがあって、それを使ってお客様のシステムを作るみたいな部隊がありますね。
- 古橋
- そうそう。売ってくれるとかね、そういう人たちがいると、いいですねって。感じがありますね。
趣味の話
- 卜部
- ちょっとその、仕事と関係ないところにも話を持っていきたいんですけど。仕事以外の趣味とかって何かあるんですか? 何が楽しいとか。
- 古橋
- 仕事以外の趣味ですか?
- 成瀬
- ビール?
- 古橋
- ビール飲む。あ、えーとね。僕、こう調べものがけっこう好きで。最近だと、YouTube で解説チャンネルとか結構あるじゃないですか。西洋史を知るとか。ああいうのが大好きなんですけど、そのうちの一部はやっぱ自分でも試したくなるわけですよ。で、そういうのを試すっていうのが好きなんですけど、アメリカにいた頃はビールとかよく作ってましたね。
- 卜部
- 作れますね。日本と違ってマイクロブルワリーができる。
- 古橋
- そうそうそう。個人醸造が自由なんで。そう。で、それっていうのは発酵とかを知らないといけないから面白くて。最初は納豆から入って。まあ豆腐は発酵じゃないですけど、豆腐も作って。で、ビール作ってワイン作って日本酒作ったみたいなことやってた。でも日本帰ってきちゃって、それできなくなっちゃったんで、最近始めたのは、漆塗りとかやってますね(笑)
- 全員
- ええー(笑)
- 古橋
- これは、なんでかっていうと、美術館とか、日本に帰ってくるといっぱいあるんですよ。僕、東京に住んだことがなくて。都会に住むのはこれが初めてですよ。まだ 1 年ぐらいしか住んでなくて、東京の生き方とかよくわかってないわけなんですが。
- 国分
- そうなんですね。
- 古橋
- そう、ずっと田舎育ちなんですよ。
- 成瀬
- 愛知、筑波、マウンテンビュー
- 古橋
- そう、あのぐらいの田舎感だったんですよ、ずっと。で、東京で美術館がいっぱいある。で、行くじゃないですか。そうすると、漆塗りのやつとか日本画とかもいっぱいあるわけですよ。凄いなって。あ、それとは別に、西洋画も色々興味があって、それはそれでちょっと見てたりもするんですが。それはそれとして、その日本画とか見て漆の作品があるじゃないですか。で蒔絵とかってすごいじゃないですか。
- 卜部
- 蒔絵がやりたいんだ、最終的に。
- 古橋
- 蒔絵がやりたいんですよ。蒔絵に至りたいんですが、その前がめっちゃ長いんですよ。
- 卜部
- そう長いね。
- 古橋
- 漆塗りって、塗るじゃないですか。でえっとデコボコになっちゃったり、泡が入ったりするんで削らないといけないですよ。で削って、その平面にした後またもう一回塗ってみたいなことを 5 回繰り返すんですけど、素人がやると、もうすごいデコボコになって、泡も入るし、削るのも下手だから無くなっちゃうんですよね。で、また塗ってまた削ってなくなっちゃうみたいな賽の河原みたいに繰り返すみたいな作業をやって、ようやく漆塗りが出来上がって、で、その上に蒔絵をやりたいわけ。なんで、すごい先の長い話をまだちょっとやってるって感じです。で、これやり始めると、YouTube であるような漆塗り職人の 10 分ぐらいの動画とか 5 分とかの短い動画で、こうシュシュってやって「出来ました」みたいにやってるやつあるじゃないですか。あれが「ああ……すごい!!」「神業だ!」みたいになるのが好きです(笑)
- 田籠
- やると凄さが分かる。
- 古橋
- そう、凄さがわかる。
- 卜部
- 子供の頃から、そんな感じで、こうなんかこう深く調べていく感じだったんですか?
- 古橋
- そうっすね。深く潜るの大好きですね、やっぱり。うん、とりあえず分解したいみたいな。
- 卜部
- ああ、子供の頃分解する派だったんですか。
- 古橋
- 分解する派でしたね。そう、ミニ四駆は組み立てるよりも分解したい、みたいな。モーターはバラす、みたいな。
- 卜部
- パソコン自作とかしました?
- 古橋
- あんまりやってなかったですけど、大学入ってからはやりましたね、うん。パソコン自作ってそうあんまりこうカスタマイズする余地がね。パーツになっちゃうんで、財力が必要なので。ちょっと大学生は厳しくて。
- 成瀬
- 大学時代に CPU 作ればよかったね。
- 古橋
- そうですね、そういうのは。そう、なんですよ。大学の同期の連中とかにね、あの Verilog とかね、あの BL とか設計してるやつらとかいて、あれもあれで面白いなと思って。最近なんか電気回路の YouTube チャンネルとか見始めて、すげー面白いです。電磁気学とか全然しらなかったですけど。だから、そういうのをこう、掘るのは好きですね。
- 卜部
- じゃあ最近は、その漆が趣味?
- 古橋
- そうですね。まあ、漆って言っても、すごい本職の人にちょっと見つかっちゃうと、あれなんですけど。漆じゃないんですよ。あのカシューっていう、カシューナッツの木の樹液を使うやつなんですよ。漆ってすごい高いし、希少なんで。素人がいっぱい使うの良くないなと思って、カシューを使っていて。で蒔絵もまあ、一応ちょっとだけやってみたんですけど、金粉めっちゃ高いんで、パール粉っていう貝殻を削った粉に着色したやつがあって、それを使ってやろうとしています。ただでも、全然ダメ、下手すぎますね。まだまだ。
- 卜部
- まあまあまあ、まだなんか先が長そうな話ですから。
- 古橋
- まだまだ長いです。これは長いです。
- 田籠
- 結構な道を(笑)
- 古橋
- まあ、これは趣味なんで。なんかこう。今、在宅勤務がかなり多いんで、なんか仕事終わって、ドアを開けるとそのまま生活空間になるわけなんですが、そのクールダウン的にちょっと削るとかやってますね。
- 卜部
- 他の趣味とかないんですか? 例えば外に行くとか。
- 古橋
- 外は出ないですね(笑)。あ、料理が好きですね。同じベクトルですね、僕の中では。
- 卜部
- 蕎麦打ったりとかはしないんですか?
- 古橋
- 蕎麦打ってないけど、パンは、パン焼き器を買って。
- 卜部
- パンね。パンはロックダウン中にみんなパン作り始めましたよね。
- 古橋
- はい、はい、はい、はい。
- 卜部
- パン楽しいですか?
- 古橋
- パンめちゃめちゃ楽しいですね。あの、粉をちょっと色々チューニングするっていう。
- 卜部
- パンとかビールとか、だいたい発酵系が好きですか?
- 古橋
- 好きですね、なんかその、あれってちょっとある種分散システムに近いところがあると思うんですよね。
- 国分
- えー(笑)
- 古橋
- 要はさ、微生物が己の判断で動いているわけです。で、酵母を飼ってる気持ちになるです。なんかこう、可愛いなみたいな(笑)。で、なんか時々バグるわけですよ。全然膨らまないとか、膨らみすぎるとか。いいじゃないですか。そういうの。
- 田籠
- あれでしょ、分散システムでプロセスが一個一個動いてるっていう、ああいうノリなんでしょ。
- 古橋
- あー、そうそうそう。で、こいつら一体一体は、なんかわりとミクロな動きをしていて、プログラム書いた通りに動いているんだが、組み合わせた時に「そんなになる?」みたいな挙動をたまに示すのがいいですよね。あれ、なんか無限ループし始めた?とか、なんか CPU100%食ってやばいねみたいな。Kumofs とかも、あのコンパクションロジックを入れたわけなんですよね。
- 田籠
- 大失敗したやつ。
- 古橋
- 大失敗したやつです(笑)。あれは、全体のうちの一部がコンパクション走らせているうちはマシなんですけど、全体がすごいコンパクションを走らせて、ディスク IO を消費すると、全体が死ぬっていう。で、お互いをデタッチし始めて死ぬっていうやばい問題があったりしたんですけど。そういうのって、やっぱ書いてる途中に思いもよらんわけじゃないですか。それがポッと出てくると「おお、いいね」となる。
- 全員
- (笑)
- 古橋
- それがちょっとその、酵母とか苔とかに通ずるところがある。
- 成瀬
- シムシティと同じですね。普通の人間で言う。
- 古橋
- あ、そうそうそう。
- 卜部
- 漬物とかいいんじゃないですか?
- 古橋
- あ、漬物やりましたよ。漬物やってました。はい。こう、練り替えしてね、あれは浅漬けじゃない、糠漬けか。
- 卜部
- あと、それこそコケとかね。そういう植物系。
- 古橋
- 植物をやってます、やってます
- 田籠
- しかし、イテレーションが長そうなんだよな
- 古橋
- そうなんですよね。そうそうそうそう。でも、なんかその仕事と違うんで、こう、めちゃくちゃこう突っ込んでやるみたいな感じじゃないから、まあそれはそれでいいのかなって気もしたんですけど。あの、自動栽培のね、システムもアメリカで一回作ったんですけど。要は、LED がついてて、水が循環して、ってやつ。なんかあれ、今ね、ある業界だけホットらしいんですけど、そのエアロトピックスって言って、根っこを空中に晒して液を吹きかける。あれを作りたくて、ラズベリーパイとかとか使ってシステム組んでみたんですけど、なんかイマイチ動かなくて。それをちょっと省力化したやつを日本で再現しようと思って。今ちょっとそれはそれでやってます。
- 卜部
- へー、なんかすごい趣味もすごいたくさんあっていいですね。
- 古橋
- そうですね。まあ、そこまでめちゃめちゃ時間割いてっていうわけじゃないですけど。
- 卜部
- 休みの日にやることがたくさんある
- 古橋
- あ、そうそうそうそうそうそう。まあ外でないんで、その引きこもって、なんかやってますね。
- 卜部
- あでもそっか、引きこもってっていうと、パンデミックの影響とかもそこまでなくって感じですか?
- 古橋
- 全然ないですね。
- 卜部
- よかったですね。
- 古橋
- 良かったです。なんかむしろ、町が空いていいなって。
- 卜部
- えっ、でもマウンテンビューにいた頃ですよね、まだ。
- 古橋
- そうっすね。
- 卜部
- マウンテンビューの町が空いてる感じって、どんな感じでした?
- 国分
- 通勤ラッシュがなかったって感じですかね?
- 古橋
- そうそうそうそう。まあ、正直言って、マウンテンビューでも引きこもってたんで。あんま外出てない(笑)ので、わからないって感じではあるんですけど(笑)
- 卜部
- そっか、いやまあ、でもなんか終わりかけてよかったですね、パンデミック。
- 古橋
- そうですね、そうですね。
- 卜部
- あ、そろそろ次のセッションが始まるかな。じゃあ次、誰を呼びましょうか?みたいな話とかが多分あると思うんですけど。あ、もう決めておられます?
- 古橋
- あ、決めてないです。
- 卜部
- まあ、じゃあ、その話は次は誰だみたいなこと言ったって、ここの文章を考えていただくとしましょう。次を考えておいてください。
- 古橋
- はい、考えます。
- 卜部
- それでは長らくありがとうございました。
- 古橋
- いえいえ、こちらこそありがとうございました。
- 全員
- ありがとうございました。
次のインタビュイー
RubyKaigi 終了後、連絡用のチャットにて次のインタビュイーを決定していただきました。次のインタビュイーは、発表準備のためこのインタビューを途中で抜け、大好評の発表を行った金子雄一郎さんとなりました。おたのしみに。
Rubyist Hotlinks 連載一覧
–