STORES Product Blog

こだわりを持ったお商売を支える「STORES」のテクノロジー部門のメンバーによるブログです。

キャリアのスタートはコールセンター?!プログラミングに出会ってからRubyKaigiに登壇するまでの波乱万丈な人生【Rubyistめぐりvol.3 しおいさん 前編】

Rubyist Hotlinksにインスパイアされて始まったイベント『Rubyistめぐり』。第3回はしおいさん(塩井美咲さん)をゲストに迎えて、お話を聞きました。こちらは前編です。 hey.connpass.com

後編は下記からご覧ください。

私の好きなRubyで世の中に価値を届ける、わからないものをわかるための距離のつめ方【Rubyistめぐりvol.3 しおいさん 後編】 - STORES Product Blog

しおいさんの幼少期、波乱万丈な人生の幕開け

藤村:Rubyistめぐりにお越しいただきありがとうございます。今回はみなさんもご存知、しおいさんに来ていただきました。僕個人としても、一体なぜしおいさんがしおいさんになってしまったのか、大変興味があるので今日はお話するのを楽しみにしておりました。

しおい:ありがとうございます。よろしくお願いします。

藤村:よろしくお願いいたします。いきなり本編に入りましょうか。

しおい:よろしくお願いします。

藤村:すごい昔の話から聞きます。物心つく前のことは覚えていらっしゃいますか?

しおい:覚えているってことは物心ついている?

藤村:その頃の記憶とか。

しおい:年子の姉がいるんですけど、基本的に姉と一緒に過ごしていて、よく遊んでいました。両親が共働きなんですけども、物心がつく前から夕方は祖母の家によく預けられていました。祖母の家の近くに祖母の友人のご夫妻が住んでいて、海の近い田舎町だったので、そこのおじさんと一緒に海まで夕方散歩に行くっていうのを毎日やっていましたね。

藤村:まだプログラミングのプの字も出てこないですね。

しおい:まったく。

藤村:そこから小学生、中学生になっていくと思うんですけど、そういう時代って何に興味がありましたか?

しおい:その話に入っていく前に、多分家族の話をしたほうがよくて。両親ともに共働きだったと話しましたが、その勤め先が祖父が経営してきた小さな会社で、小学校2年生の時に会社にちょっと思いがけない出来事があり、その影響を受けて、両親と姉と私と祖母の5人で高知県から鹿児島県に引っ越しました。人生の早い時期にそうした大きな出来事があったことは、その後の人生にも影響を与えているんじゃないかと思います。

藤村:引っ越して、転校もしてって感じですよね。

しおい:ある日突然、学校から帰ってきたら、そういうことになりました。

藤村:なかなかびっくりエピソード。

しおい:そうですね。引っ越した先は鹿児島県の田舎町だったんですけど、田舎の種類が若干違ってて。海と田園に囲まれた田舎町から、ちょっと大きな道路に囲まれた感じの、いわゆる鉄道空白地帯と言われるようなところに引っ越して。あと、私は土佐弁で周りが鹿児島弁なのでコミュニケーションが難しかったです。

藤村:だいぶ濃厚な感じですね。小学校、中学校を鹿児島で過ごされて、中学生の頃は何してたんですか?

しおい:鹿児島に引っ越して、もちろん周りの人たちはみんないい人ばかりなんですけども、私自身がどうしても鹿児島に住んでいるということにずっとしっくり来ていない状態でおり…人付き合いをする体力があまりなかったこともあってて、中学校は途中から行くのをやめて、家で勉強してました。

藤村:じゃあ主に家で暮らす日々が続いていたんですね。コンピュータはまだ登場していない?

しおい:まったく。コンピュータが登場するのはだいぶ後、わりと最近ですね。

専門学校に進学、そして…

藤村:そこから高校生になった頃はどんな風に過ごしていたんですか?

