EDOCODE株式会社で組織づくりを担っている、執行役員の山田響です。今回は我が社のCTOであり僕の尊敬するエンジニア、加藤敦を紹介します。
加藤は、(良くも悪くも)CTOでありながら第一線で活躍する現役のエンジニアで、EDOCODEのエンジニアチームの文化や雰囲気を作ってきた人でもあります。そんな加藤のエンジニアリングに対する考え方や人となりをお伝えすることで、EDOCODEへの理解も深めていただけたら幸いです。
ポイントモールのシステムは、誕生から10年。何を考えて設計していたのか
EDOCODEの基幹事業は、主に国内クレジットカード会社との協業によるポイントモールサイトの開発・運用です。このシステムは、主にバックエンドエンジニア2名によって支えられています。そのうちの一人がCTOである加藤です。加藤はこのシステムの最も初期、構築段階から関わっています。
山田:ポイントモール事業が始まったのが2010年なので、もう10年選手のシステムじゃないですか。当時って今みたいに「スケーラブルな~」とかそこまで言われていなかったと思いますが、設計当初から「10年後もちゃんとサービスとして稼働し続けられるものを作ろう」という視点を持って作っていたんですか?
加藤:すごくシビアにではないですけど、ある程度は思っていました。よく参照されるデータは一定量にするとか、モールごとに貯まるデータのテーブルを分けてなるべく分散させるとか、普通のことです。
山田:普通と言いますが、拡張しやすいシステム構築を助けてくれるツールなりクラウドサービスがいっぱいある今とは違う環境で、ちゃんとずっと動き続けるシステムを作るって、初期から設計が優れてたんだろうな~って思います。
そういったシステム設計をするために、意識していることはありますか?
加藤:説明が難しいですね。「なるべくおかしなことが起きないようにつくる」としか言いようがない…。
たとえば2つの設計の選択肢があったとして、片方の設計は単純で実装しやすいけどデータが増えるしそのデータをメンテナンスする人が必要になる。もう片方の設計は、実装は少し複雑だけどデータを追加する必要がなく運用負荷が減るしミスも起こりにくいとします。
プログラムを組むことだけ考えたら前者のほうが簡単だしやりやすいですよね。でも、その後のことまで考えて、後者を選ぶようにしています。
山田:確かに、エンジニアの立場だったら「納期もあるし、まあ動けばいっか」と、前者を選んでしまうかもしれません。加藤さんは、いろんな制約やオーダーとのトレードオフの中で、適切な設計を考えているんですね。
加藤:そもそもシステム設計はわりと好きなので、ちゃんと考えるのかもですね。
山田:そこに面白さを感じているんですね。
加藤:きれいに収まると気持ちいいじゃないですか。たとえば何もない部屋があって、そこにモノを入れなくてはいけないとします。どんな家具や家電を買ってどう配置するかを考えて、ぴったり収まった時の気持ちというのが、若干近いかもしれない。
山田:インテリアの例えは面白いですね。料理好きの人向け、楽器好きの人向けなど、それぞれの条件に応じた配置を考えなくてはいけないところも、「こういう機能を実現したい」というソフトウェア開発に似ています。
加藤:なかなか収まらない時もありますけどね。収まらなければまた直すので、そういう試行錯誤も楽しいといえば楽しいですけど。
哲学専攻からエンジニアへ
山田:最初にプログラムを書き始めたきっかけは何だったんですか?
加藤:小学生の頃に父親がPC9801というPCを買ってきて、それに入っていたN88-BASICというプログラムを書き写したら動いたっていうのが最初の体験ですね。丸が表示されたり三角が動いたり、他愛もないプログラムですが、純粋に面白いなと感じました。
とはいえずーっとプログラミングをしていたわけでもなく、ハマったり離れたりしていました。大学に入ってからまた色々作りたくなって、再び勉強を始めた感じですね。
山田:大学は哲学専攻でしたよね。僕が哲学にハマっていた時期にJ.S.ミル※の「他者危害原則」の話をしたら、「それ、俺専攻やった」と言われてびっくりしました。
※J.S.ミル(ジョン・スチュアート・ミル)…イギリスの哲学者。1806〜1873。主著に『自由論』『功利主義論』など。
加藤:浪人時代に京大の加藤尚武教授の『倫理学で歴史を読む』っていう本を読んで、すごく面白くて哲学および倫理学専攻を選んだんです。
J.S.ミルの考え方は、近代民主主義の基礎ですよね。ミルの師匠のベンサムは「最大多数の最大幸福」をよしとしたけど、ミルは「最大多数の最大幸福を追求するとマイノリティの権利が侵される」「非合理的でも、マジョリティから外れていても、危害を被らないなら個人の自由意志を尊重すべき」としていた。
山田:それ言ったの1800年代半ばか後半くらいって、めっちゃ先進的ですよね!僕は執行役員として組織づくりをしているんで、本当に参考になるんですよ。
「共有地(コモンズ)の悲劇」ってあるじゃないですか。共有地に芝生が生い茂っていても、みんなが自由に牛を放牧すると芝生が食い尽くされて、結局全員が悲しくなるというジレンマです。
これは会社でも当てはまるというか、どれだけ社員を自由にするかを考えるときに必要な視点だよなって。各々が好き勝手やりすぎるとみんな死ぬけど、管理しすぎてもダメ。これも「他者危害原則」を持ち出せば説明しやすいんじゃないかとか、そういう話を加藤さんとしたいなーと思っていたことを思い出しました。
……喋りすぎました。
加藤:はい。
アルバイトのプログラマーからCTOになるまで
山田:哲学専攻からエンジニアになったのはどういう経緯で?
加藤:大学の頃は自分を社会不適合者だと思っていたんで、よくある感じの営業で働くとか絶対に無理だなって。プログラムならできるから、就職するとしたらプログラマーしかないと思っていました。
山田:社会不適合者というのは、どういうところが?
加藤:人付き合いとか、苦手だなって。
山田:パソコンが友だちですもんね。
加藤:まあ(笑)、地元とかに友だちはいたんだけどね。大学の友だちはいなかったけど。だから人付き合いが苦手というより、単純に働きたくないとか、イメージが付かなかっただけかもしれません。
そんな感じで、まずはアルバイトでプログラマーとして働き始めて、そのうちに前職のアドウェイズに誘われたので、そっちに行ったという感じです。
山田:アドウェイズで出会ったメンバーと、EDOCODEの前身であるWanoを共同創業したんですよね。独立しようと思った意思決定のポイントは何だったんですか?
加藤:昔から、あまり人に使われたくないタイプではあったかもしれません。独立できたらしようかなと思っていたので。元々自分でもやりたいと思っていたところへ声をかけてもらった形です。
山田:それで現在はEDOCODEとWanoのCTOというわけですね。
少しでも自分と世の中の「不便」をなくしていく
山田:加藤さんが今後EDOCODEでやりたいことは何ですか?
加藤:世界を良い方向に変えたい、生活を便利にしたい、とは思っています。大げさな話ではなくて、たとえば「通勤が3分縮まる道を見つけた」くらいの変化でもいいんです。小さくてもいいから何かしらの変化をもたらしたい。もちろん、より大きな変化を目指したいなとも思っています。
山田:具体的にこういうサービスを作りたい、とか考えてます?
加藤:田村(代表取締役の田村鷹正)もすでに言っていますけど、個人情報管理はずっとやりたいなと思っています。
たとえば、引っ越しをすると色々なサイトに登録してある住所をひとつひとつ全部ログインして書き換えなくてはいけないじゃないですか。もうアホらしくて仕方がないんで。どこかで集中管理して、各ECサイトからそこにAPIを叩いて住所を取りにきてくれればいいなとか、そういうことを考えています。
山田:不便ですもんね、あれ。
加藤:そうそう。きっとみんなも不便なんだろうなと思って。サービスを作る動機は、「自分が不便だと思ったから」が多いです。プログラムのパーツを作ってついでに公開したりするのも、自分が不便で作って、同じように不便な方がいたらどうぞ、という感覚。
山田:シンプルだけど、めちゃくちゃ重要な動機ですね。
学び続ける向上心があればEDOCODEでは何でもできる
山田:エンジニアとして大事にしていることを教えてください。
加藤:学び続けること、でしょうか。向上心というか、必要なときに、必要なものを新しく自分に取り入れる力は大事だなと思っています。エンジニアとしてのスキルを深ぼるのはもちろん、幅広い知識を得る意識も持っています。例えばUIの基礎知識をさらっと入れておくと、思わぬところで役に立ったりするので。
今のチームのメンバーも、自分の興味に合わせて何かしら学んでいる人は多いかもしれません。まあ、私もメンバーも、純粋にエンジニアリングが好きだっていうのもありますね。
山田:学び続ける姿勢と同じくらい、好きになる、面白がる、みたいなところが大事ですね。
加藤:嫌いなことを自主的に学ぶって、難しいですからね。
逆に言えば、学び続ける姿勢さえあれば、EDOCODEは何でもできる環境ですよ。僕らが取り組んでいる問題って、別に数学や工学を専門的に学んだ人でないと解決できないような難しいものばかりではないんです。
むしろ、「こんなことできる?」というふわっとした要望を整理してあげる能力、どの技術を使うか決断する技術選択能力があれば解決できる問題が7、8割くらい。
それらは向上心があれば、いくらでも身につけていけると思っています。
山田:本当にそうですね。EDOCODEではビジネス側と協力する場面も多いので、そういう環境でディスカッションしてすり合わせていくコミュニケーション力はめちゃくちゃ大事だろうなと思います。超専門的な知識を持っていることももちろん素晴らしいけど、それがなくても十分バリューを出せる環境ですよね。
加藤:そうですね。仕様も設計もただひとつの正解があるわけではないし、幸い、EDOCODEは「言われた通りに作れ」っていう環境ではない。「なるべくいいものを作ろう」という考えを元に、いろんな方法を考えて、ディスカッションできます。
そのベースになるのが、幅広い知識や、新しいことに取り組み、学ぶ姿勢なのかなと思っていますね。
山田:ありがとうございます。今度またJ.S.ミルの話をしましょう!
EDOCODEを支える技術の要、CTOの加藤の話をご紹介しました。どうやったらそういうものが作れるのか僕には想像もつかないようなことをやってのけるのが、加藤のすごいところです。
同時に我々がどんなことを考え、どのようにサービスを作り出しているのかも感じていただけたのではないかと思います。向上心とコミュニケーション能力で、様々な問題をチームで解決していける仲間をお待ちしています。