はじめに
みなさん!こんにちは。めもりー(@m3m0r7)です。今年の 7 月にエンペイに入社しました。
今年の 5 月末までは知育玩具サブスクリプションサービスを提供している企業で執行役員 CTO をしていました。
元々,私自身のキャリアのバックグラウンドは前職を除けば Web アプリケーションエンジニア一筋です。
私自身は 2000 年初頭はインターネット黎明期で,Web アプリケーションに限って言えば,フロントもインフラもバックエンドも分掌が進んでいないような時期からプログラミングを始めました。
その中でバックエンド側のプログラミング言語に限って言えば PHP,node の経験が長いのですが,エンペイでは Ruby を使用しています。
フロントエンド・バックエンドなど別け隔てなくやってきていたものの,今までのキャリアを形成するにあたっては,その企業が使っている言語やフレームワークも転職を決める軸としていました。ただ,CTO の経験を経た後のネクストキャリアでは,特に重要視しなくなっていた自分が居ます。
エンペイに入社した理由は以下のプレスリリースが出ておりますので,ご興味があれば見てみてください。
そう思った背景は以下のように大きく 2 つあります。
- キャッチアップもそこまで時間かからずにできるだろうと考えた
- 特定の言語に深い執着があるわけではなく,ビジネス上の課題解決をするために技術を選定するという趣向性が強い
キャッチアップもそこまで時間かからずにできるだろうと考えた
PHP を使い続けていた理由の一つは幼少期から使っていたプログラミング言語だったというのが大きいです。
他にも,入社してキャッチアップ期間を経ずに即戦力としてコミットしたいという焦燥感もあったのかもしれません。
重要視していなかったとはいえ,今までとは異なるバックエンドの言語ではあったので,多少なりとも懸念はしていました。実は,入社した週に 8 つくらい PR を出せたので,杞憂でした。
また,Ruby 自体の仕組みを理解するという目的で,個人の時間で RubyVM を PHP で自作していたりしてました。
RubyVM の実装も入社翌週から 1 週間程度でしょうか。Ruby で以下のようにコンパイルした InstructionSequence から Hello World を出力できるようになりました。
どういうものかと言うと,例えば以下の Ruby のコードを見てみてください。
puts RubyVM::InstructionSequence.compile("puts 'HelloWorld!\n'", "HelloWorld.rb").to_binary
上記のようなコードは以下のような YARB になります。
┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐
│00000000│ 59 41 52 42 03 00 00 00 ┊ 02 00 00 00 ec 00 00 00 │YARB•⋄⋄⋄┊•⋄⋄⋄×⋄⋄⋄│
│00000010│ 00 00 00 00 01 00 00 00 ┊ 05 00 00 00 98 00 00 00 │⋄⋄⋄⋄•⋄⋄⋄┊•⋄⋄⋄×⋄⋄⋄│
│00000020│ d8 00 00 00 61 72 6d 36 ┊ 34 2d 64 61 72 77 69 6e │×⋄⋄⋄arm6┊4-darwin│
│00000030│ 32 32 00 25 25 67 67 79 ┊ 03 01 03 03 03 01 03 01 │22⋄%%ggy┊••••••••│
│00000040│ 01 03 00 ff ff ff ff ff ┊ ff ff ff 01 01 03 07 05 │••⋄×××××┊××ו••••│
│00000050│ 07 29 01 01 09 29 03 01 ┊ 01 01 0f 4d 0b 01 01 01 │•)••_)••┊•••M••••│
│00000060│ 01 01 01 01 01 43 01 03 ┊ 05 05 03 07 03 01 03 21 │•••••C••┊•••••••!│
│00000070│ 43 1b 09 13 01 13 00 ff ┊ ff ff ff ff ff ff ff 01 │C•_•••⋄×┊××××××ו│
│00000080│ 00 ff ff ff ff ff ff ff ┊ ff 13 03 01 01 01 01 01 │⋄×××××××┊ו••••••│
│00000090│ 01 05 05 01 01 00 00 00 ┊ 59 00 00 00 f1 09 00 00 │•••••⋄⋄⋄┊Y⋄⋄⋄×_⋄⋄│
│000000a0│ 45 03 1b 48 65 6c 6c 6f ┊ 57 6f 72 6c 64 2e 72 62 │E••Hello┊World.rb│
│000000b0│ 45 05 15 3c 63 6f 6d 70 ┊ 69 6c 65 64 3e 00 00 00 │E••<comp┊iled>⋄⋄⋄│
│000000c0│ 14 05 17 48 65 6c 6c 6f ┊ 57 6f 72 6c 64 21 00 00 │•••Hello┊World!⋄⋄│
│000000d0│ 14 05 09 70 75 74 73 00 ┊ 9c 00 00 00 a0 00 00 00 │••_puts⋄┊×⋄⋄⋄×⋄⋄⋄│
│000000e0│ b0 00 00 00 c0 00 00 00 ┊ d0 00 00 00 0a │×⋄⋄⋄×⋄⋄⋄┊×⋄⋄⋄_ │
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘
上記のようなバイナリを PHP だけで逐次実行していくものです。
PHP で JVM (a.k.a. Java Virtual Machine) を自作した次のネタプロジェクトとして RubyVM を自作しようとしていた時期がありました。RubyVM の場合 JVM とは異なり,オンライン上に The Java® Virtual Machine Specification と似たような RubyVM のドキュメントがなく挫折してしまっていたのです。
ただ仕事で Ruby を使うことになったからには,Ruby をキャッチアップしなければという思いに駆られました。結果として Ruby 本体のソースコードを読みながら理解をしていくということをひたすら繰り返すうちに,Hello World が出力できるようになったものです。不屈の精神が大事だなぁとしみじみ思いました。
ビジネス上の課題解決をするために技術を選定する
Web アプリケーションエンジニア,EM/TL ,そして CTO としてのキャリアを積んできて,度々考えていることは技術選定の在り方です。
技術選定においては多様多種な考え方もある中で,私自身は技術選定に正解はないと考えています。
当時モダンだと言われた技術選定も,メンテナンスができず時が経てばそれは負債になります。おそらく私達がメンテナンスに時間を割けられていないのは,ビジネスとして避けて通れないサービスの付加価値を上げるための施策に時間を使っているからでしょう。
それは営利企業の一端として利益を上げるための目的でもあり,サービスを利用してもらうお客様にも喜んでいただくための施策でもあります。
また,よりよい技術選定が,サービスの安定性,優秀な人材に対しての採用戦略,開発コスト削減によるサービス付加価値への予算投下が可能になる,など,後のサービス全体で見た付加価値をより増大させて貢献できることを知っています。
様々なキャリアを積み重ねてきて,ビジネスや経営への解像度が鮮明になってきた今だからこそ,これらの背景について理解できるようになってきました。
結果として,当時の技術選定に対して執着するよりも,ビジネス上の課題を解決するために 3, 5 年後の技術選定がどうなっていたら良いか,チームや会社がどうなっていたらよいのかを考えることに重きを置くようになりました。
そのためにはチームが納得する技術選定をするし,自身たちがやりたい技術を使っていくというスタンスも必要だと考えています。
入社して 1 ヶ月ほどではありますが,所感としてエンペイでは,それらがいいバランスでできているんじゃないかなと思っています。特に直近では私が各メンバーの皆さんを巻き込みながら「技術の未来を描く会」というのを率先して実施しています。未来の技術選定や,自分たちがやりたい技術をどうプロダクトにつなぎこむか合意を取って進めているものです。
さいごに
エンペイに入社した所感としては,当初の想定よりも組織やチームメンバー各位が良い組織をつくっていこうという思いが強いなと感じたところが大きいかなと思います。
エンペイのエンジニアは全体で十数名ほどの組織ですが,各チームでスクラムの導入なども含めて,新しい取り組みを否定するのではなく,取り入れて試していこうとするスタンスはとても魅力的だなと感じています。
また,エンジニアサイドに限らずビジネスサイド,バックオフィスメンバーの皆さんも含めて,よりお客様に喜んでいただくためにはどうしたら良いかをモチベーションに考えることが多い点も魅力的です。
今後の期待値としては,今までのキャリアで培ってきた経験をもとに,よりよいビジネス,よりよい組織を作っていくことでエンペイの掲げる「お金にまつわる「不」」を解消していくことに尽力できればと思っております。
少しでも興味をお持ちいただけたら,ぜひこちらからカジュアル面談しましょう🐈