しおい:進学した先は通信制の高校で、通信制なのであまり交友関係や広がることもなく、普段はずっと近所のコンビニでアルバイトをしていました。その頃は英語が好きだったので、当初は大学に進学して留学したいという気持ちもあったんですが、このアルバイトの時給が610円でして、この金額で学費を貯めるのは無理やなと悟り。大学は無理でも専門学校なら頑張れば行けるかもしれないと思い、そのための学費と引っ越し代と当面の生活費を貯めて進学した先が福岡の専門学校です。

藤村:語学に関する専門学校に行ったんですか?

しおい:それがですね、大学への進学や留学はちょっと無理だなと悟った時点で英語の勉強をやめてしまいまして。鹿児島から福岡へ出て、当時ちょっとだけ興味があった服飾系の学校のビジネス科に進学しました。

藤村:プログラミングの要素がないですよね。

しおい:そうなんですよ。

藤村:そこではいわゆる学生生活を送っていたんですか?

しおい:奨学金とアルバイトで生活費を賄っていたので、生活の面だけでも結構忙しかったんですが、それに加えて進学するまで学費を貯めるのに何年かかかってしまって、入学した時点で私は他の同級生たちよりも何歳か年上だったんです。なので、何かのプロジェクトをやるとなった時に責任を持つ役を任されることが多くて、それがめちゃめちゃ忙しかった。

藤村:マネジメント的な忙しさだったんですね。

しおい:そうなんです。

藤村:いっそコンピュータの話が聞きたいが、一体ここからどう繋がっていくのかわからないながらももうちょっと進めていくと、そこから洋服に関する仕事に就いたんですか?

しおい:それがですね、専門学校が在学中に倒産してしまいまして。

藤村:そんなことあるんですね。

しおい:私学は倒産する可能性があります。

藤村:え、学費とかポーンってなくなっちゃう感じ?

しおい:そうなんですよね。先方も手元にお金が残ってないので。

藤村:なんか大変ですね。

しおい:そうなんですよ。いや、そうなんですよ。

藤村:突然専門学校を終えることなく福岡の野に放たれた。

しおい:これ専門学校倒産した人あるあると思うんですけど、

藤村:聞いたことないな…

しおい:奨学金が打ち切られるんです。そうすると奨学金でまかなっていた生活費を補填しないといけなくなるんですよね。その当時、コンビニとCD屋さんでアルバイトを掛け持ちしてたんですけど、それだと間に合わないので、もっと実入りの良い仕事を求めて、コールセンターで派遣社員として働き始めました。

藤村:フルタイムの仕事になっていくわけですね。

しおい:曖昧ですけど、そこからいわゆる社会人と言われる状態になったのかなと思います。

藤村:予期せず社会人になってしまったと。なかなか波乱万丈の人生ですね。そこからRubyKaigiに登壇するまでの間に何があったんだろうというのを聞いてみたくて、今日来てもらったんですが。

しおい:ここまでがまあ一区切りなのかな。これが2008年だったので、プログラミングに出会うまで約10年あります。

藤村:おおお。みなさん今じゃあ2018年から?!って思われたと思います。

しおい:プログラミングを始めたのは2017年からです。

藤村:おお。おおとしか言えない。

しおい:Rubyに出会ったのも同じタイミングですね。

藤村:マジか。衝撃を受けて固まってしまっている。

コールセンター、職業訓練校、事務職を経て、プログラミングと出会う

藤村:そのコールセンターの仕事は、いわゆるコールセンターですよね。

しおい:通販会社のコールセンターの仕事だったんですけど、コールセンターの仕事って給与も比較的よいことが多く、職場によると思うんですけども入職のハードルがそんなに高くなかったので、すんなり入れたのはよかった。ただ、実際に始めてみると私はコールセンターの仕事が全然向いてなかったのと、その仕事を紹介している派遣会社のシフト組が常軌を逸していて、デフォルトが朝9時から夜10時までだったんですよね。土曜日が朝6時から夜9時までっていう感じで、続けるのが大変しんどい感じになりまして、そこまで頑張らなくてもよかったと思うんですけど、頑張らないっていう選択肢を知らなかった。

