Chatwork Creator's Note

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

読者になる

「読みやすいコードのガイドライン」の著者・石川宗寿さんをお招きして、コードの読みやすさについての勉強会を開催しました

モバイルアプリケーション開発部の奥澤(@okuzawats)です。プライベートな活動として夜な夜なモバイルアプリを作り続けているのですが、ひたすらCI/CDの整備をし続けていて、肝心のアプリ開発が全然進みません。アプリの開発は誰かに任せて、CI/CDの整備に専念したいと思う今日この頃です。

Chatworkでは、「読みやすいコードのガイドライン ―持続可能なソフトウェア開発のために」の著者、石川宗寿さんを招き、「コードの読みやすさ」に関する勉強会を開催しました。モバイルアプリケーション開発部のメンバーを中心に、「どうしたら可読性の高いコードを書くことができるのか?」をテーマとして、全体で8時間をかけた勉強会となりました。

本記事では、勉強会を開催した背景や、勉強会で学んだ内容を踏まえて、社内でどのような取り組みをしていくのかを紹介します。

勉強会を開催した背景👩‍🎓

Chatworkのモバイルアプリは現在、チームトポロジーで言うところのストリームアラインドチームプラットフォームチームとに分かれて、Android / iOSそれぞれ1つのアプリを開発しています。ストリームアラインドチームはユーザーへの価値提供を行うチーム、プラットフォームチームはストリームアラインドチームへの価値提供を行うチームです。

creators-note.chatwork.com

ストリームアラインドチームの数を増やし、ユーザーへの価値提供を加速させていく中で、モバイルアプリに関わるチームも増えていきます。関わるチームが増え、それに比例してコードを書くメンバーも増えていく中で、コードの可読性についての認識を揃えることは非常に重要であると考えます。

コードの可読性についての認識を揃えること、ひいては可読性の高いコードベースを整備することにより、コードベースの認知負荷を低く保ち、開発速度の向上やバグ混入率を下げることにつながるという考えです。

コードベースの可読性を向上するためには、誰かが個人的に頑張ってもダメで、関わるすべてのメンバーの認識を揃えることが非常に重要となります。そのためには輪読会や勉強会など、関係者を集め、議論を通じて共通認識を育むことが有効です。

輪読会・勉強会に用いる書籍として、「リーダブルコード」や「Good Code, Bad Code」などの候補がありました。何冊か候補がある中で、モバイルアプリの経験者には「読みやすいコードのガイドライン」が最も適していると考えました。何故なら、「読みやすいコードのガイドライン」はAndroidアプリ開発に用いているプログラミング言語「Kotlin」でサンプルコードが書かれており、かつAndroidアプリエンジニアに馴染みのあるコードとなっているからです。モバイルアプリを開発する上で、非常に実践的な書籍であると思います。

勉強会にはAndroidアプリエンジニアだけでなくiOSアプリエンジニアも参加するわけですが、Kotlinに慣れていないiOSアプリエンジニアの方々には持ち前のガッツで乗り切っていただきます。

ここまで考えた上で、「読みやすいコードのガイドライン」の著者、石川宗寿さんに連絡を取ると、なんと勉強会の講師を快く引き受けていただくことができました!本当にありがとうございました!

勉強会の開催🎊

勉強会は全部で4回、それぞれ2時間の計8時間です。石川さんの公開されている資料を元に、命名、コメント、状態などのテーマについて、講義と質疑を行いました。資料は以下のGistに公開されています。「読みやすいコードのガイドライン」の書籍は、こちらの資料が元になっているそうです。

Links of Code readability presentation · GitHub

勉強会の実施中は、オンラインホワイトボードのMiroを用いて、感想や質問を可視化し、記録に残しました。話を聞きながらMiroに付箋を貼るのは大変であるという意見もありましたが、他の参加者が何に着目して、どのような感想や質問を持っているのかがわかるのは面白かったです。また、他の参加者の感想に対する感想も出しやすいです。

Miroを用いて勉強会の感想や質問を書き出した

勉強会の次の日、参加者に勉強会で「目から鱗が落ちたこと」「これから実践してみたいこと」を共有してもらいました。ここでも自分の気付きと他の参加者の気付きが異なり、参考になりました。参加者に負担をかけてしまいましたが、後から勉強会の内容を思い出すためのフックにもなるので、やって良かったと自分は思っています。

勉強会後に気付きを共有する

勉強会終了後🍻

勉強会がすべて終了した後、参加者を集めて、これまでに書いてきた感想や気付きを振り返りながら、ネクストアクションを抽出しました。ネクストアクションは、勉強会から得られた学び・気付きを実践の場に移すためのアクションアイテムです。勉強会が終わって「勉強になった」だけで終わらせてはもったいないので、実践に移していきます。

勉強会終了後に参加者で振り返り&ネクストアクション抽出

Chatworkには、チームを横断して共通の関心を持つメンバーが集まる「ギルド」が存在します。モバイルアプリに関してもAndroidギルド・iOSギルドが活動しています。今回の勉強会で抽出されたネクストアクションは、既にギルドへの提案中のステータスにあり、ひとつひとつ議論しながら進めていきたいと考えております。

勉強会のアクションアイテムをギルドに提案する

余談ですが、Chatworkのインターン生に向けた推奨図書に「読みやすいコードのガイドライン」もノミネートされていました。勉強会の参加者からの推薦があったとのことです。この書籍や勉強会の内容を元に、コードの読みやすさについての認識が揃っていき、コードベースの可読性が改善していくことを期待しております!

インターンへの推薦図書に「読みやすいコードのガイドライン」がノミネート

まとめ

ChatworkのAndroidプラットフォームチームでは、Androidアプリの開発生産性を向上するための取り組みを推進しています。今回の勉強会の開催も、その取り組みのひとつです。Androidプラットフォームチームで開発生産性向上のための取り組みにチャレンジしたい方はこちらへ!💪

hrmos.co