Toyokumo Tech Blog

トヨクモ株式会社の開発本部のブログです。

トヨクモ株式会社を退職します

開発本部の齊藤です。2021年の1月で退職することになりました。業務内容の紹介も兼ねて今まで何をやってきたか、これから何をするかについて書きます。

入社までの経緯

私はもともと大学の学部を卒業した後に大学院の修士課程に進学する予定でしたが、卒論があまりうまく行きませんでした。なんとか先生に介護してもらいながら卒論を終えたものの、自分で思うような卒論が書けず、 「大学院に進学しても地獄のような思いをするだけでは?」という思いが強くなっていきました。今から振り返ると、結局はあまり興味がない分野(バイオインフォ)を選んでしまったことが卒論の失敗の根本的な原因だったと思います。

大学院進学をあきらめた私は、とりあえず生活のためにどこかに就職しようと思いました。とはいっても何をすればいいかわかりませんでしたし、すでに2月になっていました。 ひとまず、すでに会社員をやっている知り合いに連絡を取って助言をもらえないかと考えました。 そこで、以前SICP勉強会で面識のあった北川さんに連絡をとることにしました。すると、「バイトから社員のコースに載せられるかも知れないので、とりあえずバイトをしましょう」という話になり、2月からアルバイトをすることになりました。

アルバイトでは、Vue.jsやClojureの勉強をしてのんびり過ごしていました。製品には1行だけコミットした記憶があります。FormBridge のボタンが消えるみたいなバグの修正だったと思います。 「4月から9月まで契約社員で採用します」という話だったので、是非お願いしますと言って入社しました。契約社員とはいえ、福利厚生などの待遇面では賞与以外の違いはなかったと記憶しています。家賃補助や、タイミングが良かったためストックオプションも貰えました。

入社してからやったこと

kintone-query-builder (2019年4月)

kintone-query-builder-phpというクエリビルダを作って社内製品でも利用するようにしました。PHPを書くのは初めてだったのですが、PHPStormが助けてくれたので、ひとまず完成できました。 詳細についてはブログ記事にも書きました。

kintone REST API向けのPHPのクエリビルダを作りました - Toyokumo Tech Blog

pc-auto-save (2019年5月)

pc-auto-save.jsというプリントクリエイターの機能を拡張してくれるJavaScriptのメンテナンスを行いました(現在はプリントクリエイターの標準機能として取り込まれたため、このJSは存在していません)。 このJavaScriptはClojureScript製で、私が「Clojureやりてぇ〜」と訴えたらこの仕事にアサインしてくれました。ちょっとした不具合の修正が目標だったのですが、結局Reagent(Reactのラッパー)で 書き直しました。Clojureの良い練習になりましたし、REPL駆動開発やStructural Editingに慣れることができました。SICP勉強会でだいぶSchemeには慣れていたのですが、原始的な開発環境で開発していたため、 Clojureの素晴らしい開発環境、ツールに感動しました。

この時期にOn Lisp勉強会を開き始めたのもいい思い出です。結局コロナなどもあって、現在は凍結しているのですが...。 私はあんまり人に話しかけるのが得意ではないので、勉強会を通して他の社員と交流できたのが良かったなと思いました。

kMailer (2019年6月~10月)

6月からはClojure製品の1つであるkMailerの仕事をしました。ブラウザのdevtoolなどを使ってボトルネックを見つけて修正したり、大量のデータでの挙動を改善するような仕事を経験できたので勉強になりました。一定以上のデータを使うときにconcatで爆発するというのがあり、遅延評価は難しいなと思いました。 データマイグレーションなどの慎重さを求められる仕事もあったのですが、開発本部の先輩が仕事の進め方や技術的な知識をアドバイスしてくれたおかげでなんとかうまく行きました。 また、インフラをElastic Beanstalkに移行するという仕事も経験することができました。EBは便利ですね。

9月には正社員に登用されることになり、給料も上がって嬉しかったです。

新製品DataCollect (2019年11月~2020年5月)