藤村:社会人初期あるあるですね。そのシフトはなかなか続けられないですよね。

しおい:そうですね。しばらくそんな感じで働いていたのですが、ほどなくしてその派遣会社がコールセンターから撤退することになり、それを機に仕事を辞めて、実はその前々からずっと東京に憧れがあったので、上京して東京で仕事を探したいと思いました。なので早速福岡から東京へ出掛けて、不動産屋さんをめぐって住む家を見つけたのですが、家が見つかったその日の午後に東日本大震災が起きました。

藤村:おお。

しおい:震災の被害の大きさを考えると私が受けた影響は本当に僅かだと思うんですけども、上京することが現実的ではないなと思って。一旦上京することを諦めて福岡に戻って、とはいえ何の仕事ができるわけでもないので、またコールセンターに入職しました。

藤村:そのコールセンターも朝9時から夜10時だったんですか?

しおい:そこはシフトは常識的な感じだったんですが、ただここのコールセンターと私との相性がすごくよくなくて、ここでは人間関係でもっとつらい感じの状況が発生してしまいました。

ここまでずっと生きてきて、学歴も職歴もよくわからない感じになってるし、こういう状態から何かしら自分のことをなんとかするためにはここからジャンプが必要だなと思って、職業訓練校に通いました。それが29歳の時です。すみません、行き先はまだプログラミングじゃないんですよ。

一同:(笑)

しおい:職業訓練校で簿記の勉強をして、資格をとって、無事にあるメーカー系の子会社の事務職に契約社員として入社することができたのが2015年です。

藤村:簿記はどうでした?

しおい:難しかったですね。

藤村:そうですよね。自営の人は何となく感覚がわかるみたいなことがあるかもしれないけど、なかなかコールセンターから簿記だと何がなんだかみたいな。

しおい:そうですね。なのですが、事務職って求人倍率がすごく高いので、そこに行こうと思うと何かしらのものを持っていないと、箸にも棒にも掛からないのでそこは頑張りました。

藤村:職業訓練校生活ってどんな感じなんですか?

しおい:私が受講したのは公共職業訓練だったのですが、公共職業訓練は訓練期間中、失業保険の給付金の額と同じ金額の給付金を受けることができるんですね。なので、経済的にはそこまでめちゃめちゃしんどい生活というわけではなかったです。

藤村:学校で必要な資格の勉強を真面目にする日々みたいな感じですか?

しおい:そうですね。半年間のコースで、その間は給付金をいただきつつクラスメイトと一緒に勉強をしつつ、傍らで求職活動をしつつみたいな感じでした。

藤村:事務仕事はどうでしたか?

しおい:これがまた私には向いてないんですよね。私はマルチタスクがすごく苦手で、というのはコールセンターの時にわかってたんですけど、事務職はコールセンターで求められるものとは違うだろうし、もうちょっと耐えられるかなと思ったらそんなことは全然なかった。

藤村:事務職っていろいろな仕事が降ってくる感じですよね?

しおい:たとえば事務作業中に電話がかかってくると取らないといけないんですが、そうするとそこまでの作業が一旦中断されてしまうので、そこから元の作業にまた切り替えて、という感じのことが日常的にあって個人的には大変でした。

藤村:そこら辺はプログラマの適性というか、僕も含め身に覚えがある人が多いような気がしますね。事務はどれぐらいやっていたんですか?場所は福岡ですよね。

しおい:はい。事務として3年働きました。正社員登用を目指して仕事を頑張っていたのですが、働き始めてちょうど一年後、ここでもちょっと大きな出来事があって、会社がこの先どうなるかわからない、みたいなことが起きまして。

