見出し画像

【心理的安全性が育む技術成長】 チームの信頼で支えるコインチェックのアプリケーション基盤開発

コインチェック株式会社(以下、コインチェック)の開発現場では、心理的安全性の高いチーム環境が技術的な成長とプロダクトの品質を支えています。エンジニアの皆さんは、新しい技術に挑戦しながらも互いに信頼し合い、助け合うことで効率的に業務を進めています。今回の記事では、アプリケーション基盤グループの草間さんに日々の開発業務やチームでのコミュニケーションについて詳しく伺いました。


自己紹介をお願いします

草間と言います。私は2022年7月にコインチェックのCRE(カスタマーリライアビリティエンジニアリング)グループという組織に入社しました。

ここでは、ユーザーがコインチェックに会員登録してからサービスを利用できるまでのプロセスを最適化することに取り組んでいました。ユーザーがより簡単に登録し、スムーズにサービスを使えるようにするためのフロー改善が主な業務でした。

それから1年ほど経った2023年9月に大規模な組織変更があり、現在のアプリケーション基盤グループに配属されました。このグループでは、各事業部の開発スピードや品質、生産性を向上させるための基盤を整備することが主な仕事です。具体的には、共通部品のパッケージ化を進め開発者が効率よくコードを書ける環境を提供しています。これは各プロジェクトで繰り返し使われる機能を共通化することで、開発者が同じ機能を再度ゼロから作る手間を省き、全体の生産性を上げる取り組みです。

コインチェックに入った理由、働くやりがいなどを教えてください

コインチェックに入社した理由は、もともと暗号資産や投資に興味があったことが大きいです。2014年頃に初めて暗号資産を購入し、2017年からはコインチェックのサービスを利用していたこともあり非常に馴染みがありました。2022年に転職を考え始めた際、エージェントからコインチェックを紹介され、その時点で関心を持ちました。暗号資産業界は急速に成長していて、その中で自分のエンジニアとしてのキャリアを進めることに強く惹かれました。

特にコインチェックの採用ページで目にした企業バリューや、求める人物像に挙げられていた「HRTの原則」に共感したことが入社を決めた大きな理由です。HRTの原則とは、謙虚さ(Humility)、尊敬(Respect)、信頼(Trust)を大切にするという考え方で、これまでのキャリアでこのような原則を掲げる企業やチームにあまり出会えなかったため非常に魅力的に感じました。面接でもその文化が根付いていることを感じ、そこで働く人たちが非常に謙虚で意見を尊重してくれる姿勢に感銘を受けました。

コインチェックでの働くやりがいは、業界自体の成長スピードが非常に速い点と金融業界ならではの高い品質要求です。スピードと品質のバランスを取りながら新しい課題に挑戦することで、エンジニアとして日々成長を感じることができます。同じ課題が繰り返されることはほとんどなく、常に新しいことを学び問題を解決していくので非常に充実感があります。また、チーム全体での取り組みが信頼と尊敬の中で行われていて、心理的安全性が高い環境が整っていることも大きなモチベーションとなっています。

暗号資産業界は、まだまだ成長を続けておりこれからも新しい課題が次々に現れると予想されます。その中でエンジニアとして多くの学びや体験が得られるため、常に新鮮な気持ちで仕事に向き合うことができています。

コインチェックでの技術キャッチアップは大変でしたか?

はい、正直に言うとキャッチアップには苦労しました。特にコインチェックのバックエンドで使用しているRuby on Railsは、入社時点で未経験だったため最初は戸惑いがありました。新しい技術を学ぶこと自体は大変ではありましたが、チームの心理的安全性がとても高かったため質問や議論がしやすく安心して学ぶことができました。この点は非常に助けられましたね。

私が所属するチームは、お互いを尊重し信頼し合っている関係性を築けているため、技術的なキャッチアップや日常的な業務でも困ったことがあればすぐに相談できる雰囲気があります。チームの心理的安全性が高いというのは、エンジニアにとって非常に重要な要素だと思います。

アプリケーション基盤グループのチーム構成とコミュニケーションについて教えてください

アプリケーション基盤グループは現在16名が在籍していて、コインチェックの中ではかなり大きなグループです。会社全体のアプリケーションの基盤を担う重要な役割を果たしていて、それぞれのメンバーが異なる領域の専門性を持っています。具体的には、カスタマー基盤、プラットフォーム、フロントエンド、モバイルという4つの領域に分かれ各チームがそれぞれの強みを発揮しています。

カスタマー基盤チームは、主にユーザー認証やユーザーステータスの管理に関連する課題に取り組んでいます。例えば、ユーザーがどの取引を行えるかを判断するステータス管理機能をパッケージ化し、他の事業部でも利用できるようにしています。これにより、各事業部がステータス管理を自前で行う必要がなくなり開発効率が向上しています。

