見出し画像

SARAHアプリ開発を大公開

はじめに

こんにちは🌞 株式会社SARAH で SARAH iOSアプリ を開発しているYukiです!毎日楽しく開発してます! ふとそんな普段の開発の状況を世の中に紹介する機会がないな…という思いに駆られました。そこで多くのDeveloperにもっとSARAHの開発の裏側を知ってもらおう!というモチベーションでこの記事を書くに至りました。是非一読してSARAH開発の裏側を知ってもらえればと思います🙇‍♂️
今回は開発サイドのお話にフォーカスするので、弊社のミッションや事業について知りたい方はこちらもご覧ください!
また、現在SARAHではiOS/Android/バックエンド/データサイエンティストと広くエンジニアを募集しています!いちばん↓に採用窓口のリンクを設けているので、カジュアルにお話を聞きに来てください✨


SARAH開発の一週間

SARAH開発の1週間

SARAHの開発は1スプリント一週間のスクラムで進行します。SARAHにとって木曜日は全員が会社に集まる日であり、全社定例を行なうなど、言わば区切りの曜日だったりします。 なので木曜日をスプリントの起点として新たな一週間が始まるわけです🏃‍♂

【木曜日】 Sprint Planning

スプリントスタートの曜日です! PM、CS、マーケ、開発の全メンバーが同じ席につき、前スプリントの評価や一週間の数値変動の共有を行います。そして今週のタスクをプロダクトバックログからピックアップ、担当を決め、各々の一週間が始まります。 また前スプリントで開発したアップデートを審査提出する日でもあります。みんなで祈ります🙏

【金〜火】 Development

毎朝11:00にデイリースクラムを行います。 現在の進捗や前日に生まれた課題やお悩みを共有して、より円滑に開発が進むようディスカッションします。また実装完了した機能は随時Githubのプルリクレビューに回します。 あ、当然土日はお休みです🤗

【水曜日】 Sprint Review & Retrospective

一週間やってきた成果を評価する日です! 新機能単位のサービステストを経て次のアップデートに含めるかを決めます。 更に、新たに発見したアプリの課題や、新機能や施作のアイデアをチーム全員で持ち寄って精査し、バックログに追加します。 一週間お疲れ様でした!🎉


コードレビュー

大事な大事なSARAHのコードレビューの裏側を紹介します📝

コードレビューガイドラインの策定

SARAH - Code Review Guidelines

当たり前と思われることもガイドラインとして明文化することで、チームのレビューにおける心構えや価値観、コメントフォーマットなどの統一を図っています。 一部ですが、SARAHのガイドラインから抜粋して紹介しちゃいます😃

〜心構え系〜

○ Everyone reviews everyone seniority does not matter.
 “全員が全員をレビューする 年功序列は関係ない”
○ Don't use hyperbole. ("always", "never", "endlessly", "nothing") Don't use sarcasm.
 ”誇張した表現は使わないでください 皮肉は使わないでください”
○ Praise good code alongside your feedback.
 ”優れたコードを褒めるようにしましょう”

SARAH - Code Review Guidelines

〜フォーマット〜

○ [must fix] … 仕様や名称の誤りなど、絶対に直す必要があるもの
○ [nice to have] … 絶対ではないが、できれば直した方がいいもの
○ [np] (nitpicking) … 些細な修正点で、直さなくても構わないが気になったもの

SARAH - Code Review Guidelines

ランダムレビュアー

SARAH - Github

SARAH開発の主要メンバーだけでなく、他サービスの開発者もレビュアーとして参加して偏り無い目線でレビューを行います👀 メンバー個々の知識の幅を広げる側面もあります! SARAHプロジェクトに限らず全プロジェクトで行なっている文化です。
この文化を公平かつ円滑に行うために、Githubに “code-review” という名のレビュアーチームを作っています。このチームには全サービスの開発メンバーがアサインされており、このチームをプルリクの “Reviewers” に設定することでレビュアー1人がランダムチョイスされます。ドキドキ💗

Slack連携でスピーディなレビュー

「レビュー遅くなってすいません!」みたいなやりとりはどこの開発現場でも起こりますよね😂 SARAHではこのロスを極力抑えるためにGithub - Slack連携を工夫しています。

SARAH - Slack

1日に2回このSlackリマインダーが飛びます。全プルリクエストの内、担当レビュアーがまだ “Approve” していない一覧が、その担当者のメンションと共に通知されます🔥 前述したランダムレビュアーの文化もあるので、とても役に立っています。


チーム構成

SARAH - Team Members

SARAH開発チーム構成の紹介です! 社員/業務委託社員/学生インターンが One Team で稼働します。SARAHの強みでもありますがメンバーそれぞれの働き方は、出社/在宅、フルタイム/スポット勤務と柔軟で多様性に富んでいます!なので明確にどのポジションに何人というのは表しにくいですが、↑の絵からボリュームをイメージしてもらえればと思います🙄
このチーム構成で小さく素早いスプリント(スクラム)のサイクルを回し、大胆かつスピーディに開発しています🌀


開発環境大公開

ここではSARAHの開発環境をプラットフォーム別に紹介します! stackshareでも公開しています。

Common

iOS

Android

Backend (on AWS)

Web-front

Data Science


課題・展望

2015年にSARAHアプリがリリースされて以来アップデートを重ねてきました。2度のリプレイスを経て現在の形に至ります。ゆえにSARAHアプリにも「歴史」を感じる場面が増えて来たのです📚 当然システムにも歴史が詰まっているわけで…技術的負債といえるものもチラホラ🌀
そんな負債を解決すべく、日々ポジティブに課題解決に取り組んでいます!ここではそんなSARAHアプリの開発における課題と今後の展望を少しだけ紹介したいと思います!

リアーキテクチャ構想!(iOS, Android, Backend)

現在iOSもAndroidもMVVMアーキテクチャを主体に組まれていますが、機能が増えたことで保守性の低下が懸念されます。継続した安定運用可能な状態にするべくリアーキテクチャ構想が進んでいます。

  • GraphQL の採用でローコードなデータドリブン設計へ

  • VIPER による責務の分解と明確化

  • Clean Architecture でビジネスロジックを単一UseCaseに分解

などの広い選択肢を持っています。
更にiOSにフォーカスすると、SwiftUIの安定化に伴い正式採用に向けて部分リプレイスが進行中であります!The Composable Architecture (TCA) も合わせて検討中です

iOSとAndroidに機能差異を埋める!(iOS, Android)

基本的にSARAHアプリはiOSを先行実装してきました。なので必然的に機能差異が生じます。 そこで最近では、クロスプラットフォーム構想が浮上しました!
選択肢としてはFlutterが最有力で、現在iOSプロジェクトにFlutterで作られた画面を部分的に埋め込むプロトタイピングが進んでおり、前述のリアーキテクチャ構想と並行して検討しています!


エンジニア募集中

SARAHでは一皿に特化したごはん情報の投稿・配信・収集・解析するサービスを、toC、toBと多角的に展開しています。 そんなSARAHを一緒に爆進してくれるメンバーを募集中です!興味のある方はぜひ↓の採用窓口からカジュアルにお話を聞きにきてください! 皆さんと一緒に働けるのを楽しみにしています!

SARAH採用情報

ポジション別採用窓口一覧


この記事が気に入ったらサポートをしてみませんか?