で、みなさんもうお気づきかと思うんですけど、私めちゃめちゃ運が悪いんです。ここまでこういう感じの出来事が積み重なってくると、自分のために何かをするのはもう十分頑張ったかなという気持ちになってきまして。例えば私みたいに極度に運が悪かったり、あるいはそれ以外の理由で本人の責任ではないのに辛い思いをしている人が世の中にいた時に、そういう人を世の中が受け入れられるような状況になっているかっていうと、あんまりそうではないかもしれないなと思って。せっかく仕事をするのであれば、ちょっとでも世の中がよくなるような仕事をしたいなと思って、仕事を辞めて別の仕事をするか、しないか、ということを考えるようになりました。

藤村:結局違う仕事に就いたんですか?

しおい:とあるソーシャルベンチャーの求人に申し込んだんですけど、その時は最終選考で不採用になってしまったんです。何で落ちたのかを考えてみると、そういったベンチャー企業だと能力の高い人たちが少数精鋭で働いていらっしゃることが多いと思うんですが、私自身がそうした環境で提供できるようなスキルを持っていなかった。じゃあ何かしらそういう技能を自分が持っていれば、どういう会社に行っても力になれるかなと思ってプログラミングに出会いました。

藤村:ついにそこでプログラミングに出会ったんですね。いつ頃ですか?

しおい:2017年のことですね。

藤村:2017年だと未経験でプログラミングをやろうみたいなのがそこそこあって、スクールとかもあった時代ですね。

しおい:ちょこちょこ名前が出てきたぐらいの時期で。

一番最初に触れたプログラミングは?

藤村:一番最初に触れたプログラミングって何でしたか?

しおい:Progateっていうプログラミング学習ができるサービスですね。そこでいろんなプログラミング言語のコースが提供されているんですけども、その中でも一番最初に触ったのは、これ、プログラミングなのかそうでないのか要相談かもしれないですけどHTMLとCSSから入りました。これはプログラミングに含めても大丈夫ですか?ではない?

藤村:この質問は、エンジニアの全員に聞くと面白い質問かもしれませんけど。多分違う?

参加者:大丈夫です。

藤村:大丈夫だ、大丈夫。プログラミング言語でした。デザインみたいなところから触り始めたって感じですか?

しおい:とりあえずここから始めるとよさそうというコースが提示されていて、その順番通りにやろうとすると一番最初に着手するのがHTML/CSSでした。でも、最終的にRubyをやりたいなっていうのはその時すでに思い始めていたので。

藤村:どこかでRubyを見つけたんですか?

しおい:その時の私の拙い調査力での調査によると、私が働きたいような世の中をよくしていきたいというモチベーションを持ってサービスを提供されている会社さんでよく使われているらしいのがRubyというプログラミング言語だったんですね。たとえばSmartHRさんとかfreeeさんとかなんですが。

藤村:2010年だとまだRubyってそんなに使われてるわけじゃなかったけど、2017年頃だとスタートアップの第一選択肢になってた感じですね。なるほど、で、HTMLとCSSをやってRailsとかを勉強したんですか?

しおい:HTML、CSSJavaScriptRubyRuby on Railsの順番でちょっとずつ触っていきました。

藤村:そこからRubyKaigiへの差はまだ大分あるという感じですが、まずはRailsとかで仕事ができるようになろうと勉強してたんですね。Railsはどうでした?RubyとかRailsに触り始めた段階で、これは微妙だみたいなことないと思うんですけど。

しおい:そうですね。

藤村:わからないですもんね。

しおい:ほうほうみたいな感じでやってました。あ、動いたみたいな。

藤村:プログラミングの仕事に就いたのは?

しおい:事務職の最後の3ヶ月はプログラミングの勉強をしながら働いていました。契約社員の期限が終了するタイミングで、次は契約更新ではなく正社員登用という話だったのですが、それを飲んでしまうと辞められなくなってしまうのでお断りしました。プログラミングスクールのコースが半年間あったので、後半3ヶ月は会社を辞めて勉強をしていました。そのコースが終わった直後、たまたまなんですけど、東京で会社を経営されている方とTwitter上で知り合いになって、その方がリモートワークで働けるインターン生を探しているということだったので、そこで3ヶ月くらいいろいろ勉強させてもらいました。