プラットフォームチームは、主にRuby on Railsや関連するGemのバージョンアップ、開発フローや品質確認用の環境の整備などを行っています。コインチェックではより高い品質維持を目的とした環境整備を課題に持っており、この環境の拡充は非常に重要な取り組みです。

フロントエンドチームは、現在はユーザ向けのフロントエンドフレームワークをNext.jsに移行する作業を中心に進めています。Next.js への移行作業はユーザー体験の向上が目的の一つですが、コインチェックではユーザーが利用する画面だけではなく、運用者専用の画面など多くの画面が存在します。フロントエンドチームは、各事業部の画面開発の基盤整備というミッションを担っています。

モバイルチームは、モバイルアプリの運用と、モバイルに対する技術戦略の推進を担っています。アプリのリリース作業やリファクタリングなどの、安定したモバイルアプリの運用を支えているのに加えて、技術検証や、基盤となる機能開発も積極的に行っています。

コミュニケーションの取り方や工夫について

アプリケーション基盤グループ全体では、毎週1回の定例ミーティングを行い、各チームが進捗を報告し今後の課題について話し合っています。また、月に1回は振り返りのミーティングを行い、各自がその月にやったことを発表する場を設けています。その後に交流目的の飲み会なども行い、仕事以外の話も共有してチームの結束を深めるようにしています。

私が所属するカスタマー基盤チームでは、毎日デイリーミーティングを行い、雑談を交えながらメンバー間のコミュニケーションを大切にしています。これにより、お互いの状況を把握しやすく、技術的な質問や課題を気軽に共有できる環境を維持できています。プライベートな話題も交えて、メンバーの生活面での問題や悩みも共有し、心理的安全性の高いチーム環境を作っています。

また私が以前所属していたCREグループで行われていたもので、評価期間中にメンバー同士で良い点を褒め合う文化がありました。お互いの良いところを認識し合うことで信頼関係が強化され、自然にSlack上でも褒め合う文化が根付きました。これにより、チーム内での心理的安全性が非常に高く、意見やアイデアを自由に共有できる環境が整っています。このように、メンバー全員が尊敬と信頼を持ってコミュニケーションを取れる環境は私たちのチームにとって非常に大切なものですし、今後もこの文化を維持していきたいと思っています。

利用技術・開発環境について教えてください

アプリケーション基盤グループ全体では、さまざまな技術スタックを使用しています。私が所属しているカスタマー基盤チームではバックエンドが中心なので、Ruby on Railsをメインに使っています。Ruby on Railsはコインチェックのサービス全体で広く利用されていて、私たちの開発の核となる技術です。

ミドルレイヤーに関しては、データベースとしてMySQLを使用し、キャッシュ機能としてRedisを活用しています。これらの技術はユーザー認証やステータス管理といったカスタマー基盤の重要な処理を効率化するために必要不可欠です。

また、基盤グループに配属されてからは、継続的インテグレーション(CI)や自動化のツールにも多く触れるようになりました。特にCircleCIやGitHub Actionsといったツールを使って、コードの品質を担保するためのパイプラインを整備しています。これにより、コードの品質チェックや自動テストがスムーズに行えるようになり、開発の効率と信頼性が向上しています。

これらのツールや技術スタックを組み合わせることで、私たちのチームは日々の開発を迅速かつ高品質に進められる環境を整えています。また新しい技術やツールを積極的に取り入れていて、開発者として常に学び続けることが求められる環境でもあります。

今のチーム課題と解決に向けた取り組みについて教えてください

現在、私が所属しているカスタマー基盤チームでは、各メンバーがそれぞれの大きな課題に注力して取り組む体制になっています。チーム全体で一つの課題に集中するのではなく、メンバーそれぞれが異なる重要な課題を担当し、お互いに助言やレビューを行いながら解決を目指しています。

今、私たちが直面している大きな課題の一つは、ユーザー認証に関する部分です。特に、パスキーの導入を進めていて、より安全でシンプルな認証システムを構築することに取り組んでいます。パスキーは従来のパスワード認証に比べて利便性とセキュリティが高く、この技術を取り入れることでユーザー体験の向上を図っています。

また、社内向けAPIの乱立も大きな課題です。フロントエンドやモバイルアプリからバックエンドにアクセスするAPIが複数存在し、それぞれが異なる仕様で動作しているため全体の管理が煩雑になっています。この状態を改善するためにAPIの整理や統一を進め、より効率的で管理しやすいシステムを構築することを目指しています。

私自身が現在担当しているのは、会計ドメインのバックエンド処理をモジュラーモノリス化する取り組みです。これまでも共通機能のパッケージ化を進めてきましたが、今回は会計ドメインにおいても同様に共通処理をモジュール化し、システム全体の柔軟性と拡張性を向上させることを目指しています。この取り組みにより他のドメインでも効率的に共通機能を再利用できるようになり、システム全体の生産性が向上することを期待しています。

