こんにちは!SUZURI事業部エンジニアのほりゆうとうごです! 2人ともSUZURI事業部に配属されてそろそろ1年のエンジニアです。
SUZURI事業部では「SUZURIの奥地に向かう」と称して、気になった機能や実装・新たに分かったSUZURIの知見などを共有する会を実施しています。 この記事では、その活動の中心メンバーであるほりゆうとうごが具体的な活動内容をご紹介します!
どんな活動か
業務中に、SUZURIの実装や仕組みに関して、疑問や気になったトピックを書いておきます。 具体的には、以下のような内容です。
- SUZURIを利用するなかでどのように実装されているか気になった箇所
- 開発環境で使っているコマンドで何が実行されているか
- SUZURIに表示される特定のデータがどのテーブルから取得されているのか
週1回の活動の中で、書いておいたトピックの調査をしていきます。
書いた人が気になった経緯やその段階で分かっていることをメンバーに共有します。
その後、一緒にコードを見ていきます。
調査中には分かったこととどの部分のコードを読んだのか記録して、後から読み返せるようにしています。
活動を始めたきっかけと得られた成長
始めたきっかけ
初めは2つの理由でこの活動を開始しました。
1つ目は、SUZURIの実装を詳しく知りたかったためです。2つ目は、序盤につまずいた箇所や気になった実装をまとめておけば、後からSUZURIの開発に参画したメンバーにとって参考になると思ったためです。
実際に調査したものを紹介します。
調査した内容
account と userの違い
「コードにaccount
とuser
が出てくるが、それらの違いはあるのだろうか?」という疑問があり、調査しました。
こちらはSUZURIの用語集にて記載があり、アカウントの項目には以下のような説明が書かれていました。
ユーザーとほぼ同じだが、ユーザーは人間そのものを指すのに対し、アカウントは登録されている情報を指す。
この情報をもとにコードを読んで、SUZURIでaccount
とuser
の情報をどのように扱っているかがわかりました。
私たちはSUZURIに配属されてからまだ日が浅いため、お互いに知見を共有するなど積極的に協力し合うことで、知っている事を増やせました。
他にも、この活動をしばらく続けていると、個人としてもチームとしても別軸の成長につながっていました。
以下に具体的に述べます。
Rails本体の実装まで読むこと
開発環境、ステージング環境、本番環境など、環境ごとに異なる処理を行っている箇所を調査していた際、Railsの機能を利用して処理を分岐させていることに気づきました。 具体的にどのようにしているのかを調査し、Rails本体の実装コードまで読むきっかけになりました。
以下のようなやりとりを行いました。(抜粋)
自分たち
そもそも、Rails.env.production? などで、環境を判定できるのはなぜでしょう?
参加してくれた先輩
Rails.env.class #=> ActiveSupport::EnvironmentInquirer になっています。
Rails.envのクラスがActiveSupport::EnvironmentInquirerなので、そのコードは こちらの実装 にありますね。
EnvironmentInquirerの呼び出し元も見てみましょう。 こちらのコードを見てみてください
def env @_env ||= ActiveSupport::EnvironmentInquirer.new(ENV["RAILS_ENV"].presence || ENV["RACK_ENV"].presence || "development") end
RAILS_ENV
という環境変数があればそれを引数に渡してますね。なかったら次にRACK_ENV
という環境変数をみて、それもなかったらdevelopment
を渡してます。結論としては〜(略)
気になった実装をまとめて調査できること
他にも、気になった実装などをメモしておき、毎週の活動で調べることができるようになりました。
業務の実装が忙しくなってくると、なかなか作業中に気になったことを調べるのが後回しになってしまいがちですが、こういった週次の活動があると学びのきっかけになります。
理解を深められること
また、他の人がメモをしてくれた内容を一緒に調査することで、自分が普段は触れない分野のコードを読むことができます。それにより、自分の担当業務以外の知識を深めることができました。
逆に、自分が実装した箇所を説明する場合は難しかった部分を他の人に説明することで、再度理解を深めるきっかけになりました。
チームへの影響とまとめ
具体的によかったポイントは以下の通りです。
- 先輩も来てくれるようになり、実装の経緯とロジックの根拠やプロダクトの知識を深めるキッカケになった
- SUZURIの開発チームに今後参加する人にとって良いドキュメントができた
最後に、参加メンバーの感想です。
感想
ちょっと気になるけど調べるの今じゃないなという実装をメモしておいて、後で調べることができたり、あらためてSUZURIで気になっている実装を確認する場になったりするので非常にありがたいです。
お互いに違う機能の実装などをしている事が多く、自分が触れる以外のコードを読む事ができたり、自分が触ったコードについて説明することで理解を深める事ができました。奥地に向かうという名前が、その先に何かあるのではと想起させるので好きです。
実装を進めていて気になった箇所を振り返る活動を、ぜひみなさまの開発現場でも行ってみるのはいかがでしょうか?
GMOペパボでは、SUZURIチーム以外でもこのような活動や勉強会が盛んに行われています。ぜひ、この活動が気になった方は一緒に働いてみませんか?