藤村:そこではRailsだった?

しおい:はい、Railsでした。何もわからないなりに色々とやらせていただきました。

藤村:それが2017年?

しおい:それが2018年の3月から6月ですね。

藤村:仕事でコードを書き始めたのが5年前ってことですね。最初の仕事はどうでしたか?わからなくてもやるしかないみたいな感じだと思うんですが。

しおい:わからなさすぎてびっくりしました。勉強をしたからといって仕事ができるわけではないというのはもちろんわかってたんですけども、それにしてもわからないことばかりだなっていう。

あと、これはもしかすると2020年以降に転職された方は同じ経験をされているかもしれないですが、完全にフルリモートで仕事するっていう体制が大変でした。相手の方が忙しい中で質問したり打合せしたりっていう状況だったので。

藤村:テキストメインのコミュニケーションで、リモートで未経験で働くのはつらそうですね。

しおい:大変ですね。

藤村:それが3ヶ月ぐらいあって、そこからは?

しおい:インターンが終わった後にそのまま業務委託として働きませんかと誘っていただいたんですけど、条件的なところもあって、ちょっと保留にしていたんですね。誰かに相談に乗ってもらいたかったのですが、その頃すでにFukuoka.rbには出入りしていたものの、そういう場で仕事の相談をしてもよいのかまだわかっていなくて。ちょうどその頃、あるスキルシェアのサービスで「プログラマのキャリア相談を受け付けます」という募集を発見して、先方に相談してみたら、その方の会社でも近日中にプログラマの採用を再開するということで。で様子を見ていると1週間後に求人募集が始まりました。そこに応募して、採用されました。前職ですね。

藤村:すごい採用手法ですね。

しおい:前職の上司なんですが、一応、採用とは関係なくそういうキャリアのことに関心があるそうなので、いい相手に相談できたなと思っています。

Fukuoka.rbとの出会い

藤村:Fukuoka.rbの人はそれなりに偏りがありそう、何人か思いあたるんですけど。Fukuoka.rbみたいな、プログラマのコミュニティもその頃に発見していたんですね。

しおい:話は前後するんですけど、2017年11月に福岡Ruby会議02というイベントがあって。プログラミングを勉強し始めて1ヶ月くらいだったんですが「福岡 Ruby」というワードでGoogleで検索すると、そのイベントページがたまたま出てきたっていう。

藤村:行ってみるかみたいな感じで行ってみた?

しおい:はい。

藤村:話していることはわかりましたか?

しおい:全くわからない。

藤村:そうですよね。

しおい:全くわからないんですが、わからないなりに受け取ることができたことがありました。イベントは土曜日の開催だったんですけど、そこに集まっているプログラマの方々が、おそらく普段仕事で使われているプログラミング言語というものについて、仕事でもない日にわざわざ集まって、そしてみんな楽しそうにしている。自分も含めて大人ってみんな疲れているものだな、と私は勝手に思っていたので、そういう世界があるんだっていうことに衝撃を受けました。

それに加えて、オープニングトークが島田浩二さんだったんです。島田さんは「Rubyとプログラミングする」っていう表現を使われることがあるんですけど、それが具体的にどういうことなのかっていうのを、その発表の中で、島田さんご自身の言葉で紹介されていたんですね。自分自身はRubyとプログラミングしているっていう実感をまだその時点で得たことはなかったんですけど、ただこういうふうに感じることができる言語っていうのは多分いいプログラミング言語なんだろうなって思いました。

藤村:シンプルにめちゃくちゃいい話ですね。

しおい:ありがとうございます。

藤村:プログラマのコミュニティがあって、世の中がマジでよくなったなって聞いてて思ったんですけど。そんなことがあったりして、正式にプログラマとして正社員で働き始める。

しおい:そうですね。2018年7月に上京して、翌月からプログラマとして働き始めました。

藤村:その頃はRackとかのことは?

しおい:全然。

藤村:なんかあるなぁとも思わず。

