チームのstyleguideを作ろう! #完結編

Product Development Divisionの植村(@uemura1shi)です。 2018新卒でGA technologiesに入社し、1年間iOSエンジニアとして、そして今年4月からiOSとサーバーの両方の開発に携わっています。
最近のマイブームは柄にもなくお部屋のディヒューザー選びです。ホワイトムスクがおすすめです🌿

さて、毎週お届けしてきたRENOSYチームのstyleguideを作ろう!プロジェクト。今回で完結となります。 毎週楽しみにお待ち頂いてたみなさん、ありがとうございました。

ここで、RENOSYチームでstyleguideを作っている目的を再掲します。

テーマ: チーム内のstyleguideを作ろう!

RENOSYチームは、結成当初は3人のエンジニア体制でしたが、現在10名まで増え、そのバックボーンも新卒からベテラン中途まで様々です。 そのため、コードの品質やチーム開発のためにstyleguideを作った方がいいなと感じることが増えてきました。 しかし、白紙な状態からつくるのも難しいため、まず最初はCookpadさんのstyleguideを参考にさせていただこうと考えました。 そこで、勉強会の時間を使って、Cookpadさんのstyleguideを読みあって、議論を深め、自分たちのstyleguideへエンハンスしていきたいと考えています。

今週のアジェンダは以下となります。

  • 変数
  • メンバーの感想・総評

変数

変数の取り扱いや命名などを議論しました。
変数名の略語については、省略をできる限りしないことに全員賛同でした。省略を許してしまうと多くの技術的負債を生んでしまうためです(省略した変数名の本来の意味を知る人はそれを実装した人だけであり、その変数が何を指してるか不明になりがちなど)
また、Cookpadさんの資料ではclass_attributeを許容していましたが、私たちはクラス変数は極力使わないという制約を設けた上でclass_attributeを許容するようにしました。

以下、決定項目です。

  • グローバル変数 ($foo) を新たに導入してはならない。
  • クラス変数 (@@foo) を使用してはならない。どうしてもクラス変数を使いたい状況下においてのみ、class_attribute を使っても良い。
  • 変数名は英単語を省略せずに使って名付けること。
    • ただし、変数名が長くなってしまう場合は、単語の頭文字を除く母音を削除したり、一般的な略語を選択するなどの方法で短縮化してよい。また、慣習的な名前 (ループカウンタとしての ij など) は許可する。
  • ひとつの変数を異なる役割のために使い回してはならない。そうしたくなる場合は、メソッドを複数のメソッドに分割できる。
  • ローカル変数のスコープ (有効範囲) を可能な限り小さくすること。ローカル変数が存在しないメソッドは良いメソッドである。

メンバーの感想・総評

  • 栗田さん RENOSY SELL サーバーサイド
    普段は一人でもくもくと開発していて、お互いのコードの書き方やお作法などを知る機会が少なかったため、自分のコーディング力が向上する非常に良い機会でした。

  • 大久保さん OWNR by RENOSY Android サーバーサイド
    styleguideの認識をチームで合わせる作業はやったことがありませんでした。それに一人で改めて整えるのも面倒だし・・・。 この場で整えたstyleguideを自分のチーム(大久保さんは別チームから助っ人として勉強会参加していた)で取り入れていきたいです。

  • アンさん RENOSY MAGAZINE / RENOSY ASSET サーバーサイド
    チームメンバーと週1時間、口頭で話す場が習慣的にできて、他のメンバーの技術力やプログラムに対する思いなどをより知ることができました。

  • 渡邉さん RENOSY INQUIRY サーバーサイド
    チームメンバーが作ったものでなく、外部から取り入れた資料から自チームのものに修正する作業だったので、建設的かつ自由な議論ができました。また、コードレビュワーの視点だったり、コンソールでの動きを意識しながら議論を進めれたので、実務にすぐ活かせると思います。

  • 浅野さん RENOSYチーム テックリード
    チームで共通して使用しているRuby Mineのコードフォーマット機能を正として議論をすることで、チームの納得感を醸成し、かつメンバーが各々持っていた暗黙的なルールやお作法をシェアできたことが良かったと思います。


これにて、チームのstyleguideを作ろう!プロジェクトは完結となります🎉🎉🎉
ですが、RENOSYチームの勉強会はこれからも続きます!
来週からは毎週1〜2名が発表者となり、1つのテーマについて発表、そして全員で議論のような形になります。 来週もぜひお楽しみに!