11月からは新製品DataCollect開発にアサインされました。DataCollectでは、エクセルのような式を書いて、kintoneのデータを利用して計算をすることができるのですが、その「エクセルライクな式を処理して計算をする」モジュールを僕が作成することになりました。 ちょっとした外部DSL的なものです。

;; 目標は以下のような関数compileを作ること
(compile エクセルライクな式の文字列)
;; => 以下のようなmapが返ってくる
{
 :compiled-fn (fn [input] ...) ;; inputを与えると実際の計算をする
 :how-to-build-input ... ;; compiled-fnに与えるinputを作り上げるために必要な情報
 }

かねてから「(プログラミング)言語処理系とか興味あるんですよね〜」と言っていたので、興味や適正を加味してのアサインでした。 開発は私と開発本部長の木下さんの2人でしたが、私にとっては少人数でも初めてのチーム開発でした。 仕様を無から作り上げていくという初めての体験ができましたし、チーム開発を通して技術的なコミュニケーションのスキルが上がったと思っています。疑似コードで議論するのは楽しかったです。 3月にリリースしてからは、ユーザの利用できる関数を追加したり、配列 + 1のような計算間違いをコンパイル時に検出してユーザに提示する、簡易型チェックの仕組みを作ったりしました。

技術的には「たぶん作れるだろうな〜」と思っていたのですが、実際に製品に組み込むとなるとやはり不安になるものです。一通り必要な要件を満たすものを作成できて自信になりました。

リリース後は私がDataCollectを一通り見る役目として、バグ修正や機能追加、コードレビューをやりました。 トヨクモ株式会社は製品がとても多いため、1人1製品くらいの状況になるので、責任感と緊張感を味わえたのは良い経験だったと思います。

別の新製品開発 (2020年6月~)

2020年の6月からは仕事の中心が新製品開発が中心になりました。「最速で製品をリリースする」のが当初の目標だったため、 ひとまずDataCollectのリポジトリをクローンしてその上に新規機能を実装しキメラのようなアプリを作り、その上で不要な機能を削除するという開発方針で進めていました。 開発本部の方針として「製品の差別化につながらない部分にコストを割かないようにする」というのがあるためです。

DataCollectの開発では、Webインターフェースやバッチ処理の部分はほとんど木下さんが作ったため、ClojureのWeb開発はほとんどやってませんでした。 新製品開発はしばらく私一人での開発だったため、全部やる必要があり、ClojureのWebアプリケーション開発にだいぶ慣れることができたと思います。

また、新製品開発のコツなどもアドバイスしてもらい、勉強になりました。

  • やることの全体像を(スプレッドシートなどで)可視化する
    • モチベーションの維持に役立つ
    • やることを明確にできる
    • 他人に何をどこまでやっているのか共有できる
  • UIのモックから作る
  • 非機能要件は、機能要件を固定してからテストを書いた上で取り組む

結局、リリースすることができませんでしたが、現在も開発中です。