しおい:意識しなかったですね、その前にそもそも仕事ができなさすぎて。例えば、POROが書けないっていう。プログラミング初心者、Ruby初心者だからなのかもしれないけど、Rubyを勉強して、ちょっとRubyを勉強して、まだRubyのことが全然何もわかっていない状況でRailsのに行ったので、例えばRailsの仕組みの中でPOROで新しいクラスを作りたいとなった時に、クラス名を書いてもう早速手が止まる、みたいな状態でした。

藤村:すらすらRailsのプロダクションコードを書いて、POROをパッと入れられる人ってそんなみんながみんなってわけじゃないと思いますが。

しおい:そうですか。

藤村:いわゆるRailsプログラマとして、モデルのメソッドをいっぱい書いて、コントローラーをいっぱい書いてみたいなことをしばらくやっていたんですか?

しおい:そうですね。あ、でも業務の都合上最初はもちろんRailsも書いたんですけど、Reactを書く時間も長かった気がする。

藤村:Reactも最初は大変じゃないですか?

しおい:何もわからなかったです。

藤村:もうHooksの時代ですか?

しおい:まだHooksは来てなかったですね、Reduxで頑張ってました。

藤村:最初の仕事でReduxはつらいですね。

しおい:つらかったです。

Asakusa.rbとの出会い

藤村:だんだんやっていきながら手応えがあったんですか?これはいい感じだなとかプログラミングは面白いなと思うようなものだったんですか?

しおい:最初は難しすぎて何が何だかっていう状況だったのと、そもそも転職活動が終わって福岡から東京に引っ越してきて、仕事が始まってといろんなことがあったのでその時期は疲れてました。仕事が終わってから勉強するんですけど疲れているので、あんまり手につかなくて。

それくらいの時期に初めてAsakusa.rbに行きました。初めてミートアップに参加したその週の土曜日に、たまたまAsakusa.rbが主催の大江戸Ruby会議07が開催されることになっていて。確かmorisさんだったと思うんですが、「絶対参加した方がいいよ」と誘ってくださって、それをきっかけに大江戸Ruby会議07に遊びに行きました。その時の基調講演がJonan Schefflerさんの「How to be デカ」というお話だったんですけど、そのお話がすごく良くてですね。それで気持ちがすごい盛り上がったので、がんばっていこうと思って。

それからAsakusa.rbに定期的に行き始めたのと、それからその当時Tama.rbというもう少しキャリアが近い先輩たちが始めたRubyコミュニティがあったんですが、そこでチェリー本*1の輪読会をやっていたので勉強するために顔を出し始めたりしました。

藤村:Asakusa.rbはどこで発見したんですか?

しおい:福岡から上京直前に、Fukuoka.rbの100回目のLT大会があって、その時にFukuoka.rbのudzuraさんから「東京に行くんだったらAsakusa.rbに絶対行った方がいいよ」とお勧めしてくださって。イベント内でudzuraさんはRubyコミュニティについてLTでお話されていて、「コミュニティに行き続けるといいことがあるよ」っておっしゃっていたんですよね。

藤村:濃い人物に突然出会ってますね。

しおい:運がいい。突然運が良くなってしまった。

藤村:確かに。普通プログラミング、Rubyを始めましたっていうこのタイミング、スピード感ではAsakusa.rbに行かないんですよ。

しおい:そうなんですかね。

藤村:と思いますけどね。Asakusa.rbに行ってどうでしたか?

しおい:なんだろう。Asakusa.rbって今もそうなんですけど、Asakusa.rbでお馴染みの人たちって、みんながすごいと思う人たち、もちろん私も尊敬する人たちが集まっているんですよね。だからAsakusa.rbに初めて行った時は、周りの人はみんな私にとっては雲の上のような人たちだと思っていたんですけど、毎週行き続けるうちに、尊敬する人たちでありつつ、自分と地続きの、同じコミュニティの人だなっていう気持ちになってきました。

Rackに興味をもったきっかけ

