今までのキャリアについて教えてもらえますか?
今は、ECシステム開発のエンジニアとして仕事をしていますが、さかのぼると、大学時代は、理系ではなく法学部法律学科で文系の人間でした。
初めてプログラミングをしたのは、大学4年生くらいの時に趣味でHot Soup Processorという簡単なプログラミング言語を使って、パチスロのエミュレーターのような確率のシュミレーションシステムを作ってみた時です。
就職については、法学部だったこともあり、周りの友達は卒業後も弁護士の勉強する人が多かったので、自分も卒業後すぐに就職するわけでもなくフリーターをしながらゆっくり進路を考え、結果として1年後に知人の誘いで小さなソフトハウスへ就職しました。
そこでは2年ほどSES(System Engineering Service)という形態で、お客様先に常駐してシステム開発を支援する仕事に携わっていましたが、自社のサービスを開発してみたいという思いが出てきて、次の会社であるECパッケージ開発の会社へ転職することにしました。
私のキャリアのベースはこの会社で形成されたと言っても過言でないほど、色々な経験を積むことができました。
開発はもちろん、プロジェクトマネジメントや炎上案件や高稼働の現場など(笑)。
その後、もう少しエンジニアの経験を積みたいと思い、その当時、私がいくつかお話をさせて頂いた会社の中では一番技術レベルが高いと思った会社に転職し、ワークフローのプロダクト開発に従事し、自分の技術レベルを上げることにつながりました。
その後、前職の同僚が転職した企業へお誘いを受けて、現職の前身であるGMOシステムコンサルティングへ移ることになります。
今年の4月にGMOメイクショップとGMOシステムコンサルティングが合併し、現在はGMOメイクショップのメンバーとして働いています。
現在の仕事について教えてください。
1年ほど前から、自社サービス「makeshop」の次世代プラットフォームのシステム開発に関わっています。
現行のプラットフォームは約12,000ショップ、流通総額が年間で約3,000億円にも及ぶ10年連続No.1のネットショップ構築サービスですので、現行のプラットフォームに負けないより良いシステムが作れるように日夜検討しています。
開発しているシステムの構成や技術について教えてください。
フロントエンドとバックエンドは完全に独立した構成になっています。
フロントエンドはSPAとして動作し、バックエンドはフロントエンドからのAPIリクエストをGraphQLで受け付けます。
バックエンドはスケーラビリティと開発スピード向上のために複数のコンテナを用いて、gRPC通信を行う、いわゆるマイクロサービスの構成となっています。
フロントエンド、バックエンド、各コンテナと独立して開発出来ることで、今後の拡張性向上とアプリケーション増大に伴う開発スピード低下を避けたいと考えています。
また、アーキテクチャはクリーンアーキテクチャを用いてDDDのテクニックを取り入れています。
Dockerコンテナを使った開発を取り入れ、各開発者が環境構築に時間を掛けないで済むようにしています。
Git Hubアクションを使ってLintチェック、単体テスト、クラウド環境へのデプロイを行い、なるべく自動化出来る部分は自動化するようにしています。
開発プロセスはどのようなものですか?
デイリースクラムで課題事項を共有して早期解決を図るようにしています。
スプリントを2週間サイクルで回し、エンジニアとプロダクトオーナーが集まりレビューを行い、開発の方向性にズレが出ないように進めています。
役割分担などはどのようになっていますか?
私は、フロントエンドからバックエンドまで担当しています。特に共通系の部分や認証部分を担当することが多いです。
一方、フロントエンド、バックエンド、それぞれ専任するエンジニアもいますので、個々の希望や経験、スキルなどを加味した上で、柔軟に役割分担を決めています。
チームの雰囲気はどのような様子ですか?
例えば、ソースコードのレビューについては、お互いの考えを尊重し合い、厳しい言葉を掛ける事はありません。お互いに成長するために、プログラムについて質問したり、より良いシステムを作るための提案という形で(強制ではなく)改善案が示されることが多いです。
また、チーム内でのコミニュケーションを大切にしています。カフェスペースでプライベートな事や新しいツールについてのちょっとした雑談などをすることもあります。こういった雑談から業務改善や技術力向上につながることも多いです。
その甲斐あってか、チームの心理的安全性はとても高く保たれていると思います。率直に自分の意見を述べて健全な議論が出来ていると感じています。
働き方は、生産性や効率性を考慮しつつ、週2日程度出社し、残りはリモートで開発するようなスタイルを取っています。
やりがいや難しさについて教えて下さい。
やりがいは、新しいシステム開発へのチャレンジですね。ゼロからアーキテクチャを考えたり、どのような技術を使うのかといった技術選定に携われたり、システムをゼロから作り出す醍醐味を味わえることです。
会社の雰囲気としても、裁量を持って自主性を重んじて仕事をしていくスタイルなので、もちろん責任も伴いますが、自分としては伸び伸び仕事をさせてもらっている感じがあります。
難しさは、既存の巨大なシステムのリプレースになるので、現行システムとの互換性を考慮する必要があることから、DBは変えられないことや一度に全てを置き換えることができないので、影響範囲やリスクも含めて入念に業務を確認しながら進めることが必要とされることですね。
大切にしている価値観はありますか?
「常に変化し続ける」という価値観を大切にしています。
コンピューターの世界は日々進化しているので、過去の技術や考え方に捕らわれず、迷った場合は敢えて変化を採用する事で、安直に従来の手法を取り続けないようにしています。システムの規模が大きくなるほど、後戻り、横展開の工数も大きくなってしまうので、定期的にソースコードのリファクタリングのための打ち合わせを行い、コードの品質を高く保てるように工夫しています。
今後やりたいことはありますか?
自分は今後も新しいサービス開発に携わっていきたいと考えています。もちろん今のプロジェクトをしっかりと完成させることが短期的には重要ですが、中長期では今の開発で学んだことをゼロイチのシステム開発で活かしてみたいと考えています。
GMOメイクショップは、ネットショップシステムの単一サービスではなくマーケティングシステムなどECの周辺システム開発やSI(システムインテグレーション)のサービスも展開していることから、また新規サービス開発に携わるチャンスがあると思っています。
どんな人にチームに加わってもらいたいですか?
新しい技術や価値観を取り入れる柔軟性を持っていて、当たっている、間違っているに関係なく自分の意見を発信でき、お互いの意見、価値観を尊重できる人に加わって欲しいと思います。
チームが大きくなるに連れて、より多様性が必要になっていくので、色々なバックボーンを持っている人が来てくれたら嬉しいです。
最後にメッセージを一言!
入社のタイミングにもよりますが、フロントエンド、バックエンドはもちろん、フルスタックでも活躍できるポジションがあります。経験、技術力が伴えば、テックリードをお任せする可能性もあります。
そのような意味では、大規模システムのモダンな技術を取り入れた開発に携わりたい方やこのシステム開発で得た知見をセミナーやカンファレンスで発表したり、ブログなどで発信していきたい人なども、そのような機会は積極的に作っていきたいと考えています。
ぜひ弊社への応募をご検討いただければと思います!
GMOメイクショップの雰囲気や仕事内容など、実際に働いている社員の⽣の声をご紹介いたします。