会社員生活の感想

  • 知り合い(北川さん)が社内にいたため、割とすぐ馴染めたと思います。知り合い経由で就職するとその点楽だなと思いました。
  • 私は自分の意見が通らないと面白くないなと思ってしまう人間なので、妥当性があれば誰の意見でも採用してくれる雰囲気は私にあっているなと思いました。また、人数が少ないため、その分一人ひとりの裁量が大きくなっているのもフィットしていたかなと思いました。自分の貢献が明確なのでやっていて楽しかったです。
  • 新製品開発ばっかりやっていたような気がします。会社の方針として、「1つの製品に機能を大量に盛るのではなく、シンプルな製品を多くリリースする」というのがあり、新製品開発に関わりたい人には良い環境だと思います。
  • 規模の大きい製品で、パフォーマンスなどが問題になる部分を担当する機会がなかったのはもったいなかったかなと思いました。安否確認サービスという製品があるので、体験できるチャンスはあったと思うのですが、私は一切関わりませんでした。
  • Clojure(LISP)で仕事をできる環境は日本ではとても限られているので、「Clojureで仕事する」というレアな体験ができてよかったです。実際ほとんどClojureしか書いてませんでした。
  • 給料がドンドン上がっていくのが面白かったです。正社員になったタイミング、2019年12月、2020年6月、2020年12月のタイミングで上昇し、最終的には契約社員時代と比べて約月給が1.5倍になりました。なぜ月給ベースでの上昇割合を書いたのかと言うと、2年未満しか勤めていないため実年収のサンプルが1つしかないですし、昇給のタイミングが1年に複数あったため誤解が生まれない書き方がわからなかったためです。トヨクモ社の2020年度まで年収モデルとして、月給x14がベースの年収として考えられるため、実際の年収に換算しても1.5倍であってると考えられます。
  • 会社の上場を経験できました。といっても、未だに上場の意味などもよく分かっておらず、会社に胡蝶蘭が来て「へぇ〜」と思ったくらいの感想しかありません。私のストックオプションも行使権を得る前の退社により破棄されるので関係ないですし...。
  • 大学でいろいろあり、入社時にはノイローゼのような状態になってしまっていましたが、一定の収入があり、人間らしい生活ができると自然と回復していくものなんだなと思いました。特に2020年になってからはだいぶ元気を取り戻した感じがありました。貯金残高を眺めて精神状態を回復させるのはよく使っていました。
  • slackのemojiを追加して遊ぶのは楽しかったです。自分が追加したemojiを他の社員が使ってくれると嬉しくて積極的に追加していました(一部「治安が悪い」という理由で撤去されたものもあります)。
  • 朝起きて夜寝る生活ができるようになりました。

なぜ退職するのか

退社後は大学院修士課程に進学して項書換え系 の研究をする予定です。定理証明支援系やプログラミング言語の基礎に興味があるので、研究は楽しめるのではないかと考えています。

もともと研究職に対する漠然とした憧れがあり、いつかは挑戦してみたいなとはおもっていたのですが、暇な時間を使って勉強しているうちに早く挑戦してみたい気持ちが強くなったので、このタイミングで挑戦することにしました。

木下さんとの退社の面談でも「ストックオプションの行使権の取得まで待って挑戦する選択肢もあるのでは?」というアドバイスも受けたのですが、新しいことをやるには勢いが大事だと思っているので、熱意が冷めないうちに退職したほうが良いだろうなと判断しました。やりたいことを我慢しながら別のことをするのは精神的に耐えきれない人間なので、爆発する前に決断できて良かったと自分では思っています。

また、会社員をやりながら大学院に進学したりする選択肢もあるとは思うのですが、私の最終的な目標としては研究者としての職を得ることなので、大量に時間を確保する必要があると思ったので候補から外れました。

退職を心に決めたのは2020年の5月でしたが、それ以来モチベーションを維持するのが難しくなってしまい、とてもしんどかったです。加えて 、退職が近づくにつれドンドンやる気がなくなっていきました。100%のパフォーマンスが出せていない状態が長く続いてしまい、申し訳無さを感じています。

研究をやるにしろ、会社員的なスキルは大事だと思われるので、会社員をやったことは悪くなかったかなと思います。また、ソフトウェア開発のスキルはしばらく需要が高いと考えられるので、挫折してもまた再就職すればいいやーというセーフティネットがあると思うと、学部時代のような漠然とした不安感に苛まれることもなく、前向きに生活できるのではないかと期待しています。博士号取れるようにとりあえず5年間は頑張りたいと思います。実はまだ入試に受かってすらないのですが...。

ありがたいことに「暇になったらアルバイトしてくれ」と言われているので、また仕事するかもしれないです。


トヨクモでは一緒に働いてくれる技術が好きなエンジニアを募集しております。

採用に関する情報(https://scrapbox.io/toyokumo-recruit/)を公開しております。 気になった方はこちらから(https://toyokumo.co.jp/jobs/)ご応募ください。