藤村:仕事では引き続きRailsとReactを書いていた。僕はしおいさんをRackのことをやってる人ってイメージだったんですけど。中の方に目が向いたタイミングって何かあったんですか?Asakusa.rbに行ってたらそうなるだろうという気もしますが、どういうきっかけがあったんですか?

しおい:その当時よく顔を出していたTama.rbでTama Ruby会議01というイベントをやることになったので、そこで自分も話したいなと思って登壇ネタを探していました。で、久々にRailsチュートリアルを読んでいたのですが、第9章でcookiesメソッドの話が出てくるんですよね。そういえばこのcookiesメソッドってどういうふうに実現してるんだろうと思って、ソースコードリーディングをした話をTama Ruby会議で発表しました。Tama Ruby会議にはtDiaryのただただしさんが参加されていたのですが、懇親会でお話ししている時に「Rackミドルウェアについて解像度を上げたいなら自分で作ってみるといいよ」とアドバイスをいただいて、作りたくなっちゃいました。(※cookiesメソッドはActionDispatch::CookiesというRackミドルウェアによって提供されている)

藤村:作りましたか?

しおい:作りました。作った話をその年の年末のTokyoGirls.rb Meetup vol.2でお話ししました。

藤村:このRackっていうのは何なのかと思って、ActionDispatch::Cookiesのあれを読んだってことですよね。

しおい:そうですね。そういえば、よくよく思い出してみるとそれよりも前にRails 1.0のソースコードリーディングについて別のイベントで話しました。それは、Asakusa.rbで松田明さんにどうやったらRailsソースコードを読めるようになりますかと聞いたら「Rails 1.0のソースコードを読むといいよ」とアドバイスをいただいたのがきっかけでした。

藤村:一番最初に読んだオープンソースのコードがRails 1.0だった?

しおい:そうです。

藤村:どうでしたか?

しおい:全然わからなかったです。自分一人では厳しかったんですが、その当時、そこにいらっしゃる大倉さんがプログラミング初心者の方向けのメンタリングをされていたので、これを読みたいんですとRails 1.0のソースコードを持っていって、大倉さんに力を貸していただきつつ読みました。(大倉さんに向かって)ありがとうございます。

藤村:自分で作ると読みやすくなったんじゃないかなと思うんですけど。Rackミドルウェアをつくるとプロダクションコードじゃないものはこうやって書くんだ、みたいな感じとかありましたか?

しおい:それに関しては自信がないですね。読む量が足りないのか、私の拾ってくる感性が鈍いのか。もちろん参考になる部分もあるんですが、考えないといけないところがやっぱり仕事のコードとライブラリとで違うところもあると思うので。

藤村:なるほど。そこから次は何に着手したんですか?

しおい:Rackのミドルウェアを作った後にRack CompatibleなHTTPサーバを書きたくなって。

藤村:やってましたね。

しおい:はい。それを2020年の2月に開催された大江戸Ruby会議08話して、そのイベント直後にコロナがやってきてしまい、それからしばらくはひきこもって勉強してました。

開運プログラミング Ruby

藤村:その頃って(Rubyへのハマり具合は)もう重症って感じですか?

しおい:そうですよね。

藤村:突然病状が進行したなって感覚があるんですけど。何がきっかけだったんですか?

しおい:2018年から2020年まで1年半の期間があったんですけど、この間ずっとRubyコミュニティのミートアップに顔を出し続けて、Rubyコミュニティの人たちと同じ空気を吸い続けていて。まだまだ追いつけてない部分も多いんですけど、たくさん勉強させていただいた。自分が興味があることを深掘りする、そういったことが当たり前になってきていたかもしれません。

藤村:もう楽しかったですよね。

しおい:そうですね。

藤村:ですよね。周りでこれだけ楽しそうにしてる人たちがいて、手で触って作れると楽しくなってきますよね。なんか運が良くなった?

しおい:そうなんですよ。プログラミングというか、Rubyと出会ってからめちゃくちゃ運がいい。

