Teachme Biz iOSの現場と現状

Ayumu Watanabe
スタディスト Tech Blog
7 min readAug 18, 2020

--

開発部の渡邉です。Teachme Biz iOSアプリの開発を担当しています。
先日の記事でアプリのリニューアルプロジェクトが始動したことをお伝えしました。

折角の機会ですので、弊社Androidエンジニア清藤の記事に倣い、2020年8月時点の作業/開発環境を記録しておこうと思います。リニューアル後に振り返り、その差分を噛みしめるつもりです。

作業環境

前提として、弊社ではCOVID-19の影響により2020年8月現在リモートワークが推奨されています。例に漏れず私達iOSエンジニアも自宅で作業しています。
※COVID-19の状況次第で従来どおりの体制(基本出社で必要に応じてリモート勤務可)に戻ります。

とはいえ、開発作業に限って言えば、リモート/オフィスワークの差分はそれほど多くありません。打ち合わせが対面からZoomやGoogle Meetになった程度です。

開発機

Macbook Proが貸与されます。入社時に貸与されるマシンのスペックは外部に公開されています
私は現在MacBook Pro (15-inch, 2018)を使用しています。

当時のプロセッサとメモリを盛れるだけ盛った構成

なお、オフィスでは4Kモニター 1枚もしくはWQHDモニター 2枚どちらかが利用可で、私はWQHD 2枚にしていました。

利用ツール

業務では様々なツールを利用していますが、自社サービスであるTeachme Bizもその一つ。マニュアルの作成/共有等々に利用されています。入社Onboardingでの活用は弊社埴生の記事にも記載があります。

以下、その他の主要な利用ツール類です。

また、iOSチームではポータルサイトに開発環境や設計・実装ガイドなどの情報を集約しています。

開発言語

Teachme Biz iOSアプリはローンチから7年。元々Objective-Cのみで記述されていましたが、2016年からSwiftを積極利用しています。開発効率向上のためフルSwiftに移行したいのですが、今の所Objective-Cのコードが多く残っています。参考までに、現在はおよそSwift 20%(3万行) Objective-C 80%(12万行) です。

Swiftは以下の方針で利用しています。

  • 新機能はSwiftを利用
  • Objective-Cコードの修正時に可能ならSwiftでリプレイスする

リニューアルでは画面や機能単位で積極的にObjective-CからSwiftへのリプレイスを進めようとしています。すべてをリプレイスする余力は無さそうですが、少なくとも変更が行われる可能性が高い部分に関しては対応する想定です。

アーキテクチャ

複数メンバーによる開発時のタスク分担やコミュニケーションコスト低減を主目的に、新規実装部分や大きく手の入る画面はVIPERアーキテクチャで実装するようにしています。

実際はVIPERにインフラ層相当のものが加わっており、以下のようなクラス構成になっています。

現時点のクラス図

現在、アプリ全体でアーキテクチャがバラついている状態ではあるのですが、将来的にはアーキテクチャの統一を目指しています。リニューアルにおいても、Swiftでの書き直しと合わせて積極的にこのアーキテクチャを適用していきます。

CI

Bitriseを使用しています。

Pull Requestに対してのビルドおよびテスト実行、検証アプリの配布に利用しています。検証アプリの配布にはFirebase App Distributionを利用しており、配布のステップはfastlaneで書いてます。

正直、活用はまだまだですが、Slackからアプリ配布できるようにする等、徐々に出来ることを増やしていっています。

サポートOS

開発効率とお客様の利便性のバランスを取って、iOS/iPadOSの直近3メジャーバージョンをサポートする方針としています。この方針はBtoBサービスのアプリとしては一般的な印象です。
2020年8月現在、最新のiOS/iPadOSが13なので、サポート対象はiOS11以降です。また、最新OSリリースから4〜5ヶ月を目安に3世代前のバージョンへのサポートを切っています。

iOSチームについて

スタディストのiOSアプリエンジニアの働く環境をつらつらと書いてまいりましたが、最後に現在のiOSチームについて書いていきます。

現在弊社のiOSアプリエンジニアは2名で、うち1名はプロダクトデザイナーを兼務しています。先日の記事でもお伝えした通り、アプリのリニューアルが始動したところなのですが、やりたいことに対してメンバーがあまりに少ないです。

リニューアルでは、ユーザにより良いUXを提供することだけでなく、品質の高いアプリ開発を継続的に進めていくため、前述したようなSwift化/アーキテクチャ刷新を含め、大幅にコードベースに手を加える予定です。しかしながら、主に1名がお問い合わせや不具合の対応を行いつつのアプリリニューアルとなるため、現在のリソースでは技術的負債の解消範囲が限定的なものになる可能性があります。

このような状況から弊社では現在iOSアプリエンジニアを募集しています。チームメンバー数は少し寂しいですが、その分プロダクトやエンジニアリングに広く関われる環境です。
少しでもご興味を持たれましたら、↓からお気軽にご連絡ください!

--

--