今後も、個々の課題に対して深く取り組みながら、お互いにサポートし合い、チーム全体としてより強力な基盤を構築していくことが目標です。

Kaigi on Rails 2024 のCfPを出そうと思った背景、登壇の意欲について教えてください

私のキャリアの大半はSESの会社での経験でした。そのため現場ごとに使用する技術が異なり、一つの技術を追求し、それを社内に共有することや社外への発表などをする経験があまりありませんでした。しかし、コインチェックは技術イベントへの参加や協賛が非常に積極的で、その姿勢に新鮮な驚きを覚えました。特に技術的な学びや社外のエンジニアとの交流が豊富で、入社当初から技術イベントへの興味はあったものの、まだ理解が浅く登壇まで考えるには至っていませんでした。

2年目に入り技術的な知識が深まると、イベントの雰囲気もより楽しめるようになりました。ただ参加するだけでなく登壇して自分の知識を共有したいという気持ちが強くなったんです。登壇を通じて社内だけでなく社外のエンジニアからフィードバックをもらうことができ、自分の視野が広がると感じています。エンジニアとして新しい視点や意見を取り入れる場として、登壇の意義は非常に大きいと考えています。

社内での経験に限ってしまうとどうしても視点が偏りがちです。外部からの反響を通じて自分の考えや取り組みを客観的に見直すことができるため、新たな発見や成長につながります。こうした外部の視点は、自己成長を加速させる大きな要因だと感じています。

登壇することを決めた背景には、社内の技術顧問の方々のサポートが大きく関わっています。彼らにテーマの内容をレビューしていただき、登壇する価値があると背中を押してもらえたことで、自信を持って応募に踏み切ることができました。私たちのグループでは、業務時間中に資料作成や準備を進めることも認められていて、技術顧問やチームメンバーからのサポートを受けながら、安心して準備を進められる環境が整っています。登壇に対して理解と協力を惜しまない体制が整っていることは大きなメリットです。

技術イベントへの登壇やその準備プロセス自体が、エンジニアとしての成長を促進するだけでなく、チームや会社全体に新しい知見を共有する貴重な機会となります。このような環境で、登壇に向けた準備を進めながら学びを得ることができ、非常にやりがいを感じながら取り組んでいます。

サイロ化した金融システムをpackwerkを利用して無事故でリファクタリングした話

今回のKaigi on Rails 2024では、「サイロ化した金融システムをpackwerkを利用して無事故でリファクタリングした話」というテーマで登壇します。コインチェックのバックエンド部分は、大規模でモノリシックなアプリケーションとなっていて、その巨大なコードベースの構造を変えることは非常にリスクが伴います。しかし、Shopifyが開発したライブラリ「packwerk」を活用することで、低リスクでモジュラーモノリス化を実現しました。

私たちが取り組んだのは、ユーザーステータスを管理するロジックのパッケージ化です。従来は複数のドメインに散在していたロジックを整理し共通機能としてパッケージ化することで、ドメインごとの関心事を分離することに成功しました。このアプローチによりシステム全体の管理がしやすくなり、開発の効率も向上しています。

この発表では、具体的な実装方法や課題を乗り越えた経緯についても詳しくお話しする予定です。特にシステムの構造を大きく変更する際のリスク管理や、モジュール化による開発効率の向上について、参加者に興味を持ってもらえればと思っています。

Shopify の packwerk はこちら

過去に記事も書きました。

【セッション情報】
発表日時:Day2 - 10.26 (Sat.) 16:10 〜 16:25
Kaigi on Rails 2024

最後にチームに興味を持ってくれた人にメッセージをお願いします

今コインチェックは、事業の成長とともにシステムもどんどんスケールしていくフェーズにあります。アプリケーション全体のコードベースは膨大になり、システム横断的に解決すべき課題も多く存在しています。こうした状況はエンジニアにとって学びの機会が多く、非常にやりがいを感じられる環境だと思います。

システムを大規模にスケールさせながらそれに伴う課題を解決していく経験は、なかなかできるものではありません。特に事業会社の成長に合わせてシステムを成長させるという貴重な体験は、エンジニアとしてのキャリアにも大きなプラスになるはずです。

私たちのチームでは、ただ技術的な課題に取り組むだけでなく、事業の成長に直結するシステム開発に携わることができます。そうした環境で、学びながら成長していきたいという方には、ぜひ私たちのチームに興味を持っていただければ嬉しいです。

コインチェックではエンジニアを絶賛募集中です!

少しでも興味を持っていただけた方は、ぜひカジュアル面談からお問い合わせください。


コインチェックはエンジニア採用強化中です! ぜひ採用サイトにも遊びに来てくださいね。