藤村:開運プログラミングの回になってきてますけども。

一同:(笑)

藤村:Rackに興味を持って、じゃあCompatibleなHTTPサーバを、とはならないと思うんですけど。付き合う人が悪かったっていうのがいい意味でありますね。その頃は興味の範囲がミドルウェアとか下の層にあったんですね。

しおい:そうですね。ネットワークにずっと興味があるんですけど。何かと何かのつなぎ目の部分がどうなっているのかがずっとすごく気になってます。

藤村:Rackのミドルウェアはつなぎ目の部分をあまりにもうまくやったものみたいな感じですね。

しおい:そうですね。

藤村:HTTPサーバの次は何に取り組んでいたんですか?

しおい:まずCでは書かれた技術書を読みたかったのでしばらくCの勉強をしていた時期がありました。CでTCPエコーサーバを書いたりして。そのあとRuby2.7が出て、Ractorにちょっと興味があったのでしばらく並行並列プログラミングの勉強をしていたり。そのあとしばらくして、RubyKaigi 2021で出したアプリケーションプロトコルを作るためのフレームワークを作り始めました。

藤村:それはどういうモチベーションで?もしかしたらRubyKaigiで話されていたかもしれないですが。

しおい:いろいろ勉強しているうちに、私はネットワークに興味があるのにネットワークのことを何もわかってないなと思い始めて。今でも定期的にネットワークのこと何もわかってないなっていうのが来るんですけど…それで『マスタリングTCP/IP』を読み直して、TCPプロトコルスタックってつまりこういうことかな?というのがわかったような気がしたので、プロトコルスタックの面白さを何かしら表現できるものが作りたいなと思ったんですね。

実は当初RubyKaigiにプロポーザルを出すつもりはなかったんですけど、周りのコミュニティのいろんな人から「絶対出したほうがいいですよ」って背中を押してもらって、出すことにしました。

藤村:みんなのそそのかしがすごい。

しおい:本当に。ありがたいことです。

藤村:仕事では引き続きRailsを書いてたんですか?

しおい:技術的にはRailsなんですが、2020年のひきこもって勉強していた時期、Asakusa.rbのオンラインのミートアップで「この本、読んでないんだったら読んだほうがいいですよ」って『達人プログラマー』『エクストリーム プログラミング』『ケント・ベックのSmalltalkベストプラクティス・パターン: シンプル・デザインへの宝石集』あと『パターン、Wiki、XP』と、プログラマという仕事について考え直したくなるようないろんな本を教えていただいて。

特に『達人プログラマー』を読んだ時に、この仕事に対してちゃんと向き合ってるかどうかっていうことを初めて振り返って反省しました。それから上司とも相談して、それまで参加する機会のなかった事業部の打ち合わせに参加してみたりとか、チーム全体の様子を見てプロジェクトを流していくようなサポート的なことをやってみたり、もっと視野を広げて仕事をしてみるようになりました。

藤村:『達人プログラマー』と『エクストリーム プログラミング』、『ケント・ベックSmalltalkベストプラクティス・パターン: シンプル・デザインへの宝石集』『パターン、Wiki、XP』。すごい。全部読みました?

しおい:はい。実は今中央総武線.rbで『パターン、Wiki、XP』をみんなで読んでいるんですけど、自分にとっては最初に読んだときと今の経験値が少し違うので、こういうことかなっていう解像度がもっと上がってきた気がしています。あれは本当にいい本ですね。

藤村:ライブラリとかに目が向くというか、プログラマーの活動と職業プログラマーとしての活動が両方一緒に進化していったんですね。

しおい:そうかもしれない。

後編に続きます。

product.st.inc

おまけ

Rubyistめぐりのゲストにあわせて、おやつを用意するのが恒例になりつつあります。今回はRubyKaigi 2023の松本の名残として、STORES を利用されている燻製工房KUNMARUさんのスナックと、喫茶店好きなしおいさんをイメージしてSCONE DOLPHINさんのスコーンを準備しました!